Mark Damon Hughes Topic: News [Parental Advisory: Explicit Lyrics] [about]
Pownce Pwned
Mon, 2008Dec01 18:41:00 PST
in Software by kamikaze

Pownce is dead. It's probably fairer to say it never reached life, compared with Twitter, or even Friendfeed:


Now, why did Twitter win and Pownce fail so badly? I think it boils down to three factors:

Twitter is simple

Twitter has (almost) the absolute bare minimum of features:

Follow
One-way links to other people you find interesting, they don't have to "approve" your friendship, it doesn't have to be mutual.
Chat
Posting a comment is as simple as typing up to 140 chars and hitting Send. No subject, no categories, nothing else.
Features by convention, not user interface
@NAME to reply, #TAG to mark with a subject tag, d NAME to send a direct message, don't need any additional user interface.

SMS is useful, sometimes, but perhaps an unnecessary distraction from Twitter's real role. But using SMS forced the limit to 140 chars, which shaped the interaction into short, zero-effort bursts, rather than long blog posts like this.

Twitter has no built-in file-sharing or picture support or comment threading, or anything else. There's no gender, relationship status, horoscope sign, or message wall. Just a (mostly) one-way series of short messages. And that's all we needed. The rest can be built on the side, like TwitPic, with URLs we paste in.

Twitter was targeted at the right people

Twitter was initially aimed (or spread virally) very strongly at adults who were in technology or social media. It's not a tool for kids (MySpace) or college students (Facebook). That's smart, because we're the early adopters who drag our friends and family into these crazy things, and are actively looking for people to connect with, but maybe don't feel comfortable with the whole "we must both be friends to read each other's stuff" notion. Facebook requires too much intimacy.

Friendfeed chased the pro blogger market, like Dave Winer. A fair number of people use it as an aggregator for several social services. It has value for them, but it's too ugly and complicated to screw around with on a regular basis. Worse, it's a source of spam if you let it announce posts from one service (like your blog, or Friendfeed itself) to another (like Twitter). I immediately unfollow or even block anyone who spams Twitter from Friendfeed (yeah, you, Mr. Winer).

By comparison, Pownce had no visibly interesting demographic. There was nobody there I wanted to talk to.

Twitter fixed its reliability problems

A year ago, Twitter would show the Failwhale all the time. Update rate was choked to almost nothing. It was clearly dying.

And then... they stopped using Ruby on Rails. The failwhales have become almost extinct. Twitter is now faster and more reliable than any other social network; not the highest bar I'm setting there, but it's an accomplishment.

As Pownce started to deal with scaling, it just fell over. A lot. Even when it worked, it was slow.

Making a social network is hard. I used to be a big fan of Tribe.net. My profile's still there: I joined on 09/28/03, last updated 12/10/04. I quit because they stagnated on adding new features, or even fixing the existing ones when they broke. It was the easiest place in the world to set up an online group, and send notices to the group, but if it didn't work, it was no good to anyone. It never reached a useful demographic; after a while, pornography and scammers and spammers were the dominant activity, and it was left to die.

At least Pownce is having the good grace to close the doors and turn out the lights first.

← Previous: Ray Ozzie Lies (Software) Next: Python 3000 (Software) →
Ray Ozzie Lies
Sat, 2008Nov29 10:12:53 PST
in Software by kamikaze

I love Windows, because without it there would be no PC. There would be no PC developers. There might not even be a Web.

-Ray Ozzie, TechReady 2008

Every word of that except "I love Windows" is a lie.


Apple made the first real personal computer, the Apple I, in 1976, and IBM built the IBM-PC in 1981, 5 years later.

IBM wanted Digital Research to make the OS, but the deal fell through, and Microsoft (who until then had made only BASIC) bought QDOS from another company and sold it to IBM.

Windows was an inferior copy of the Lisa and original Mac OS. Almost nobody developed apps for Windows until 3.0, in 1990. PC developers used DOS for any serious apps.

The World Wide Web was invented on a NeXT (the predecessor to the current Mac OS X), and the early spread of the WWW was on Unix machines, NOT Windows, which could barely reach the Internet over dialup PPP.

