Lampson’s Hints for Computer System Design

Although it’s a bit dated in parts (mostly the examples), the article Hints for Computer System Design by Butler W. Lampson is still a valuable resource for today’s designers and engineers. It’s a nice reading, with plenty of timeless advice. For instance, regarding the issue of how to handle all the cases, the article says:

“Handle normal and worst cases separately as a rule, because the requirements for the two are quite different:

  • The normal case must be fast.
  • The worst case must make some progress.

In most systems it is all right to schedule unfairly and give no service to some of the processes, or even to deadlock the entire system, as long as this event is detected automatically and doesn’t happen too often. The usual recovery is by crashing some processes, or even the entire system. At first this sounds terrible, but one crash a week is usually a cheap price to pay for 20% better performance. Of course the system must have decent error recovery (an application of the end-to-end principle…), but that is required in any case, since there are so many other possible causes of a crash.”

The full article can be found at Microsoft Research.

Programming: A Constructive Art

In the preface of “Algorithms + Data Structures = Programs” (Prentice-Hall Series in Automatic Computation, 1976; page xv), Nicklaus Wirth stated (boldface mine):

Programming is a constructive art. How can a constructive, inventive activity be taught? One method is to crystallize elementary composition principles out of many cases and exhibit them in a systematic manner. But programming is a field of vast variety often involving complex intellectual activities. The belief that it could ever be condensed into a sort of pure “recipe teaching” is mistaken. What remains in our arsenal of teaching methods is the careful selection and presentation of master examples. Naturally, we should not believe that every person is capable of gaining equally much from the study of examples. It is the characteristic of this approach that much is left to the student, to his diligence and intuition. This is particularly true of the relatively involved and long example programs. Their inclusion in this book is not accidental. Longer programs are the prevalent case in practice, and they are much more suitable for exhibiting that elusive but essential ingredient called style and orderly structure. They are also meant to serve as exercises in the art of program reading, which too often is neglected in favor of program writing. This is a primary motivation behind the inclusion of larger programs as examples in their entirety. The reader is led through a gradual development of the program; he is given various snapshots in the evolution of a program, whereby this development becomes manifest as a stepwise refinement of the details. I consider it essential that programs are shown in final form with sufficient attention to details, for in programming, the devil hides in the details. Although the mere presentation of an algorithm’s principle and its mathematical analysis may be stimulating and challenging to the academic mind, it seems dishonest to the engineering practitioner. I have therefore strictly adhered to the rule of presenting the final programs in a language in which they can actually be run on a computer.”

Several decades later, I think Wirth’s observations about teaching and learning to program are still thoroughly valid. In fact, even today, the art of program reading is still neglected in favor of program writing. Careful reading and analysis of others’ code is a great resource for learning and improving our programming skills. And, of course, great minds are timeless.

NagiQ 2 Treasure Hunt: Press Release

December 16, 2013IKIGames releases NagiQ 2: Treasure Hunt, an original word game available for PC, Mac, Android tablets and iOS (iPad). Gameplay is based on forming words and combining them on a board to win coins, defeat an evil pirate, win prizes, punch evil skulls, explode monsters, and trim mustache guys. The player will have to solve 75 boards and also collect all of the game’s treasures!

Key features of NagiQ 2 Treasure Hunt:

  • Rich and original gameplay! Each island has its unique challenge and enemies! The Iron Hand Pirate, evil skulls, monsters, mustache guys, and multi-letter tiles!
  • Form words to capture gift boxes. You could win coins or special Lorin letters which will help you to form words!
  • Rise your score to unlock letters! The more letters you unlock the more your chances to succeed!
  • Receive all of the game’s treasures by conquering islands and for your achievements.
  • Support for English and Spanish languages!

