SkyBlue CMS is now on GitHub

All things must eventually come to an end. SkyBlueCanvas lightweight CMS is officially at the end of its life. I built the very first incarnation of the software in 2003. Over the course of 8 years I spent thousands of hours developing the software and providing support. All of this was done for free. The software was downloaded over 50,000 times. I had an opportunity to interact with many very nice people around the world and made a few good friends in the process. But it is time to move on to other things. Continue reading

Word-of-mouth as a form of Payment

This evening I stumbled across what I think is one of the simplest and yet most brilliant ideas I have seen in years. The name of the service is “Pay with a Tweet”. I own a few web properties on which I give away open source products for free. Giving away my wares for free is not completely altruistic. While I am happy to contribute to the web design and development communities, my goal is to build my web traffic to be able to sell advertising and useful web-related products on my sites. Continue reading

jQuery Plugin to Toggle Default Field Value on Focus and Blur

I can’t begin to count the number of times I have coded the same search field with the default value “Search…” in it and so that when the field receives focus, the text is cleared but magically reappears when the field blurs. Every time I code it I know I should save that snippet of code somewhere but it is always faster to just write it anew each time. Well, no more. I finally got around to writing jQuery plugin to allow me to add the focus/blur default value toggle to any field. I have very creatively named the plugin ‘Defaultify’. Continue reading

Theming Custom Entities in Drupal 7

One of the most useful features of Drupal is the ability to define one’s own content types and field types. Prior to Drupal 7 one could create custom content types (limited to Title and Body fields) without using any third-party modules, or add custom fields to existing content types using the Content Construction Kit (CCK) module. In Drupal 7 most of the features of the CCK were moved to the Drupal Core so it is even easier to create custom content types and add an arbitrary number and arrangement of predefined as well as custom fields to an entity.

Drupal 7 also saw the introduction of a new concept in custom content types: entities. Through this new API, Drupal 7 allows you to define a completely custom type of data object or entity which can have its own menu paths, callback handlers, and access, display and storage rules. Continue reading

Problem 5: As unpredictable as the weather

Whether or not you intend to be an SQL programmer (ever, or for the rest of your life), you will spend a large amount of your time in IT modeling data. For now, throw the MVC meaning of model out the window, or if you happen to be on the 17th floor, just put it on the sill, and restrict yourself to the abstract problem of transforming real world data into a something you can read, search, and display. Continue reading

Problem 4: Ewe no what Eye mean?

English is the most orthographically difficult language written with the Roman alphabet, meaning, there are not always clues to a word’s pronunciation from its spelling, and the reverse. Only speakers of English can enjoy the perverse event of the grammar school Spelling Bee. I was so bad at spelling in school that I assumed it was a “Spelling Be.” Continue reading

Asking what you need to know

Bungled interviews go back a long way, and a mythological example comes to us from The Ring of the Niebelungen. Wotan, the God who had Valhalla built, and Mime, a dwarf, have a mutual interview that goes awry. At the start, they agree to bet their heads on their abilities to answer each other’s questions. Things do not go well. Continue reading

Problem 3: Checking the no-fly list

There always seems to be an interviewer who is out to make his mark by asking the big-O question. Not that big-O question, but the one where a data structure is presented with little of the real world information that might accompany its use, and then the question is asked “What’s the big-O notation for the performance of ….” To me it is always clear that the interviewer did not hear a word I said up to that point, and that my pass/fail grade is simply whether or not I recall that it is proportional to x*ln(x) or some such, or whether I can clumsily work it out with a pencil and paper instead of looking it up in Volume 3 of Knuth which is what I would do on the job. Continue reading

Problem 2: Trade-offs

Trade-offs are the bread and butter of software design. No matter what anyone says, every system is optimized for something, and one measure of a satisfactory system is whether the some-thing is the right thing. Continue reading