Ray Ozzie lies worse than Sarah Palin. He lies blatantly, without a trace of remorse or awareness that anyone with a couple brain cells can figure out that he's lying.

← Previous: Twitter Qwitter Drama QQ (Society) Next: Pownce Pwned (Software) →
Twitter Qwitter Drama QQ
Tue, 2008Nov11 13:42:58 PST
in Society by kamikaze

Qwitter is a service that tells you when people stop following your Twitter feed, along with your last tweet (which might be what made them stop, or might not).


I like Qwitter. I use it to get some idea of when I'm offending people, and then decide if I should do more or less of that. Obviously, offending people isn't really something I worry about; you'll either like me for who I am, or not.

Not everyone likes Qwitter or is as sanguine about losing followers as I am: Sean Bonner has a long screed which I can only call a bit emo. A bit QQ

If someone gets mad because you unfollowed them, temporarily or permanently, they're jerks. Period. This isn't a "Mark thinks they might be a bit jerky", this is a 100% certain psychological diagnosis of terminal jerkitude. If you feel yourself getting mad over it, you need to get off the computer and maybe get drunk or laid.

Being followed on Twitter is NOT a validation of you as a person. It means you say amusing/interesting stuff someone else wants to read. If someone stops following you, it probably doesn't mean you're a bad person, it just means they're not interested anymore. Maybe it's you, maybe it's them, maybe they're just cutting back on drinking from the firehose.

If you need love, don't go to Twitter. Get a dog, or an S.O., or a teddy bear, or a whore (in order from most to least empathy).

← Previous: Perilar Released, Notes on Playing Perilar (Mac) Next: Ray Ozzie Lies (Software) →
Perilar Released, Notes on Playing Perilar
Mon, 2008Oct13 07:37:08 PDT
in Mac by kamikaze

Perilar for the iPhone is released!

New software gallery blog post: 2008-10-13: Playing Perilar

← Previous: Perilar for the iPhone is completed! (Mac) Next: Twitter Qwitter Drama QQ (Society) →
Perilar for the iPhone is completed!
Sun, 2008Oct05 21:57:19 PDT
in Mac by kamikaze

Perilar for the iPhone is completed!

New software gallery blog post: 2008-10-05: Perilar completed!

← Previous: Microsoft Ads (Media) Next: Perilar Released, Notes on Playing Perilar (Mac) →
Microsoft Ads
Fri, 2008Sep12 00:42:51 PDT
in Media by kamikaze

By now everyone's seen the first two Microsoft ads of their $300 MILLION DOLLAR campaign with Jerry Seinfeld and Bill Gates (except, didn't he retire?) If you haven't, count yourself lucky and move on.


The first ad, the shoe store, was bad. Pointless. And ends with the existential horror of Bill Gates wiggling his ass at the camera. Really, DO NOT WANT.

The second MS commercial is… it's even more Seinfeld "nothing"-like. Even more condescending and awful. Bill keeps secret games from the world, Jerry clips his toenails on your bed, and both are too snobby for your good home cooking. These are not positive qualities. I would not want a computer represented by these people in my home.

Apple's "Get A Mac" ads are vastly more charitable to the PC played by John Hodgman. PC is portrayed as bumbling, incompetent, confused, and very bad at creative work. But while I wouldn't want PC in my home making my home movies, he might be fine at work (in reality, PCs are just as awful at work as at home). The Mac is useful, gets stuff done, and puts a nice creative touch on his work. That's a computer you wouldn't mind having around. How is it that Apple is nicer to the PCs than Microsoft's own ads?

Oh, and there's a blatant, unbelievably stupid lie in the 2nd MS ad. PCs take 2-5 minutes to power up and power down. Bill's "robot" is WAY too fast. It should be more like "power down. POWER DOWN, BILL! Shit, ctrl-alt-del. Cancel program. CANCEL! Oh, fuck this, I'll just pull the plug out." Reboot. Wait 5 minutes before you can do anything again.

← Previous: 9/11, Seven Years Later (Personal) Next: Perilar for the iPhone is completed! (Mac) →
9/11, Seven Years Later
Thu, 2008Sep11 16:35:07 PDT
in Personal by kamikaze

