The debt metaphor in software development

In a new post, Ward Cunningham shares his thoughts on the “debt metaphor” in software development. One of the points he brings out is that programming can be thought of as making decisions now on the functionality of the program and deferring others to a later time (debt), with the understanding that as the program matures, refactoring can occur to make the program more efficient/better (paying back the debt).

In my experience in avionics software development, the creation of software is driven by approved requirements. As requirements change or are refined, the software is updated to be consistent with those requirements. One type of “debt” I see is when functionality is not completed on time, and gets deferred to a later software release (cost increase). Another type is when a problem is found (requirements, source code, tests, documents), but addressing the problem is deferred to a future time (the problem does not impact the functionality of the requirements, source code, or tests, or is deemed not  a safety issue). This type of debt (typically called “open problem reports” (OPRs) is getting more scrutiny by aircraft certification agencies and OEMs (Bombardier, Boeing, etc.), since they see increasing numbers of OPRs as an indicator that the overall “health” of the software may not be as good as it should be, and that there should be as few OPRs as possible (in other words, fix your problems as you find them).

For myself, I prefer to fix problems when they come up. However, when you work as a member of a team, sometimes business decisions dictate otherwise….

 

Using app from Jon Udell to annotate web audio

I linked to a Jon Udell post on Sunday where he describes his recent experiments on annotating audio files available on the Web. It looked so good that I had to try it to annotate a podcast!

His app is at http://jonudell.net/av/audio.html. I then needed to find a URL to a MP3 file, which took a little bit of searching, since a lot of podcast play pages are not a direct link. Finally, I settled on an extended cut episode of Side Hustle School.  I hovered over  the “Listen Here” link for episode 12 and saw that it was a link to a MP3 file. I copied the link address and pasted it into the url text box in the Jon Udell app. Next, I entered a start time and stop time for the clip (from 1:00 to 2:00) in the selection boxes on the app page, then clicked the button “Play clip”. The app then started at 1 minute in and played for 1 minute – excellent! Finally, I clicked on the link at the bottom where it says “link to av editor with these settings” to get a URL for my clip. Now you can listen to it as well!

Thanks Jon!

How to get started (in programming)

I linked to an article on Linux Journal Saturday discussing how to get started in programming. I think this is a good article for several reasons, one of which is picking a skill to learn and getting started. For me, picking a small thing to create or learn, getting some success and getting that working, helps me to get enthusiastic. I am then ready to pick up a new thing. This is the process I am using to learn the Tone.js Javascript music library. I worked through some of the code examples, then came up with a small project, broke it down into a set of steps, and I am working through them one at a time. Success!

Learning something new can be hard

Even though I have been working in software development for over 30 years, it can still be hard to learn new things. You start on a tutorial, then find you have the wrong version of something, then discover that you need to install a development kit, only to find that there is still something not working. Sigh…

Example 1: I spent some time playing with RSS Cloud recently. I was trying to access the RSS Cloud server from my shared hosting webhost, but I was unsuccessful. I was able to access it from a second cloud server. Eventually, I found out that I could not access ports above 1000 from my shared hosting. Ugh.

Example 2: I was trying to export some old WordPress websites and render them as static websites using Jekyll. However, I could not use one of the standard converters because I did not have a Ruby development kit installed. I then tried several others and finally worked around this, but I am still not there yet.  Ugh ugh.

Example 3: I have recently been following the work of Melody Kramer and the 18F team at the GSA. I thought I would take a shot a cloning a repo from their Github site and trying to rebuild the repo using Jekyll, but ran into a number of tool issues (please note I am not blaming the 18F team!). Ugh ugh ugh.

Takeaways: Nobody ever said software development was easy, sometimes you just have to keep digging…and maybe backing up and taking smaller steps.

Thanks for listening…