My Newest Little Project

Sometimes it is worth stepping back from work related projects and focus on something that you find more fun. Over the last month or so, I started to work on a couple of these fun little projects.

The project I’m going to show here is a sand simulator. There is a short animated gif shown below.

This project came from watching a Youtube video where someone explained creating their own version of a sand simulation. I used many of their ideas, but implemented them in my own ways. What you see above is the current version of what I have been playing with. The app includes 8 different types of particles that interact with each other in different ways. Sand will pile up like sand does. Water attempts to level itself. Snow and ice pile up in their own ways and fire will turn water, ice or snow into steam that will rise off the screen.

There were many interesting techniques used to make this all happen with the main movement based on Cellular Automata theories. Each particles moves by looking at it’s surrounding neighbors and then decided how to move. For the most part, they only care about the 8 locations directly surrounding them. As simple as that sounds, it allows for some interesting and occasionally surprising interactions.

Doing this project let me work through some interesting programming issues, while at the same time giving me something fun to play with. A majority of the code fits in around 400 lines and it does everything you can see above.

So, if you find yourself stuck – step back and find a small project that appeals to you and work on that. It will not only better your programming skills, but it will also allow your brain to reset before you return to your actual work.

An Exciting Destructive Fruit Filled Adventure

My newest game has been in the app store for a few days, now. I worked hard on making this game as good as I could. There are still things that I might want to clean up over time, but overall, I think it’s a great experience.

The player has almost destroyed the enemy!

The game started off as a simple idea of a demolition derby game using common geometric shapes. I had considered being able to add attachments and other modifications to them, but that never happened. The difficulties in crushing parts of the shapes slowed me down for a while. At some point during a shower the idea of changing the colors of the sides as they were damaged came to my mind and that worked well.

I took that idea and continued to work on a game using it – complete with sound effects, scoring, levels and simple ai controlled enemies. Somewhere along the way, the idea of collecting items caught my interest. The thought of fruit seemed funny since I had already been using fruit sprites to represent players. Well, things clicked and Fruit Derby was born. From there I added different power-ups, and also different movement styles for the enemies. It continued to grow and eventually became what it is today. The game allows you to create your own character picking from various colors, icons and shapes and then take them into the area in order to make the “perfect” fruit salad to please your alien captors.

The premise although silly, was fun. The controls felt natural and the overall look was fairly clean and easy to figure out. In spite of the clean design, it allowed for many strategies and options at any point of the game. So, as simple and basic as the idea appears, there is a lot that can be done to make the gaming experience your own.

A Big Step For An Old App

I finally created a page for my new Time Clock Helper – Advanced App.

I am going to start working on screenshots today and hopefully get it submitted by the end of the day for review by Apple. If everything goes right it should be in the app store by tomorrow. It’s been a long road to get here, and it feels good to finally get the app out into the world and see what people think of it.

The app was created from scratch using Swift and SwiftUI. I learned a ton to get it to this point and I’m happy for the experience.

The app has a clean interface, but still allows for user flexibility. But, for the the most important aspect is that none of that came at the expense of usability. I kept the interface simple, but still feature rich.