Sometimes it’s the Little Things

Over the weekend I was working on some additions to my Craft Pricing Pro app. The main addition that is being added is the ability to share the information from the app in the form of a PDF. This will allow the user to print out lists of their projects and the relevant information along with a single sheet views of an individual project.

This was working until I went into an individual project view and returned. Once it returned, it would no longer generate a list of the projects, but instead a sheet of the last project viewed. I beat my head for hours attempting to fix this. I thought it was an issue with SwiftUI, then I thought it was an issue with the ShareLink command. I spent hours trying different things. I moved code into different functions. I made new functions thinking that might have been the problem. I was writing and rewriting various parts of my app over and over again then removing the changes when each new solution would fail.

Then, I began to notice the error messages that sometimes would show up saying that it couldn’t find a certain file. I also noticed that when I’d create a new PDF that filename would show up as the name of the PDF. It took a while, but eventually I made enough connections to figure out the solution to my problem. All the PDFs I was creating had the same file name. SwiftUI wouldn’t create a new file because the data didn’t change, so it would simply use the existing file and that would be the previous view.

So, I simply had to give each type of PDF that I was generating a different filename and the problem was solved. So hours of effort and searching for a solution was solved by simply changing one line of code in order to change a filename. Everything else was working just fine. It was both frustration, and oddly satisfying to finally solve the issue.

So, yeah. Sometimes the simplest solution will be the one that saves the day.

‎Craft Pricing Pro
‎Craft Pricing Pro
Developer: Ducky Planet LLC
Price: $5.99+
  • ‎Craft Pricing Pro Screenshot
  • ‎Craft Pricing Pro Screenshot
  • ‎Craft Pricing Pro Screenshot
  • ‎Craft Pricing Pro Screenshot
  • ‎Craft Pricing Pro Screenshot
  • ‎Craft Pricing Pro Screenshot
  • ‎Craft Pricing Pro Screenshot
  • ‎Craft Pricing Pro Screenshot
  • ‎Craft Pricing Pro Screenshot
  • ‎Craft Pricing Pro Screenshot
  • ‎Craft Pricing Pro Screenshot
  • ‎Craft Pricing Pro Screenshot

Craft Pricing Pro is now live!

I’ve been working on this app for well over a year and it is finally live in the app store! I’m pretty excited for people to actually start to use it.

This version of the app adds many useful features, including the ability to add an image to the project, along the being able to save multiple projects. The basic app is free, but you have the option to purchase the added features that were added.

It has been a long time since I have used an in-app purchase – hopefully it will work okay for most users. I have unfortunately been struggling to pay bills and if something doesn’t change, I will have to step away from my apps and do something else.

I wish I had been posting more as I worked on this app. I suspect some part of the journey would have been interesting to someone.

I can talk a bit about the last major step – putting the in-app purchases into the app. I originally planned to use a subscriptions for the app, but after getting it mostly working I dropped that idea. I struggled being ok with charging people monthly/yearly for an app that doesn’t really change. It doesn’t use more resources and there isn’t really new content being added regularly. I will add app features over time – there are several already planned. But the regular charge just doesn’t feel right to me.

So, there we have it. A quick rundown of my app. Oh, I should also add, this is my first app that is available in another language. It supports Spanish.

The official marketing page

‎Craft Pricing Pro
‎Craft Pricing Pro
Developer: Ducky Planet LLC
Price: $5.99+
  • ‎Craft Pricing Pro Screenshot
  • ‎Craft Pricing Pro Screenshot
  • ‎Craft Pricing Pro Screenshot
  • ‎Craft Pricing Pro Screenshot
  • ‎Craft Pricing Pro Screenshot
  • ‎Craft Pricing Pro Screenshot
  • ‎Craft Pricing Pro Screenshot
  • ‎Craft Pricing Pro Screenshot
  • ‎Craft Pricing Pro Screenshot
  • ‎Craft Pricing Pro Screenshot
  • ‎Craft Pricing Pro Screenshot
  • ‎Craft Pricing Pro Screenshot

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.