“Kill Your Darlings” is a Programming Principle Too

Posted on 28th February 2011 by Ryan Somma in Geeking Out
Proce55ing Source Code
Proce55ing Source Code
Credit: Niels Heidenreich

In his book On Writing Stephen King argued that to be a good writer, you must be able to “Kill your darlings,” where, for the sake of keeping the prose moving, you must cut out the non-essential parts, no matter how well-written:

Mostly when I think of pacing, I go back to Elmore Leonard, who explained it so perfectly by saying he just left out the boring parts. This suggest cutting to speed the pace, and that’s what most of us end up having to do (kill your darlings, kill your darlings, even when it breaks your egocentric little scribbler’s heart, kill your darlings)…I got a scribbled comment that changed the way I rewrote my fiction once and forever. Jotted below the machine-generated signature of the editor was this mot: “Not bad, but PUFFY. You need to revise for length. Formula: 2nd Draft = 1st Draft – 10%. Good luck.”

Writing code is much like writing prose, but I think it’s even harder to cut your most beautiful ideas from a computer program. In software design, we have to research heavily and go through hours of trial and error to produce some of our solutions. It’s one thing to slash several paragraphs of prose crafted in a hour of brilliant inspiration, it’s quite another to throw away an inventive solution and the wisdom that came with it.

[Continue Reading…]

Breakout of Slide Presentation Linearity with Prezi

Posted on 21st February 2011 by Ryan Somma in Geeking Out,Mediaphilism
Mxplx Prezi Screenshot
Mxplx Prezi Screenshot

At Science Online 2011 I was introduced to the Prezi Presentation Paradigm by Stacy Baker of Extreme Biology. After getting past a surprisingly mild learning curve, I was able to produce the following presentation mixing a Prezi presentation with desktop video capture:

Keeping in mind this is not the best example of a Prezi demo, you can step through and play with the Mxplx Prezi itself below (alternately, you can browse popular Prezis here). Don’t confine yourself to just click through the presentation, as you can click-and-drag, double-click, and zoom as well:

[Continue Reading…]

Comments Off on Breakout of Slide Presentation Linearity with Prezi

Generating Grids, Hexmaps, and Image Markups with JavaScript

Posted on 2nd February 2011 by Ryan Somma in Geeking Out - Tags:
Corrosion Mapping, Hotspots Highlighted
Corrosion Mapping, Hotspots Highlighted
(Not an Actual Report Image)

One application I had the honor of working with in my time with the Coast Guard was a Corrosion Mapping tool used by Engineers to track the wear and tear on aircraft parts over their lifetime. Using an Active X control, users would bring up a TIF of an aircraft part, and then click on grid coordinates laid over it to identify places where corrosion was noted. These X and Y coordinates were then saved to the database, where they could be tallied in reports, with the number of occurrences of corrosion highlighted to identify weak points in the parts. It looked something like the image above.

I recently tried to reproduce this functionality with JavaScript for an application where researchers would mark incidents of contamination on a building floor plan in order to determine the radius of the area that would need to be sterilized. Here are three JavaScript variations on this theme of plotting coordinates on a grid.

[Continue Reading…]

Social Network Mapping Fun with NodeXL and Science Online 2011

Posted on 17th January 2011 by Ryan Somma in Geeking Out
Social Networking Results for #scio11 Hash Tag on Twitter
Social Networking Results for #scio11 Hash Tag on Twitter
(Click to Enlarge)

The above image is just one graph of the many tweets related to the Science Online 2011 Unconference. I generated the above graph using the open-source free software NodeXL, a Microsoft Excel plugin that harvests social networking data from common online sources and provides a variety of mean for analyzing it. In the following post, I’ll provide a brief overview of social network mapping with NodeXL using data harvested from Facebook and Science Online 2011 tweets and provide directions for making your own social network maps, where you can explore and manipulate the data to find your own insights.

[Continue Reading…]

