Choosing a Programming Language

One of the main questions prospective programmers ask is ‘what language should I learn first?’ There is no right or wrong answer here, merely points you should consider to help you make the best decision for your current situation.

Most people will probably tell you that one of the easiest languages to start with is Python, and I agree. It is very high level—meaning it’s further removed from machine language and closer to English—and it just makes sense. Many people think of it as a simple scripting language but it is actually extremely versatile and is often used in data science and as the back end for websites. You can even make games with Python if you want.

But maybe you don’t feel you have time to start learning a language that may not match up with your end goals. If you want to start applying for programming jobs as soon as possible, then you should first look at what is available in your area. It may not make much sense for you to start learning PHP when there aren’t many jobs requiring that language.

You may also just want to learn a language quickly so that you can create a project you’ve been thinking of. Although programming languages are versatile and there is a lot of overlap in what they can do, there are usually some areas where certain languages excel.

Automation

Maybe you just want to automate some tasks at work to make your job easier. Python is a great language to begin with for this, and there is even a free online book available that focuses on this topic called Automate the Boring Stuff.

Web Development

If you are interested in creating websites then I suggest you first learn HTML and CSS. These are not programming languages but they are crucial to web development and they will not take you long to learn. After that, you should move on to JavaScript. This is all you really need to get started if you intend to focus on the front end.

If you think you would like to concentrate more on back end development, then after learning HTML and CSS you have a few options. It’s a good idea to learn at least some JavaScript, which is a solid choice for the back end too and a good default if you are not sure what you want. But there are many other languages that can be used here including PHP, Java, Ruby, C# and Python.

Games

I know that wanting to create your own game is a pretty big reason for learning programming. I’d like to make one myself one day. The languages that are most often used for game development are C++, C# and Java.

System Software

If you are interested in programming system software—think operating systems and web browsers—then you should learn C or C++. These are more difficult to learn, especially as a first language, but if you become competent in either then it will help you a lot when you go on to learn other languages.

Mobile Development

If you want to develop for Android, you should start by learning Java (which has no relation to JavaScript).

If you want to develop for iOS, then you should learn Objective-C followed by Swift.

In recent years other languages have released tools to develop mobile applications, such as JavaScript’s React Native, so there may be other options out there.

Data Science

Data science seems to be very popular these days. Maybe you really just want to learn programming so that you can work with data and statistics. You will likely benefit most from learning Python, which has many libraries to help analyze and visualize data. When you’re confident with your Python skills you may like to learn R too.

Conclusion

If you are still not sure, check out this infographic.

Still can’t decide? Then start with Python. As you learn, you will come to discover the kinds of projects you enjoy working on. And once you know Python, you’ll find it easier to learn another programming language.

The Odin Project – Etch A Sketch

This is the project I’ve most recently completed as part of the Odin Project’s full stack JavaScript path. It was actually fun, perhaps because it’s kind of like a game.

I’m definitely not qualified to write a JavaScript tutorial but I’ll give you an overview of how I completed this project. The requirements are listed here.

CSS Grid

I began by creating the grid itself. I used CSS Grid, though there are other ways it can be done according to the project page. Initially the grid was set to 16 x 16 squares. In my HTML file I made a div with the id ‘grid’. Then in my JavaScript file I put it into a variable like this:

const grid = document.querySelector("#grid");

I used CSS to set the display to ‘grid’ and set a width and height.

Then I created a function that set the gridTemplateRows and gridTemplateColumns to repeat 16 times and take up ‘1fr’ of space. ‘1fr’ here means 1 fraction of the available space. So – as far as I know – if all parts are equal to ‘1fr’ then they will always be equal no matter how many there are. I knew this would be important for later when variable rows and columns needed to be accounted for.

This function then runs a for loop for the area of the grid. This is what makes the actual grid items. Each time it runs through it creates a div, gives it the class ‘gridBox’ and adds it to the grid. The loop looks like this:

