Archives for category: Programming

After however many years you’d like to consider computational instruction to have been around, it looks like it is now ready to be taken seriously as a medium of expression meaningful to humans as well as machines. In our plainly mathwise languages, we have always had the means to convey nearly as much as we’d like (convenience aside) but I really think that we’re taking advantage of our ability to express ourselves in code beyond what’s necessary to use machines as tools.

Poetry

  • high obfuscation
    It is left to the reader to find more examples, but here is one example of a recognized and heady performance in the field of perl poetry. The selection of perl is not a coincidence, but stems from perl developers’ frequent concern for taste and desire for elegance.
  • more perl
    An open forum for aspiring perl code-poets. Very open.
  • lisp poetry
    Lisp is a dynamically typed language, meaning its data types are defined sort of transiently. When this page doesn’t bother to decide whether it is for poetry about code or code that reads poetically, that’s hilarious.
  • redbox.c
    Slightly more esoteric but of great illustrative value is this C program from 2001, heavy with nostalgia even then.

Politics

  • obfuscated voting machine code
    Premise: In a bid to point out the security risks in closed-source voting machines, entrants to this contest devise the most convincingly correct yet reliably ‘rigged’ code.
  • DeCSS
    Rogue programmers create code that allows people to fetch information from dvds, and wind up in civil and criminal court for copyright infringement. The code is open sourced, enthusiastically disseminated on the Internet, printed on t-shirts.
  • meta
    Said code is transcribed into English in a peculiar way. Just for effect?
  • 09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0
    Termed ‘the illegal number’, this blu-ray encryption key was the subject of a similar dispute on a large scale in 2007.

The list of so-far symbolically powerful code continues, but it’s as organic as you imagine, and media crosses well – linux/init/main.c and so on.

I was told this story by a friend years ago, at my first full time software gig:

New College, Oxford is of rather late foundation, hence the name. It was probably founded around the late 14th Century. It has, like other colleges, a large dining hall with big oak beams across the ceiling, yes? These might be two feet square, forty-five feet long.

Some five to ten years ago, I am told, some busy entomologist went up into the roof with a penknife and poked at the beams and found that they were filled with beetles. This was reported to the College Council, who met in some dismay, as where would they get beams of that caliber nowadays?

One of the Junior Fellows stuck his neck out and suggested that there might be on College lands some oak. These colleges are endowed with pieces of land scattered across the country. So they called in the College Forester, who of course had not been near the College itself for some years, and asked him about oaks.

And he pulled his forelock and said, “Well, sirs, we was wonderin’ when you’d be askin’.”

Upon further enquiry it was discovered that when the College was founded, a grove of oaks had been planted to replace the beams in the dining hall when they became beetley, because oak beams always become beetly in the end. This plan had been passed down from one Forester to the next for four hundred years. “You don’t cut them oaks. Them’s for the College Hall.”

A nice story. That’s the way to run a culture.

~Gregory Bateson

Like most great stories, this one is part truth and part fiction, and my favorite version (the one above) is from here.

A potential customer?

My name is Kristen [redacted] from Memphis Tn, I have an iterative idea the Apple community could defiantly use. I dnt know how to contact someone official but I want to pitch my idea and the this could change the world of the GPS system ! Please contact me Kristen [email redacted] as soon as possible ….. serious enquiries only. Thank!

Sent from Garminfone by T-Mobile.

I’m guessing this is another equity-only gig.

Open source software isn’t second-class volunteering. In terms of effectiveness per time spent on it, it’s astoundingly helpful.

Because code is replicable and useful, it helps a lot of people. Giving away closed source software would be one thing, but open source code is reusable by other projects, viewable by people learning how to code, and fundamentally supported by the community. Writing software is also potentially research: solving problems in new ways is one of the ways the state of software advances. There’s no limit to the number of people you’re helping: the developers of Apache webserver deserve thanks whenever a page on the internet is served. (To anyone who thinks OSS puts coders out of a job, think of all the jobs the Apache foundation has created.)

Because coding, project management, UI design, QA testing, and all the other skill that go into successful open source projects take years to learn, the volunteer hours put into those activities are a scarce and extremely valuable resource. Suppose your friend, a lawyer, was looking for a way to volunteer four hours a week. Your friend can’t decide whether it would be more helpful to bake rolls at a food kitchen or give pro bono legal advice to DV sufferers. Or maybe your teacher friend can’t decide whether to teach ESL or do laundry for a church. Sure, your friends might enjoy both gigs, and they’re all nice causes, but your friends have the opportunity to contribute skills which are much more scarce, and you’d probably recommend they do that.

That’s why if you have skills or money to contribute to an open source project, you should act without hesitation: it’s an unselfish endeavor that makes a big difference to a lot of people, and it’s a great way to volunteer. It helps a lot of people in a real way.

And it definitely, definitely counts as volunteering.

