A blog by Jacob
I’ve been looking for ways to write code inside a web browser. There are a number of offerings, and I plan on giving a serious look to the free ones.
So far, I’ve come across runnable.com, It seems like a good site to share code snippets that can be executed right on the site. Kind of like a YouTube-like site for sharing code. It isn’t the sort of site that you would want to code a large project, but good for sharing just a chunk of code that might be useful by others or useful for programming instruction.
Some of the things I am looking for when writing code in the cloud is the ability to import, export, run, and write code easily. I am especially looking for the ability to work along side my existing development practices on my home computer.
I’ve seen many software products have a version numbers in the form of:
Where X, Y, and Z are integers. For example, I’m using Linux 3.8.0.
Communicating a software version number is important because it communicates the fact that the same software title can be different between versions.
Unfortunately, when using X.Y.Z numbering, too many software publishers leaves the meaning out of the components of the version number. Often changes in X mean “big change”, changes in Y mean “medium change” and changes in Z mean “small change”. So software of version 3.2.1 is much better than version 1.2.3, but version 1.0.2 is only minimally better than version 1.0.1.
The problem with this is that it it is subjective. What a publisher considers a big change might not be important to a particular customer. What a publisher considers a small change might fix a show-stopping bug for another customer. When it takes someone’s judgement to decide the version number of the next release, your version numbering scheme is messed up.
When choosing a version numbering scheme it is important to remember how the version number will be used. Sometimes, a customer wants to know how old a software release is, in which case a date-based scheme might be appropariate. In many situations, a customer only wants to know if one version is newer than another version. In this case, I might suggest a simple numbering scheme where version 20 is newer than version 19 is newer than 18.
Firefox uses an X.Y scheme where X is the release number and Y indicates how many bugfix re-releases have been made. For example, Firefox 21.2 would indicate the second bugfix release for the 21st new feature release of Firefox.
When developing a software library, I like to use an X.Y.Z numbering scheme. If the API to the library is backwards incompatible, then X increments (and Y and Z reset to zero). If I add a new feature, then I increment Y (and Z is reset to zero), and I increment Z if I fix a bug. Consumers of my library can look at the version numbering to help them quickly decide whether or not they should update. If they see only Z change, then they should be able to get the only the bug fixes and improve stability. If they need to use a new feature, they should use a version with an incremented Y component. If the X component of the version changes, the library should not be updated until the developer has an opportunity to review the changes and adapt the consumer of the library.
If you are generating QR codes, you should try for a QR code that uses only uppercase characters, numbers, and some basic symbols. This way, the code only uses 5.5 bits per character. If you were to include lowercase characters, then you use 8 bits per character.
For example, encoding HTTP://SQUAREGALAXY.COM results in this image:
But encoding http://squaregalaxy.com (lowercase) results in this more complicated (harder to scan) image:
Posted in Technicalon Mar 15, 2013
In this year’s spring cleaning, Google was bold enough to kill off Google Reader, a product that they had been supporting for over 7 years. Considering Google’s lack of restraint in discontinuing even popular products, the list of Google services that may get cut next suddenly gets bigger:
Google Offers tries to play in an over-saturated market of daily deal sites. Google may decide to stop offering Offers directly, and role that functionality into Google Shopping.
Google Checkout plays better in some use cases than in others. Google may decide to refine the scope of Wallet/Checkout, perhaps restricting its use as a third party checkout system, where Paypal maintains a stronghold.
Google Finance hasn’t seen a significant update in many years. Being a non-essential componenet to the Google portfolio, Finance may find itself in the same situation of Reader with decreased usage and lack of profitability.
Google Toolbar for IE will likely see decreased usage because of IE 10 and Windows 8. Most Google fans will probably just use Google Chrome instead, leaving little motivation for Google to continue supporting Toolbar.
Google Picasa is an oddity. It doesn’t appear to fit well into any of Google’s main strategies. It is also one of Google’s few remaining desktop installed software offering. I don’t think Google will kill Picasa, but they may decide to sell it off to someone else.
Google Talk for Windows may go away as Google pushes people to use chat in Gmail, Google+, or mobile apps. Talk may service spring cleanings depending on how it plays into the Google Apps for Businesses strategy.
Google Voice allows you to have a single phone number that connects to all your phones. But with many people ditching land lines in favor of their (Android) phone, Google Voice is looking more and more obsolete.
Orkut probably still has quite the following in various geographies, but it seems odd that Google would want to continue two competing social platforms.
Google Alerts is a minor feature that isn’t very well used, so I could see it going away in favor of other Google efforts.
Google News is a lot like Google Reader, in that it aggregates articles from all sorts of other sites, and doesn’t contain any advertising. With more people being alerted to news from their social media sites, and with news providers requiring paid subscriptions for online access, discontinuing Google News would be about as bold as discontinuing Google reader.
Today Apple announced some new portable devices, perhaps most notably, the iPhone 5. Here are some of my thoughts about today’s announcement:
I was working in an organization when there was a lot of panic about lack of software quality. Immediately a team was spun up and tasked to implement some form of automated testing.
While well intentioned, I think the associated between software quality and testing is a little misguided. Testing can be used to discover a lack of software quality, but by itself it doesn’t cause software to be of higher quality. Sure a software developer can take the results of testing and fix any defects, but that process isn’t testing, it is developing.
Software quality comes through quality software development. When software developers follow good development practices, they will create higher quality software.
So while testing isn’t bad, a company looking to improve software quality should look at the development practices first.