Hacker News new | past | comments | ask | show | jobs | submit login
The Little Coder's Predicament (whytheluckystiff.net)
138 points by mqt on Feb 11, 2009 | hide | past | favorite | 104 comments



Truth. I got my start in programming with BASIC via DOS. Today, I find that the biggest mental block to learning a new language is the difficulty of setting up a development environment.

It's at least a little bit surprising that platform developers don't put more of an effort into making coding for their platforms more accessible. One might assume that Microsoft would have a lot to gain from a generation of young programmers learning to develop for Windows.



We care on the XNA team as well! It's not bundled, but you can develop for your Xbox 360!

http://creators.xna.com/

C# Express, Game Studio, and XNA Framework are free for personal and commercial use on Windows. Deploying to your Xbox 360 costs $99/year which includes the rights to sell your games on Xbox Live.

The download includes a simple Platformer game "starter kit" (written by yours truly) which is perfect for game development newbies with just a tiny bit of programming experience. There are loads more samples at http://creators.xna.com/en-US/education/catalog/


* Deploying to your Xbox 360 costs $99/year which includes the rights to sell your games on Xbox Live.*

What if I don't want to sell anything? Do I still need to pay in order to write programs for a console that I own?


I don't write the policies, nor may I speak in an official capacity about them. One of our MVPs addresses it as best as an outsider can in an FAQ here: http://forums.xna.com/forums/t/12661.aspx

He also describes how students can get one year free through the DreamSpark program: https://www.dreamspark.com/


Why isn't it free to deploy to your Xbox and then $99 for the ability to sell your game?


I'd love the ability to deploy my little learning-iPhone-SDK apps to my iPhone (to get the 'oh wow' feeling that I built something) but that's going to require $99 and getting a provisioning certificate from Apple. And in fact, I may pay the $99, just to be able to do this (not necessarily to sell apps).

I believe that Apple and MSFT did this licensing fee program to stop any sort of homebrew movement (e.g. people sharing games outside of the approved ecosystem). They came from Homebrew but that's in the Cambrian age for them.

http://en.wikipedia.org/wiki/Homebrew_Computer_Club


With Android, there are no barriers at all to setting up the SDK, creating an application, and installing the application on your own phone via USB. You can even go so far as to build and distribute the .apk packages to let anyone in the world install your application on their own Android phone. In fact, if you don't care about the Market at all, you can simply release, distribute, or even sell your application on your own to customers, and they have the ability to get your app onto their phone as easily as downloading it through their Android Browser.

The only barrier comes when you want to start putting your apps on the Android Market, at which point you must become a registered Android Developer, for the cost of a whopping $25, which then allows you the ability to publish apps to the Market.


The solution is to jailbreak your phone, or get and develop for an open alternative, like OpenMoko (or perhaps Android).


It's not bundled

I think that's _why's point: the language needs to be bundled, so that programming feels to the newbie like a natural extension of exploring their system. Otherwise, not many will take the leap. It's like the difference between free and $.01.


Thats 99 dollars more than a kid has or is able to spend.


awesome. can I use F# too?


I actually had my younger brother try this out, and it did what it set out to do very well - that is, it's very sandboxed, but at the same time gives you access to change certain things such as your desktop background, etc.

Pretty well done, at least in my opinion. The one problem is that there's really nowhere to go after that - if you stay with MS tech, it's far too large of a leap to build anything larger than what you can already accomplish with Small Basic.

Just my two cents. shrug


Definitely. Aside from that I'm not a big fan of BASIC as a starting language any more, the syntax is weird and inconsistent etc etc. Although I really like Python I think Löve (Lua) might be the best place to start now.


Yes. I got started on the Commodore 128D, after I got bored of all the games mine came with. Would I have done so if there hadn't been a BASIC manual on my shelf and an interpreter baked into the system? Dubious. I then learned Pascal once I got my first PC, because Turbo Pascal had been included by the previous owner. The first compiler I had to fight for was Turbo C (had to convince my mom to ask one of her colleagues for a copy). But by then, I'd been programming for over 3 years.


So true. It took me months to get a emacs on a mac.