Most of the time, volunteering occurs in an institutional way for a specific cause. People volunteer in a lot of different ways – for example, along class boundaries there’s an interesting difference: People of lower social classes tend to donate time, effort, and money to religious causes, and to those who live below the poverty line. The higher classes tend to donate to and volunteer for causes that perpetuate their way of life – schools, colleges, art galleries, medical organizations. In addition to donating a larger percentage of their income on average, people of lower class tend to volunteer more of their time. That’s interesting.

People who donate their time and effort to open source software projects don’t always look at it as volunteerism. It’s less institutional, it’s not usually through a church or school, and an open source developer is unlikely to be sent an appreciation card or invited to a brunch for their efforts. Because software lives behind the computer, it’s difficult to see how much work goes into it, and because it generally spreads on the internet it’s difficult to thank an open source developer in person.

Few open source projects interact in person with their users. This is a distinction AmeriCorps calls ‘indirect service’. It’s not seen as more noble per se, but it is considered important and some programs demand a certain amount of it. It really does seem like a purer form of volunteerism to interact directly with a population than to serve by handling paperwork or answering phones or doing data entry.

It’s definitely still volunteering.

In keeping with his long tradition of thoughtfully incendiary blogging, Jeff Atwood of Coding Horror posted on the necessity/efficiency of English as a lingua franca for software developers.

Advocating the adoption of English as the de-facto standard language of software development is simple pragmatism, the most virtuous of all hacker traits. If that makes me an ugly American programmer, so be it.

So it goes, and it was, I’m sure, a reminder to native English speakers that they are fortunate to not have to learn another language in order to communicate with other software developers around the world. As you would expect if you were a frequent Coding Horror reader, the comments were full of offended and well-meaning developers who were angry at connotations of cultural imperialism. While communication would be streamlined if everyone spoke a common language, it would certainly be a shame to lose the world’s other languages.

When the story was posted to Slashdot – presumably a more rational and international community, the comments seemed to me to revolve more around a discussion of the use of English as a necessary common medium for code, comments, and technical documentation. There were vivid handfuls of stories from non-native English speakers on how they learned English – whether from Sesame Street, the Internet, or grade school. Snarky debates about the linguistic heritage of English, the relative usability of it, and so on. Fine points and spirited back and forth. All in all, nearly the opposite of the posts on Jeff’s blog. In all, the Slashdot echo chamber has a different shape that at this point reverberated with sounds of logical discussion. Particularly interesting to me was this post:

However, the main reason why finns speak pretty decent english is our school system. Studying english is mandatory from grades 3 to 9 in the elementary school and any route you continue from there also requires you to study english. We believe that in the modern world it is just a basic requirement for everyone to understand the same language.

I agree, a common language is necessary. Already the ability to speak the de facto language of the internet is a huge asset, for the individual and for all of us. More intriguingly, why the huge difference? The medium is similar.

Hilarious:

The fantastic element that explains the appeal of games to many developers is neither the fire-breathing monsters nor the milky-skinned, semi-clad sirens; it is the experience of carrying out a task from start to finish without any change in the user requirements.

Also, I forgot one of the present’s best developer/game designers: Kory Heath. His website is lots of fun, go read it.

Please forgive me; I am here reposting a bit on Need Anticipation:

An advantage often enjoyed by e-commerce ventures not available to other types of businesses is the use of algorithms to solve technical problems too complex for humans. Historically, supply chain management, enhanced pricing discrimination, and data mining have all bolstered the income and profitability of e-commerce vendors. One promising new technology which retailers are currently investigating is consumer need anticipation – accurately predicting the desire for a good or service, and offering it at an opportune point in time. Existing data about the customer (or other customers) is leveraged to make an informed decision about what products to offer.

While marketing has long been concerned with creating the need for a product, it is important to make note of the new distinction here: consumer needs have, at the point of time of suggestion, already been created or at least lay dormant – need anticipation intends to identify the consumer’s existing willingness to purchase an item and consequently offer the item. It is also important to note the possibility of this technology to build customer closeness in a way concordant to branding by allowing the customer to spend additional time browsing recommendations, allowing users to recommend products to friends, and allowing users to rate items they are interested in. These features not only keep customers on a website for longer, they give the user solid reason not to switch to a competing website (and lose the use of their ratings) and they give the user a motivation to invite their friends (to gain and give recommendations).

Amazon may well be the most successful early adopter of consumer need anticipation tactics. When a new user arrives at the site, they are greeted with the message “Hello. Sign in to get personalized recommendations. New customer? Start here.” [1], along with generic recommendations of bestsellers, sale items, and seasonal items. When a user logs in, they are presented with new recommendations based on recently added products. Throughout the process of viewing products (a procedure roughly corresponding to browsing), the user is shown a histogram outlining what products were bought by users who viewed the current product, instantly showing the path of least resistance for most consumers. This entrusts that the customer can easily find the most ‘purchasable’ similar products. Suggestions are based on items “Frequently Bought With Items in Your Cart”, “Customers Who Bought This Item Also Bought”, “Frequently Bought Together” [with the currently viewed item], and “These recommendations are based on items you own and more.” [2] Clearly, Amazon engineers are making use of several different easily obtained statistics to make recommendations, and it seems as though most data points are being put to use in some way or another.

