The Greedy Restaurant Shares Software Improvements with Other Restaurants

EDIT: If you are actually looking for Open Source Restaurant Reservation software, take a look here.

I recently came across a question asked by a high school student in the United Kingdom. One of his teachers had asked a question that seemed to imply that needing to share improvements to open source restaurant reservation software with the open source project that created the software was a disadvantage of using open source software.

Im currently delivering a high school qualification in the UK and part of the course is on open source. We have just had an examination paper with a question on what are the disadvantages of using open source software to create a restaurant booking system.

One of the model answers says that the restaurant would have to then release their changes to the public.

For some reason, the fact that this was a model answer bothers me, because that implies that this answer is something the student should strive to emulate to receive a good grade. As if that answer could possibly be part of a coherent answer that makes any reasonable attempt to take the full implications of open source economics into consideration.

So, let us examine the many ways in which sharing code improvements with “the public” for $0.00 is to the advantage of the individual restaurant. Each of the below points could easily be expanded to be an essay unto itself, but I shall endeavor to be brief. We will start by examining a few ways in which it has no negative effect on the individual restaurant because it almost certainly isn’t going to help the competition. Then, we will look at how it will help the restaurant.

Sharing Hurts Nothing.

To begin with, their food and customer service will never be identical to another restaurant – a streamlined reservation system does not change the attire or politeness of staff, nor the amount of curry in the food. Restaurants supply a heterogeneous product, and that product ain’t software.

Furthermore, the software would not even necessarily work for any other restaurant unless it was using an identical software stack minus these trivial modifications.

Thirdly, restaurants outside that city or county are not competitors. If one restaurant in several cities or counties use, improve, and share the software then each of these restaurants will benefit at the expense of all other restaurants in their respective cities. Unless the software becomes ubiquitous, odds are the small number of restaurants adopting the software will be from different cities — located in different markets.

Sharing Has Many Benefits.

It is in each individual restaurant’s best interests to submit the improvements upstream so that each time a new version of the software comes out, they can benefit from all of the other improvements without the need to re-patch the new version of the software with the stuff they wrote. It is far more efficient and streamlined to allocate resources towards working as part of the wider team than to allocate all of the resources that would be needed to maintain internal patches and revision control.

If a single competing restaurant in the given city does use the improved software, then it will still be in that other restaurant’s best interests to share-alike as well any improvements they make (or bug reports, or even feature requests) — so the two restaurants in the same city (eg, market) using this software can both share a comparative advantage over the other n restaurants in town.

Finally, explicit costs of sharing code improvements upstream (eg, “to the public”) are nil as the IT guy that is familiar with Open Source and can do a bit of coding is already assumed to be an employee in the scenario created by the question, and the Marginal Benefit of releasing modified source code back is almost certainly going to exceed Marginal Cost. If there is one thing drilled into the head of any student of economics, it is that if MB > MC – you move forward and do it. Period, and end of story.

So, clearly, it is not a disadvantage for a restaurant to share improvements made to the software “with the public”. They will not be getting any direct revenue for this software, but they will be getting additional indirect revenue through the continuous improvement in their critical customer service infrastructure that this is a key contributor to. The restaurant should not contribute code improvements upstream to be nice or to be communists, they should share this stuff for $0.00 to be greedy rational self-interested business people trying to make as much money as humanly possible.

The Greedy Restaurant Shares Software Improvements with Other Restaurants

iOS (iPod, iPad) Devices on Linux – Long Term non-jailbreaking Solution

Outline of the Problem.

Many people would like to have their iOS devices, such as iPods and iPads interact with their Linux devices. Apple clearly lists Microsoft Windows or OS X as a requirement for such devices, but I can nonetheless understand why someone may wish to get use out of a gift they received or similar instead of selling it or giving it away. There are several reasons why I personally avoid such devices, but I can respect the choices of others.

Those that have chosen to own iOS devices and not use proprietary desktop operating systems are frequently met with frustration when trying to sync them or have them otherwise communicate. A method is developed by a clever open source volunteer programmer, it works for a few months, then suddenly stops working with an iOS update. Rinse, repeat.

There is already a long-term solution that, while legal, voids your warranty on the device and is often difficult for non-techy types.

A Humble Proposal.