All day Sep 11 2001, I was sitting in my tiny apartment, writing code (either Umbra, or the start of Hephaestus). I hadn't hit USENET or the web at all. Hadn't really eaten anything.


Late that afternoon I staggered outside, looking for food. And the streets were empty. All the stores and restaurants were closed. No idea why. Total zombie apocalypse scene.

Finally I found the Chinese restaurant I usually went to very late at night, still open, and went in. They were in there watching the news on a big-screen TV. I got some food.

All of us, mostly the staff and a couple other customers, sat there talking about it and watching the TV, all of us sort of dazed and confused and angry. Who would ever do that? Why? At the time, it was inconceivable that anyone would want to attack us; we were, with very rare exceptions, The Good Guys. Finally it dawned on us, and soon to the TV reporters, that the same people who'd tried to blow up the World Trade Center a decade before might've done it.

And we waited for something, any sign of intelligence or leadership from Bush. As we now know, there was none. He kept reading "The Pet Goat" for minutes while planes crashed into buildings. He eventually got Afghanistan right as one source of the attackers, but then committed fraud to make Iraq a target for his own personal reasons.

You never know what a big historical event means or will lead to until it's over, until you have at least a few years of perspective on it. What it showed was the malicious, venal incompetence of the Republican party. What it showed was that there's evil in America, too.

Today, the malicious, venal, incompetent governor of Alaska threatened war with Russia if they invade another country (never mind that in reality, Georgia began the war, and was committing genocide in Ossetia, and Russia was defending them). War. With Russia. The word "psychotic" doesn't begin to describe this. Why is this lunatic anywhere near the election?

We don't need external enemies to threaten us this 9/11, we have our own home-grown evil psychos.

← Previous: JavaFX makes me sad (Software) Next: Microsoft Ads (Media) →
JavaFX makes me sad
Mon, 2008Sep08 10:43:11 PDT
in Software by kamikaze

Reading about JavaFX just makes me sad. It's very nice, it's what Sun should've done in 1998 instead of Swing.


But today? It's pissing in the wind. Flash owns the "installed everywhere, brute-force rich client", and HTML 5 owns the future; those of us using WebKit in Safari, iPhone's Mobile Safari, Chrome, or several other browsers are already living in this future.

There are three kinds of applications: Local-only desktop apps, Internet desktop apps, and Web applets.

Local desktop apps (word processors, high-power games, etc.) indisputably work best as native applications; you need to be able to use them even if you can't reach the Internet, you need local file access, you need fast drawing speed, and you need native OS integration (drag-and-drop files, for instance). While people have tried to shoehorn these into other categories (Google Apps), it's never worked as a general replacement, and probably never will.

An Internet desktop app will be better and more pleasant to use if built with platform-native technologies. It might be kind of like a web browser in parts, like the iTunes Store, but you would have a very hard time building iTunes in Flash, HTML, etc.

Web applets don't require speed or flashy graphics, just some interactivity and a web server. These are easier to build (and especially, easier to find semi-competent developers for) and get people to use if they use Flash or HTML 5.

So there's just no place for JavaFX and Silverfish and Adobe AIR. They either compete with an installed base of Flash and Flash developers, or the future base of HTML 5 and web developers, or the existing base of native app developers, and in every case, they lose that fight.

← Previous: DungeonDice released, at long last (Mac) Next: 9/11, Seven Years Later (Personal) →
DungeonDice released, at long last
Sun, 2008Sep07 20:55:05 PDT
in Mac by kamikaze

DungeonDice is finally released!

New software gallery blog post: 2008-09-07: DungeonDice released, at long last

← Previous: Software Gallery Blog (Mac) Next: JavaFX makes me sad (Software) →
Software Gallery Blog
Sat, 2008Aug23 13:04:47 PDT
in Mac by kamikaze

I've started a new Mark Damon Hughes Software Gallery Blog over on my software site, and I plan to put all professional content over there.

This blog will continue to host my unprofessional non-professional content, and I'll post links here to there whenever I post there, like:

New Post: 2008-08-23: Entering the Nexus Worlds

← Previous: iPhone Stylus (Mac) Next: DungeonDice released, at long last (Mac) →
iPhone Stylus
Thu, 2008Aug21 06:34:02 PDT
in Mac by kamikaze