for (let i = 0; i < size * size; i++) {
    let div = document.createElement("div");
    div.classList.add("gridBox");
    grid.appendChild(div);

Adding An Event Listener

The class ‘gridBox’ is used to create an event listener for every grid square, so that whenever the mouse goes over a square, it changes the color. This is done by adding a class to the classList; this class simply sets the background color to a pretty purple/magenta gradient. Here’s my event listener code:

gridBoxes = document.querySelectorAll(".gridBox");
gridBoxes.forEach((gridBox) => {
    gridBox.addEventListener("mouseover", (e) => {
        gridBox.classList.add("active");
    });
});

I did try changing the classList.add to classList.toggle so that if you went over the same square again it would remove the color, but I decided I liked it better this way.

Finishing Touches

Once I had the 16 x 16 grid working, it was fairly simple to make the size a number chosen by the user. Upon loading the page the user is asked the number of columns/rows they would like and then this number is stored in a variable, which is used to generate the grid.

Initially I just had a reset button which asked the user how many boxes they wanted this time and cleared the grid. But then my husband was like, “why can’t you just have a reset button that clears the grid and lets you keep the same size and add another button for changing the size?” This was simple enough to do so I added the other button to appease him.

Final Project

You can view my Etch A Sketch on GitHub pages here and the code is here. It’s not fancy but it works! I should mention that I know the grid itself does not resize so if your screen is small then you may have to scroll. This was something I did play with but I was having trouble making the variable rows/columns work properly with a responsive box. It wasn’t in the project description as a requirement so I left it as it is.

I’d also advise you not to choose a crazy number for the size. I think I put in 400 once and my browser couldn’t handle it. 100 is a pretty safe upper limit.

Please don’t think this is an example of good code either; I don’t think it’s bad but it’s likely not optimal.

I’m currently still working through the freeCodeCamp JavaScript section. Soon I’ll be up to the projects and then I can post about it!

FreeCodeCamp – Responsive Web Design

I completed this section of FreeCodeCamp about two months ago now, and I’ve been a bit slack trying to get through the next section which is all about JavaScript. So I thought maybe it would help to document my progress through the course after I finish each section. I think this will give me more motivation to finally get through the JavaScript part, because when I’m done I’ll be able to post all about it.

After you complete each section of FreeCodeCamp, you get a certificate. Some employers do like to see this kind of informal online certificate and FreeCodeCamp is probably known to many of them by now. Others won’t care. So I wouldn’t complete this specifically for the certificates. Complete the course for the knowledge you’ll gain.

You do also create a few projects at the end of each section, and these can be used in your portfolio. I struggle with finding project ideas that I care about, so this is a good way to get ideas and build something with the support of a community for if you get stuck. I plan on including links to all my own implementations of the projects here, no matter how bad I think they turned out.

Now onto the course. The Responsive Web Design part consists of eight sections.

Basic HTML and HTML5

This is exactly what it sounds like – a basic overview of HTML, including the new elements introduced in HTML5. Since I already knew HTML I went through this part very quickly, and I feel that even people who aren’t familiar with it are unlikely to struggle. Each lesson introduces a different element and is quick and simple to complete.

Basic CSS

Again, what it sounds like. You’ll learn the basic concepts of CSS and a few of the newer properties introduced in CSS3.

Although HTML is, I think, quite easy, CSS isn’t. It appears easy at first glance, but there is a lot more to it than changing colors and adding borders.

Applied Visual Design

Here you’ll learn more CSS. This section goes into more detail about the properties you can use to make your website more visually appealing. It also introduces the basic ways of positioning HTML elements using absolute and relative positioning and floating. This, to me, is where CSS can begin to get difficult. Having a good understanding of the box model will help.

Applied Accessibility

This section covers the ways you can make your website easier to navigate, especially for people who are vision-impaired. You will learn how you can make your website work better with screen readers, and how to choose color combinations that won’t make the site unusable for people who are colorblind.

Responsive Web Design Principles

This is a short section which tells you how to size your elements so that they will scale depending on the size of the screen. This is really important these days, since websites should work well on mobile devices, tablets and regular computer screens.

CSS Flexbox

Here you’ll learn how to use flexbox, a layout system which allows elements to shrink or grow to fill the space available to them. In theory, this allows you to make responsive layouts without having to use the floating and positioning you’ve covered so far.

My favorite use for flexbox is making footers sit at the bottom of a web page even if there’s very little content, something that’s harder than it sounds. If you’re interested, here’s an overview of how it can be done.

CSS Grid

This is another method of laying out web pages, this time using a two-dimensional grid. Compared to flexbox, I personally find grid a little awkward to use for a full page layout, but I think many people do use it for that purpose. I do find it great for things like image galleries or content that’s displayed in a tabular-type format but isn’t meant to be an actual table.

Responsive Web Design Projects

Here is where you’ll be given the specifications for the projects you need to complete before receiving your certificate. You will make:

You’ll use a test suite to ensure you’ve met all the requirements. The instructions given assume you’re using Codepen, but I created my projects in VS Code and uploaded them to Github. To make the test suite work you just have to put the script they give you into the body tag of your HTML document. It’s commented out in my projects but you can take a look if you are confused.

I didn’t bother trying to make the portfolio page more ‘real’ because I didn’t like the specifications I’d been given and didn’t want my actual portfolio to look like that. You probably shouldn’t have your intro line saying that you like purple on your real portfolio!

Now, onto the dreaded JavaScript!

How Do So Many Incompetent People Get Developer Jobs?

Seriously. This is really just a whiny ‘life isn’t fair’ post rather than anything particularly useful, because I do not know the answer to this, though I wish I did.

I see people posting on Reddit saying, ‘hey, I just got my first developer job, how do I make a website without Bootstrap?’ Or ‘I just got a job making web apps, I need to learn JavaScript before I start in five days!’ I mean, I realize that some people are lucky enough to network and perhaps don’t even have to go through a proper interview. But surely that wasn’t the case for all of these people.

Additionally, I know some companies will accept someone who they know is light on knowledge, but they are prepared to teach them if they think they have the drive to learn.

These posts, however, are from people who got a developer job and literally just don’t know how to do the things they are supposed to do and now they’re freaking out on Reddit about it.

From from I’ve read, having some kind of technical element in an interview for any kind of developer position is normal – or are there really so many companies that don’t bother to make sure applicants have the skills they say they do? Surely none of these people could pass any kind of technical challenge.

And here I am, worried about the coding challenge that I know I have to take to apply for a job, despite knowing someone at the company. I’m worried that it will be something I have no idea how to do and that I’ll fail, but I know I’m more knowledgeable about Python than these people are about the things their new job requires. I’m also not stupid enough to lie about my skills and experience just to get a job, because I know it’s likely to catch up with me when I have to do something that I just cannot do within a reasonable time frame.

I’m pretty good at figuring things out when I get stuck. I have good Google skills and I genuinely like to learn. I feel like this is more important, for an entry-level position, than how good my coding skills are. Whatever I don’t know, I’ll learn, and if it’s something I’m doing every day then I’ll learn it fast.

There are also the developers who have been doing their jobs for years and still make stupid mistakes that I don’t think even I would make. I hear about these people from my husband who is an IT manager and has to deal with developers from time to time. He tells me about the stupid design choices they make in apps and websites and how he thinks some of them are idiots. To be fair, he is smarter than most people so I think he sees idiocy in places others may not.

That’s the other thing I worry about – I might get a job, and think I’m doing okay, and then turn out to be one of those people that annoys my husband so much. I don’t want that.

If I’m to become a developer I want to be a good developer. I know that being perfect would be a stretch, but I want to be as knowledgeable as possible so that I can avoid stupid mistakes.

I do often wonder if I’m cut out for this. But it’s all I really have, unless I can actually make money from my stories (if you’re interested, my other blog is for writing, though no stories are posted yet).

I do like making websites and programming, but it really does depend on what they’re about. I find it pretty boring working with algorithms and doing math type stuff. Data analysis can be interesting, sometimes, but I think it depends on what the data is. Games are my favorite, and I do enjoy making my blog website, though I’ve been neglecting it for the last few days.

Obviously, if I start working for a company I’ll have to do what they tell me to do. I do think I could handle that because I’d be getting paid for it and that is a pretty good reason to work on a project that I would not otherwise be interested in. I guess I’m just questioning my overall ability to succeed.

Well, now that that’s out of my system, perhaps I can go and be productive and work on some stupid JavaScript!

How to Write a Good Programming Tutorial

I’ve been following a lot of tutorials recently. Some were excellent, some so-so, and some so bad I couldn’t finish them. I’m not an expert, but I can tell you what I do and don’t like about all the ones I’ve looked at so far. Some of it might be subjective, but I think most is not.

1. State the Goal

Don’t just launch right into your tutorial without telling your readers what they will achieve when they’re done. If you are going to teach them to make something, show them the end product and give a brief overview of how it works.

If you’re just teaching some programming fundamentals and don’t have any main project, tell your students what they will know how to do by the time they’re finished. Maybe they’ll have a good understanding of how to implement loops in their code or they’ll know how to use classes.

2. Know Your Audience

Who is your tutorial for? Is it aimed at true beginners who’ve never programmed in their lives? Intermediate learners trying to get some projects under their belt? Work out who you’re writing for, make it clear at the start of your tutorial, and cater to them accordingly. I often find that people label their tutorials as being for beginners but fail to explain the basic elements of programming. You need to start from the beginning.

Tell them how to set up a programming environment and what their choices are concerning text editors and/or IDEs. Explain what variables and conditionals are early. If you don’t want to write all that then link to another resource that covers it. Don’t just leave it out.

You can always include a link to a section that can be skipped to if you want to accommodate both beginner and more experienced students.

3. Spelling, Punctuation and Grammar

Yeah, yeah. It’s a programming tutorial, not an English lesson, right? I can definitely forgive a typo here and there. They are hard to avoid, even if you do proofread your work. No one’s perfect, after all.

But some tutorials are full of spelling mistakes and have sentences that don’t really make sense. I think this often happens when the author is not a native English speaker. If this is you, please find someone to edit your work before your put it out there. You definitely have an excuse for not having perfect English, but it’s a big turn-off to readers when your content is so hard to read. I’ll say now that I’d be willing to proofread posts for anyone free of charge, as long as it’s content that you are posting for free.

4. Use Examples

If you are guiding people through building a specific project then you should include your code to show them what they should be typing. Showing is better than telling. I’m always frustrated when I’m following a tutorial and part of the code is missing. Most people nowadays put their example code on Github so it’s less of a problem, and I’m glad to see that.

If your tutorial is more general, then still use code examples. Maybe you’re telling someone how to build their first web page. Even if you’re intending for them to customize it to their liking, it’s still a good idea for you create an example for them to follow along with if they so choose.

If you’re teaching a programming concept such as conditionals, use a code snippet showing their use. Just explaining how they work isn’t enough.

5. Break It Up

I don’t really like giant walls of text. And I don’t just mean, ‘please use paragraphs’, though that is important too. Tell the user what the next step is and make sure it’s small enough to explain in a few lines. Show the required code whether it’s in a video, a screenshot or just typed between paragraphs. Ideally, you shouldn’t introduce a lot of new code at a time as it can be overwhelming. I personally find it’s more likely I’ll make a mistake when typing it out. (I don’t copy and paste; I find it isn’t good for learning.)

After that, tell the user what they should expect after completing that section, and show the working version of the project or exercise if applicable. Then move on to the next part.

These sections could be more general if your tutorial is aimed at more advanced learners. For example, an intermediate learner probably knows how to run their code in the command line without you telling them how, but a beginner course should explain this explicitly, at least the first few times.

6. Don’t Be Afraid of Errors

I actually like it when a tutorial has you do something which results in an error. It’s a good learning opportunity, because a big part of learning to program is learning to debug your code. I’m not necessarily saying you should be creating errors everywhere on purpose, but think of common mistakes that a student might make. Think of the mistakes you made when you were starting out.

Explain how to read the error, what it means and how to fix it. If you are writing for beginners, this may be a good time to mention how to effectively Google problems that you can’t work out how to fix yourself.

7. Explain Jargon

If you are writing a tutorial about a topic that your intended audience knows little about, it’s fair to assume that they won’t know about common terms or acronyms. Don’t just start writing about global variables or AWS without explaining what they mean or stand for first.

8. Include Date and Version Numbers

I often find it hard to find up to date tutorials because it isn’t always easy to find when they were published or what version of Python or Django they’re using. Please make sure your post is dated (easy enough to do if your tutorial is in a blog) and include the version number of everything you are using. The IT world is constantly changing, and what worked a year ago may not work today. If you aren’t explicit about the fact that you are using Django 1.9 and someone with 2.2 installed tries to follow your tutorial, they might just think it sucks, when the real problem is that the thing you’re telling them to do does not work in their version.

It’s probably also a good idea to update your tutorials as technology changes, but I realize this is often easier said than done. At the very least, be clear about your versions numbers.

9. Provide Practice Opportunities

I think it’s important to try and get people to work things out for themselves where possible. Whenever you’re about to implement another part of a project, or going to write a new script, think about whether you might have covered enough by this stage for your students to work out what to do on their own.

Tell them what the next step is and perhaps give hints that you think will help. Then explain how to do it as usual, since some people won’t get it, and others may benefit from seeing how you solve the problem since it could be different from their solution.

10. Don’t Leave People Hanging

This one is connected to the previous – don’t tell your readers to ‘do this next part on your own’ and then just assume they succeeded and move on. I hate getting stuck and being unable to continue because I was too dumb to work out how to do a certain step.

If you want to include a challenge section, that is a little different, and opinions here will probably differ, but I think it’s a good idea to at least include the answer in a Github repository. One of the things I hate the most is when I fail to do something and can’t for the life of me figure how to do it even when I search Google. Please just give us the answers!

Conclusion

I really do appreciate all the people who take the time to create awesome tutorials for people like me who are trying to learn. I plan on making some myself one day, when I feel I’m knowledgeable enough. I will of course have to be careful not to break any of my own rules!

I Found the Best Django Tutorial

So as I mentioned recently, I’ve decided to work a little more on the basics of Django since I felt like I was missing a few things. I know I can just continue with my blog project, doing things any way I can make them work, but it really bothers me to know that I’m not doing things properly. I’m always after the best way of doing things.

People say that it doesn’t matter how bad your code is; you should just try to build something and then you get better. Maybe that’s true, but I just hate working on something and all the while thinking ‘the way I am doing this is so wrong’. I guess I’m a bit of a perfectionist in some ways and it isn’t always to my benefit.

So I found a few Django tutorials I was interested in. I specifically made sure they used at least Django 2, since I feel that any version earlier than that is going to be too different and I’d rather learn what is current (the current version of Django is 2.2.3).

I completed the official Django tutorial the other day. I did learn a few things I hadn’t known previously, but still didn’t really feel confident. It was a good tutorial but I wanted something that was a little more in-depth.

Now I’ve almost finished Corey Schafer’s YouTube series, which takes you through building a multi-user blog website. This is going to go straight to the highest spot on my resources page for Django because it is awesome. He explains everything really well, including the little pieces that other tutorials kind of just ignore. I hate it when someone makes a tutorial that they claim is aimed at beginners, but then don’t explain everything. It’s lazy to just say ‘okay copy and paste this code, but don’t worry about what it does’.

I should note here that’s it’s fine to clarify that you don’t have to worry about what it does now, and then bring it up again later in the tutorial. But to just never explain it is bad and people who write ‘beginner’ tutorials like that should be ashamed.

Additionally, Corey’s tutorials introduced me to some awesome add-ons such as Crispy Forms, which is some kind of magic that makes your forms look good and provide useful feedback to users depending on their input. (Okay, it’s probably not really magic but it definitely seems like it.) It is super easy to use. You just have to install it:

pip install django-crispy-forms

Add it to your settings.py as an installed app:

INSTALLED_APPS = [
    'django.contrib.admin',
    ...
    'crispy_forms',
]

As of the time the tutorial was made, Crispy Forms uses Bootstrap 2 by default. To make sure it uses Bootstrap 4 (the current version), also put this line in your settings.py file:

CRISPY_TEMPLATE_PACK = 'bootstrap4'

Then whenever you have a template with a form, you can just load crispy forms like this:

{% load crispy_forms_tags %}

And then add the filter to your form:

{{ form|crispy }}

There are a bunch of other interesting tutorials on his channel too. I’ll probably check out the Python and Flask ones next.

I’m now thinking of adding a few extras to my blog project, like incorporating the polls app I made by following the official Django tutorial, since I think that would fit in. I think one big thing that has made me hesitant to add more is lacking an understanding of how apps work within Django. The tutorials I’ve followed before all had only one, so I wasn’t sure how to make different apps work together within one site. I mean, I had ideas, but I always prefer to see things in practice. Pretty early on in Corey’s tutorial he made me start a second app, and I was instantly thrilled that I would get some experience with a multi-app website.

As well as taking you through building a good example of a basic blog website, there are a few videos at the end of the series that guide you through deployment, something which I think is often not covered in enough detail considering what a pain it can sometimes be.

If you follow all the videos after building the website, then you will learn how to deploy to both a Linux server and Heroku, as well as how to configure a custom domain name, enable HTTPS, and set up a AWS S3 for file uploads.

This is the part I’m up to now, and I’ll likely watch the videos but not actually deploy since I’ve already done that with Heroku and I’m happy enough with that for now. I’ve used S3 before too, and I’ve been thinking of hosting my static files in an S3 bucket since I’ve heard that’s a thing people do because it’s apparently super cost-effective.

I’d also be working with AWS if I get the job I’m preparing for so when there’s a chance to incorporate those services in any way then I feel I should take it. But enough about AWS for now.

If anyone is looking for a super easy to follow Django tutorial that actually explains why things are done a certain way then I’d recommend you start here. I have a few more resources I want to take a look at, but I really don’t see them being as in-depth as this course. I’ll update here if I find anything else amazing though, and anything else that I at least find worth doing will be added to my resources page.

The Odin Project – JavaScript Track

I’m very pleased with myself for thinking of a better title than simply ‘JavaScript Sucks’. I’ll likely have to use that one at some point, so at least now I still can. JavaScript just tends to drive me nuts. I don’t like the syntax. I feel like I always have a zillion closing brackets to keep track of and I get confused. And arrow functions are often hard to read. Or maybe I’m just dumb.

However, I actually did something reasonably fun today with JavaScript (on a beginner level; don’t get excited).

I’ve spent some time the last few days trying to improve my JavaScript because I suck at it. It’s also probably closer to what I ‘should’ be working on, since I don’t think Django is used at the place I might get a job. I’m definitely not done with Django, because I like it, and may need it after all if I fail and have to go looking for a job somewhere else. But it was time for a little break.

As I mentioned in my last post, the Odin Project has recently released a full stack JavaScript curriculum. Originally they only had a Ruby based track, which people say is very good, but I wasn’t interested in learning Ruby so I didn’t bother looking. Now I’m finally checking it out since I can always use some more help trying to learn the dreaded JavaScript. One really big bonus here is that all the content is completely free. I love free stuff.

The JavaScript track is split into five sections:

  • Web Development 101
  • JavaScript
  • HTML & CSS
  • Node.js
  • Getting Hired

For those interested, the Ruby track has a similar layout:

  • Web Development 101
  • Ruby Programming
  • Databases
  • Ruby on Rails
  • HTML & CSS
  • JavaScript
  • Getting Hired

I’m currently in the Web Development 101 section of the JavaScript track. It covers basic HTML, CSS and JavaScript, and how to use Git. It also takes you through setting up Ruby. This probably should be removed because who wants to go through all that when they aren’t planning on using it? As a Windows user, they were recommending I set up a virtual machine for installing Ruby, so I just skipped over all that stuff. I can see what they’ve done – the only actual new content is probably the Node.js section, the others are all just the same as their Ruby track. That’s fine but they should edit where required to keep the content relevant.

I skimmed over the non-JavaScript stuff so far since I didn’t need to study HTML, CSS or Git. From what I can see though, this is a great resource. There are explanations and exercises on the Odin Project’s website itself, as well as a bunch of projects, but there are also lots of links to other free resources that are meant to supplement the content provided.

I’ve been working through the JavaScript parts of the Web Development 101 section. I had to make a rock, paper, scissors game that ran in the console, and then I did a bunch of exercises and didn’t struggle too badly with them, so that was pretty cool. I did, however, get frustrated a few times with how awkward it was to do some things that are easy in Python.

Today I completed the next project which was to take the rock, paper, scissors game and put it into an actual web page. I sighed, as I usually do when faced with doing a bunch of JavaScript, and began. I did finish, but my code is horrible. I have this gigantic block of if statements. And a bunch of global variables. It’s probably twice as long as it should be. But it works!

I did cheat a little though. I have yes/no buttons that are hidden initially and then show up when you finish so that you can indicate whether or not you want to play again. When I try to add the class that hides them after the player selects ‘yes’, it can’t seem to see the global variable that I set for the element here:

const again = document.querySelector("#reset");

That exact same variable is accessed just fine by other functions using this:

again.classList.toggle("hidden");

Just not by my reset one. And yeah, I know what you’re probably thinking. What kind of variable name is ‘again’ anyway? Probably not a very good one. I ended up making it work by doing this instead of using the variable:

document.querySelector("#reset").classList.toggle("hidden");

This bothers me though. Obviously I’m doing something wrong. I’ll go back and refactor this, probably, and hopefully discover what the problem is.

If you want to see my code I’ll show you the Github link but otherwise I am not posting it on here because it’s so bad it’s embarrassing. Not only is the code messy but the web page isn’t very pretty either since I just don’t care a lot about front end stuff. I think it would be more beneficial for me to move on at this point then spend a bunch of time refactoring though, so I’m going to start work on the next project which is an Etch-A-Sketch. I have to admit that although I don’t like JavaScript, I do like making games, even if they are small and silly, so I’m glad that the projects have been games so far.

It’s getting to be about time to set up a job interview, but I’m scared. I’m worried about failing the technical test. I’m also not really a people person so I may just do something else wrong. But I guess I have to at least try.

I hope all you US people are having a great 4th of July. We’re celebrating by eating pizza because pizza is awesome.