Being An Elegant Business Programmer

11 September 2011 | talking about Programming

“I am a Java programmer.”

“I am an object oriented programmer.”

“I am an agnostic programmer, I can program anything.”

“I am a mobile programmer.”

When talking to software developers everyone is something. Today I am going to reveal what I am, creating a new category of programming, a completely new bucket of organization. Drum roll please.......”I am an elegant business programmer”.

computer geek image

Being Elegant

Ok maybe EBP is not the best name, I will work on a better one. For now, though, let’s define what it is. First let’s analyze the “elegant” part. Code can be a work of art or a tangled web of craziness. I consider code elegant if I can read it as I would a book. A well-written book reads smoothly, and uses words wisely to lead the reader along with the plot. Unnecessary wordiness may drive readers away. Similarly, with software development I should be able to start at the top of a file and read through the entire code at a consistent pace, not getting hung up on any section in particular, and not being flooded with unnecessary terms.

An example of “not so elegant” would be a 10 line sql statement just to return back a perfect sub-set of data, when a “Select *” would have done the trick. That 10 line statement often will cause someone reading the code to stop and spend a great deal of time dissecting. I am sure that block of sql took 100X longer to write then a simplified version that might have returned a little more data. Furthermore, that block of code is very hard to maintain and debug in the future.

I know what people may respond to the statement above with “performance is better with the ugly block of code”. You know what does not perform well? Software that never launches. Or software that launches with tons of bugs. Every performance decision should be made on “will my users notice the difference”. They will notice bugs. They will notice it takes forever for you to release new features.

Be a knowledgeable programmer: recognize when there could be better ways of doing something. However, when software is young, a focus on elegant, maintainable, bug free software is a far better approach.

Naming conventions: keep them readable. Anyone that has ever read my code will notice I use longer and more descriptive class, variable, and function names. Remember: your code should read like a novel. Don’t make your names so unreadable that no one can understand your code. Both Objective-C and Ruby have gone to great lengths to make naming conventions understandable. I try to follow suit.

Another less than elegant approach is being tough with your typing while you program, particularly in scripting languages. I really get annoyed when I see classes riddled with private and public restrictions. I really get annoyed when people go overboard with making sure every variable is typed just perfect. Yes, in some software this stuff really matters. In web scripting world this stuff does not really matter. It just makes you an OCD, control freak programmer.
 
Read the rest of this entry

Content Management Systems

23 February 2011 | talking about Programming, Infrastructure

Different CMS SystemsContent management systems (CMS) have been on my mind for a while now. Several months to be exact. A content management system for the web is a system for publishers, producers of content, to easily distribute content without needing a PhD in computer science. Allowing the producer of the content to focus on the content not the technology. Once a CMS is setup a publisher just logs in to a private admin area to add content. Adding content in most cases is as easy as updating your status on Facebook.


Content Management On The Brain

The reason I have been thinking about and playing around with different content management systems is I have had this good guy bad guy thing going on. As a programmer I have always just felt managing content is for non-programmers. If I need to create a new web page I will just open up a text editor and build that page with my programing skills. Who needs that extra layer of fluff? I have used almost every CMS on the market in the past for client work and personal blogs. I always felt they were great if the primary user was not a technical person. Over the last few months I have had this unexplainable urge to prove to myself that I need a content management. I have been on a quest to find a CMS that speaks to me. Diving deep into each CMS offering in search of a CMS that delivers the flexibility I need as a “programing power house” while at the same time giving me features and interfaces to manage my content in a more effective way.

I spent a great deal of time with Wordpress, PyrosCMS, ExpressionEngine, Drupal, Joomla, and FuelCMS. Almost all these content management systems provided really nice ways to build pages, and a blog (which I am sure is a majority of the CMS market). They all had their pros and cons for customizing into a platform to run my web empire. On several occasions I concluded I was just going to write my own CMS (like every web developer does) but then realized there is a lot to it, hat tip to all you CMS developers out there. Then I went into a phase of “I will just build whatever I need on top of which ever CMS I choose, and maybe contribute the code back to the community”. This was a great idea but felt like there was too much custom hacking going on for the commercial products I manage.

Finally, I fully committed to Expression Engine (EE), the only commercial, non-free, CMS of the bunch. I have been playing with EE for years but always thought it was not suited for my particular needs. I was pretty wrong about that. EE is the most flexible and robust CMS I have ever used. Its channeling system, templating system, and asset manager really allows me to build web applications the way I want and not structured around some restricted way of doing things the CMS developer chose. My team and I at Skyclerk recently fully converted our public marketing site to EE. We are very proud of what we completed and are very excited about the flexibility EE will offer for us to grow in the future.
 
Read the rest of this entry

My Top Technology List Of 2009

7 January 2010 | talking about Cloud Computing, Programming, Infrastructure

technology_v1Every geek blog I actively read posted a list of top technologies for 2009, so I thought I would be remissed if I did not do the same. These are technologies that really stepped it up or came to my attention in 2009 and became part of my everyday life both for work and personal used.
2009 was all about moving my life to the cloud. I determined early in 2009 it was stupid to ever store a file on my computer ever again. All my data should live in the cloud so I can have access to it everywhere I go, I can have access on any platform (think cell phone), I can easily share my data with people I want to share it with, and lastly I do not have to worry about backups (for the most part), and that is just what I have done.
Below is a list of my top 10 products that have changed my life in 2009. The first 6 are sort of consumer related and the last 4 are software developer related. So if you are not a software developer I am thinking you might only find the first 6 interesting.
 
Read the rest of this entry

My Love Of Jquery’s Form Plugin

15 April 2009 | talking about Programming

The type of web programing I do often has a large database back-end with which requires user input and data return. In the olden days you just created an html form and then posted some input data to some cgi (say PHP script) and the script would speak with the database and return some html causing the browser to reload on post. Now that we are a super cool web 2.0 world we do not do this anymore we make javascript use Ajax to do the post for us. If you are anything like me you take one look at javascript and say "no thank you". Most people hate the syntax of javascript, the confusion of the language, or the browser compatibility issues; when I say most people I am including me. This is where our friends at Jquery come to the rescue http://jquery.com (more on them in another post).
 
Read the rest of this entry