Introducing mxplx: A Citation-Management Tool for Researchers and Active Readers

Posted on 10th January 2011 by Ryan Somma in Geeking Out
The Memetic Ecosystem Within Mxplx
The Memetic Ecosystem Within Mxplx

I’m a big reader, and a lot of what I read inspires the posts for ideonexus. I love it when I find a brilliant insight in a text and can slap it down as a blockquote or relate it to other citations I’ve come across in the past. I’m tickled by brilliant ideas, and I love the communal exercise of building on old ideas and mashups from them.

A frustration I’ve experienced often over the years is remembering a brilliant insight from Carl Sagan, Richard Feynman, or some other author that would make an excellent complement for my current blog post, but having no idea which book in which it appeared. Even if I know the book, it can take an hour of thumbing through the pages to locate the passage I need (often because the text isn’t worded the way I remember it). And what about all those brilliant passages I’ve long forgotten?

These are the reasons I’ve written mxplx, an online tool to aide in the practice of active reading, research, and citation management.

[Continue Reading…]

Advice to an IT Graduate

Posted on 13th December 2010 by Ryan Somma in Geeking Out
Will Code JAVA for Food
Will Code JAVA for Food
(Even with Eclipse)
Credit: cismet_geeks

A newly-minted graduate in software development recently wrote me after finding my resume online, seeking career advice on how to succeed in the IT professional world. These were my personal thoughts; maybe other readers will have additional insights to add in the comments section:

Dedicate yourself to lifelong learning.

Don’t be afraid to research while you’re on the job. You are a professional, a technical expert, and must keep up with the literature and latest developments in your field. Search engines and forums will provide the most practical and nuanced advice, while organizations like the IEEE and ACM provide the academic sustenance. Remember what Adlai Stevenson said, “I reserve the absolute right to be smarter today than I was yesterday.”

Work with people who are smarter than you.

[Continue Reading…]

Cloud Computing’s Real Strength

Posted on 15th November 2010 by Ryan Somma in Geeking Out
cloud passing by
cloud passing by
Credit: Diego Sevilla Ruiz

“Cloud Computing will revolutionize IT!”

Really? What’s Cloud Computing?

“Instead of people installing software on their local computers, future applications will run on host computers!”

So Cloud Computing is just a funny name for a client/server Mainframe Architecture?

“But it’s not running on a Mainframe! It’s running in the Cloud!”

So it’s an application running on the World Wide Web… like Yahoo Mail and Google Docs?

“Not at all! In Cloud Computing, you own your application and the data running on it!”

So it’s an application I upload to my web host, like WordPress.org or EyeOS…

“No. No. No. Because with Cloud Computing you only pay for the processing power you use!”

Etc, etc, etc.

This sums up my last two years’ worth of trying to figure out what the heck this “Cloud Computing” thing is. I’ve downloaded and then uploaded cloud desktop applications that work in ways so esoteric as to make them useless. I joined Amazon’s AWS only to find it offers little more than my current Web Hosting provider. I’ve read lots of articles brimming with buzzwords like “single-tenancy”, “service-oriented architecture”, and “integration connector,” none of these articles apply a consistent definition of “the Cloud.”

[Continue Reading…]

Entropy for Information Systems

Posted on 30th August 2010 by Ryan Somma in Geeking Out,Ionian Enchantment

Entropy is a fairly easy concept to define, the measure of disorder in a closed system, and a rather difficult concept to grasp, but one that furnishes us with wonderful insights into the way the world around us operates. The amount of entropy in the Universe is ever-increasing, the energy concentrated in our sun is constantly radiating away in light and heat, dissipating into an unusable state, absolute undifferentiation.

Credit: riandreu

Living things form “pockets of resistance” to the force of entropy. They do this through syntropy, or negentropy, which is the entropy we export to reduce our internal entropy; in other words, it’s the waste energy we generate to keep our soma in an organized working state. We collect the sun’s waste energy and use it to organize ourselves through syntropy.