There generally is no long-term approach outlined to break this cycle that doesn’t involve voiding of warranties, so I will outline and propose one.

  1. Look into methods to cease software/firmware updates to the device.
  2. Wait for the open source volunteer programmers to work around Apple’s shenanigans as of the last time you did get an update, and thus your device will eventually work again.
  3. Continue to not update the device.

I have no idea if this is currently possible without jailbreaking an iPhone with an active data plan that is always internet-facing, but I would encourage the aforementioned open source volunteer programmers and casual tinkerers to focus on a method wherein the device is not fully jailbroken. Only any forced system update software needs to be turned off, disabled, or have its knee caps busted with a sledge hammer. Ideally, the semi-skilled bureaucrat at the Apple Store will not be able to tell at a that this was done when casually going through the itemized warranty verification checklist.

The simplest method of avoiding updates for an iPod is to simply never connect it to iTunes.

Worth Noting.

This long-term solution could be implemented in addition to the current short-term solution that works, as outlined somewhere on the internet so that you can get your device working today. I cannot link to the current method because that would render this post obsolete exactly one iOS update from now, but I can offer you a hint: for the short-term solution that currently works, you need to be looking at how-to guides and discussion forum posts more recent than the date of the last iOS update you received.

Remember that the short-term solutions are cyclical and temporary. Don’t be surprised if the method that worked last month no longer works today.

If your iOS device is receiving updates, one will eventually break all currently existing non-iTunes & non-Steve-approved support.


This difficulty is by design, not accident. The entire point of many of Apple’s so-called security updates is to maintain or re-introduce Apple’s security and control. Over you.

The base problem that causes the problem outlined in this article is a social problem – how people treat people, such as how the folks running the Apple Corporation treat customers. Thus, what I propose here falls into the realm of a technological solution to a social problem. In itself, that presents a problem. A smart fellow just the other day pointed out that technological solutions to social problems are generally imperfect (much like military solutions to social problems). This proposal, even if implemented perfectly, will still be imperfect. It will still require extra hassle on the part of the end-user, for example.

If you have come across this blog entry, then you have also probably read a relevant Wikipedia article or two, or maybe even three. Thus, I trust that you already know that there is a series of social solutions to this social problem and ones like it. Please respectfully and tactfully advocate for such a solution, when you see such an opportunity present itself.

iOS (iPod, iPad) Devices on Linux – Long Term non-jailbreaking Solution

Ubuntu Linux Sucks.

Well, not really. I like it and blog from it and use it every day by choice. Anyways, what follows is a post of mine from a discussion over at about Ubuntu’s difficulties in entering the mainstream.

Someone else said this:

The main problem with the competition for Ubuntu is not Mac or Windows. it is the other operating systems you can download for free, the hacked versions of Windows.
A few people criticized and mocked him. His post was not looking very popular, because it didn’t make anyone feel warm and fuzzy inside. Here is what I have to say, in response to his comment:

I think he is onto something, here.

It isn’t significant that one 20 year old nerd thinks he has it made with cracked windows–

–it is significant, however, that he has the 4 or 6 people in his life that he sets up with that cracked version and that he provides the tech support for. The best operating system for any non-nerd is whatever OS their local nerd is willing and able to support, period.

I spent 20 minutes just last night explaining to my Ubuntu-using mother what a ‘checkbox’ looked like in nm-applet over the phone, and that the lack of a check in the box did not mean it was magically no longer a checkbox. Or something. I really have no idea what I was explaining to her, I got more confused the longer I talked to her. All I know is that she eventually clicked around enough that her wifi that had previously magically broken had suddenly magically started working again. I wish I could claim to have helped my mother, but I really have no idea what broke and what fixed it. Fairy dust is just as good a guess as any. The point is this: I told my mother that I was willing and able to support Ubuntu, and she thus uses Ubuntu.

Another example: My nerd girlfriend has a Mac and, thus, so do both of her parents and all of her siblings and a few of her other friends. Not because anyone did any rational cost-benefit analysis, but because that is what she told them to purchase because that is what she felt she was willing and able to support. One nerd willing and able to provide support to her loved ones translates directly and exactly into 6 or 7 computer sales. Impressive, huh?

Ubuntu needs to replicate that effect.

I hate to say it, but the best thing that could ever happen to Ubuntu’s market share in the short term is that every cracked copy of Windows ceases to function tomorrow.