Technically, the statistical approach to Amazon’s approach seems to be ad-hoc and relies on the common sense translation of user data into predictive sets. Amazon does not disclose any of its algorithms, and seems mostly intent on providing for its users raw data of the type “You may like the following…” While the simple correlation of two or more items may not find a granular, specific likelihood of a user’s desire for a book, Amazon’s methods seem effective enough to bolster sales by offering the user a product they are likely to buy based on the purchasing patterns of similar users. Though other companies have pursued the same approach, Amazon’s engineers seem to have taken the lead in accurately predicting a user’s habits. [3]

Despite the success of this approach, more incisive algorithms are under development which attempt to predict a quantitative rating of a product based on prior ratings of other products: enter the Netflix Challenge[4]. Netflix has built an empire on the ability to deliver their physical product (DVD rentals) quickly, efficiently, and without hassle to the consumer, but the company is less than content to rest on their laurels. By providing anonymized data to software developers, Netflix hopes to arrive at a superior ratings prediction algorithm. Basically, entrants to the Challenge are given 100 million DVD ratings entered by 480 thousand users, and are asked to generate as accurately as possible ratings for more movies. The company justifies the $100 million US prize on the basis that the basis that “Netflix is all about connecting people to the movies they love.” It is clear that Netflix is forward-looking in their desire to suggest to users movies that they will like (thereby increasing use of their service), and admirable that they are advancing the state of the art in order to increase profits. Users have so far created entries based on expert systems, neural networks, and other advanced artificial intelligence algorithms. [5] The Challenge itself is an innovative form out outsourcing that may be saving the company money: According to Vivek Ranadive, “Holding on to a competitive edge means staying one step ahead, and the more reliably one can predict the next step is often the difference between success and failure.”

1 Wikipedia: Amazon

2 Amazon

3 BusinessWeek

4 http://www.netflixprize.com/rules

5 Ranadive, V. (1991). The Power to Predict. McGraw-Hill (January 2006)

What is it about game design that lures software developers? Both are geeks, to be sure, but there seems to be a special draw that somehow grabs hold of both.

Andrew and Kristin Looney are good case studies to start with. Before starting their own company inventing games, they worked as as computer scientists at NASA. The love of computer science is evident in their games, which are rife with simple mechanics that end in beautiful systems of input and output.

Richard Garfield, designer of Magic: The Gathering and other wildly popular thinking games, also began as a Bell Labs scientist. Magic’s inventive abstract system of interaction between cards was completely new at the time, but appeals to many – Garfield’s game is absurdly popular around the world.

Paul Sottosanti is a php developer-turned Magic-designer turned game-developer. His latest work, Tiny Adventures, builds cleverly on the new paradigm of social networking games.

There are a lot more examples of software devs-turned-board game developers, but take these clever people as examples to start with. Common geek-appeal aside, what is it that draws programmers? The game as a microcosm of reality with its own rules, structures, and beginning and end seem common to all four of our cases. Software is similar in its use of interconnected modular parts. The shared Ludism and limitless exploration potential of programming languages and games is equally likely.

Thoughts?

We’re talking completely free, accredited, online associate-level college courses.

A free online college offering courses adhering to high levels of quality. The courses are (in US terms) in the 100-300 level range, enough to satisfy general education requirements and demonstrate a student’s commitment to an institution of higher education. Courses are accredited by relevant standards bodies, and admission is not restricted in any way. Students’ knowledge of the course topic is vetted by open-book online tests, peer reviewed papers, peer-judged class competitions, readings followed by captcha-like comprehension tests, class discussion followed by peer ratings, and/or other scalable systems of measuring comprehension of materials. Courses are copyleft and the subject matter is crowdsourced and peer reviewed.

Cyclical educational disparity exists worldwide. Entirely-online classes are becoming increasingly common but still have costs that preclude the enrollment of the average world citizen . Education is not a zero-sum game, and information is easily recyclable for many minds. Everyone should have a chance at achieving a high level of education, and this idea removes some of the social and economic barriers to this.

Marginalized populations who currently do not have access to high school or college would be able to obtain a higher education, and would be able to apply to other colleges with proof of their academic experience. Existing colleges would have a much wider pool of applicants from more diverse backgrounds. Additionally, seniors and working adults will have the opportunity to engage in life-long learning. Society worldwide will be enriched by a general increase in education.

The first step is the creation of software that would allow people to freely contribute to open sourced course material. The success of Wikipedia is indicative of the willingness of Internet users to contribute information and editing to worthwhile causes. All course content would be reviewed by Professors to ensure that accreditation standards are being met. The software in question would also be usable by students. The college would require marketing designed to appeal to a diverse student body. Peer editing and adherence to high levels of quality will facilitate wide spread accreditation of classes.

If more people obtain free college-level learning, the idea will be a success. The disparity within education can be measured in terms of average levels of learning across overlapping boundaries of gender, income, nationality, and race. The number of person-credit-hours would impart the degree of success of the free online college. A shift in international attitudes toward learning would also indicate improvement. A measurement of the educational divide will be demonstrated in an increased proportion of college students from marginalized backgrounds.