Jungles and Ski Gloves

Programming is an act of design, and in order for a programmer to do the job, they need to have a thorough understanding of the actual customer and actual situation.  An abstraction will not do, otherwise, it is like asking someone who lives in a jungle to design a pair of ski gloves. Continue reading

Individual Exception Classes are Monstrously Overweight

My last post was you can avoid a lot of waste in a project by recognizing program logic errors, and keeping the exception being thrown very lightweight. In this post I talk about a particularly heavy exception, the individual exception class, which is constructed to communicate just one thing. They are just too heave for most use, and here is why. Continue reading

Constant Abuse

Constants can be useful, but constants can also be abused making code hard to read because you always have to go look somewhere else in the code just to understand what you are reading. This post is about a clear example of how constants can be used to make code much harder to maintain, particularly when they are arbitrary symbolic representations of something that is already supposed to act as a constant symbolic value. Continue reading

Outrageous Strange Cross-Site Security

In making a simple authentication service, I ran into a myriad of strange, incomprehensible requirements that someone obviously through was a good security idea, but essentially misses the mark, has all the marks of “design by committee,” and makes everything else difficult.  I am recording them here, because this seems like the kind of thing I am going to need to refer back to.

Continue reading

Making an eBook with LaTeX

Having completely finished with the layout of my new book using XeLaTeX, I now want to make an eBook.  The error messages with LaTeX are always completely cryptic, so you normally have to debug by adding a single line of source and rebuilding to see if that break anything.   It is slow and tedious work, and this post contains a list of things I discovered using this method. Continue reading