The Harmonious Programmer - Covering a symphony of technical and sometimes off-topic subjects
Filed under

Software Development

 

Technical Debt: If You Can't Handle Change, It's Time To Change Careers

Change happens every moment. Right now things have changed just from the second before. This means all things in life are fleeting. Not changing is like trying to hold on to the present as it becomes the past. Why should we hold on to the past? We should not. Nobody has every succeeded at this and you should not think that you're special enough to think you will be the first.

Change is good. It should not have negative thoughts connected with it. Change will happen whether we like it or not.  We might as well learn something new so we can adapt to change in ways that do not cause us suffering.  The scariness of change can be counteracted with learning. Learning something will lessen any suffering that occurs from change.  In the terms of IT, you'll live a happier IT existence because you will not accumulate massive amounts of "technical debt" by not changing and therfore not learning.  Doing things in the "tried and true" methods don't always mean you're doing it right.

So take the plunge and make a nice down payment on the change that inevitably comes. Learn something new every day.  Or if you want a different explanation in clearer wording: How can you be in IT if you don't want to learn new stuff? If you don't want to learn, you're in the wrong business.

Filed under  //   Philosophy   Social Commentary   Software Development  

Comments [0]

Loading mentions Retweet

CFML Advisory Committee -- My Thoughts

As for the narrative of what happened to the demise of the committee, it isn't worth my time to comment on it.  It is what it was and I have nothing if any real interest to add to what has already been said by Adam, Matt and Sean.  My resignation letter clearly explains my resignation:

http://blog.maestropublishing.com/open-cfml-advisory-committee-resignation-lett

In his blog post, Adam alludes to some inside knowledge on my life and the demands on my time.  Adam has absolutely no understanding or knowledge of my daily life and demands. It is rather imprudent and extremely rude to make assumptions and presume some alternate agenda.  This is the issue I take with Adam's post.  Straight from my resignation letter: "it has become increasingly difficult for me to contribute sufficiently to the CFML specification process".  I spent a lot of time over a period of a couple months debating my resignation.  In the end, I felt I did not have the time to serve the CFML community in a manner that did justice to the committee as a CFML *community* representative.

Filed under  //   CFML   Open Source   Software Development  

Comments [1]

Loading mentions Retweet

Are Software Development Practices Killing Our Creativity?

Let us consider this statement:

All children play.

Without question, I believe that most people would consider the practice of "play" to be a significant and important part of the development of a child.  Play inspires imagination and creativity which brings development of concepts, ideals and beliefs.  Another important aspect of this is the lesson of playing with others and learning the value of sharing.  Let us not forget that it's just good old fun.

Before we continue, let's decide a concrete meaning of "play" in the way I see it.  Yes, we all play games as adults whether it's the dating game or the latest and greatest console game.  However, I would be better to agree that those kind of activities are more inline with process of finding love and enjoying entertainment mediums.  It is not the kind of "play" that inspires creativity, new thoughts and imagination.  For the sake of this blog post, let's define "play" as follows:

Play (noun): A process that inspires imagination and creativity while teaching the value of sharing and collaboration with others.


As we get older the practice of play, as defined above, typically ends as we enter into adolescence and adulthood.  Maybe it morphs into other things, but the concept of a 20-something still playing with G.I. Joe's (sorry fans and collectors) or playing house (in a house of our very own) becomes something that most adults would not want the world to know about them.  Where do we find inspiration for our imagination and creativity as a programmer?

Let us dive into software development. In a consumer based internet, everything is about data sharing, mashing that data into new data streams and sharing that knowledge with others. But developing software there are legal matters that stop us from sharing knowledge. We've all been subject to NDAs (non-disclosure agreements) for a variety of reasons from trade secrets or patented processes.  I'm not advocating that NDAs are not necessary however, it does provide an additional barrier leap over when it comes to developing that killer new feature.

Applying it to software that is widespread and common this stifles the creativity and inspiration drives the development of the next new world changing feature or application.  There are two groups of software which can be divided into:

  • Commodity
  • Specialized

Commodity software are areas where the type of software is widely used in the world across the general public and enterprise.  It would easy lump in things such as operating systems, word processing and web browsers.  Unless you are already a major player in the market, it's very hard to make money on commodity software.  When was the last time you paid for a web browser?

Most software starts off in the specialized software group as proprietary software.  You can only be unique for so long until you get competitors that offer alternative options to your product.  There a variety of factors that make alternate products attractive to decision makers.  It might be cost / licensing, different features or support options.

An alternative may not need to be better to begin winning market share.  Most alternatives compete on price and some what on features.  Suddenly, your product needs feature X and be $1,000 cheaper to remain competitive and continue being "specialized".  As time goes by and alternatives continue to erode your specialized market.

