Assumptions Make Life Simpler
Posted by Tyler | Filed under Links, On Software
Chris Greening, the developer of iPhone Sudoku Grab, explains how it works.
I find this section the most interesting:
One of the things that makes recognizing Sudoku puzzles an easier task than most image processing/recognition problem is that it is a highly constrained problem – a standard Sudoku puzzle is going to be a square grid and it will only contain the printed numbers 1-9.
These two points are very important. The first point – it’s a square grid tells us what shape a puzzle is and what we should be looking for in an image. The second point – it will only contain the printed numbers 1-9 tells us that we aren’t going to need a sophisticated OCR system. When we look at the problem there’s nothing that jumps out and says “nobody has solved this before – it’s probably really hard”.
We can also add some additional assumptions -
- In a photograph of a sudoku puzzle, the puzzle is going to be the main/most important object on the page
A user is going to be photographing the puzzle – they aren’t going to take a picture of a whole newspaper page, they won’t be taking a photograph of a coffee shop and expecting us to find a sudoku puzzle that someone is playing four tables away. Also, the user is going to try and capture the whole puzzle, they won’t miss a corner or chop off the top.- The puzzle will be orientated reasonably correctly.
No-one (hopefully) is going to be taking a picture of an upside down puzzle, and typically they will be trying to align it nicely in the camera viewfinder so it is reasonably straight without too much distortion.
A great example of how some simple assumptions made about your problem make it far easier to solve. Of course, the key is making sure the assumptions are valid, or being prepared to handle edge cases where these assumptions prove false.
Tags: iphone, software, sudoku
Software Hatred
Posted by Tyler | Filed under Links, On Software
Great insight from Jeff Atwood:
One of the (many) unfortunate side effects of choosing a career in software development is that, over time, you learn to hate software. I mean really hate it. With a passion. Take the angriest user you’ve ever met, multiply that by a thousand, and you still haven’t come close to how we programmers feel about software. Nobody hates software more than software developers.
This is so true it hurts. An additional side effect of being a Program Manager is that you become extremely critical of everything. Parking meters. Elevator buttons. Anything that isn’t as usable as it should be. Not that I could do any better at designing these things, necessarily, but they still anger me, and much more than they used to now that design is a part of my daily work life.
Another great quote from the article:
Hardware companies don’t generally do software well. Digital camera companies excel at building digital camera hardware. Software, if it exists at all, is an afterthought, a side effect, a checkbox on some marketing weasel’s clipboard.
This is true not only for consumer electronics like digital cameras, but also for other hardware that you might not think of as running “software.” Think of your microwave. The ice dispenser on your fridge. Your washing machine. Your car’s on-board computer. All of these are running software in some fashion most likely, and they all kind of suck.
Tags: design, jeff atwood, software
Hello, visitor from the Internet. You may have arrived here expecting to see a site built on top of SharePoint, and are no doubt confused by the fact that tylerbutler.com is running on WordPress.
You can subscribe to this site in a variety of different ways. The best and simplest way is via RSS. There are three main RSS feeds: