« | »

Just Let BASIC Die.

If you’d like to hear a boring but heart-warming story, ask a geek about how they learned programming. It’s like the opposite of trolling: you can instantly provoke tearfully-joyous nostalgia out of programmer strangers on the Internet by making this inquiry. Most of these stories will include some form of a programming language called BASIC, the Beginners All-purpose Symbolic Instruction Code created in the 1960’s at Dartmouth. The Atari generation has now grown up, and so have programming languages. But I think this nostalgia is responsible for us holding onto an out-dated language like a ratty security blanket.

In another post, I wrote about how Python is the new BASIC, as in it should take up the mantle of being the iconic first programming language for kids to learn. The rising sun of Python should be a long-awaited welcome for a new generation of coders. In the early 2000’s, there seemed to be (at least from my perspective) a noticeable gap in kid-accessible programming that was filled with JavaScript, TI-82 calculator programming, and Visual Basic. These were languages suited for the world of software engineers, but it was hardly ideal for the kid software hobbyist.

Two articles that pointed this out was David Brin’s post, “Why Johnny Can’t Code” and _why the lucky stiff’s article, “The Little Coder’s Predicament.” Both lamented the waning of a simple, approachable language and coding environment that was universally known. why responded with an interactive Ruby tutorial Hackety Hack. But David Brin’s solution was several steps backwards. A couple of decades backwards.

David Brin concludes his article (written in 2006) by buying his son a Commodore 64 (the kind of computer that programmers get nostalgic for) and beseeching Microsoft and other major companies to release a version of BASIC with their products. This leads me to say one thing:

Just let BASIC die.

I have those warm fuzzy memories of making simple text RPGs and hacking around with NIBBLES.BAS. I can tell you stories of how much fun I had making my own programs in BASIC. When I was a child, I typed like a child, I coded like a child, I Hello World’d  like a child. But when I became a man, I put away that childish language. And with the modern languages we have now, there’s no reason for the next generation to take it up.

We were blissfully ignorant about the headaches and inconveniences that BASIC brought us. I’m not just talking about “GOTO Considered Harmful”. We forget about the warts of “End If” and “DATA and READ” and “int(rnd(1) * 10 + 2)” (and don’t forget to first put in “randomize timer”). But these are mistakes that have long since been corrected by other languages.

But we keep trying to revive this dead horse. There is Small Basic, Basic-256, (formerly KidBASIC), Run BASIC, et cetera et cetera. Each of these has almost no community compared to other mainstream languages. Each has their own custom APIs that they’ve kludged onto the original language (which means very shallow amounts of documentation.) And without popular adoption they are at risk of being dropped when their core developers find something new to work on.

The answer to why’s Little Coder Predicament is going to need several things. The language has to be easy to learn. But it also has to be powerful, and not restrained by the “4 kidz” style that many game creation kits have. It needs to be freely available. It needs to have language maturity, written by people who understand programming language design. It needs to be portable across several platforms so kids can share their programs with friends. It needs a REPL (i.e. the interactive shell.) It needs to have a large number of third party libraries developed for the language that can extend its capabilities. It needs large amounts of reference documentation and tutorials. You need to be able to go to Barnes and Nobles or the public library and find a real, dead-trees book that covers the language.

Python with Pygame provides much more powerful ways to do programming than BASIC but with the same gentle learning curve. Displaying sprites from image files, scaling them, and rotating them can be done in one line. Playing MIDI, WAV, and MP3 files is the same. You can easily incorporate the mouse (and, unlike Small Basic, use the scroll wheel). You can display text in any font you can load. Colors and transparency and drawing primitives are all dead simple. BASIC’s time has long since past, and it would be completely dead if not for the misguided attempts of now-grown programmers who misremember a past golden hey-day.

Another thing programmers love do to besides reminisce about the simpler days of BASIC and banana-throwing gorillas is write code. New code. Writing new code is easier than reading up on mature, already-adopted standards. Forging your own path has the excitement of crafting something original yourself, without all the hang ups of abiding and being restrained by past conventions (and, I would add, wisdom).

Nostalgia and wheel-reinvention are the two seductive forces I blame for this Weekend At Bernie’s-style jaunt we play with BASIC. I wanted to contribute to the next generation of coders, so I wrote “Invent Your Own Computer Games with Python” (available for free under a Creative Commons license at ). During the course of writing the book, I had to code up several games that the reader could copy. I found that writing these game programs in Python was far easier and in fewer lines than anything I had done in QBasic. I didn’t need to know about the advanced features of the language before I started (which is Java’s hangup) and I could be sure that the code I downloaded from others would run without modification (which is C++ and BASIC’s hangup.)

I’d rather produce a useful addendum rather than an original flop. BASIC leaves us standing on the shoulders of Shetland ponies. As rich as Python’s community is, there was a need for a simple, expansive tutorial that taught programming through the practical (and fun) means of creating video games. So I wrote Invent with Python. I loved coding games as a kid, and kids love doing it now. Playing games that you’ve created yourself is timeless. But BASIC is not. Just let BASIC die.

Posted by on December 22, 2009.

Categories: Blog

32 Responses

  1. I just hope that someday BASIC will GOSUB and never RETURN.

    by Arnold on Dec 22, 2009 at 10:44 am

  2. You are forgetting FreeBASIC, which is everything the BASICs you described isn’t.

    by Steve on Dec 22, 2009 at 12:25 pm

  3. I have some old QBasic 1.0 projects posted here…ahh the memories…

    by SoCo on Dec 22, 2009 at 12:33 pm

  4. I agree with you but only partially.

    a) From my own memory, I had a LOT of fun writing in BASIC, especially because it came with a GREAT and big book. Books can never be overrated really.

    Such books should be printed. FUN books that make programming FUN.

    b) BASIC is already dead actually. It just takes a long time for a programming language to die… but one day, the new folks all will cater to better languages, leaving the older languages in a dust to settle. This happens all the time.

    There are so many people who still love FORTH for instance. I never understood why, I always hated forth, but more advanced people could obviously use FORTH nicely.

    by mark on Dec 22, 2009 at 12:46 pm

  5. And qbasic!

    Really I think these languages (small basic included) are almost primers for proper languages. I do Agree they should be left for dead but I don’t think they should be forgotten!

    Python is a good candidate for a first language, I just hope kids don’t grow up learning solely web code, or even worse code in some future google IDE/language, whatever language kids get into it should be as open and unbiased as possible.

    by Woody on Dec 22, 2009 at 12:50 pm

  6. I tried to get my little brother started with Python.

    Didn’t get much further than desparately trying to explain to him what kind of whitespace crime he’d perpetrated which stopped python parsing his simple program.

    While I’m not over-attached to BASIC, I’m not convinced Python is ready to take over the kind of use cases we’re talking about. You need something really really procedural and straightforward, just something which gets across the fact that you can tell the computer what to do one step at a time.

    Having to worry about whitespace (the mere idea of nested syntax is too much to worry about initially) or about OO, or even functional abstractions, is going too far initially.

    You want semantics which are mind-numbingly simple and direct, which can translate to a semantic model which it’s easy for a youngster to form in their head, preferably by physical analogies.

    If you try and explain to the kid how to execute the program on paper, without the aid of a computer, and you find the semantic complications of that are getting too much, then you failed.

    by Matthew on Dec 22, 2009 at 1:03 pm

  7. @Arnold: I think you mean GOTO.

    by Bob Holness on Dec 22, 2009 at 2:02 pm

  8. “It needs to have language maturity, written by people who understand programming language design.”

    If that is a requirement then Python does not fit the bill as shown by the broken lambdas and tail recursion misunderstandings.

    by Ted Henry on Dec 22, 2009 at 2:13 pm

  9. What? Why don’t you actually do some proper research in some of the BASIC languages that are around today that are actually really fuctional?

    First of all you missed of PureBasic – which is brilliant. It’s very powerful, allows you to use inline assembly, direct access to Windows API using standard calls, Creates small code which relies on no external libraries to run. I’ve used this mutliple times to write an application to solve a small scale problem that would of taken 3 or 4 times the dev time in other non BASIC languages that I know.

    Then you have missed of the Blitz suite, BlitzMAX, Blitz3D and BlitzPlus. I wont bore you with the examples againg but do take a look at some of the games created with Blitz3D…

    by Whatman on Dec 22, 2009 at 2:26 pm

  10. I think most people just simply forget the single most important aspect of learning to code as a kid – not knowing it’s supposed to be hard. That was the biggest deciding factor in my learning, I know. I had never heard anything about programming. I didn’t know people got paid to do it. I didn’t know it was supposed to be hard like math. I didn’t know any of that. I knew that there were these books that came with my parents Vic-20, and that if you read them you could make the computer do stuff. And that’s all. I read through the books, ignoring a lot of what they said (for instance, one book said that only idiots or geniuses would write programs without first making a flowchart… I decided I was going to be a genius since flow charts seemed like a really shitty way to figure out what a program was going to do), and just hacked around.

    I really don’t think Python serves the purpose for a replacement for BASIC though. As you yourself stated in your post, a common development environment is what is needed. Python doesn’t have that. Not for anything interesting, at least. And no, textmode programs are not interesting, not for anyone really any more. Maybe if the “standard” Python package included wxWidgets and an IDE. They’re certainly not hard to get, and it’s what I’d suggest to any kid wanting to learn programming.

    But more than anything, I’d be very careful not to underestimate kids. If you don’t tell them something is supposed to be hard, they will astound you. If it’s learning C, assembler, C++, whatever. They don’t need an “easy” language. They just need to NOT know that programming is thought of as hard.

    by otakucode on Dec 22, 2009 at 2:34 pm

  11. I teach python as a programming 101 course. It’s a blast to show other people the simplicity of python.

    But the whitespace is a bit of an issue, I usually sidestep this by saying “Use IDLE. If you want to use a different text editor come see me after class.” This is followed by a discussion about Tabs and Spaces, and why Python is built for whitespace parsing.

    Usually this is only cause for concern with people who have programmed before. There’s a collective groan. Still, have you tried figuring out the white spaces in haskell? That’s a pain.

    Otherwise, I love teaching python.

    by josephkern on Dec 22, 2009 at 2:37 pm

  12. On, the link for appendix C goes to appendix B instead. You should probably fix that.

    by Nate on Dec 22, 2009 at 2:45 pm

  13. @Whatman

    Blitz suite costs $60 to $100 and PureBASIC goes for 79 euros, which is quite hefty for a kid. That by itself makes these implementations dealbreakers. Neither has much of a community, which makes it difficult to answer questions online or finding books at the library that cover these languages. And again, these are customizing BASIC to the point where getting a book on BASIC won’t help that much with PureBASIC or Blitz.

    If kids start with these tools, they will eventually hit a brick wall where they cannot expand any further. Maybe that’s a good point for them to switch to another language, by why not start with an easy-to-learn mainstream language in the first place?

    by AlSweigart on Dec 22, 2009 at 2:52 pm

  14. BASIC won’t die no matter what you may wish or even rationally argue it. It’s simply that BASIC is “sufficient” for a wide variety of applications where stuff like Python is overkill in terms of knowledge required to use it and in terms of employment costs to keep someone around to know how to maintain the code.

    And like COBOL and FORTRAN, the legacy installed base is so enormous that it could not be easily replicated technically nor the engineering for replacement paid for in any economically feasible sense. With inflation, it’s even less affordable because programming doesn’t scale like other engineering economic systems – every year you delay replacement the costs to replace go up.

    I work with HP BASIC which is very much alive and well in my industry – it’s existed since the 1970s. C and Pascal have been around and readily available for 30 years side-by-side with this dialect of BASIC and have never “taken” in terms of use. The only language to make much serious in-roads is (wait for it): VB6 – YABD. More “modern” languages are simply rejected by the economic immune system as unviable.

    The above are the reasons. BASIC is good enough for folks who are *not programmers first* but who are Subject Matter Experts, which is probably the majority of folks who actually do programming (Oh horrors! Maybe CS majors are overpriced for the actual markets as they exist?). It’s usually not financially practical to have a separate subject-matter expert AND a programmer on staff.

    I started with FORTRAN on punch-cards, BASIC on a time-share system, and assembly language on uPs. Because I had utilitarian reasons to do so, I learned C, Pascal, etc., then OO languages, and finally functional languages. Dealing with the limitations of the prior language were the only real incentives for switching each time.

    And there are still languages I would *chose* like BASIC for certain applications rather than Python or LISP. There is no “one-size-fits-all” language.

    by JG on Dec 22, 2009 at 8:11 pm

  15. I thought I might be with you on this one but after reading a bit into your harrangue your point got muddied and unclear. What exactly is the real reason you’re advocating that BASIC should be done in? What prompted me to leave this comment was your boasting how “easy” Python makes things (e.g. displaying and scaling sprites).
    I thought we were talking about a language that helps kids learn about programming. While doing those same things in BASIC would be more involved (and considered cumbersome by your so-called “adult” self) I’d argue that having a child learn a more traditional BASIC implementation would be more illustrative than just giving them a one line statement that colors over or hides the complexity of what’s really going on. I think that leads to “cargo cult”-esque developer ignorance and frankly it smells like you might be advocating that. Not cool. I’m not saying the poor kids should be left in the dark if there’s tools that can help them reach a goal (writing a graphical game) but I’m suggesting that they be shown the shoulders of those giants (not the Shetland Ponies you conjured) that they’re climbing on. Belittling BASIC like you’ve done sounds like a jilted lover espousing their ex’s OBVIOUS flaws while infatuated with their shiny new obsession (Python is teh gratestest!)
    You’ve left me quite unconvinced.

    by CW on Dec 22, 2009 at 9:24 pm

  16. @CW:

    I wrote another blog post about this topic: “A Thousand Layers of Abstraction”

    In short, BASIC is still a high-level language. BASIC handles memory management and properly terminating strings. Getting into the details with QBasic with PEEK and POKE only “teach” kids about DOS. Modern implementations of BASIC abstract this away. We’re kidding ourselves if we think BASIC makes people more aware of the underlying machine.

    The flaws that make BASIC harder to use aren’t some badge of hardcore geek honor. They’re simply unnecessary in this age. Modern languages (Python, Ruby, Scratch, etc) don’t have this baggage, and modern implementations of BASIC all isolate themselves by trying to invent their own APIs and mutually incompatible libraries.

    BASIC was good in its time, but now it is just outdated, and we should focus our effort on bringing kids to the best languages and tools of today.

    by AlSweigart on Dec 23, 2009 at 12:06 am

  17. Look, I understand that many of you have forgotten being 9. I also understand that you don’t have little brothers or sisters interested in programming. But, all of us who do and have tried teaching them programming at an early age, know it can’t be done in python or C or whatever language you like now. Anybody under 10 should start with basic. Anything more advanced is not explainable to them. Accept it – children need toys to play with not industrial tools.

    by Mo6eB on Dec 23, 2009 at 12:30 am

  18. To me basic4gl is the moral replacement of QBasic. I taught programming to my 10 yo sister with it.

    by ponce on Dec 23, 2009 at 4:14 am

  19. @AlSweigart:

    you talk like a preacher…..
    your god (python) is better…..
    if i go to a BASIC-Preacher , he will tell me the opposite…
    your opinion doesnt mean anything , because you have prejudice. you like python and you are talking good about your subject and bad about other to promote your own…

    by mobo on Dec 23, 2009 at 4:17 am

  20. @JG in comment 12:

    You have made several incorrect and irrelevant statements because you did not read the article closely. I’m not arguing that we replace every BASIC program being used in industry. I’m arguing that BASIC should no longer be used as the first programming language to learn for kids.

    @Mo6eB in comment 15:

    Python is based off of ABC, which in turn was designed to be a learning language. I agree that C would not be suitable for a first language for kids (static typing, function prototypes, pointers, etc.) But Python does not require the features of more complex languages in order to program.

    The beauty of Python is that it is both a toy to play with and an industrial tool. The learning curve makes it easy to begin with, but doesn’t have them run into an inevitable wall (can’t do networking, can’t do complicated graphics, can’t download from the web, etc.) like many implementations of BASIC do.

    @ponce in comment 16:

    This is exactly one of the points I make in the article. We don’t teach BASIC to the younger generation because it is a superior learning language, we teach it because it’s what we learned and we have nostalgia and familiarity with it. This is what we need to drop, because there are better alternatives out there now.

    @mobo in comment 17:

    Your whole argument can be summed up as, “Well, that’s like, your opinion man.” Do you have anything to say about the actual arguments that I make?

    by AlSweigart on Dec 23, 2009 at 11:40 am

  21. I learned to program in high school, on an Apple ][ using Apple BASIC. The entire time I was writing my final project (a properly laid-out and printing AD&D character sheet generator with varying levels of randomness) I was wishing there were more elegant ways to get my ideas into program form. If Python had been around then I most likely would have much preferred it.

    A few years ago one of my former co-workers taught his 6 and 7 year old daughters the basics of programming in Squeak – and within two years both of them were developing in Python, (the older also in Ruby and Java), because they had so much fun with it to start.

    I don’t recall my initial foray into programming as “fun” so much as it turned into a personal battle of proving my computer math teacher wrong when he looked at my proposal and flow chart and said “it’s too complex for BASIC and this class, you’ll never be able to finish that in time, much less make it run.” (In the end, it did run, very well, and I was able to churn out randomized character sheets for AD&D as fast as the dot-matrix printer could spit them out.)

    by Sjan Evardsson on Dec 23, 2009 at 1:31 pm

  22. [...] Just Let BASIC Die by AlSweigart. The author argues for using Python as a modern introductory language. [...]

    by first_language [] on Dec 24, 2009 at 9:46 pm

  23. BASIC should die. With languages like PHP, C++, and Javascript I don’t know why someone would want to play in BASIC when you could play in something more powerful and have the same results.

    by Sean on Dec 24, 2009 at 11:29 pm

  24. Hi Albert et. al.,
    I am learning programming for the first time (well, not totally true. i know html, but i find it totally different). i say that i am learning for the first time but actually, i tried learning BASIC several times (FutureBasic, QBasic, and Visual Basic) but always got stuck near the beginning. I’m almost finished your tutorials. It has only taken me a few days and I am already able to make some of my own fairly complex games. I love that I am already using a “real” programming language. This is the most straightforward non-jargon, easy-to-use programming tutorial i’ve encountered. thanks again! this is major.

    by LT on Dec 29, 2009 at 1:00 am

  25. Well i totaly agree with you. People always talking about how they start programming with basic and its really boring. its true that python is new basic. easy to learn and use

    by Ceyhun Alyeşil on Jan 6, 2010 at 5:11 am

  26. I remember doing some stuff on my TI-83 with basic, sort of a pong game.
    At least with basic you could create a graphical interface-like easily,
    now you have to use a library written by someone else….
    I’ve looked at learning C, C++, Python, PHP, Ruby, Java or whatever, but no matter the book, it always comes with the god damn hello world shitty console program that’s useless to everyone.
    Nowhere i’ve found how a library actually worked, or how it was really done.
    Nowhere I’ve found how the Win32 API (apparently written in C) actually worked or how it did to draw something on string.

    A kid needs to figure out how things work in an easy maner rather than using some overkill stuff like a library to make a pong game. That’s what’s fun about programming. using a framework or a library kinda feels lazy.
    The beauty of BASIC (or any other lookalike language) is that you can actually write the damn library yourself (which is really just a set of functions with specific parameters you will use over and over again, write once, call everywhere :D ) and then move on to some more hardcore stuff.

    Programming is not that hard, it’s just that people don’t explain all that’s needed at the right time.
    I’ve found it harder to learn about how the printf() function worked in C than learning about pointers (at least the basics of it)….

    by laurent on Jan 8, 2010 at 5:54 am

  27. sorry, bit of correction,
    I meant “draw something on screen” rather than on string…
    and I’ll add that if the maner is done easily, C is no harder to learn than BASIC.
    It’s just a matter of understanding that any language is juste like another one with different expression.
    Just like a real language,
    English, French and Spanish are not that different even chinese, it’s simply another way of saying the same thing.
    That’s why they’ve added rules and other concept to let people be able to translate from one to another.

    by laurent on Jan 8, 2010 at 5:58 am

  28. I agree with the point that BASIC is not the way to go these days for kids. I’m not so sure about the choice of Python though. I tend to like new languages (and buying the o’Reilly books about them) and am now heavily into Ruby, but before that I tried Python and didn’t get grabbed. I think the syntax scares me.

    by Lemongrass on Jan 18, 2010 at 6:59 am

  29. The one good thing about BASIC is that the student will find the limitations.

    It’s like when you stop using GOTO because it gets to messy, you start using using procedures and functions, then they eventually get messy and you move to objects. (By the way OOP can be done in Freebasic which is a wonderful language.)

    Has this impeded the learning process or enhanced it? I say this enhances the learning because it demonstrates the paradigms. I would also say that the paradigms are most important because at under 18 years of age there is plenty of time to learn various programming dialects.

    by anatomical on Mar 7, 2010 at 7:25 am

  30. I am also one of those people that learned basic very early on (VIC-20, and later a C64) and pretty much digested any programming book I could get my hands on. I had no idea that programming was “complicated” either.

    Fast forward to now – I have a son, and I am guessing that he’ll want to take a stab at programming when he gets older – so this is all very relevant to me.

    I think that Python would be a great language to start kids with (except for the whitespace issue, which never occurred to me) – but I think I am biased because I use it on a daily basis. When I have to go back to C or C++ for anything, I cringe and despise the compile-test-change-compile-test-change cycle that I invariably end up in. So of course I agree that some languages are better than others for first-time programmers.

    I think that the attraction to python is that it is not only a modern and powerful language (I personally use it for science related work), but it is also simple enough that young programmers can use it.

    I think your book is great; I flipped though it and think that if I had Python and your book available to me as a kid, I would have learned a lot more and not “hit the ceiling” of what BASIC could do. Python, of course, has no such ceiling.

    Kudos on the book :)

    by Rob R on May 7, 2010 at 1:42 am

  31. Well, I am almost like all the posters
    above who learned on the APPLE II or
    the C64.
    I can tell you , the big change today is that almost no kids (age 7 to 19) program.
    When I was growing up in 1980-1986, almost
    all my friends at my school were into programming. But , when I think of the percentage of kids doing it, Only Boya, and in a school of about 50 boys, I think only
    about 10-15 were into programming.
    It was easy, it was fun, but lets not forget this.
    Making a good game in basic was a REAAL – MIND – BLOWING challenge.
    You stuck to the basics, and always had to use ASSEMBLER if it was to run real good.

    I programmed between 5 and ten games in highschool, and all used ASSEMBLY.
    I programmed an APPLE II at the school, and I had a C64 at home.

    I also run a website, which
    the sole purpose is to get some kids involved
    in games programming again by showing them the power of FREEBASIC, but show them how easy it is also.
    It has ASSEMBLY built right in.

    Please dont have kids who are 7, 8 or 9 trying to make a game in Python. Also, you need to have friends who are also making the games in your school and your peers, so they can say – Look at what I can do… There , see if you can top that!!!

    then the programming youth may begin to get active again.

    Most schools of thought on coding today are Boring , Redundant OOP versions of C++ that realliy Suck.
    If python is good , I may include it on my website. I will play around with it for a little while and see if it is workable as a KIDS – Game creator.. and get back to you guys reading this post..

    I am very interested….

    by Rob T on Sep 11, 2010 at 4:41 pm

  32. Excuse me if I wake up an old thread…

    I disagree with Al on one point: we don’t need to let BASIC die, because it is dead, it has ceased to live, and so on, like the famous parrot.

    Anyway, which BASIC ? I have learned a BASIC dialect in 1981 on a ZX81, another at school on the Thomson TO7 (which was slightly different than the one of the Thomson MO5 and TO7-70), still another on the Amstrad 6128 (its character set was different in France than in the UK); I used to copy programs by hand from magazines and little books which contained many footnotes and addenda depending on what computer was used… I bought some diskettes made for American versions of my hardware that didn’t even run on my French computer. I also tried to learn QBasic on a 386, only to find it didn’t even exist 10 years later in Windows XP.

    As soon as I intended to draw something on screen, or play a tune, I had to learn new instructions : SOUND ? PLAY ? SCREEN ? PLOT ? PSET ? DRAW ?… As soon as I used another machine, I had to learn a new dialect. Even the INPUT or LOAD syntax and the error messages changed between some microcomputers.

    This tower of Babel makes me wonder if BASIC has even really existed. I have tried several new BASIC interpreters, which syntax doesn’t even look (to me) as the language I had learned.

    I agree on most of your statements about Python. I learned this language a few years ago to solve some simple problems (renaming a bunch of files, preparing language exercises for elementary students…) and found it very easy to learn. When I migrated from Windows XP to Linux, the same program could run just the same way, Idle was still here… The Idle editor works exactly the same on every platform.

    Python also provides a lot of features I had learned in Pascal and only could dream about in Basic : defining procedures was impossible without using assembler on the old computers I used. I wonder how I could program anything without them…

    by Eutrot on Jun 17, 2012 at 4:58 pm

Leave a Reply

« | »

Recent Posts


About CoffeeGhost

Email Al Sweigart [email protected] CoffeeGhost is Albert Sweigart (but you can call him Al), a software developer in San Francisco, California who enjoys bicycling, reading, volunteering, network security, haunting coffee shops, and making useful software. He is originally from Houston, Texas and went to school in Austin. He finally put his UT Austin computer science […]more →