You may have not noticed yet that I have not mentioned whether or not the alternatives are proprietary or open-source.  There may not be an open-source alternative, but in most cases people start asking the question:

Why do I have to pay for this? I could write my own that only does what I need it to. It would be a creative challenge and I would get to use my imagination to solve problem X.


I believe this is how most open-source project start.  Whether it competing against a proprietary product or it's free reign, open-source projects usually start to fill a gap.  I believe it's not filling the "free" gap, but fills the creativity programming gap that is so often overlooked by employers.  In lots of cases, open-source bridges a particular type of software from the "specialized" to "commodity" software group.  Companies that fail to see a bridge being built will only suffer the punishment of seeing their once "specialized" software become a "commodity".

Why is open-source becoming increasingly popular?  I pose this thought:

Open-source is an adult programmer's playground where creativity and imagination can be shared with the rest of the world.


As programmers, I believe that some of us are looking to fill the hole left behind by childhood "play" and open-source offers a new paradise -- a digital playground in code.  Our primary purpose is to have fun; not to make boat loads of money.  Considering this...

Does proprietary software kill our creativity?

 

The short answer is "yes" when applied to commodity software because the method of participation is restricted by NDAs and the inability to share with others that may have useful contributions.

Like any other sort of fringe activity, you find that people are attracted to it because there's something that it fulfills that their daily life doesn't. - Paul Jennings

You're free to continue this discussion as comments, but I would appreciate it if you keep the flame wars / baits to a minimum.

Filed under  //   Creativity   Greedy Corporations   Software Development  

Comments [0]

Loading mentions Retweet

Why I'm Proud To Be A Dirty GNU Hippy (GoingWare)

By earning my bread through writing software, I made a pact with the Devil. In seventeen years spent working as a software engineer, I have been required to sign a non-disclosure agreement by everyone I have ever worked for. I have never been allowed to write Free Software. All but a tiny bit of the source code I have written in seventeen years of hard labor is now kept a jealously guarded trade secret by those who paid me to write it. Many of those companies are now long out of business, yet I could still be sued or even imprisoned should I release any of the source code I wrote for them.

So true and probably why there are a lot of people trying to figure out how open source can pay the bills. I'd be one of those as I like sharing my work, but if only it would pay my mortgage.

Filed under  //   Linux   Open Source   Software Development   Software Licenses  

Comments [0]

Loading mentions Retweet

Alex Payne — Don't Be A Hero

If you’ve built a system that’s supposed to be reliable, you shouldn’t be up fixing it at four in the morning. You shouldn’t be getting paged at all hours. Sure, you might need to do some occasional planned after-hours maintenance, or some very occasional unplanned-but-process-driven disaster recovery, but you shouldn’t need a hero.

Heroes are damaging to a team because they become a crutch. As soon as you have someone who’s always willing to work at all hours, the motivation from the rest of the team to produce reliable, trouble-free software drops. The hero is a human patch. Sure, you might sit around talking about how reliability is a priority, but in the back of your mind you know that the hero will be there to fix what doesn’t work.

Another great post by Alex Payne. Everybody knows a "code" hero or has been one yourself as one point or another. The problem that Alex points out is that when it happens too often, you are letting your team be mediocre or lazy and you rely on the hero. By now, I hope you have the time to read the whole post.

Filed under  //   Software Development   Teamwork  

Comments [0]

Loading mentions Retweet

Example of Bad Security - WeTV.com Exception Shows File Paths

Fatal error: Cannot use object of type MDB2_Error as array in /na/na010uspln2/vol2/production/apache-docroots/wetv.com/public/live/gadgets/ScheduleGadget/ScheduleGadgetIMP.php on line 168

My wife randomly surfed over to the WeTV site and it appears to be down at the moment. Above is an example of a bad security practice -- they show file paths on their exception page.

Filed under  //   Security   Software Development  

Comments [0]

Loading mentions Retweet

Drone Or Phone? (Shot of Jaq Podcast)

Download ogg Download mp3


It is not often you hear the words “iPhone Killer” thrown around the place and taken in any way seriously, but Android has been getting hopes and expectations a-pumping. Jono Bacon and Stuart ‘Aq’ Langridge crack open the story and explore the opportunities and risks that Google face in how the Open Source community see this exciting new mobile system.

An interesting podcast discussion on Droid or iPhone with Jono Bacon and Stuart 'Aq' Landgridge (i.e. J + Aq). I love the part about using the Droid OS on netbooks. It particularly interesting to hear about how Droid is more "open source" in the terms of applications than the closed source iPhone platform.

Filed under  //   Droid   iPhone   Open Source   Software Development  

Comments [0]

Loading mentions Retweet

New Query Functions Released (Open BlueDragon Blog)

New Query Functions released