NagiQ 2: Treasure Hunt is available in English and Spanish languages. The game is priced at USD 7.99 for PC (on the game’s website), USD 1.99 for Mac (via Mac App Store), USD 0.99 for Android (on Amazon) and USD 0.99 for iPad (on the App Store). Further information and review copies of “NagiQ 2: Treasure Hunt” can be obtained by contacting IKIGames (@superikigames).

IKIGames is an indie game company focused on development of educational, thought-provoking and family-friendly games for desktop and mobile devices.

Release Date: December 13, 2013
Platforms: PC, Mac, Linux, Android (tablets), iOS (iPad)
Available: via IKIGames’s website (PC), Mac App Store (Mac), App Store (iPad), and Amazon (Android).
Press Kit: NagiQ 2′s Press Kit.
Video: NagiQ 2: Treasure Hunt Video

The Rainbow Machine Air Edition heads up the list of most popular Airspace games!

Big news! Our latest game, The Rainbow Machine Air Edition, is currently leading the catalogue of most popular games in Airspace, the store for LeapMotion games. Needless to say, we’re very happy to see the outcome of hard work, commitment and perseverance. We love the LeapMotion device and so should you ;-) Regardless of the times of code scavenging and bug hunting, overall development of The Rainbow Machine Air Edition has been a journey full of joy and learning. And coding doesn’t stop. In the upcoming days we’ll have important news about the game we’re currently working on: NagiQ 2. Meanwhile, thanks to everybody for your support!

The Rainbow Machine heading up the list of Airspace's most popular games

The Rainbow Machine heads up the list of Airspace’s most popular games

The Rainbow Machine for Leap Motion is now available on Airspace!

Great, great news! Today is the launch day for the widely anticipated touchless technology, Leap Motion. And our game, The Rainbow Machine, is one of the 75 launch titles. We are very, very happy to see our game in the launch portfolio :D It has been a long (and winding) road: sleepless hours of bug hunting and UI redesign. We have to thank the Leap Motion test team for their continued guidance and their patience. Please, take a look at The Rainbow Machine in Airspace. It’s available for both Windows and Mac. We hope you like it :D

The Rainbow Machine Air Edition is finally out!

The Rainbow Machine Air Edition is finally out!

The Rainbow Machine Air Edition is now available in Airspace Beta program!

The Rainbow Machine in the Airspace Games category

Good news! A few months ago we developed The Rainbow Machine Air Edition, a version of our game The Rainbow Machine tailored to harness the incredible capabilities of Leap Motion devices. Our game is now available for free in the Airspace Beta program, so if you’re a Leap Motion user with access to the Beta program, please take a look at our game here. All your comments are welcome!

The Rainbow Machine Air Edition

Essentially, The Rainbow Machine Air Edition uses Leap Motion’s gesture detection and motion tracking device and API to offer a novel play experience. As our game is based on LibGDX (using LWJGL as backend for desktop) integrating the Leap Motion API was a pretty straightforward task, which allowed us to release the game for both Windows and Mac OS X. Regarding the gameplay: in The Rainbow Machine Air Edition you use your fingers (or “tools” like some chopsticks or pencils) to control and position a bar. In each of the game’s 140 levels, once the bar is set, a blue ball will automatically fall down and if you have properly placed the bar then the ball will bounce and reach the treasure chest of the level!

Do you want to know what’s the most important part about The Rainbow Machine Air Edition?… That we had a lot of fun creating our Leap Motion game! And we hope everyone who plays The Rainbow Machine Air Edition will also experience a fun time. By the way, it’s been a great pleasure to work with the Leap Motion team: support is prompt and complete, they gave useful feedback, conducted an exhaustive testing of the game, and provided a flawless guidance throughout the process. A pleasure to work with them, indeed.

Now we’re looking forward to the official opening of Airspace. Stay tuned! And thanks for reading! :-D

Measuring a programmer’s productivity