Macgasm asks, "A stylus, really?". Yes, really.


I have a Pogo iPhone Stylus. I don't use it all the time, but it it sometimes beats greasy fingers.

You need a stylus if:

  • Your fingers are oily, or covered in dirt, or are artificial prostheses.
  • In cold weather, people wear gloves. The iPhone touchscreen doesn't respond to normal gloves.
  • Women with long fingernails can't use the iPhone at all.
  • Men who don't have dainty little fingers that come to a sharpened point find it hard to use.

Men with dainty and non-oily hands who live in tropical climates might not need a stylus. For the rest of us, it's a useful accessory.

The comic relief version of this was Xiaxue's Guide to Life: EP16 - The iPhone, a crazy Singaporean blogger who can't use it at all.

← Previous: The Pro-Obama Dungeons + Dragons Crowd (Quotes) Next: Software Gallery Blog (Mac) →
The Pro-Obama Dungeons + Dragons Crowd
Tue, 2008Aug19 14:02:04 PDT
in Quotes by kamikaze

It may be typical of the pro-Obama Dungeons & Dragons crowd to disparage a fellow countryman's memory of war from the comfort of mom's basement, but most Americans have the humility and gratitude to respect and learn from the memories of men who suffered on behalf of others. John McCain has often said he witnessed a thousand acts of bravery while he was imprisoned, and though not every one has been submitted into the public record, they are remembered by the men who were there (one such only recently reported by Karl Rove though it escaped mention in any of Senator McCain's books). But as Swindle said, this is a "desperate group of people trying to make something out of nothing."

- Michael Goldfarb on johnmccain.com , 2008Aug18

"pro-Obama Dungeons & Dragons crowd"? I mean, that's true enough, but how did they know? Are gamers a giant lobbying power and nobody told me?

See also Dork Tower

See also the t-shirt

← Previous: Castles 1.2 Released (Mac) Next: iPhone Stylus (Mac) →
Castles 1.2 Released
Sun, 2008Aug17 11:14:33 PDT
in Mac by kamikaze

The newest version of my iPhone game Castles, version 1.2, is now available in the iTunes App Store.


Castles 1.2 adds:

  • Three difficulty levels: Easy, Challenge (original game), and Nightmare (OMG, they KEEP COMING!).
  • Occupied rows which earn gold are highlighted, so you can plan your advance more easily.
  • Arrows from archers are now visible, making it easier to tell what they're shooting at.

This addresses all of the serious responses I've received: That the game is too hard (though one complained the original was too easy! If so, Nightmare will leave you broken and twitching!), or that it's impossible to tell what archers are doing, or how you're earning gold.

What's ahead? There will not be many new units, since the current game is very carefully balanced, but I may add engineers with the ability to place traps and repair walls. There will almost certainly not be individual unit stats or hit points; that makes the management of forces massively harder and slower ("now, which one of these 30 identical pikemen was I levelling up?"). I may do a graphical upgrade at some point, with an animation for all barbarians and the archers, and maybe very short animations for moving/attacking castle units. Animations have to be carefully considered to avoid turning a 15-minute game into a 30-minute game.

Off in the far future, I might revisit it as a two-player game. Finding and matching a nearby player, and then keeping them there for 15 minutes, can be challenging. I certainly don't want to run a central server for the games, so... there's issues there.

The price won't be changing for a while; I think $4.99 is entirely reasonable for a totally new game (not a port from some other platform), the first and one of the only strategy wargames on the iPhone, and it's on par with what Apple charges for iPod classic games, and the game would be $9.99 or $14.99 on the desktop, or $40 as a DS cartridge.

That said, I'd like to do a promotion, but Matt Drake changed the price of Wine Pad, and had serious problems with Apple's lack of synchronization between stores.

Unfortunately, there's no way to remove old reviews. So fair or not, current or not, and whether or not they're from paying customers who know what they're talking about, those reviews are stuck on my app. If you like Castles, please go leave a nice review for me.

In my Macs Make Programmers article, I listed a handful of introductory books for Python. Any one of those is a great way to get started. But what can you learn with beyond the starting level?


I learned the hard way: by writing challenging Python programs, in particular Umbra, but of course by then I was a decades-experienced programmer, and I still made a lot of mistakes based on false assumptions and invalid mental models of Python. If I'd learned more first, I might have done better.

Looking around at the field, I can't find too many advanced Python books.

Programming Python ***
Spends a lot of time revisiting the introduction to the language, and it stays at the junior tutorial level even when addressing more complex subjects. I didn't find it to provide enough detail.
Python Cookbook ****½
This can be extremely valuable: real-world, advanced Python examples to learn from. This goes the other way from PP; it doesn't have enough chatty tutorial material, too often it just presents the code and you either figure out what's going on or you don't. Overall, though, if you want to be a serious Python programmer, you should get and study this book.
Foundations of Python Network Programming ****
An excellent, detailed, in-depth study of one really specific area of Python coding: network protocols. Since everything uses the 'Net somehow these days, you really want this book, but it is relentlessly tightly focused, and the Python Cookbook and Programming Python cover some of the same material.
Data Structures and Algorithms with Object-Oriented Design Patterns in Python ***½
Bruno R. Priess has a series of books on DSaAwOODP in (C++|Java|C#|Python|Ruby), intended for college students. While it's very dry and mathematical, it's a solid computer science book. As a Python book, it suffers from attempting to shoehorn generic CompSci solutions into the language, when idiomatic Pythonic solutions would be better.

If you want to do graphics, there are books on Tkinter, wxPython, PyQt, and so on, but in my opinion any of those are a mistake; all of the "cross-platform" GUI libraries just look bad and work poorly on every platform. Instead, writing portable model code and then writing platform-specific view/controller code (in Python/Cocoa, for instance) is far more effective.

← Previous: Macs Make Programmers Feedback (Mac) Next: Castles 1.2 Released (Mac) →
Macs Make Programmers Feedback
Thu, 2008Aug07 23:00:00 PDT
in Mac by kamikaze

* I've got both praise and feedback to Macs Make Programmers. "Feedback" being a precise technical term here: echoing noise that squeals and whines, but doesn't mean anything, and should be edited out.


The reason I don't have comments on my blog is that 90% of all people who comment on essays on the Internet are retarded, insane, trolling, or tragically ignorant. Nowhere is this more evident than on sites like reddit, digg, and slashdot, where intelligent conversation doesn't just go to die, it is stabbed and sodomized to death by a self-reinforcing mob; they are living proof of John Gabriel's Greater Internet Fuckwad Theory: "Normal Person + Anonymity + Audience = Total Fuckwad". Or "The IQ of a mob is the IQ of its most stupid member divided by the number of mobsters."

To those I can only say, "shame on you". To those few who were rational, or at least said something meriting a response, however:

First is a misunderstanding of the current OS market. Linux basically doesn't exist on the desktop. The very few people who do have a Linux desktop are probably programmers, or relatives of programmers. Linux has decent programming tools (inferior to Mac OS X, but good enough to create new programmers), but it doesn't matter, because non-programmers will almost never have Linux.

According to Market Share by Net Applications, as of July 2008, Mac had 7.76% browser share, Linux had 0.82%. 2 years ago, the Mac market share was only 4.34%, and a couple years before that, it was 1-2%. This is measured by browser share, which is a pretty accurate count of people actually using it on the desktop. The Mac number is going to go up significantly; the Linux number MIGHT reach 1-2% someday, but not until makes a desktop system and suite of apps that doesn't suck. I don't think Windows is going to die off, sadly, but we are seeing a return to the market of the '80s, where there were multiple competing computer systems; some software was ported, some was platform-specific. While I'm only writing iPhone apps now, cross-platform languages like Python and Java are going to make a lot more sense for most people.

Second is the nature of Xcode. Xcode is for intermediate and advanced programmers. It's really not a great beginner IDE, though the 'xed' editor might be useful. I've always had to install it from DVD, or as developer previews, but it turns out it's actually shown as an option when you use the install DVDs on a new machine. So it's somewhat easier than I thought.

Even so, the five languages I listed as preinstalled -- Python, Perl, Java, Ruby, and AppleScript -- are all high-level languages which are much easier to learn than using Xcode. Those five languages DO NOT require any optional installs, they are always in every copy of Mac OS X.

Third is the notion of using JavaScript as a starting language. This is full of terrible problems:

  1. JS is inconsistent between browsers.
  2. JS fails silently, so your entire script just stops running if something goes wrong, and even the Safari and Firebug error consoles are not all that helpful, so debugging is VERY hard.
  3. JS has no file manipulation or way to save anything. You can use SQL-like queries for a database in Safari, and there's an equivalent but different hack in Firefox, but nothing in IE.
  4. JS has no cross-browser graphics or drawing tools. The Safari canvas tag works about 50% on Firefox, not at all on IE. There are hacks to simulate it, but no newbie will know how to do that.
  5. The "normal" way to get persistence is by writing a webapp, probably in PHP or Java, that talks to a SQL database. Not an option for a beginner.
  6. HTML layout and positioning is an incredibly hard problem, and is all but impossible cross-platform.

No, JS as a starter language is a non-starter.

Fourth, it turns out MS does ship a C# compiler buried deep in the bowels of .NET on Vista. But A) nobody has installed Vista, B) C# is a massively harder language to learn than Python, and C) compiling, packing, and shipping a .NET program is massively harder than writing and mailing a Python script to someone else.

Fifth, I discount programmable shells like bash, because they're hard to do real programming in, or even basic math, and have a lot of very subtle quirks. I could also count awk as a real language, in which case both Mac and Linux have one more, but really if you're thinking about awk, you may as well use Perl instead. Some idiots suggested Windows CMD or BAT files; I wish they were joking, but I know that they weren't.

Sixth, anyone still bitching about Java 6 on Mac is an ignorant fool. Java 5 is the default version on every Mac running Tiger and Leopard. You can build your app to use Java 6, under Leopard, but you're almost certainly better off shipping production apps in Java 5, since they'll run everywhere, and there are VERY FEW new features in Java 6. No novice would ever run Eclipse, but if you do, it runs fine in Java 5, and can run the Java 6 compiler on your code from it. That's what I do every day at work.

Americans are considered crazy anywhere in the world.

They will usually concede a basis for the accusation but point to California as the focus of the infection. Californians stoutly maintain that their bad reputation is derived solely from the acts of the inhabitants of Los Angeles County. Angelenos will, when pressed, admit the charge but explain hastily, "It's Hollywood. It's not our fault--we didn't ask for it; Hollywood just grew."

The people in Hollywood don't care; they glory in it. If you are interested, they will drive you up Laurel Canyon "--where we keep the violent cases." The Canyonites--the brown-legged women, the trunks-clad men constantly busy building and rebuilding their slap-happy unfinished houses--regard with faint contempt the dull creatures who live down in the flats, and treasure in their hearts the secret knowledge that they, and only they, know how to live.

-"And He Built a Crooked House", by Robert A. Heinlein

British Channel 4 is currently showing Richard Dawkins "The Genius of Charles Darwin"


Sadly, it's only broadcast (or iPlayered) in the UK and Ireland. Happily, people have been posting it to YouTube.

The first episode gives the horrific statistic that 40% of the British believe in creationism, and do not acknowledge that evolution is a fact. Far from a non-religious culture, that's on par with the more civilized areas of the U.S. According to the 2001 census, 71% identify as "Christian", and only 15% as non-religious, and yet another survey on the same site shows less than 40% admitting a belief in "God". Something's either very seriously wrong with these surveys, or there's self-deception on a massive scale. Just informally, I suspect that it's fashionable in England to be "non-religious", and people may not attend church, but religious belief is still deeply rooted in a lot of them.

You don't get that "I believe in my Holy Book" kid unless there's religion infecting your country at a low level.

For another great Dawkins presentation, see Waking Up in the Universe

Macs Make Programmers
Mon, 2008Aug04 23:41:57 PDT
in Mac by kamikaze

Mac OS X comes with something important that Windows doesn't: development tools.

(continued beneath the break)


A standard install of Mac OS X Leopard has:

(plus various scriptable shells like Bash, and near-programming tools like Automator, and with a little effort you can get PHP up and running on the built-in Apache web server)

On the install DVDs, under "Optional Installs", is Xcode, the primary development tool for Mac OS X. Xcode is a professional IDE (Integrated Development Environment: an editor, compiler, debugger, profiling tools, and project management tools all integrated into one big tool) for Objective-C/Cocoa, C, C++, PyObjC (Python for Cocoa), Java, RubyCocoa, AppleScript. The Xcode you get free is the same one Apple uses, the same one I use. It's as good or better than the $3500 IDEs I used just a few years ago.

Of all those languages, Python, Perl, Java, Ruby, C, and C++ are standard and portable to any platform (Objective-C is specific to the Mac, but it's VERY powerful). You can make a really good living from any of them (Objective-C, Python, Perl, and Ruby are a little harder to find jobs in, but they pay well; Java is easy to find work in and pays very well), but more importantly, learn any of those and you develop the programming skills to learn any other language.

Getting started in Python is almost as easy as BASIC was on the Apple ][ 30 years ago:

  • Open /Applications/Utilities/Terminal.app
  • Type python
  • Type print "Hello, World!"

To go past "Hello, World!", Python has a useful documentation site, and great books like Think Python (free online, and soon in print), Learning Python, and Core Python Programming.

Obviously, I'm a big fan of teaching Python to new programmers (and it's fun and useful for experienced developers, too!), but the above applies to all of the Mac languages.

Linux

All Linux distributions ship with Python, Perl, C, and C++. Some have others around, but you can't rely on that, and almost none ship with a usable Java. Linux is certainly programmer-friendly, or at least hostile to non-programmers, but very few kids or programming novices are going to be exposed to Linux; mostly it sits quietly in data centers and serves web pages.

Windows

But MS Windows ships with nothing. No BASIC. No C compiler. You're trapped, stuck playing with Solitaire and MS Paint.

If you poke around the Microsoft site, you can find out about "Visual Basic Express 2008", try downloading it, installing it, and then reading incomprehensible tutorials full of screenshots and generated code. No non-programmer is going to go through that just to see a "Hello, World!".

Back in the '80s, Microsoft shipped QBASIC with DOS, just like every microcomputer maker did. But in the '90s, they stopped developing the classic BASIC, and went to Visual BASIC. Visual BASIC is a superficial copy of the NeXTstep and Turbo Pascal environments, but they got some things fundamentally wrong: "code-behind" and generated code from wizards made it impossible to build large systems, and kept people from playing with the internals; changing generated code would just ensure that the tools would break or your code would be wiped out. Getting real development tools for Windows is expensive, and they perpetrate the same kind of generated-code sins as Visual BASIC.

Hobby programming, on Windows, died out.

That sounds melodramatic, doesn't it? But for the last 10-15 years, Microsoft hasn't shipped a real language with Windows, and their "introductory language", Visual BASIC, became increasingly useless for newbies, only suited to gluing together Access, Word, and Excel. It became the domain language of corporate "code monkeys", just as COBOL had been 20 years before. With VB.NET, the last pretense of it being "BASIC" were dropped, and it's now just an ugly, incomplete syntax for the much more complex world of .NET.

Even if you learned it, all you can do after Visual BASIC is more Visual BASIC, getting paid half as much as real programmers for the rest of your life. Visual BASIC is madness, and teaches nothing about real programming.

There are other starting languages for Windows (even Python, etc.), but all of them have to be downloaded and installed, and sharing your Python or Java program with another random Windows user is a pain (they have to download and install Python or Java, too). While Turbo Delphi is free, the pro version necessary to even try another language is $900.

To become a professional programmer on Windows is even worse. Microsoft's serious tools aren't free, they cost $300 for the lowest-end version, with no support, $1200 for minimal MSDN support, $2500 for full MSDN support. So in other words, you work for a large corporation which can pay for it; hobby programming for Windows is a waste of a significant amount of money.

The result is that kids raised with Windows today don't generally have programming tools available.

Hobby Programming

So why is hobby programming, especially getting instant access to programming on a computer and teaching kids to program, important? Because that's where new programmers come from.

There's a massive shortage of younger programmers now. Some people blame this on the dot-com bust scaring kids out of computer science. That's obvious nonsense to anyone who knows programmers; once you teach someone to program, it's completely addictive. They'll do it every chance they get, until they die, regardless of consequences. You can't beat programming out of someone who got it in their system as a kid.

If you wait to teach them until college, it's almost always too late; adult brains generally can't form the deep structures necessary to learn real programming, only rote copy-paste code monkeying. Before microcomputers, most programmers were mathematicians, because math is similar enough to leave the brain receptive.

In the '80s, there were many competing microcomputers, almost all of which included BASIC or Pascal or LOGO, or HyperCard on the Mac. Hundreds of millions of kids and teens were exposed to programming. Millions got "infected", and became programmers.

In the '90s, Microsoft murdered everyone except Apple (and Apple only barely survived), just as they were also putting an end to hobby programming on Windows.

It is not a coincidence that we're low on programmers now, 10-15 years later. It has nothing to do with a temporary economic problem. It has to do with Microsoft's incompetence and negligence smothering a generation of young programmers in their cribs, and they're still at it.

The One Laptop Per Child (OLPC) project tried to put Linux and Python in the hands of millions, maybe billions of poor kids, to make a Mouse Army of programmers, but they failed, and now if any OLPCs ship, they will ship with Windows, with no programming tools.

Everyone with a Mac has a really great development environment, full of the best languages and tools available. If you know a smart young person, give them a Mac and show them Python.

When "Freedom" doesn't mean "freedom"
Fri, 2008Jul25 08:26:14 PDT
in Software by kamikaze

Yet again, the enemies of freedom are trying to redefine reality with their NewSpeak.


First, some context:

A couple weeks ago, the "Free" Software Foundation put out another of their communist rants against people making money from the products they produce (or just read it being angrily dismantled by the Angry Drunk). This isn't news of any kind; the FSF shouts out their schizophrenic drivel on a daily basis, and it deserves no attention.

[Update: The "OpenMoko" phone the FSF is pushing can be seen in these OpenMoko Train Wreck videos... I don't think iPhone has anything to fear here.]

John Gruber of Daring Fireball proves the screed to be false in even its least insane point, that you can't write GPL software for the iPhone, by pointing to GPL software for the iPhone.

FSF apologist Aristotle Pagaltzis then claims "John Gruber doesn’t understand freedom"...

Yeah, he does. Everyone understands freedom:

n 1: the condition of being free; the power to act or speak or
    think without externally imposed restraints
2: immunity from an obligation or duty [syn: exemption]

What WordPress and Gruber may or may not have misunderstood are the precise legal terms of the GPL, which is an extremely unclear and legally unsound document. But everyone understands the word "freedom"... Except the "Free" Software Foundation. The GPL is, by definition, a violation of real freedom: it imposes restraints on what you can do, such as distribute software to certain app stores. It's discriminatory against all commercial enterprises.

This has to stop. Children, crazy people, and communists like the FSF should not be permitted to redefine the language used by adults who work for a living. Freedom means freedom, it does not mean "stuff Richard Stallman would like".

As I've said before, if you use the GPL, you give crazy people power over what you can do with your own work.

The root problem is that the GPL has been marketed as a free software license, when in fact it is nothing of the sort, it is filled with restrictions and poison pills to make sure you cannot use it in any productive, commercial fashion. The solution is simple: stop using the GPL. If you want to give out source, use the BSD or MIT license. If you only want to give out source to people you like, say so up front and give them an individual license.

← Previous: Upcoming iPhone apps (Mac) Next: Macs Make Programmers (Mac) →
Upcoming iPhone apps
Thu, 2008Jul10 09:10:52 PDT
in Mac by kamikaze

Over the next weekend, I should be able to get two more iPhone utilities packaged up and out.

  • A programmer's RPN calculator, with base 10 and 16, a full set of binary operations, basic trig operations, history, and memory, and more coming. I was worried Apple would stomp on me with their Calculator's sideways "scientific" mode, but it turns out to not have RPN, and anyway, they don't have the functions I and other programmers need.
  • An RPG dice roller.

Then I can get back to work on my big iPhone RPG. Stay tuned!

Page:   0    1    2    3    4    5    6    7    8    9    10    11    12    13    14    15    16   Archive  
Feedback  | Key: ] =local file, * =off-site link  | Copyright © 2003-2010 by Mark Damon Hughes | Subscribe with RSS 2.0