Probably 10 years ago now my wife bought me a book of Sudoku puzzles. She knew that I liked doing logic based things and thought I'd enjoy them. Well, of course she was right. I did enjoy them. The book at the time had a simple opening explaining how to solve the puzzles. The method was to write down all the possibilities in the unsolved cells and work from there.
This was great. I now had a better method for solving the puzzles then I had before. But there was a problem. It took what seemed like forever to set the puzzle up initially before I could start solving it. There had to be a better way.
Being a software developer, of course there was a better way. I fired up my Visual Studio and an made a simple web forms app. This let you enter a string of numbers and spaces representing the 81 cells of a Sudoku and would automatically fill in all the possibilities for the unsolved cells. A few more tweaks and you could do all the solving right there on a form.
With the new found speed I quickly started going through all the Sudoku in my book. It seemed like a shame to just keep buying new books or waiting for the newspaper, so I figured out how to generate my own Sudoku puzzles. Many thanks to all the web sites I read back then to get that working!
The big problem with generating my own puzzles though was that lots of them weren't solvable without guessing. This meant that something had to be done to weed out all those puzzles that you needed to guess on. This lead to programming in all the human techniques I could find. They ranged from simple to complex. Again, lots of thanks to the people talking about how to solve on forums! Now that I knew techniques I could incorporate them into my application to only have human solvable puzzles.
Very cool. I had a WinForms Sudoku application and nobody knew. This was still back when I had a flip phone so the thought of trying to distribute it only briefly crossed my mind. Too much work. So mostly, the code went on the shelf.
Losing my job in early 2014 was actually a great thing for my Sudoku code. To keep my skills current I decided to try programming my android phone. It had been a while since I'd done Java, but it came back pretty quickly. I found a library called LibGDX and started to play around. After playing around for a little while it dawned on me that my Sudoku code was just sitting there and could live again on my phone.
So, I went about porting the .Net code over to Java. It ended up being pretty easy. I'd like to thank Microsoft for essentially ripping off Java those many years ago. But now I was on a phone instead of win forms so that's where the time to develop was going to come in. After about a month of working on it I had the basics down on how to make the interface user friendly to people with fat fingers like myself.
About this time I had some interviews. One of them was with Charles Fordin at ASR Pro. As part of this initial interview I got to show him my app. Honestly, I don't know how much it helped but it lead to a second interview and eventually a job offer. ASR Pro was bought out by Dealertrack and I'm still with them now and happy to be here.
Over the last year I've finally gotten around to polishing it off and felt it deserved a release into the wild. After all, it's been with me for a long time and may have helped me be employed. So even if it gets 20 downloads and I make $6 from the paid version it was still a success for me.