Published: 2:01 PM GMT, Friday, 1 January 2010

We've justed finished the a whole new set of functions to help with the manipulation of Query objects and their respective datasources.

The following table highlights all the current functions within the Query category available in the OpenBD (nightly build) release:

DatasourceCreate Adds a new datasource to the system for use with any database functions. This does not persist over server restarts
DatasourceDelete Removes the given datasource. Note, it will not remove any datasource that was registered with the underlying bluedragon.xml file
DatasourceIsValid Checks to see if a given datasource has been previously registered using DataSourceCreate()
QueryAddColumn Adds a new column of data to the exist query object, returning the column number
QueryAddRow Adds the specified the number of rows to the end of the query
QueryColumnArray Returns all the data in a query for a given column
QueryColumnList Returns all the data in a query for a given row but as a structure
QueryDeleteColumn Deletes the column from the query, returning the deleted column data as an array
QueryDeleteRow Deletes the row within a query object. Modifies the original query object
QueryIsEmpty Determines if the query has any rows
QueryNew Creates a new query object with the columns past in of the optional types
QueryOfQueryRun Executes a Query-of-Query against a previous SQL result sets. Function version of CFQUERY
QueryRowStruct Returns all the data in a query for a given row but as a structure
QueryRun Executes the given SQL query against the given datasource, optionally passing in paramters. Function version of CFQUERY
QuerySetCell Sets the given column within a query with the value at the given row, or the last row if not specified
QuerySort Sorts the query based on the column specified and the order criteria given. Modifies the original query object
QuotedValueList Returns a quoted list of all the values, for a given column within the query, delimited by the value given
ToCsv Transforms the query object into a Comma Separated Value (CSV) block
ToHtml Transforms the query object into an HTML TABLE block
ValueList Returns a list of all the values, for a given column within the query, delimited by the value given

These functions will greatly increase the speed and efficiency to which you can work with Query objects.

Many of the functions where available using other means. For example, QueryDeleteColumn could have been achieved by performing a query-of-queries leaving out the column you wanted to remove. This however had a huge overhead, as well as duplicating the data.

You can read more about the DataSource functions over at Alan Williamson's blog.

Thanks to Peter J Farrell for many of his suggestions.

One word. Woot! Happy New Year!

Filed under  //   CFML   Open BlueDragon   Open Source   Software Development  

Comments [0]

Loading mentions Retweet

Help keep the Internet free by saving MySQL (Monty Says)

A big part of the Internet is built on LAMP (Linux, Apache, MySQL and PHP/Perl/Python). Now Oracle is trying to buy Sun, which owns MySQL.
It's not in the Internet users interest that one key piece of the net would be owned by an entity that has more to gain by severely limiting and in the long run even killing it as an open source product than by keeping it alive. If Oracle were allowed to acquire MySQL, we would be looking at less competition among databases, which will mean higher license and support prices. In the end it's always the consumers and the small businesses that have to pay the bills, in this case to
Oracle.

If this is the only blog post you read in 2010, then I highly encourage you to read the entire self-interview style blog post by clicking the "via" click above. "Monty" is the guy that started MySQL over 27 years ago.

I personally believe that Oracle can have Sun by should not have MySQL. The one critical part of the LAMP stack is at risk. Without MySQL, we only have Postgres which is great but does not have the same "business" community around it yet. So I encourage you to sign the Save MySQL petition at http://www.helpmysql.org which will be forwarded to the European Commission which must approved the Oracle / Sun deal. Considering the amount of time and money spent by Oracle to get this deal approved the future of MySQL is definitely at risk. Oracle could have quickly gotten the deal done if they had divested MySQL AB immediately, but they willingly have lost an estimated $1 billion in order to get MySQL.

Even if you don't use MySQL, you'll end up giving more money to Microsoft for their DB or pay Oracle for theirs then I highly suggest you sign the petition. The future of free internet is at stake!

Filed under  //   Greedy Corporations   MySQL   Open Source   Software Development  

Comments [0]

Loading mentions Retweet

EOL of MySQL Query Browser, MySQL Administrator, MySQL Migration Toolkit (MySQL Workbench Team Blog)

With the beta releases of MySQL Workbench 5.2 well under way, we recently announced the EOL (http://www.mysql.com/support/eol-notice.html) of the MySQL GUI Tools Bundle.

Wow, this is news to me and it looks like they have a DEB for Ubuntu. It's about time MySQL pays attention to Linux on their GUI tools. Maybe this will replace my the old DBDesigner tool (which was "bought" my MySQL to make room for the Workbench about 3 years ago). I'll blog when I get a chance to try out the Workbench. Hopefully I can say goodbye to the older MySQL tools soon!

Filed under  //   MySQL   Software Development  

Comments [0]

Loading mentions Retweet