Measuring a programmer’s productivity is a difficult chore mainly because analyzing the final output of a programmer’s activity (software, usually) can be a very challenging task. Furthermore, what are our guidelines for identifying good software? Speed of execution (or of development), needed space, conformance to requirements, being readable, battery consumption…? All of these and even more? During my college years I remember taking a course on Assembly language. Our teacher used a simple scoring method: the best program (and thereby the program receiving the maximum grade) would be the one with the smallest count of lines of code, and of course the program would also have to generate a correct output. Well, the lines-of-code scheme is a simple, direct measuring system, but it’s rarely effective. I was reminded of this college course by this text I read today at computerhistory.org:

When the Lisa team was pushing to finalize their software in 1982, project managers started requiring programmers to submit weekly forms reporting on the number of lines of code they had written. Bill Atkinson thought that was silly. For the week in which he had rewritten QuickDraw’s region calculation routines to be six times faster and 2000 lines shorter, he put “-2000″ on the form. After a few more weeks the managers stopped asking him to fill out the form, and he gladly complied.

Needless to say, another proof of Bill Atkinson‘s genius.

First public images of DragonScales: Chambers of The Dragon Whisperer

We’re working on a new game: DragonScales: Chambers of The Dragon Whisperer. Further information, including genre and platforms, will be progressively released. For the time being, we’d like to share the game’s logo and main screen designed by our artist.

DragonScales Logo (Black background)

DragonScales Logo (Black background)

DragonScales Logo (White background)

DragonScales Logo (White background)

DragonScales Loading Bar Style

DragonScales Loading Bar Style

DragonScales Main Screen

DragonScales Main Screen

We’re working hard on this new title, and we look forward to publishing additional information in the following weeks. Meanwhile, thanks for passing by! :)

The Rainbow Machine Press Release

March 11, 2013IKIGames releases The Rainbow Machine, a physics-based puzzle game available for PC, Mac, Linux, Android tablets and iOS (iPad). Game play is based on directing a sphere towards treasure chests to retrieve the pieces of the stolen Rainbow Machine. You will have to solve 140 tricky puzzles and also defeat the burglars: a wicked bunch of kleptomaniac rats!

Key features of The Rainbow Machine:

  • 6 islands amounting to 140 playable levels of increasing difficulty.
  • Colorful story scenes.
  • Retrieve 16 pieces and materials of The Rainbow Machine.
  • Find 6 hidden trophies.
  • Collect coins for buying items: Rebounder Improvements, Initial Impulse and Invincibility.
  • Helper items to reach treasure chests.
  • Achievement stars to rate your play.
  • Mischievous bosses are awaiting for you at the end of each island.
  • Unlock new islands by defeating bosses or rising your score.
  • Play a fun Jackpot stage at the end of some levels to win extra coins.
  • Tricky puzzles based on:
    • Bouncing marshmallows
    • Breaking blocks with bombs
    • Avoiding saws and monsters
    • Bouncing off moving platforms and oranges
    • Sliding ice blocks
    • And many more game actions.

The Rainbow Machine for Windows is available in English, French and Spanish. The other versions are available in the English language. The game is priced at USD 9.99 for PC (on the game’s website), USD 6.99 for Mac (via Mac App Store) and Linux (via Ubuntu Software Center), USD 0.99 for Android (on Amazon) and USD 3.99 for iPad (on the App Store). Free demo versions are available for try out before purchase (Windows, Mac, Linux, Android). Further information and review copies of The Rainbow Machine can be obtained by contacting IKIGames (@superikigames).

IKIGames is an indie game company focused on development of educational, thought-provoking and family-friendly games for desktop and mobile devices.

Release Date: March 11, 2013
Platforms: PC, Mac, Linux, Android (tablets), iOS (iPad)
Available: via IKIGames’s website (PC and Linux), Mac App Store (Mac), Ubuntu Software Center (Linux), App Store (iPad), and Amazon (Android).
Demos: Windows, Mac, Linux, Android.
Press Kit: The Rainbow Machine’s Press Kit.