Few people will pay $200 for a start menu (or a dock) and facebook. Many will pay $0.99 to burn a CD-R for facebook – something that Ubuntu provides, like it or not.

Ubuntu Linux Sucks.

History of UNIX User Interfaces – 1969 to 1998

I recently came across a phenomenal graphical history of UNIX user interfaces done by user “Spice Weasel” over at, and I thought I would share it.

It includes screenshots of what the UNIX desktop looked like from the dawn of our modern operating systems in the late 60s to the turn of the millennium.

Sneak Preview:

Image of the CDE desktop from 1993. It is gray and purple colored, and pixels are clearly visible.
(Image Credit: screenshot from

Click here to see this wonderful piece in its entirety. Click here for the full discussion that includes it.

You will note that most of these old UNIX screenshots look much nicer than what you would find on a typical home computer of that same year. The most stunning case in point is the 1993 CDE, pictured above, as compared with the contemporary Windows 3.11 or Windows 95 that was still a few years in the future. Part of that is because these were intended for expensive and mission-critical big business uses, not for writing a letters to grandma.

The screenshots are of the following:

  • Unix in 1969. All of us Linux and Mac users are still using principles and methods that date from this period in time.
  • The great leap forward of twm in 1987. twm relied on the X Window System, from 1984. Many of us Linux and Mac users are still using X’s child, X11, on a daily basis.
  • 1989’s OpenWindows from Sun Microsystems.
  • CDE – Common Desktop Environment – in 1993.
  • FVWM-95 in 1995, a Red Hat implementation.
  • KDE in 1998.

To complete the history and fill in the last decade of UNIX user interfaces for a total of 42 years, this was me playing around with my desktop as of a few hours ago in the context of a hyper-nerdy discussion. If I weren’t lazier, there would have been a fancy icon and more imaginative text in the upper left corner.

(Click for full size)

History of UNIX User Interfaces – 1969 to 1998

2011: Best April Fools Pranks on the Web

My favorite internet holiday has ended, and I must now wait 364 days until the next.

I really shouldn’t say these are the “best”, but I already did. A more accurate statement would be that this is “a selection of ones that I found amusing”. Here we go:

US Army Moving to Stetsons

This one actually got both my roomate and his friend going for a while, both US Army veterans. In the case of my roomate, he recalled when the Army adopted the silly looking berets they currently wear, making the story credible.

Image of a soldier with the sun setting behind him, creating a silhouette effect. Soldier is facing the South, estimated by the sun setting in the West. He is equipped with a rifle, body armor, and a cowboy hat.
(Image Credit: US Army)

Linux to Adopt BSD License

If you aren’t a nerd, don’t bother looking at that one.

If you are a nerd: Includes quotes from Ballmer, Torvalds, rms, and Oracle.

I Am Going to Libya

A few people seemed to fall for that one. I made this picture to go with the article, but it would have introduced a plot hole so I didn’t post it at the time. It is completely over-the-top ridiculous.

Me, sitting on a bench. Baseball cap backwards, aviators on, smoking a cigarette. I have an M-14 rifle in my hands, and am wearing a bou-bou over camouflage and a rambo-style bandoleer. I look completely ridiculous.

Before any other Marines or Former Marines get all riled up over the distinctive pattern on my sleeves and collar: this was in my back yard and in the context of a joke. Settle down, jefe, you’ve got bigger fish to fry.

ThePirateBay Purchases eBay

Get it? PirateBay and eBay? Yeah.

Scientific American: “OK, We Give Up”

Worth reading the whole thing. It is satire, and mostly a criticism of pseudo-scientists, CNN and Fox news “experts”, creationists, etc. They talk about dinosaurs, global warming, and so on. You know, the important stuff.

And Finally, one that I hope is a prank: US Army to Issue Smartphones to All Soldiers

For Angry Birds and Words With Friends!? No! Google Maps and Text Messaging.

Unlike the Stetson article, the one was written by a named three-star General and was not updated today to include a giveaway that it was an April Fools joke.

If it is not a joke, I wonder how they came to the conclusion that American Troops carrying American Cellular Phones will have cell phone reception in foreign nations that we may someday be at war with, and I wonder what the rationale behind putting a GPS locater on every soldier was… to keep the enemy better informed of the whereabouts of American forces via radio triangulation?

That would especially be a concern in a theater were few locals have cellular phones. In such a theater, 40 people walking together and broadcasting radio transmissions over both cellular and GPS frequencies can pretty much mean only one of two things: either the 40 richest people in the nation are out for a walk together, or a platoon of US Army soldiers is on the move. We all know that telling a bunch of teenagers and people in their early 20s, “OK, everyone turn off your cell phones now” doesn’t always work out exactly as one would hope.

2011: Best April Fools Pranks on the Web

Elastcal: Simple Cross-Platform App for Econ Students to Calculate Elasticity Coefficients

This BASIC code could be modified for pretty much any repetitive formula that crunches four numbers together. The only real pain is keeping track of parenthesis.

I’m sure similar code has been written thousands of times to do the exact same task, but I thought I’d share mine. As it stands, this calculates the “Elasticity Coefficient” of a good or service from one price/quantity point to another price/quantity point. Google can help one find websites that do these calculations, but Google is generally not allowed to be used on tests. The formula used here is the ‘midpoint formula’ of supply or demand elasticity.

Platforms this works on:

  • Your web browser.
  • TI-83 and perhaps other TI- calculators that use BASIC.
  • Android phones.
  • Probably a bunch of other things, too. If you port it to something else and it works, please let me know!

Microeconomics Formulas this works for:

  • Elasticity Coefficient of Demand
  • Elasticity Coefficient of Supply
  • Cross-Elasticity of Demand
  • Income-Elasticity of Demand

I just added a few lines so that it also spits out the slope of the line at that segment.

It just spits out the numbers, it is up to you to interpret it.


Click here to run elastcal in your web browser. Requires Java. I have not done extensive testing on this version, and it looks like crap. It should still work, though. If you run into errors, please inform me and include as many details as possible.

Once it pops up, click “run” to start.

Point your smartphone’s barcode scanner at the below image to be directed to the website if you wish to attempt to use it on your smartphone.



TI-83s are very crummy computers and BASIC itself is a very crummy language, but that’s the most advanced thing I’m allowed to use on tests in my Economics class.

elastcal asking for input on TI-83.

elastcal showing results on TI-83.

On your TI-83 press “PRGM” and arrow over to “NEW”. Give it a name, and you should then be faced with a screen containing a “:” in the upper left corner under “Program:”.

Enter these lines of code. For “Disp” or “Input”, you enter that by pressing “PRGM”, arrowing over to “I/O”, selecting either “Disp” or “Input” and hitting enter. Make sure you keep track of parenthesis!

Disp "ELASTCAL V1.0"
Disp "BY C.T. MASON"
Disp " "
Input "OLD QUANT-",A
Input "NEW QUANT-",B
Input "OLD PRICE-",C
Input "NEW PRICE-",D
Disp " "
Disp ((A-B)/((A+B)/2)/((C-D)/((C+D)/2))
Disp (D-C)/(B-A)


I did a simple port to BASIC as implemented on the $0 Android app called “BASIC! + SQL” that you can find in the Android Marketplace. All three methods below work equally well at installing elastcal, pick the one that seems easiest to you.
elastcal asking for old quantity.

elastcal asking for new price.

elastcal returning the elasticity coefficient.

Method 1 to install:

Install “BASIC! + SQL” on your Android phone from the Android Marketplace, plug your Android phone into your computer click here to download elastcal, and save it to “rfo-basic -> source” on your Android’s MicroSD chip.

Method 2 to install:

If you don’t want to do all that, point your Android phone’s barcode scanner at this, and install it, to get the BASIC interpreter app:
QR Code that refers Android Phones to the BASIC! + SQL app in the Android Marketplace
Point your barcode scanner at this for the app I wrote, and download it to the rfo-basic/source folder on your phone’s SD card:
QR Code that refers Android Phones to elastcal.bas

Method 3 to install:

Install the “BASIC! + SQL” app, and enter the source code manually:

print "elastcal v1.0"
print "by C.T. Mason"
print "Released to Public Domain"
input "old quant",a
input "new quant",b
input "old price",c
input "new price",d
print " "
print "elasticity coefficient:"
print ((a-b)/((a+b)/2)/((c-d)/((c+d)/2))
print "slope of that segment:"
print (d-c)/(b-a)

Putting the Icon on your Home Screen:

Long-tap on the home screen to bring up the “Add to Home Screen” dialog.

Select “Shortcuts”.

Select “Launcher Shortcuts” with the telescope icon.

For “Program File Name”, enter “elastcal.bas”.

Leave “Icon File Name” blank.

For “Shortcut Name” enter “elastcal”

Hit “OK”. Hit “OK” again.



Elastcal for cellular phones relies on a piece of Free and Open Source Software covered under the very ethical and reasonable terms of the GNU General Public License, and as such it is not compatible and will never be compatible with the Terms of Service of the Apple App Store unless Apple’s ToS are altered significantly.

The copyright license of the software that makes elastcal work is the GNU GPL v3, and it says this:

You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License.

The App Store’s various terms and conditions place significant restrictions on recipients’ rights that are not compatible with the section in bold above. If you would like to see elastcal and “BASIC! + SQL” available natively on Apple devices, please e-mail Steve Jobs ( ) and ask him to modify the Terms of Service of the App Store to be more inclusive and open to people with different ethical codes than his own.

If iPhone and iPad web browsers are standards-compliant, then the web based version above should work for you. If not, there isn’t much I can do about the situation.

Elastcal: Simple Cross-Platform App for Econ Students to Calculate Elasticity Coefficients

NASA to Host Open Source Summit

NASA has announced its intention to hold an Open Source Summit at the end of March in California.

NASA’s first Open Source Summit will bring together engineers, policy makers and members of the open source community. Participants will discuss the challenges within the existing open source policy framework and propose modifications to facilitate NASA’s development, release and use of software.

[…] The summit will include sessions on licensing, government restrictions, such as the International Traffic in Arms Regulations, governance, and risk assessments.

One problem that has long plagued Defense and NASA programs is the duplication of efforts. Boeing will develop software to go with hardware it manufactures (avionics for a fighter jet, etc), and Lockheed Martin will develop software that does the exact same thing for hardware it manufactures. The end result is that tax payers end up paying for the development of two pieces of software that do the exact same thing for the exact same customer (US Government).

Increasingly, software development is a major component of high-priced hardware used by the United States Government. Software is the reason a stealth strike fighter developed in the late 1970s and early 1980s looked like a ridiculous collection of triangles borrowed from campy science fiction, and modern stealth fighters look like something that ought to actually be capable of flight.

Image of an F-117, with ridiculous triangles everywhere. Image of an F-22, looking sexy as ever.

(Image Credits: Wikipedia)

There are primarily two reasons that modern American stealth aircraft don’t look like low-budget science fiction:

  1. More powerful computers with better software allow better virtual modeling of flight characteristics and radar reflection. The F-117 was the best a supercomputer from the late 1970s could do at modeling something that would both be stealthy and fly. The F-117 is stealthy, but pilots have said that the F-117 flies and handles like utter crap. With more powerful modern supercomputers and better software, aircraft can be developed that are stealthy and actually fly well.
  2. More powerful computers with better software on-board the aircraft can keep a more complex aircraft in the air. If the F-22’s primary and backup and tertiary computers all fail at the same time for whatever reason, the pilot of an F-22 will immediately lose control of the plane, and all $150,000,000 of aircraft will be destroyed (for the pilots’ sake, one would hope the ejection seat is purely mechanical and/or not dependent on the aircraft’s central computer). No human pilot is or will ever be capable of keeping an aircraft such as an F-22 in the air without computer assistance.

Speaking of stealth fighters, software development is a significant component of the F-35’s spiraling costs and development delays. As the Lexington Institute points out,

Minor engineering issues arise the same way they would in any other cutting-edge technology project, and software is taking longer than expected to generate and test, just as it seems to in every other new weapons program.

We’re talking about dollar figures certainly in the hundreds of millions and possibly in the billions – dollars that are going to high-priced nerds in exchange for their coding skills, abilities, and time. Clearly, for big Defense and NASA projects, software matters. I used stealth aircraft here because the impact of software is well documented and easily verified. NASA’s fleet of space shuttles, also examples 1970s technology, have very rudimentary computer hardware and software on them – my Android cell phone is a far more powerful and capable computer than anything on the space shuttle.

There can be no doubt that the next generation of space technology will rely just as heavily on software as the current generation of stealth aircraft, and here is what NASA needs from that software:

  1. Efficient
  2. Reliable
  3. Lowest Cost Possible

So, let’s walk through these.

1. Efficient. The software should do what we expect it to do quickly and well using the computer hardware that will be on the platform. The ability to do the job on a large supercomputer cluster is irrelevant, the software needs to be able to get the job done on a computer weighing very little. There will be two or three identical computers, one primary and one or two backup. A few wasted kilograms could translate into several million dollars. Ideally, when it comes to spaceflight, we want there to literally be an “app for that” that runs on a computer the size of your cellular phone when fed the specifications for the spacecraft and plugged into its control systems. This type of thing may be best accomplished with clever and innovative programming by small groups of persons not part of a large bureaucratic and hierarchical group and thus not subject to groupthink. Or, it may not be best accomplished that way. The point is, it takes very few additional NASA resources to allow varied persons to try their hand at it with an open development model and it just may produce stunning results the way it did for the cyber-spies of the National Security Administration with SE Linux.

2. Reliable. Just a software bug on an F-22 can destroy an F-22, a software bug in outer space can certainly kill astronauts. The more eyes examining the software, the more likely we are to discover problems before they destroy billion dollar pieces of hardware. If the software is Open Source (for the economists, if it is a “Public Good” like your local dog park) then computer science students around the world can and will examine it. There is no reason that a particularly bright student working on his Master’s degree at a University in Moscow or Beijing couldn’t build a thesis around writing software for spacecraft.

3. Lowest Cost Possible. That student in Beijing? He will be doing that work for academic acclaim, and not for money. Instead of employing or contracting the entire development process, this will allow NASA to employ a much smaller cadre of accomplished scientists and program managers that,

  • Verify the quality of the code being contributed by our University student in Beijing and elsewhere.
  • Fill in and contribute code themselves in areas that volunteers aren’t.
  • Encourage and recognize volunteers. As one example, programming ‘bounties’ have been tried before, and work. “Whichever volunteer fixes Problem X will get a $10,000 check from NASA and recognition on the main page of”

One may express concern over this as a form of ‘outsourcing’ and ‘exploiting cheap labor’, but I believe those concerns to be overblown. The era of US-only space exploration is over; a US astronaut may fly to the International Space Station on a Russian-piloted spacecraft and dock with an Italian made docking module just prior to shaking hands with the Frenchman that is currently commanding the ISS. Why shouldn’t this attitude of open and inclusive international cooperation be expanded to include software development? And, as for the ‘exploiting cheap labor’ concern; a US programmer would be just as eligible for that $10,000 bounty as a Ukrainian one and, either way, the alternative to that $10,000 bounty may be one additional full time programmer making $100,000 per year.

Open Source software, essentially, is software that is a Public Good for all of humanity – except there is no “free-rider problem” that is present with traditional Public Goods. An example of a traditional public good is your local highway, that suffers wear and tear as people drive on it. Copying computer source code doesn’t wear the code out the way that driving on a road wears the road out and, in fact, the more that people have access to the code – the more improved the code gets. If the software needed to put a man or object in space is a Public Good, then the cost of doing just that is significantly decreased.

NASA’s Open Source summit may just be a part of ushering in the era of cost-effective space travel, the way Apache and Linux heralded the era of cost-effective website hosting – I’ve paid $0.00 for this very blog that runs on top of various pieces of Open Source Software. Apache HTTP Server and Linux didn’t make computer hardware any cheaper. It did, however, mean that one could do on a $2,000 computer and a very fast internet connection what once took a $20,000 computer and a very fast internet connection, starting in the mid-to-late 90s. In the early days of commodity web hosting, it took mandatory advertising or monthly payments for the business model to work. In 2011, as Open Source software became more efficient and associated web hosting costs continued to decrease, the business model works with me paying zero dollars and without any advertising. (For the curious: the business model that allows to host this blog without requiring that I pay for it is essentially one wherein the blog itself is regarded as advertising for the Open Source WordPress software.)

We will probably never see a day when space travel is free the way basic web hosting is currently free, but we may see a day when a trip to space costs only a few months salary for blue-collar working men and women. Open Sourcing the associated software is an absolutely integral part of making that dream a reality. Who wouldn’t like to have a honeymoon in outer space?

NASA to Host Open Source Summit