How Much Information Entropy?
How Much Information Entropy?
Credit: Moi

In Information Systems, entropy, known as Shannon entropy for Claude Shannon, is the measure of uncertainty in a random variable. A coin toss has one bit of entropy for the 50/50 chance of it turning up heads or tails, 0 or 1. A six-sided dice carries three bits of entropy for the possible outcomes it may produce with each roll (1 (000), 2 (001), 3 (010), 4 (011), 5 (100), 6 (101)). The weather has an amount of entropy difficult to quantify, but it varies from location to location. The weather in New York has more entropy than the weather in Southern California because Southern California has a more consistent climate. Similarly, in our first example, if we were dealing with a rigged coin, one that turned up heads more often than tails, then there would be less than one bit of entropy in each coin toss because we would expect heads more frequently than tails.

[Continue Reading…]

Three Methods for Providing a Print View of a Web Page

Posted on 11th August 2010 by Ryan Somma in Geeking Out

Web developers put content online to be consumed, but we have little control over the mediums consuming it. Web pages are rendered on mobile phones, printers, televisions, and their semantic content consumed by a variety of bots, each with their own requirements and best-practices for layout. Here I’ll outline three commons solutions to providing a print version of web page content.

Defining Printer-Friendly Design

First we need to define the differences between design for the screen and design for print. Computer monitors and mobile phones are very different media from paper, even when displaying static content. Screens are backlit, while paper is reflective. Web development for the screen must take into account screen resolutions, while presentation on paper must consider page dimensions and toner consumption.

Jennifer Kyrnin has a definitive list of print-friendly attributes, changes that should be made to web content before outputting it to the printed document. Here are the three I find most important, but the list can get much longer depending on your needs:

  1. Eliminate dark backgrounds and darken font colors presented over them.
  2. Do something with links, either display full URLs, emphasize the text, or remove them altogether.
  3. Remove headers, footers, side menus, and advertising.

Server-Side Solutions

One strategy for handling both print and screen layouts of a web page is to have two methods for building the page on the server. For example, w3schools’ “PRINT” button at the bottom of each page opens a new window/tab accessing the same page, but with an “output=print” variable added to the end of the URL, which the VBScript accesses via a GET method. When the VBScript detects the “print” flag, it builds the page without all the extraneous content.

[Continue Reading…]

Google Aquires the Semantic Web, or Why Metaweb Matters

Posted on 20th July 2010 by Ryan Somma in Geeking Out
Isaac Asimov Entry on Freebase
Isaac Asimov Entry on Freebase

With Google’s aquisition of Metaweb the searchopolis takes a stake in the seemingly-forever-emerging Semantic Web, a concept with endlessly verbose standards and few demonstrable applications for all it promises. I yawned when I read of Google’s move, remembering a few years ago when I explored Freebase, Metaweb’s semantic database. I even tried downloading and playing with their semantically-rich database version of Wikipedia… and was really unimpressed. It was 3GB of schemas, xml, and ontology, seeming to add up to little of practical value.

Was I ever wrong. I returned to the database this last weekend and found a community of several hundred users maintaining a browsable schema, with some of these volunteer ontologists having contributed millions of facts to the database the same way people devote thousands of hours to maintaining Wikipedia. On its surface, the database just seems like a bunch of web pages, you click through the associations as you would on Wikipedia, with articles and entries leading into each other in standard hypertext fashion.

Where the value of semantic associations comes into play is when you experiment with the Freebase Query Editor, where you can search for data in explicit detail, tailoring it to your specific needs. For example, with the following query I can get a list of computer scientists born before 1950:

  "b:type":        "/computer/computer_scientist",
  "date_of_birth": null,
  "date_of_birth< =": "1950",
  "education": [{
    "institution": null,
    "id":          null
  "name":          null,
  "id":            null,
  "type":          "/people/person"

[Continue Reading...]