What _why describes is half the problem. (Maybe a bit more than half.) In the Good Old Days, you could take your Spectrum/Amiga/BBCmicro/C64/whatever, and (1) write a program that (2) did something comparable to the games you could buy. (Less polished, sure, but not a million miles off.)

Nowadays, #1 is harder because there's no programming language bundled with the system, because it doesn't drop you into a REPL when you boot it up, and because the programming languages you can easily get hold of don't have nice easy facilities for graphics and suchlike. That's _why's point.

But of course #2 is harder too, because modern PCs are capable of all sorts of astonishing 3d moving graphics and stuff, and the games you can get for them exploit that. But that stuff is really difficult for a novice, and poorly supported by learner-friendly programming languages, and really difficult to do well even for experts.

So, for most people, the amount of gratification you get from writing your own code is less relative to what you get from just using other people's software, even if we solve #1 comprehensively. So the motivation to learn to program is less.

(Of course, there's a small minority who fall in love immediately with the very idea of programming. But it is a small minority.)


Exactly, lack of motivation is a big deal. Games these days have crazy production values (GTA IV took 3.5 years, 1000 people and $100 million budget).

I know, there are also some very good indie games, but you have to be very creative to be able to compensate for a lack of production values. Not everybody is so multitalented.

One possible solution is to get into programming by modding existing games (instead of starting from scratch). Many cool games have very good scripting engines (for example Unreal, Civilization or Half-Life).

If you mod an existing game, your work is incremental, you can play with all these expensively produced assets. There is an instant gratification when you see some change in the game world made by you. Additionally, your results are immediately understandable to your gaming buddies.


I know one of the developers on GTA IV. He says it cost $5 million.


Leslie Benzies, producer of GTA IV estimated costs to be $100 million.

http://www.timesonline.co.uk/tol/news/uk/scotland/article382...

Maybe your friend was doing just a port on one of the platforms? That could be in the ballpark.


Guitar Hero is an incredibly popular game and requires no 3d graphics or full motion video.

I'm pretty sure I could write Guitar Hero in Python. (Oh wait, someone already did! http://fretsonfire.sourceforge.net/)


The one thing that seems to be missing is the idea of including a programming tutorial with the pc or console. What if your XBox came with a manual called "Programming the XBox - a tutorial introduction"? When I got my Apple II+ it came with a programming manual on Apple BASIC presumably because that was part of the reason for the machine's existence - as an easily accessible platform for people to learn to program on. Nowadays, the idea that the common person would actually want to program their computer seems to have been lost.


That's because the Apple II+ was produced in an age where the inventors of computers envisioned everyone learning to program computers...as opposed to using them as really expensive fancy typewriters, which is essentially what most people use computers for today.


The only person who has ever had that vision, consistently, is Alan Kay.

The Apple was programmable because it was made by hackers for hackers. There were a few firms that would do software consulting for corporations and institutions, but the notion of consumer software barely existed.

Apple didn't mind it if a few people wrote third-party software and sold it. But I think in the beginning they expected to provide all the important software themselves, just like every computer manufacturer of the era.


And, I speak as somebody who used to hand-compile SHAPE files on the Apple II. These were a sort of vector graphics which you had to first painstakingly draw on graph paper, unspool as a series of draw/turn commands, and then translate into bitmasks according to a lookup table, and then cut those up at seven-bit intervals, and convert those into decimal numbers. This is not something that anyone ever conceived of as a children's toy. Even though some kids (like myself) persevered.

Hm, I wonder if pg's concept of Languages For Smart People applies. Is it possible that kids just don't like kids' languages, like Logo and so on? I have to say that I certainly didn't, although I was exposed to it much later than Alan Kay would have preferred.


>The only person who has ever had that vision, consistently, is Alan Kay.

Don't forget Ted Nelson, whose book (which I bought YAY :D) Computer Lib/Dream Machines features the slogan, "You can and must understand computers now!"


Much of Alan Kay's vision in this department was inherited from Seymore Papert. </pedantry>


iphones kinda come with a 'how to program an iphone app' tutorial, where by come with i mean the internet. presumably most of the comments here are focused more on the existence of tutorials at all, not on implementation. still, the state of open api's is growing tremendously (twitter, facebook<--confusing as all heck but lots of tutorials, greasemonkey).

i don't get what people are talking about. maybe that's because i'm not a video game or linux nerd. i don't like c or assembler or l33t h4x0ring. i mean, i'm not very good at it. but in the past 2 years i've learned how easy it is to program and make things. wow--i can make a twitter app. wow--i can make a robot. wow--i can make a real website. there are so many opportunities that weren't available before, especially in the realm of tutorials and thoughtful introductions.


People tinkering with programming don't care about APIs, they don't even know what an API is. Have you seen how much code is required for a Hello World application for the iPhone or how many people there are complaining about Objective-C's syntax?

BASIC on TI calculators is very popular among kids because they can figure out how to write a program during their math class. You don't need much reference to write a text-based game or a program to help you cheat on a geometry quiz.


i understand the advantage of scripts. my sister loves python now because she can munge csv files much faster now (she's a scientist)

api's allow people to do cool things. they're libraries. kids would find programming on a calculator much more tiresome if they had to write the multiplication method first.

i guess tinkering with a calculator is fun, but that seems kind of old school, and also pretty narrow (in my day the kids with the fancy expensive calculators were the ones taking APs and headed towards private colleges).

writing a 10 line python script that does something with twitter or other social networks--tons more fun than math.


I reckon a smart kid with a couple of days work could have an IM bot that his friends could chat to, and all the kids are into IM now, doing cool stuff that impresses your friends is powerful encouragement to take it further. Even those kids with calculators were doing it to impress other geeks...


What about LÖVE? http://love2d.org/

It's really easy to program for; Lua is a language you can pick up without much effort. It's reasonably fast and built upon a few fairly ubiquitous libraries. Game distribution is easy (zip and change the extension to ".love").

Obviously it doesn't come pre-installed anywhere, but it's not hard to get. It would probably take a little work to make it run on game consoles, though, depending on how many of the libraries it depends on are already ported.



You can just cat the game on to the love executable, and package it together, so that people wouldn't need to download love, according to their docs.


_why's made significant inroads in this area since this posting, though. Sure, there's definitely a ways to go, but Shoes is one of the best toolkits I've seen period, regardless of being aimed at children.

On the subject of game consoles and development, the PS2 did have a version of Linux where you could use it to run various things (games, scripts, programs, etc). Granted I never got to use it myself, but I recall reading that the reason Sony didn't push it too hard is that there was little to no interest in it, at least compared to the overall market.

I actually reviewed a couple different programming environments for kids about a month or two ago, over on Linux.com (http://www.linux.com/feature/155203). Bit of a shameless plug, but I figure it's somewhat relevant to the discussion at hand. shrug


I get his point, but can't get away from the idea that he's describing the web... and php. New distribution system, larger audience, same idea.


Possibly, but PHP limits you to web-style interactions. You have to be excruciatingly clever to get it to act like a chat server or something. And forget about doing animation or sound or anything fun.


So once you've mastered php, you move onto something more powerful.

You can do tons in javascript these days also.


Right, but many beginning programmers don't want to start with something boring and move on to the fun stuff. You can't show a CGI form to your friends and have them drool over how cool it is. Instant gratification is key.


It almost has to be at the level of myspace -- look, I can quickly add this picture, or this music, or this text to a page all my friends can see.


(as a web programming novice) I think the problem with the web in this context is there are still some significant hurdles to getting set up, e.g. getting a server to host your webpages (unless you only want your friends to be able to see it when your PC is on). If you could get rid of these barriers...

I think if someone could provide a browser-based all-in-one solution with language+IDE+hosting+tutorials, then that would fulfill most of his criteria. You could type a few lines, instantly view the page and then send a link to your friends (who can view it at any time).


It's been a while since I've developed PHP on Windows, but way back in the day there was a popular package that would install PHP, MySQL, and a smattering of other things (like a GUI DB manager) in a single click. It got me started on PHP very, very quickly, and in a lot of ways I owe a lot of my coding experience to it.

Macs also now ship with PHP and Ruby, though they are sometimes broken.


I believe you're talking about XAMPP: http://www.apachefriends.org/en/xampp.html


Heroku? Google App Engine?


"If you could get rid of these barriers..."

What you don't think there are enough ridiculously bad programmers using PHP/javascript already?

Barriers to entry are good. It sorts the people who really want to do it because they love it, from the rest.


OK, perhaps I should have written a bit more here.

The issue is, there is pretty much no barrier at all to programming at the moment. That's why there are so many bad programmers who have just heard there's money to be made. Add to that the fact that identifying bad programmers is sometimes hard, and you have a bad situation.

Raise that barrier for entry, and perhaps someone who thinks "Wow there's money to be made in programming, I better get a job in it", will fall at the first hurdle.

If you're interested in it enough, there's plenty of easy to start development environments around for any beginner.


I think you sort of missed the point of _why's original article, though. He's not lamenting the difficulty for computer-savvy adults to get started programming -- the main thrust of his article is towards our failure to provide an easy-to-use, freely-included sandbox for kids to experiment with programming.

How many of the other folks here started out just as described in this article: namely, writing silly little BASIC programs for early Commodore, Apple, or DOS systems?

There are a handful of projects aimed at just this niche (Scratch and Greenfoot, for example) but none of them come standard on any new system. That lack of immediate availability means that kids have to actively seek out the tools + have the ability/privileges to install new software before they can even start experimenting with something like this:

  10 PRINT "JENNY HAS COOTIES!"
  20 GOTO 10


On any Mac said kid could do:

    $ python
    >>> while True:
    >>>     print "JENNY HAS COOTIES!"
No installations, no extra privileges, nothing. It just works. _why is tilting at windmills.


No, he's tilting at interfaces. Just because it's possible doesn't make it part of the culture.


Ah ok, I still don't see there being any barrier at all,

I bought my son a ZX Spectrum. You can still buy all the fantastic home computers on ebay etc etc.

Or, there are web based spectrum etc emulators out there where you can just write code and run it.

I'd agree though, it'd be nice to make sure kids can get access to the dev environment that lets them play quickly and easily.

It'd be cool to have something better on netbooks, like the eee. I don't know if there are any good learning programming tools included, but there definitely should be.


I think a better solution is to have an incredibly low barrier to entry (never know if you are a good programmer until you try it, so getting more people to try means more good programmers), and then focusing on improving your programmer selection (if you are hiring). If a bad programmer can't get a job, then they will most likely find another path in life. (If they keep writing bad code for themselves, who cares?)

As far as open source is concerned, bad programmers don't bother me, because you can generally find a solution written by someone that is good.


That seemed to the obvious answer to me. Nintendo, Sony and Microsoft aren't going to open up development on their consoles because they make money off of licensing fees.


Unless they disallowed vendors from charging for games made by the "open" dev kit, thereby preserving the licensing fee.

Or just eliminate the fee in its entirety and take a slice of the revenue (or marginally larger slice).

I don't see how lowering cost of entry could be anything but advantageous to console makers.


On the first thought: I don't see it,they would still have to contend with a growing community of people who mostly want to play homebrew and open source games.

On the second: Maybe, but that might be seen as a barrier to publishing a game made for fun that just happened to be good. "Eh, I'll just give it away, I was only doing it for fun anyway."


Hmm, _maybe_ Javascript. You really need to be able to jump in and see results - visual results. The visual feedback of Logo was definitely instrumental in getting me into programming.


Like maybe a tutorial that helps you build a breakout clone, where all the code is live and interactive in an editor in your browser?

http://billmill.org/static/canvastutorial/


Very cool.


completely agree.. even building a basic html webpage hits a decent amount of his marks (transportable, improves connectivity, etc.)

is it so obvious that it was overlooked?


The BASIC of today is HTML/CSS/JavaScript.

Then there are things such as http://tryruby.hobix.com/ and processing.


Both "Try Ruby" and "The little coder predicament" have been written byt the same person, namely why the lucky stiff or _why.

His main programming progress for the last two years has been Hackety Hack, a programming environment for kids, based on Ruby.

The first iteration of HH was built on top of Mozilla, but abandonned because of cross platform issues.

The next version, due this march, runs on Shoes, a GUI toolkit he developed with HH in mind.

http://hacketyhack.net/ http://shoooes.net/


I can't edit my post anymore, sorry for the typos. BTW, s/progress/effort/


First, you are totally right about HTML/CSS/JavaScript

Second, that's a pretty cool link! I don't know Ruby, so I learned a thing or two. Unfortunately, I had to use some of my existing programming experience to save me when I experimented a bit. For example, I decided I liked 'cheese' better than 'honeydew'. That put me in a state where I needed to guess what the tutorial was monitoring for and had to replace cheese to move forward. Additionally, there was times where I experimented and it advanced a page with no way for me to go back. With some polish, this could be a very promising educational tool!


Yeah, that would be great, but I don't see it happening. In 1982, little geeks like me wanted to spend time playing with their computers, but there was almost nothing you could do with them, so you /had/ to become a hacker to have any fun. And the hardware was more accessible. We wrote code in real mode with no protections, and the peripherals were simpler. I wrote my own banner printer when I learned I could control the pins of my dot matrix printer individually. Now you have to learn postscript or something comparable just print "Hello World," or you have to write a kernel driver to talk to the thing directly.

The bar to get the machine to do interesting things is too high, and the distractions are too many. You can spend weeks with your computer without running out of websites to explore.

P.S. If anyone does figure this out, please be sure not to implant damage that must be undone later. The mental leap from line-numbered BASIC to structured programming was a big one.


I learned to program on my TI-83. Over the past few decades, computers have built more and more walls between typical users and programming, whereas on my calculator, it was right there... on a whim, I could, say, make a program to calculate the area of a trapezoid. At the time, if you asked me to do the same thing on a desktop computer, you'd be getting a blank stare.

Graphing calculators today are essentially the new programmer's playground that all computers were 20ish years ago.

Why seems to be making great progress toward reversing this change with Shoes and Hackety Hack, but I think the ultimate solution right now would be some sort of programming environment built into iPod Touches. (EDIT: Heh, I stopped reading before the end. I guess that was his idea too.)


Yeah, I learned on my TI-89. Ironically, made a DnD character stat generator and a function to calculate the first 6 elements of an infinite series... (calc class was quite boring).

I abused the GOTO statement, though... hey, it wasn't like you were going to care about elegant code design at age 14 on a TI...


Same here, I made some pretty complicated games on the TI-85, tetris for example with all of the blocks drawn with "0"s, that was a HUGE mess of gotos and especially when you can only see like 8 lines of code on the screen at a time gotos to far away can get very confusing.


I suspect you hadn't been indoctrinated on GOTO being the one_true_evil at that point. I remember writing programs on my TI83 during maths and physics classes, but BASIC on a BBC was where it all started for me. Lots of GOTOs there. >:)


Another vote for http://www.processing.org/. It's superb; if you haven't tried it and you, like me, spent your childhood writing programs on your spectrum, you should check it out.


While this is rather old, it's also rather timely: http://hackety.org/2009/02/05/theFundamentalLittleHackersSum...

...oh, and personally, I can relate. If it weren't for the Apple IIe in my middle-school math teacher's class room, I wouldn't be a programmer today.


Isn't this what Squeak guys are (kind of) aiming at? OLPC comes with Etoys, in which children can easily write and modify graphical apps.

What's interesting is that their environment inherently supports concurrency. If kids learn concurrent/parallel programming from the beginning, maybe they'll make better software suitable for this multicore/cloud age later.


it's also relevant.

mac's come with sqlite3, python, a terminal, a decent developing environment (extra cd). it's probably not a big deal for windows folks to download languages and developing environments, too, to say nothing of ubuntu.

the web is a trove of treasure tutorials. open source and the web are thriving, the community is more inclusive and inviting than ever. more and more i run into artists, non-video game players, females, mechanical or electrical engineers and young folks discovering the joy of programming (arduino, processing, openframeworks, scratch and python are examples from recent interactions i've had).

video game consoles might be less programmer-inviting than they used to be, but they're also catering to a more varied and more expecting audience than they used to.


Sure, but I think _why's point is less about availability and more about approachability. As a 10 year old playing with BASIC, it took me all of a day or two to begin writing my first text adventure game. A few weeks after that, and I was writing graphical interfaces.

Available tools are worth nothing if it's not painfully obvious how to make them do something interesting...and you have to remember that interesting is different today than it was when I started programming. I doubt today's 10 year old would be impressed by a text adventure...unfortunately...


today's 10 year old is probably writing a twitter script in python in 2 days.

as a non-video-game-playing female i didn't find programming approachable then, but i have found it approachable in the past 2 years. i can't speak for 10 year olds, though.

there are numerous improvements in the approachability aspect (scratch, alice, processing, arduino on the educational front). i suspect approachability had little to do with you success as a 10 year old. your argument is simply that BASIC was available when you were 10 and now you can't think of modern fun tools and fun tasks. letsmakerobots and instructables come to mind as good starting places.


I think approachability is absolutely key. Kids wrote programs on their Commodores, Ataris, and TI calculators because the environment was already setup. You could type in a few commands and instantly have something running (a program that solves the area of a triangle or one that plays a cool sequence of tones). There's only one editor and one language.

The majority of today's 10 year olds are not writing twitter scripts. It requires a significant amount of understanding and time to do so. You need to pick a programming language, install it, figure out how to write your program and how to execute it. The barrier is a lot higher than writing a program for your calculator during math class.

It'd be much easier for you to find people who wrote trivial programs on their Commodore when they were 10 than it would be to find 10 year olds who are writing python.


" I think approachability is absolutely key. Kids wrote programs on their Commodores, Ataris, and TI calculators because the environment was already setup. You could type in a few commands and instantly have something running (a program that solves the area of a triangle or one that plays a cool sequence of tones). There's only one editor and one language."

I agree. If Commodores or Amigas were available today, I'd buy one for my 5 year old nephew so that he could fiddle around with it, play some simple games, write some small programs and so on.

Maybe there is a market for a small computing device that has the "instantly have something running, but is completely hackable" characteristic.


I'm an experienced developer, but when I wanted to write a Jabber 'bot in Python, well, it took longer to get an account for it from our Domain Admins than it took to write. In 50 lines I had something that was doing useful work (in this case, relaying alerts from the monitoring system into a Jabber conference). This sort of thing is incredibly accessible to anyone who wants to do it. The stuff an 10-year-old with a free language and an ADSL connection can do today dwarfs what I could do at that age.

I think _why rather likes the idea of himself as the Pied Piper, but the situation is nowhere near as bleak as he makes out.


It's not as accessible as BASIC on a TI calculator, where many kids are introduced to programming. I don't think it's a coincidence that the situation was similar on Commodores/Ataris.

Deciding that you need a programming language installed and then picking one and installing it is a very big step. It was a fluke that many of the people posting in this thread discovered programming. They stumbled upon the editor, tapped out a couple lines, and something happened. Cool!

Python is certainly accessible to an experienced developer, but a 10-year-old's curiosity is superficial. They need to tinker and receive instant gratification without the barriers of setting up an environment. Programming isn't integrated and exposed in a dead-simple way to foster experimentation these days.


Well it is a matter of perspective. If you're a kid and your family has a Mac you just sit down and type python and you're in. Whereas how many 10 year olds even today have graphing calculators? Do kids even use calculators any more or is it all "new maths"?


gaius, you and i are on the same wavelength. the old skool calculators and video games is actually a very narrow approachability (as someone who never had either nor was much interested in either), but is significantly more present on this site. however the new skool method--macs for trendy teens and college folk, or processing for artists, or good old scratch and alice for young kids--is much more present seizure-inducing social network sites, or off the web scene altogether. the anecdotal data here is significantly skewed. the real power of approachability is the variety of people doing technical projects now who otherwise were too intimidated in the past.


You believe it's skewed because it doesn't fit your particular model of world. The fact is, an entire generation of hackers got their start through tinkering on a gaming console in their pre-teen years.

I think you're just so out of touch with how a 10-year-old learns that you can't comprehend what the article is addressing. A kid that age doesn't pick up programming the same way that a person in their 20's does. He's still mastering reading, figuring out the fundamentals of his operating system, and making real-world analogies for objects on his computer that you might already have at 24. He doesn't understand what an algorithm is, he doesn't even really know what a programming language does or what role it plays. He doesn't know algebra.

Most kids are not scholarly. They don't seek out information and work through tutorials. They're never going to hear about alice/scratch/squeak/LÖVE. They stumble upon things and their curiosity drives them, but their attention span is relatively small. They do things because they're fun and not because they want to learn.

When you began programming you probably read books and tutorials, followed-up on documentation, and relied heavily on examples. Learning through your teenage years is evolutionary. It's almost all trial-and-error at that stage. Computers are a incredibly complex place to start, that's why so many of these anecdotes are about programming BASIC.


Interestingly mobile phones used to ship with a tool for programming your own ringtones. My brother used to do it all the time. Nokia at least stopped bundling that when they discovered it was actually possible to sell ringtones.

He's a full-time C++ programmer now :-)


I miss how difficult it is to get into graphics programming nowadays. DirectX and OpenGL have somewhat high learning curves for new programmers (especially kids). Even the "simplified" graphics libraries are usually OOPified and take some learning.

I miss the days of mode 13h!


> I miss the days of mode 13h!

Happy memories :) Discovering that what you see on the screen is just bytes in memory, and you can access them directly.


try scratch or alice for kids programming try processing or openframeworks for graphics


Since you're the only one who's mentioned it, I second Alice. ( http://www.alice.org/ ) I learned about it from Randy Pausch and his "Last Lecture" (it's also mentioned in his following lecture). It's a way to simply drag and drop java until you want to drop it and type on your own. You control animations. From their site.

Alice is an innovative 3D programming environment that makes it easy to create an animation for telling a story, playing an interactive game, or a video to share on the web. Alice is a teaching tool for introductory computing. It uses 3D graphics and a drag-and-drop interface to facilitate a more engaging, less frustrating first programming experience.

They've even gotten EA on board to allow use of their Sims 2 characters. Good stuff.


Tcl and Tk are pretty simple ways of getting started and putting something on the screen.


I owe alot to the Pre-computer 1000 : http://www.vintagecomputing.com/index.php/archives/324

As a 7 year old I just loved the feeling of making the computer do what I want. The instant feed back of print/ input/ run cycle also played a big part in it.

After playing with C++, Pascal and learning Java I didn't get the same feeling until I started learning Python - Really captured that moment again :)

I've enjoyed learning Clojure too - the LISP syntax is so different to what I've learnt that it brings the same feeling :)

Great article!


I think this is a great idea, and there's a lot of weight behind it. In trying to teach my little cousin how to code one of the biggest blocks I faced was that there was nothing right at his fingertips to play with. I had to spend an hour or so getting him to install stuff, and by that time, he was disinterested.

What got me started was that in 10 minutes, I could have a program running on my TI 89 that did something cool, even if I never looked at it again. We need something like that for this generation that uses this generation's portable technology.


Unfortunately Handykey (makers of the Twiddler) are out of business for the time being. Fortunately, there is some work in our lab along with Chris George, founder of Handykey, to build a Bluetooth version of the Twiddler that follows the Bluetooth HCID Profile.

http://wiki.cc.gatech.edu/ccg/classes/7470/7470-f06/bluetoot...


Ok, who else here has

   HGR: HCOLOR=3:
burned into their corneas?


I remember as a kid going into the local computer shops, getting onto a speccy or commodore and typing the immortal lines:

10 print "hello" 20 goto 10

Felt great to watch that mother scrolling!

But the first thing that kids of today will do when they get hold of a new pc, is get on internet to search for pron.


The closest modern equivalent is myspace. Myspace users are encouraged to modify their profiles with custom html/css. There's existing layouts to copy and modify. Any changes are instantly visible. It's easy to share layout code with friends.


The predicament presented is not new since there has always (in my geek lifetime at least) been a division between "computing" devices and "gaming" devices.

Yes, I too learned programming on my TI99/4A and Aquarius and Laser 128 but then I also played games on my Intellivision without a way of trying my code there.

I always saw hacking on my computer as a "gateway" (no pun intended) to creating more advanced programs in much the same way as playing backyard football was a "gateway" to playing professional football (if I was good enough).

Finally, it seems to me that the ultra-portable laptop revolution will be the driver of getting more "computing" devices into the hands of future generations.


Learning to program now is easier than ever before.

Last week my partner was in Spanish class and the teacher told her that the most important languages to know in the future will be English, Spanish, and a programming language. Programming is the new literacy. She decided she wanted to learn to program. We opened up Terminal on her Mac laptop, typed "python", and used Mark Pilgrim's Dive Into Python as a guide. Done.

With a PC you at least have access to JavaScript (and Marijn Haverbeke's Eloquent JavaScript tutorial) which is more than suitable for a first language.


As _why alludes to, I think the best work being done in this area is by Alan Kay and his work with Squeak in the squeakland project: http://www.squeakland.org/

I think it could easily be ported to a variety of platforms.

And _why's totally right. My 8-bit sprite of a jumping cow for Logo was the sweetest (yes, C64's in Texas, that explains a lot about the jumping cow).


the fundamentals haven't changed; the gateway drugs are just different :)

php and rails tutorials, html, flash, even custom myspace profiles (for example) are the BASIC for today's kids. then you get your facebook apps, iphone apps, etc as you move up the food chain to more sophisticated languages.


As a general note, consumers are not supposed to fiddle with the product, since customizations are supposed to be sold as services related to the mass market item. Exploration and learning should be restricted as much as possible (see Digital Restrictions Management, and the Right to Read). But then again, dumbing down consumers does fire back in the end...

So when users do finally get to program, the supported way of doing it is: http://www.charlespetzold.com/etc/DoesVisualStudioRotTheMind...


I know you're being flippant, but there really is a critical underlying problem with making everyday technology intentionally arcane.

If people are unable to easily learn how something works, they will, for all intents and purposes, treat things as black boxes or "magic" and learn to distrust them (and those who do understand them) when things go wrong. This problem isn't unique to computing. My father grew up in an era where automobiles could still be serviced by end users, and learned to appreciate doing things like changing the oil or replacing parts himself. As such, he knew the limitations of the machine and could be more helpful to mechanics when bringing in a vehicle that was too broken for him to fix. Even more importantly, he knew when a mechanic was trying to snowball him with bogus repair suggestions.

The distance most people have from our food production processes is another example. A century ago, vegetarianism, when it was rarely practiced, was usually a religious choice and not regarded as a threat by meat eaters, or vice versa. Nowadays, its a full blown political movement which I suspect is in no small part due to the shock some people have growing up when they first learn where meat comes from late in their life (and in conditions most people feel have to be hidden.) I've seen kids who vehemently deny that meat comes from animals. When they grow older and finally learn/accept the truth, the impact would be much more shocking that a child who sees farm animals from a very young age.

Back to the original topic, even if most end users don't bother to learn to program, the perception that it is easy to get into is very important, in that it insures that they might know somebody who does.

I wish I could write more, but the gist I'm trying to get at is very hard to put into simple words. Hopefully, somebody else here will understand my underlying point and enunciate it better than I can.


It has been well articulated (with some of the consequences) in James Burkes' Connection series during the "good old days" of the beeb.

Would people know why is it cold inside the fridge, while it is hot outside? Or what makes the cold stay inside the box? Nevertheless, almost everybody relies on a fridge ...and almost nobody knows what actually it is. Tricky situation indeed on the long run...

Somebody has made the series available on:

http://www.youtube.com/profile_play_list?user=JamesBurkeFan

but the account has been closed. There are some traces on:

http://www.youtube.com/user/JamesBurkeWeb

You might like it: it is worth every minute.


Late response, but...

I really enjoyed the Connections2 series that was available on American cable TV a few years back, but I know of few people who have. I think my country has developed a real hostility to learning the history of anything, technologically or otherwise. I've never watched it, but I've had similarly minded co-worker point out how much the movie Idiocracy rang true as a premise. I weep for the future...


"I've seen kids who vehemently deny that meat comes from animals."

Going off topic...

There is no chance of my kids not knowing where meat comes from. I often use the words beef/cow or pork/pig etc interchangeably.

e.g. "What's for dinner tonight?" "Chopped up bits of cow."


I think javascript can be a possible solution - if only making Firefox extensions were more accessible to kids (remember - short attention span; they wouldn't want to read much to do it).


OS X includes Perl, Python, Ruby and AppleScript. More tools are available when Xcode (free) is installed.


I learned on a TI99-4a, too.

My wife got me another on off Ebay a few years ago.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: