Don’t Let Small Things Stop You From Making Progress.

This one is coming from my own recent experience. I am working on a remake of one of my popular apps – Time Clock Helper. I have some of the basic parts working, but I wanted to add the ability to add multiple punches. The original app could only use four punches at a time with an option to turn off either pair of them. There were some issues with SwiftUI and deleting the punches, but I managed to come up with a work around for that.

The problem that slowed me down over the last few days – to the point that I didn’t really want to look at it until I had an answer was how to handle deleting punches. I originally allowed them to delete any punches they wanted, but that caused some minor issues with my work around for SwiftUI. So, to avoid that issue, I made the first and last punch permanent. That worked well and the user could add and remove punches at will.

The only problem is that it didn’t fully make sense. Why were the punches you added always in the middle and not simply at the end? I struggled with this idea. I liked that idea that the initial punch in, and the final punch out would always be kept in place. But, would that make sense to someone other than myself? I wasn’t so sure about that.

But, today I decided to just leave that problem alone for now and move onto other parts of the app. As I was plugging away, it suddenly became obvious. It was so obvious that I am cringing as I write this – get rid of “Add Punch” and change it to “Add Break.” Boom. Problem solved. A few seconds of coding later I fixed an issue that had been bothering me for days.

If I had simply been able to ignore the small issue and move on a few days ago, I probably would have found the solution days ago and not wasted so much time. Oddly, I thought of this topic earlier today when I didn’t yet have a solution. I was simply going to write about how I ignored the small problems and was able to make progress on my program in spite of the issue. But, I guess I proved my own point in a better way that I would have expected.

A Quick Tool For Parsing JSON Files.

This will be a quick post, but it shows off a website that has the potential to save people a ton of time. I used it for a small project that I was playing with, but I suspect that many of you will find it useful, too.

https://app.quicktype.io/

The page gives many option to create code for parsing JSON files.

Here are just some of the options available.

Once you select your language and other options, it quickly generates the code that you can drop right into your program in order to parse the files. It was quick and easy and made a tedious job simple.

They don’t charge for the service so there is no reason not to use it.

Learning To Code – Learn, Try, Fail, Repeat Until You Succeed.

I have been programming for longer than many readers of the blog have been alive. Learning new things has always and will always be a large part of what programming actually is. It is one thing to get comfortable with a language, it’s another to fully understand why things are working they way they work and how you can use that to better your code.

I started in the mid 1980 working on an Apple IIe using BASIC. It didn’t take long to learn that BASIC wasn’t considered a great language by any stretch. It had a tendency to create bad programming habits. But, it did solidify many central programming ideas. I fully understood loops, conditional statements, variable, and boolean logic among other topics. I could come up with an idea and build it in code within a short time. It’s great to have “perfect” code, but it’s even better to see your ideas working.

A basic template to succeed in learning: find a project, learn, read, try, fail, learn more, try again, repeat until done.

That’s why for this post I’m really pushing the idea that you find a project that interests you. It can be anything – ideally, not too complicated, but still a challenge. I don’t recommend trying to build a Facebook clone for your first project, but make sure it’s more involved than “Hello World.”

Once you have a project, then start to look into how to implement it. This is where you’ll have to pick devices and languages you plan to use. Sometimes, your initial goal will point you in a certain direction. If so, then follow that lead. If not, that’s okay. Look into your options and find out what will be the best suited for your project and also your future hopes. To rephrase that, don’t learn PASCAL if you hope to write mobile apps. It might be possible in some roundabout way, but it isn’t worth the extra hassle.

Once you have a basic idea for the project and how you plan to implement it, continue to read up on the language and how to use it. Once it begins to make a bit of sense, then start to write some code. Start small. To begin, focus on some aspect of your project that you can make work quickly and without much hassle. For me, this usually becomes obvious as I start to learn a new language or device. I will often learn some aspect of a language or device that will fit with my planned project. I can then use that information in order to make a part of it work. Sometimes, it’s just a part of the interface, other times it is a mathematical or logic part. But, the key is to make it something that you can play with and see the results quickly.

That is an important aspect of learning – seeing the results of your labors as soon as possible. It helps in a couple of ways, you solidify what you are learning, but more importantly you get to see the results of your lessons. Those two things make it easier to go onto the next steps in learning – failure. It is a given that your first attempts will have problems. They might run and kind of do what you want, but it is rare that they work fully right, or give you what you are hoping to have in the end. That’s okay. Failure is the best teacher.

The next key is to take your failure and turn it into a success. You do this by continuing to try. This will involve continuing to education yourself more on the language and the devices you plan to use. It will also involve you learning new things in order to improve your first attempts. You might not written the best program or made the best app, but you will have made something. And as long as you have something, you can improve it.

Just keep learning! Just keep failing. Just keep trying again and again. You can do this.

A quote that I found years ago:

“Make sure that your next project is beyond your skill and requires tools you don’t have. You won’t regret it.”