30 years later, QBasic is still the best - <AUTHOR> http://www.nicolasbize.com/blog/30-years-later-qbasic-is-still-the-best/ <comment><USER2> For young children, QBasic and goto may indeed be superior to more structured languages. From a neuro development perspective we know that young children are very concrete and have limited abstraction ability. With Basic and goto, a program is more concrete (you run a line which is more or less 1 command) and linear (no nested structures). With structured programming, it is more abstract, and has an recursive structure (with arbitrary levels of nesting).

Because of this, it might be preferable to introduce a child to the more linear, concrete programming model with goto and let them experience the thrill of programming then as they develop more and their programs increase in complexity, introduce them later to other more abstract methods and languages such as structured programming, oop, and functional.

<comment><USER3> From my experience back when I was 12: once you get ambitious enough in QBasic, you start to wish for some way of organizing the code and making it easier to follow. At that point, an intro to structured programming or OOP is natural.

(Probably not functional programming, though, since functional's not very good for games, and what else do you think QBasic is going to be used for?)

<comment><USER4> QBasic supports subroutines (called SUB for procedures and FUNCTION for functions). You can write very structured code with QBasic; pretty much the only thing it lacks is pointers, but it's a very capable language otherwise.

<comment><USER5> > pretty much the only thing it lacks is pointers, but it's a very capable...

You can PEEK and POKE arbitrary memory addresses and use CALL ABSOLUTE to call assembly shell code at any address.

I remember typing out a mouse driver shell code in hexadecimal from a magazine. QBasic does not have built in mouse routines and the young me was baffled when you could make that happen with a long string of digits.

</comment></comment></comment></comment><comment><USER6> _> to realize that in more than 30 years, we have not been able to come up with something better for our kids: Qbasic ..., but we have never really made a simpler or more direct access to the thrill of programming than QBasic. _

First, I think it's really cool that he's exposing a young mind to programming. But I'm also old enough to have installed QBasic from floppy disks and part of me thinks his statements I quoted are romanticizing QBasic a little bit.

I think that Javascript in today's browser is a fine substitute. I've had good experience with children that age by going to the browser, pressing F12, go to Console tab and start typing code. It can start as simple as:

      alert("hello world");

And boom, you get a popup. You can also show the kid he can type in arithmetic stuff like "2+3" and he'll get back the answer 5. You can then show him how to _modify_ the existing web page. You can ramp up a slight bit of complexity by showing how to create a text file and writing Javascript and then having the browser run it. The 8-year olds I've seen can handle this no problem.

What I like about the Javascript-for-kids approach is that it shows them that programming isn't some other universe where you install QBasic in a vm. Instead, the initiation into programming/experimentation is just 2 keystrokes away. There's something about the immediacy of F12-Javascript that keeps it from being an esoteric dark corner. The kid can also get more mileage out of his "programming" knowledge because he can use his Javascript console tricks at his friend's house on any web browser. On the other hand, playing with QBasic today is more isolating. The use of QBasic in 1980s had more utility because the syntax of '10 PRINT "HELLO"' also worked on Apple II, Commodore 64, Radio Shack TRS-80, Texas Instruments TI-99, etc.

<comment><USER7> I agree with your complaints about QBasic but I disagree a bit about JavaScript. You are totally right that the environment being right there in the browser is great. But if you press F12 right now you'll find an amazing complex dialog box -- as a professional you just implicitly skip over that complexity. And JavaScript is a significantly more difficult language than QBasic even if it's one of the simpler professional languages.

When I taught my daughter about programming I actually installed an old copy of Visual Basic 6.0 and it was really good for that. You draw the UI and the interact it with it mostly procedurally. She created a small useful application out of it. It's kind of crazy that in 2016 all our programming environments are more complicated than VB6.

<comment><USER6> _> But if you press F12 right now you'll find an amazing complex dialog box -- as a professional you just implicitly skip over that complexity._

That observation is fascinating to me. Isn't it possible that we're judging it with adult eyes? To me, kids can filter out "ui complexity" that's not relevant to whatever exploration they are doing. Examples I think of:

A microwave oven[1] might have 25 separate buttons on it but a 6-year old will know the 2 buttons to press to heat up the popcorn. Yes, the keypad complexity handles more advanced techniques of 2-stage cooking with different power levels etc but the child just ignores all of that.

Or, how many of us grew up with those multi-component integrated stereo racks?[2] The front panel has all those buttons, sliders, knobs, and lights. And yet, a small child knows how to turn the FM knob to find his favorite radio station or rewind a cassette to replay a song.

I also see video games[3] that 6 to 8 year olds play (even if the game wasn't intended for that younger age group). To me, the screenshots show a complex "dashboard" at the bottom of weapons or other status. (I'm not a Starcraft player and it all just looks complicated and confusing to me.)

I think kids can look at the "complex" F12 screen the same way as microwave ovens, stereo receivers, and Starcraft screens: ignore the non-relevant UI elements and just type "alert ("hello");"

[1][https://www.google.com/search?q=microwave+oven+keypad&source...](https://www.google.com/search?q=microwave+oven+keypad&source=lnms&tbm=isch)

[2][https://www.google.com/search?q=integrated+stereo+rack+turnt...](https://www.google.com/search?q=integrated+stereo+rack+turntable+fm+tuner+cassette+deck&source=lnms&tbm=isch)

[3][https://www.google.com/search?q=starcraft+ii+screenshot&sour...](https://www.google.com/search?q=starcraft+ii+screenshot&source=lnms&tbm=isch)

<comment><USER8> Does anybody at all know what more than 2 buttons do on their microwave? I thought they were mostly there for decoration

<comment><USER9> The real problem is there is no ISO Standard for the appliance interfaces. Do you press power level first? Or time first. Is it Forth like, numbers then operation or Haskell like, Function then number. My refrigerator has illuminated bars indicating how cold it is set for. Even after downloading a pdf of the user guide I can't figure out if I'm setting it correctly. Placing a thermometer inside and using trial and error solved the problem (after a few frozen bags of spinach).

<comment> david-given My microwave has two knobs. One for power, one for time. It turns on automatically when you turn the timer and turns off automatically (sounding a _mechanical_ bell) when the timer hits zero.

I believe the timer is clockwork.

<comment><USER10> I used one of those microwaves once. Best interface ever, and so much simpler than the high-tech beepy button matrix! Do microwave manufacturers just not realize that they're making their products worse by complicating them? I don't get it.

<comment><USER11> Knobs are more expensive than buttons?

<comment> david-given Actually, yes. Anything with a moving part is painfully expensive, which is why cheap monitors try to reduce the number of buttons or use capacitative touch-sensitive controls.

Touch-sensitive membrane buttons like the ones the use on the front of microwaves are _much_ cheaper than mechanical timers.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER12> I don't think QBasic's mainstream popularity can be understated. Googling "gorillas.bas" gives you a predictable result. I suppose it can be argued that Gorillas and Nibbles are partly responsible for QBasic's popularity (is there a lesson in here somewhere?).

However, like many others, QBasic was not my first experience with a BASIC language. Prior to that was GW-BASIC on PC (it was part of our introductory course to Computers at high school), and before that was Sinclair BASIC, which I learned in part from a book called "Peek, Poke, Byte and RAM"

[http://www.worldofspectrum.org/infoseekid.cgi?id=2000269](http://www.worldofspectrum.org/infoseekid.cgi?id=2000269)

But my first encounter with a programming language was Logo:

[https://en.wikipedia.org/wiki/Logo_(programming_language)](https://en.wikipedia.org/wiki/Logo_\(programming_language\))

I'm sure there was a BBC Kids show that featured Logo programming (yes, they drew shapes with the turtle), but I can't remember the name. What I liked about Logo was that, as a child, it seemed very intuitive, and I felt like that even without having touched a computer I knew what programming was about, which is a lot more than I can say for any other language I've worked with.

<comment><USER13> PBS had a great show directed at children called 3-2-1 Contact in the 1980s, which I remember featuring Logo.

[https://en.wikipedia.org/wiki/3-2-1_Contact](https://en.wikipedia.org/wiki/3-2-1_Contact)

</comment></comment><comment><USER14> For anyone that misses QBASIC, there's FreeBASIC that's a lot like it & easy to install:

[http://www.freebasic.net/](http://www.freebasic.net/)

After loosing my memory, I have to relearn programming nearly from scratch. I took a challenge to do specific program in around an hour, from language to toolchain to solution. Had to be system-like language. Got bogged down by toolchains, IDE's, whatever. Said screw it: why the hell is it so hard when I faintly recall starting lightening-fast on QBASIC? Found a BASIC, FreeBASIC, that was just like it with simple command to launch stuff made in text editor and good documentation. Maybe half an hour of my challenge gone.

Next, time to apply lessons I remembered from high-assurance and Wirth. First, subset the language to minimum necessary. Used docs to test each in isolation to develop template & functions for using them, esp file I/O. Wrote formal spec in English & pseudocode of my problem with decomposed functions. Mapped almost 1-to-1 to FreeBASIC as expected. Did one refactoring. Executed code for first time to see successful run & solution to problem.

Yeah, BASIC is friggin awesome. I stretched industrial BASIC's, esp 4GL's, really far back when I was a hacker as they did rapid iteration, safe-by- default, and ran fast. Today, I'd say do a Wirth language like Oberon or Component Pascal instead. Still, BASIC has lessons to teach us and a painless bootstrapping for developer that many modern tools lack outside of scripting.

<comment><USER15> I've been using FreeBASIC for about 10 years and help maintain a 100+kLOC codebase written in it (a game engine).

FreeBASIC has multiple dialects; there's the qb dialect that supports most of QB except some audio and real-mode DOS-related commands, and the modern fb dialect, which is all of C plus half of C++ with BASIC syntax. And it does improve on C and C++ in several ways, like much better string support and a "preprocessor" that looks like the C preprocessor but is far more powerful (it's not a preprocessor, so it knows about types and variables, etc).

Of course it's not better than QBasic in every way: it's not interpreted with that awesome edit-and-continue ability that QBasic had. And the compiler can be quite buggy.

There are also a number of other QB successor languages, like QB64, which has a focus on the QBasic IDE and supporting all of the audio-visual stuff QB had fully. But (after comparing the codebases) will say FB is written far more like a professional product.

<comment><USER14> Thanks for the review. Sounds like it's what I used to call an "industrial" BASIC where it has the features and compiler to get real work done. Many people think some toy with a few key words and interpretation when they think BASIC. Yet, I used to do all my hacking in it and Visual Basic 6 for GUI layer. Loved VB6 specifically for rapid iteration: instant load, instant test- run, instant... you name it on P3 400Mhz w/ 128MB RAM.

That efficiency on arbitrary hardware is something industrial BASIC's and Wirth languages have in common. Only Go can touch it these days but still not low-level as Wirth stuff gets.

<comment><USER15> Yes, I would agree with "industrial", especially since you can link with any C library after translating the headers with SWIG (translations of common libraries like C, winapi and GTK are included with FB). I've never used/don't know VB, but it appears that quite a lot of FB's design is borrowed from it. In recent years FB has been focused on borrowing C++ features instead (and even aiming to be ABI compatible with g++, not sure if that works). E.g. recently added "dim byref" (like a C++ reference variable) and polymorphism + RTTI. Sometimes things move in the other direction, like binary literals new in C++14 :)

<comment><USER14> Nice. Appreciate the tips.

</comment></comment></comment></comment></comment><comment><USER16> One important thing about QBasic that's often overlooked is that it's a community of 100% amateurs.

I learned to program in 2004 in QBasic, although I very rarely fire it up anymore. By then it was not considered a "serious" language and we all knew it. But that meant the stakes were a lot lower. It's a lot of newbies and a few old-timers who do things for fun. This makes things a lot less intimidating for the non-coder. There are no conferences, no corporate sponsors, no polarizing big-shot Twitter personalities. It's a realm surprisingly insulated from the pissing contest of modern engineering culture and technical progress, where things that are acknowledged to be easy in other languages are nonetheless praised as impressive when done in QBasic.

Another thing is that QBasic has no decent library functionality for code reuse (QB4.5 has a linker but no one knows how to use it). This means people constantly reinvent the wheel, and they aren't told not to. People copy and paste snippets of code and learn how they work, but they don't build ever more complex mashups every year. Thus, you're not on the framework treadmill or starting 5 years behind the curve. Things are done simply and idiosyncratically, pretty much the same way they were done in 1995 or 1988.

Makes me nostalgic just thinking about it.

</comment><comment><USER17> What's nice with BASIC is that no context is required from the programmer: you don't need to know about the call stack or about variable scope. It's the programming equivalent of WYSIWYG. It also doesn't hurt that BASIC used to be resident in ROM (thinking back of the Sinclair ZX Spectrum), and that there were nice and simple primitives for drawing on the screen.

I agree with the blog author, and I still think it's the best language to learn programming. Everything else is software engineering, and gets in the way of the instant gratification that got so many of us hooked on programming.

What's wrong with starting with BASIC like I did, writing increasingly complex code, getting frustrated with the resulting spaghetti, then learning to use GOSUB more, which then gets you ready for a procedural language like Pascal? At least this way you know why pros don't code in BASIC. The same path of frustration (and fun) can also be used to go from Pascal to an OO language like Python or Ruby.

<comment><USER18> You do need to know about variable scope with modern BASICs like FreeBASIC and GAMBAS.

</comment></comment><comment><USER19> My favorite thing about this story is that Basic was meant to be used exactly this way, for getting new programmers off the ground. And like everyone, I've got fond memories. We had an IBM PS/2 80286, with a whole megabyte of memory, a 20 megabyte hard drive, and MS-DOS three point something. At some point, I discovered that it had Basic, but it didn't have a graphical editor. It had edlin, which was still enough to write programs that told their users how awesome I was. Forever, with gotos.

And for the record, I don't think using gotos as a child sabotaged my ability to write structured code later in life. "GOTO considered harmful" gets taken _way_ out of context!

<comment><USER18> I've always thought that learning to follow GOTOs and GOSUBs was the key to understand assembly language. "GOTO considered harmful" is really what's considered harmful. I never take anyone who says "X considered harmful" seriously because of "GOTO considered harmful".

<comment><USER20> "GOTO considered harmful" is about a style of _unstructured_ programming that was prevalent in its era.

GOTOs are certainly not harmful on their own. But they offer a power that leads to unmaintainable and unreasonable [0] code. Like the spaghetti mess that is callback hell today. Languages which offer _structured_ constructs that are really just syntactic sugar over GOTOs are better [1]. Structured use of GOTOs are feasible. But it requires a discipline that is not found in the community at large. If you're responsible for any project involving more than yourself as the developer, you cannot assume that discipline is present.

With regard to assembly, yes, the branching and jumping instructions are the gotos Dijkstra was talking about. No, he wasn't wrong. The thing is, they have to be used in a disciplined manner or the outcome is extremely fragile code. Which was one of his biggest hobby horses. He viewed programming as a branch of mathematics. Where programs could be derived from first principles. GOTOs, as commonly used, necessarily broke that process. They also make it nigh impossible to understand poorly disciplined code. Same thing with magic numbers, weak type systems, and a number of other topics. They aren't _bad_ on their own. They're bad when used in practice because they make undisciplined code trivial to produce.

[0] In the sense that the code cannot be reasoned about.

[1] In a strict sense, they're equivalent. In a less strict sense, they remove or minimize the ability to make unreasonable [0] code.

</comment></comment></comment><comment><USER21> "When developing a skill, it is much better to acquire the right reflexes from the start rather than have to correct years of bad practice."

I disagree with this statement. "Learning" is a long process of acquiring and also discarding habits and knowledge. The best intro I ever read for relativity was "An Equation That Changed the World" and it's a series of dialogues between Newton, Einstein, and the author (a modern physicist). Newtonian physics is relatively (haha) easy to understand. Once you understand that and then you can throw in some edge cases where it fails, you can introduce relativity and it makes relativity much easier to grasp.

Likewise for programming. I learned with QBasic. Then as the code got messier, I started using "sub", etc. and then started playing other concepts until I outgrew the language. Functional programming came to me the same way. I outgrew my existing methods and reached for more advanced ones.

All this is to say it's OK to start with easier and imperfect methods. We learn by acquiring new knowledge and then knowing them well enough to see their flaws before moving onto something better.

<comment><USER22> I'd argue that programming isn't like other skills in this regard. Obviously if you're teaching something like the violin, where there's one right way to hold the bow and learning how to play holding the bow in any other way will ultimately hamper you, sure, it's worth it to drill the One True Way.

But coding isn't like that. Sure, GOTOs as a means for control flow, suck for most serious applications compared to the readily-available alternatives, it's not like you can't build your own control flow mechanisms with their own properties out of the GOTO primitive, and learning how these work and fail is really good practice.

Time spent mucking about doing the wrong thing _in coding_ teaches you how to ascertain the right way. Other skills don't necessarily offer this.

<comment><USER23> There isn't really a One True Way in music either. There are stupid ways to hold a bow, and there's a small range of ways that works. But it's certainly not something you can reduce to a formula of so-many-inches along and an angle of theta.

The arts are mostly practice led, so there are _efficient and comfortable_ ways to get an expressive result, which may not be intuitive or obvious to beginners, and which probably need to be practiced.

But plenty of people pick up instruments by experimenting, and some of them go on to have successful careers - because results matter more than technique, and if you're getting good _artistic_ results perfect technique is secondary.

And I think the GOTO thing is overblown, and misses the point in exactly the same technique-vs-outcome way.

The desired outcome is legible, maintainable code. If you bracket a thousand lines inside a single if statement, you're not any closer to that aim than someone who uses GOTO.

What's missing from BASIC - and from any kind of training that's syntax-based instead of concept-based - is that sense of using structures to simplify and highlight program logic and flow.

PASCAL was fairly new when I was learning to code, and it was billed as some kind of magical mental training tool that would eliminate bad habits and make you a better programmer.

In fact it's just a vanilla C-family language with a few quirks, and the mental training side of it was always wildly oversold.

Currently _no language at all_ teaches separation of concerns, chunking, relative abstraction, DRY, and other fundamental concepts in an accessible way - and there should be. Because they really can help turn hard problems into simpler problems, and make all kinds of challenges more manageable - which is more fundamental to programming than knowing that POKE 53280,1 will make the screen frame white on a C64.

</comment></comment></comment><comment><USER24> No love for Logo? I currently have my kids experimenting with ucbLogo and FMSLogo. And one of our latest endeavors is to hook it up to Minecraft [1], but that is certainly quite convoluted, with having to run minecraft servers with various plugins, and then working around the borked networking capabilities of FMSLogo, etc.. I wonder what other simple approaches there are to programmatically control Minecraft.

[1][http://www.stuffaboutcode.com/2014/05/minecraft-graphics- tur...](http://www.stuffaboutcode.com/2014/05/minecraft-graphics-turtle.html)

<comment><USER25> I learned through logo in middle school. A language sophisticated enough to later (high school) write programs that would take equations and graph them.

Plus who doesn't love writing software to create spirograph graphics.

<comment><USER26> I come back to Logo probably once every 2 years, for about 15 years now. First used it in primary (elementary) school but never really progressed past spirographs.

I think I'll fire it up again this weekend - any hints?

<comment><USER24> Something more than a weekend splurge:

Turtle Geometry: The Computer as a Medium for Exploring Mathematics

[http://www.amazon.com/Turtle-Geometry-Mathematics- Artificial...](http://www.amazon.com/Turtle-Geometry-Mathematics-Artificial- Intelligence/dp/0262510375/)

...and I've not yet tried it, but netlogo sounds interesting.

[https://ccl.northwestern.edu/netlogo/](https://ccl.northwestern.edu/netlogo/)

<comment><USER26> Turtle Geometry book as a "borrowable" ePub (DRM). [https://openlibrary.org/works/OL3267302W/Turtle_geometry](https://openlibrary.org/works/OL3267302W/Turtle_geometry)

</comment></comment></comment></comment></comment><comment><USER27> I have so many fond memories of QBasic, and QuickBasic.

Coming from GWBasic, I knew it was not supposed to be the best language ever. I had been using Turbo Pascal, and knew the IDE to be great, and the language more structured. I was also using C, and knew it to be fast.

But QBasic was better where it mattered to me.

When I learned to tame it - to name things accordingly (variable names could have dots!), to not use line numbers or GOTOs, it was so easy and fun doing anything in it.

I could press F2 to jump to any function/method declaration I needed. I could press F1 on any method to quickly jump to its declaration/help, and then navigate help in the same manner (it was all hyperlinked!).

I could stop my program in the middle of the execution so I could issue inline commands, print vars, and even CHANGE it, before continuing execution... even today, with proper debugging/logging any modern IDE/platform provides, I never got a dev/test workflow as easy as that quick iteration cycle that QBasic allowed.

In time I started using QuickBasic instead (not the same thing!), learned to call interruptions, create actual executables, and do all kinds of crazy stuff most people were not supposed to do from there. Sure, running assembly from it wasn't as easy as Turbo Pascal (where you could do it inline) but as long as you had a library of common assembly calls created, it was just a matter of reusing it.

The language wasn't fast, and the compiled files were a bit bloated. In time I moved to something else. But I still miss the intimacy I had with the editor and the language. It's like a first love, the one that got away.

</comment><comment><USER28> There are various good options:

Scratch [https://scratch.mit.edu/](https://scratch.mit.edu/)

CodinGame [https://www.codingame.com/games](https://www.codingame.com/games)

Squeak [http://squeak.org/](http://squeak.org/)

Logo (even in browser [https://turtleacademy.com/](https://turtleacademy.com/))

JsFiddle if you want to go for somewhat longer javascript [https://jsfiddle.net/](https://jsfiddle.net/)

Alice [http://www.alice.org/](http://www.alice.org/)

</comment><comment><USER29> I think TI-BASIC is a strong competitor. A free-form keyboard can be overwhelming and the different things you can do aren't very discoverable. In the TI-BASIC environment on the TI-82/83/83+/84+, the keywords (Goto, While, Disp, ClrHome, etc) are tokens which must be inserted into the program by selecting them from menus. So you get a rich set of powerful commands (easily in the hundreds, even for the simple TI-84, and many more for the TI-89) but they're all discoverable through the normal menus and through the catalog menu. You start out knowing a few commands like Lbl and Goto, but through the process of scrolling over unknown commands (like maybe For or While in the control flow menu) repeatedly you start to wonder what they do, and then try them out, until you know what everything does and you can write the cleanest possible code. It's a wonderful way to learn.

And it supports both a text mode (with a "write string at grid position" operation for easy game making - text mode is a must on the CPU-starved TI-84+) and a graphical mode, with tons of stuff to do in both. For example, in high school I had a program that accepted a string of "DNA" and used it to repeatedly call the built-in pattern-drawing command with different arguments, producing a mosaic of overlapping patterns, so that each different input string produced a different final pattern. It's like 4 lines of code and kept me endlessly entertained in class.

And that brings me to its greatest advantage- its presence in the math classroom. In middle school and high school, math for a gifted student is boring as death, and you've got a little BASIC interpreter sitting right there on your desk. You can transform hundreds of wasted hours a year into productive learning time.

<comment><USER30> This is exactly how I fell in love with programming. My first program of any size solved systems of equations using 3 or 4 methods and showed its work. The satisfaction was incredible.

</comment></comment><comment><USER31> To be honest I don't think modern languages are all they are cracked up to be. Back in the day, very large and complex systems were managed quite well with languages like QBASIC, COBOL and FORTRAN, and ran rock solid for decades (hell, a few are still operational). But today, programming is such a polyglotic mess and conceptual navel-gazing nightmare -- it really is no wonder that so many projects end in failure.

<comment><USER32> As an outsider looking in: programmers, fix thy tools.

My first introduction to programming was QBasic in the 90s, and I had a great time making little pictures, beeps/bloops, and text on the screen. I then moved on to some basic Fortran and other engineering-type languages in undergrad c. 2006. My impression of the workflows for Fortran at that time was "this is more annoying than BASIC, but I guess its because its more powerful and complex. I bet they'll fix the awkwardness eventually though."

Imagine my supersize when I decide to pick up the trendy modern language of Haskell in 2015 and find out that installing, configuring, and working in it was just as bad as Fortran back in 2006. WTF has everybody been doing for the past 10-20 years?

It seems to me that because programming is a new discipline, lots of people are trying to reinvent wheels. There is nothing wrong with this, in and of itself, since we'll essentially be making sure that we get really good at making wheels and end up with really high quality specimens. The problem is that wheels by themselves aren't that useful, and no one is bothering to make an automobile.

QBasic might have had square wheels, but at least they felt attached to something.

<comment><USER33> > _It seems to me that because programming is a new discipline, lots of people > are trying to reinvent wheels. There is nothing wrong with this, in and of > itself, since we 'll essentially be making sure that we get really good at > making wheels and end up with really high quality specimens. The problem is > that wheels by themselves aren't that useful, and no one is bothering to > make an automobile._

There's a lot of truth to that. People are blazing forward, without even looking at the past that's beyond the most recent trendy languages and frameworks. End result is that there's a lot of wheels reinvented, but poorly.

Learning Lisp was a particular eye opener for me. It was a gateway drug to discovering that there were so many things, so better thought out than what we have now (maybe because people did actually think about what they're doing back then, instead of releasing glorified CRUD apps "early and often"), and we're only sometimes slowly reinventing them.

<comment><USER32> I love this article:

[https://scottlocklin.wordpress.com/2013/07/28/ruins-of- forgo...](https://scottlocklin.wordpress.com/2013/07/28/ruins-of-forgotten- empires-apl-languages/)

<comment><USER34> hoorah for mathematical basis

</comment></comment></comment></comment></comment><comment><USER35> Author is spot on. My son and daughter have about 2 and 4 years to go before I probably intro them to programming. When I do, it's going to be a C64 all the way. And a real one. With a real old school monitor and a luxury a didn't have for about a year or two: a floppy drive.

I've get a lot of the start with JS comments. But that would be the last thing I do. As a child learning, you need to remove the complexities and distractions of a modern system. Windows, browsers, edit js in one app, run it in another, use a mouse, open the js debug console, etc. Just wayyy to much stuff for a young mind to try to focus on.

Don't get me wrong, they probably _can_ learn js, but after decades of programming in all kinds of different languages, just because js is the latest fashion, doesn't mean I'd every try to teach it to a kid. No way.

BASIC, on the other hand, was created _for beginners_. I learned A LOT over the years when I was using BASIC. I also had magazines (COMPUTE! & Gazette) and books that helped immensely. I was just thinking yesterday actually, that it was awesome having the C64 Programmers Ref Guide that had the machine schematics and port pin outs in it!! You'll never get that for a Mac or iPhone nowadays (and these sorts of things usually only show up on 'hacker' sites). This was a book put you closer to the hardware so you could more easily understand what PEEK and POKE really did. :D

I'm _really_ looking forward to the instruction days. The C64 was so popular for a reason: it was powerful & simple. _This_ is how I want to introduce my kids to programming. They'll figure out Ruby, JS, C and things (maybe 8-bit assembly too!) later.

I loved my C64 (still do) and I hope that will rub off on them. Can't wait.

<comment><USER7> > Just wayyy to much stuff for a young mind to try to focus on.

Keep in mind that most young kids can use modern technology very easily. My son was easily navigating around computers with a mouse at 3. I had him playing old ScummVM games at 4.

> BASIC, on the other hand, was created _for beginners_.

Yes, but C64 basic was also created when hundred dollar machines had 64k of RAM. And it's pretty painful to use. Not everything about it is just for beginners, it works a certain way because of hardware limitations. You might have forgotten that variables can be 80 characters in length in C64 basic but only the first 2 letters matter (Index$ and Input$ are the same variable).

I've got a Raspberry Pi and if I wanted to go the small locked down computer for programming route I'd probably use that. Get a nice display and keyboard and not mess with technology so obsolete that there is no upgrade path.

And then there's this: [http://www.lexaloffle.com/pico-8.php](http://www.lexaloffle.com/pico-8.php)

</comment></comment><comment><USER36> Don't forget Ahl's "101 BASIC Computer Games"!

I spent hours and hours making stuff written for DEC/MS-BASIC work on my TI-99/4A with its limited language implementation..

[https://en.wikipedia.org/wiki/BASIC_Computer_Games](https://en.wikipedia.org/wiki/BASIC_Computer_Games)

PDF: [http://bitsavers.trailing- edge.com/pdf/dec/_Books/101_BASIC_...](http://bitsavers.trailing- edge.com/pdf/dec/_Books/101_BASIC_Computer_Games_Mar75.pdf)

I had the later yellow-cover edition myself.

</comment><comment><USER37> QBasic runs flawlessly in your browser at Internet Archive - [https://archive.org/details/msdos_qbasic_megapack](https://archive.org/details/msdos_qbasic_megapack)

</comment><comment><USER38> QBasic was my first exposure to programming, when I was 9 years old. Fond memories. Despite it having what today I consider terrible syntax, it made programming extremely approachable. After a quick "hello, world" intro from an IT guy at my mom's office, I spent countless hours reading the help pages and learning the commands. Sometimes I wish programming could be as simple again.

</comment><comment><USER39> I learned to program on an Apple ][, where the programming environment was always a CTRL+RESET away. BASIC was great. I carefully typed long programs that I found in the back of computer magazines, broke them by changing stuff, and fiddled around endlessly. Those incantations are still in my fingers (CALL -3116 for a nice visual effect, PEEK -16384 for the current keyboard key, VTAB and HTAB to get around the screen, etc).

I volunteer at a local Coder Dojo and there's nothing to give these kids who want to fiddle around like that. Scratch is the closest I've found (with the bonus of not having to necessarily be able to read or type), but it's still cluttered with logins and passwords... and, being a GUI, it suffers when the kid's computer doesn't have a big enough screen to manage the complexity they eventually create. It's a shame. I tell kids who've grown tired of Scratch that they can "graduate" to Stencyl, a game engine that uses a similar visual programming metaphor but lets you drop down to the Haxe beneath. It also compiles natively to desktop or mobile, so that's cool too.

Python, ruby, and JS are all really close to the ideal "type and go" environments, but they're also littered with speedbumps. Installing packages and keeping the environment sane are difficult enough for some professional engineers, let alone kids who just want to mess around and make cool stuff.

The woman who started my local Coder Dojo got her son started with his own Linux computer at a really young age and he's a whiz at it, so maybe there's no real problem here and I'm just underestimating the ingenuity of these kids. They'll get it done if they really want it, I guess?

EDIT: Kinda apropos, but check this out! [http://beagle.applearchives.com/the_posters/](http://beagle.applearchives.com/the_posters/) I would've killed for these posters when I was a kid.

<comment><USER40> What about running BASIC on a Raspberry Pi? There are even some distros that boot into BASIC and can work with the GPIO pins of a Raspberry Pi.

[https://www.raspberrypi.org/blog/celebrating-50-years-of- bas...](https://www.raspberrypi.org/blog/celebrating-50-years-of-basic/)

<comment><USER14> Not to mention MikroBASIC that works with all the major microcontrollers. They have a MikroPascal, too.

</comment></comment></comment><comment><USER41> QBasic was a truly incredible way to start programming. Today I'd probably recommend python with pygame, and especially the book inventing computer games with python: [https://inventwithpython.com/](https://inventwithpython.com/)

</comment><comment><USER42> There is another ritual after you start with QBasic. Your open gorilla.bas and nibbles.bas.

Seriously, play gorilla.bas. It's one of the best games I have played.

<comment><USER43> I got my 4th grade class to play gorilla, which interestingly came with the Windows NT machines at my school. That and that reskinned Full Tilt! Pinball table Space Cadet. Quite a contrast.

I personally liked modifying nibbles, for instance adjusting the timing loop so it'd be playable on a modern computer. On some occasions I made a special key which would put the snake on auto-pilot (just towards the goal, no graph search or anything), or which would temporarily turn off collision detection. Somehow both of these were possible without really understanding how the whole program worked.

</comment></comment><comment><USER44> Nice to hear about such success with a kid learning coding ! All the best!

There is newer, multi platform implementation called QB64 [http://www.qb64.net/](http://www.qb64.net/)

<comment><USER15> Yes, there are a number of QBasic reimplementations and compatible languages. FreeBASIC is one that aims to be a (compatible) successor rather than just a reimplementation. I can't remember what the others are...

</comment></comment><comment><USER45> I started with MBasic on a Superbrain running CP/M, a very early ancestor of GWBasic and QBasic.

I wouldn't start kids on Basic now. My daughter is learning Simple Basic at school, but we use Macs at home and the only way to run it is in a Silverlight container. All the variations of Basic I know of are too restricted. Don't get me wrong, Basic back in the day was is a fine learning tool. The fact you could PEEK and POKE memory and DIM arrays actually taught you low level programming and system concepts that are abstracted away by modern languages and environments. Those early Basics were truly suspended part way between high level languages and machine code.

I appreciate the advantages of JavaScript, but also it's flaws. Learning to pop up alert messages is a cool hack, but beyond that it gets messy fast.

Scratch is fantastic. It's cross platform, can run in the browser and specifically designed to be very visual and intuitive. You can watch the code run. Brilliant.

Beyond that though a learning language needs more. It needs to be cross platform, support both procedural and object oriented forms and be capable of text, graphics, UI and web programming. For me that means Python. It helps that I've got pythonista on my iPad and phone. On the desktop there's also Jupyter notebook.

At the end of the day though, teach what you know and what you enjoy. All the technical arguments in the world can't beat passion.

</comment><comment><USER46> QBasic is what got me started with programming more than 20 years ago. The thrill of writing a program that draws a rectangle, than erases it and draws slightly to the left and then watching the rectangle zoom across the screen hasn't been surpassed ever since.

If you want to teach a visual person like myself programming and the programming environment requires more than one statement to put something on the screen (including import statements), it has already lost to QBasic.

</comment><comment><USER47> I think BASIC! for android by Paul Laughton is a modern good modern alternative for an entry to programming. It comes with good documentation and examples, and is a classic basic-type language. link: [https://play.google.com/store/apps/details?id=com.rfo.basic&...](https://play.google.com/store/apps/details?id=com.rfo.basic&hl=en)

Once a kid might want to move up from that to solve perhaps more practical problems using PCs, I think a combination of bash (including basic usage of rsync, crontab, grep, sed, find, wget, ssh,...) and maybe VBA/Libreoffice Basic can take you a long way. (You can easily make nice little form/button based applications by dragging and dropping in the office suites. Also check out [http://excelunusual.com/](http://excelunusual.com/) for some inspiration on things you can do in VBA which I would not have thought practical!).

</comment><comment><USER48> <3

I learned code from QBasic and its help because books were in short supply at the library and there was no internet for me.

As much as Xcode or VS or Qt creator are great tools they seriously lack in that regard, as do most modern development environments. QBasic is very easy to learn and easy to use - and trying to solve hard problems with it requires some genuine skill and ability...

</comment><comment><USER49> Honestly this thread put a tear into my eyes....I was literally your kid like 15 years ago when i first discovered quick basic on my own as a 10 year old. I feel this so deeply. It was much easier to learn that than anything else I've ever learned since.

</comment><comment><USER50> I remember doing the same. Starting with a Qbasic book I had bought with the little money I had, I was already writing mud-like games and calculating prime numbers after only an hour. Though I wasn't lucky enough to have done it at that age. Lucky kid :)

</comment><comment><USER51> Ha! Who didn't hack the gorilla throwing bananas? :)

I learned to programm with BASIC [0] before on a Spectrum ZX clone, however that GORILLA.BAS [1] was a good programming lesson. I remember even now, after 25 years, figuring out the algorithms and the parameters of the flying banana.

[0] [https://en.wikipedia.org/wiki/Sinclair_BASIC](https://en.wikipedia.org/wiki/Sinclair_BASIC) [1] [http://www.jefflewis.net/archive/programming/gorilla.bas](http://www.jefflewis.net/archive/programming/gorilla.bas)

<comment><USER19> In high school, we used to mess around with banana trajectories when we were supposed to be writing English papers in the computer lab.

</comment></comment><comment><USER52> I am curious what's there to stop a kid from starting a Jupyter notebook (or even Mathematica with all the FullSnakeCaseNames) and firing away? Sure it isn't complex at least wrt. the basics (pun intended)?

<comment><USER18> Grandpas know BASIC and they can teach any version of it to their grandkids in under 2 weeks tops, they don't necessarily know Jupyter notebooks or Mathematica (how much does that cost these days?).

<comment><USER53> $250 for home use or free in browser via the learning lab

</comment></comment></comment><comment><USER54> It's mentioned in the article, but Microsoft have a nice BASIC environment called SmallBasic[0]. It's got a decent editor with IntelliSense, there's a community with a bunch of programs shared online[1] and it can interface with .NET code so you can extend it with whatever shenanigans your kids might require.

[0] [http://smallbasic.com/](http://smallbasic.com/) [1] [http://smallbasic.com/program/?TETRIS](http://smallbasic.com/program/?TETRIS)

</comment><comment><USER55> I learned to program on Texas Instruments calculators in the same form as this seven year old's application, I made really elaborate choose your own adventure games with if statements.

<comment><USER56> My first programs were for a TI-55 calculator. No conditional jumps, only a RST that restarted the program with data intact, so you could do some tricks.

I managed to make it solve second-degree equations in less than 33 steps (using the RST jump to re-run part of the program on modified data). Without the trick it'd require, IIRC, 35 steps, which were beyond the limits of that model.

</comment></comment><comment><USER57> GW-BASIC (QBasic's kinda sorta ancestor) was my first programming language (well, other than Logo I suppose). I still have a soft spot for it and might not be a programmer today if I hadn't first learned on such an easy-to-grok- for-11-year-old-me language.

I've toyed with writing my own GW-BASIC interpreter for yucks (because I've never written an interpreter) but never gotten around to it. Perhaps I should... I've been meaning to learn Rust, maybe that'd be a good excuse?

</comment><comment><USER58> Huge props to Noah for keeping an actual paper developers journal!

</comment><comment><USER59> This made me smile. I remember trying to learn coding at 6 or 7 from my Tandy 56K Basic manual. I didn't get it but I tried all the same. It would have been cool to have someone there to help me understand.

It's a fortunate thing to have common interests with your child. I can't wait to have my daughters show even the slightest interest in coding. They are toddlers, so I have to just wait.

<comment><USER60> I was around the same age. My dad was a big ZBasic fan, and he had me copying BASIC games out of a book and getting them to run, on our Tandy 1000. My oldest is 5, and I'm trying to figure out the best time to expose him to it. With the entertainment-focused nature of computing we have now, I can't rely on the lack of distractions that were present with a non-networked computer with a monochrome display. Right now, we don't even have a regular computer for him to play around with—my wife and I have our own laptops—so I think the first step is setting up a desktop machine that the kids can fool around with.

<comment><USER39> I've had a lot of success with a Raspberry Pi 3 and a 15" monitor. My 3 1/2 year old learned how to use a mouse nearly instantly and can click around on the desktop.

The Pi is $35 and has HDMI out and lots of USB ports. It's pretty great.

<comment><USER60> I almost bought a Pi for my son when he turned five, but then I decided to hold off (he didn't seem mature enough to be trusted with it yet). I want each of my kids to have a device that they can use how they please—whether it be playing Minecraft or tinkering with the hardware (including destroying it—I broke quite a few computers growing up...).

What software do you have running on the Pi for your 3.5-year-old?

<comment><USER39> Well... the Kano distro is pretty good for "I'm gonna learn how to type and move around the computer". [1] They have a build-a-computer kit and are coming out with a screen soon? It's a little old for my son, though. It really wants you to type things which is great except he can't read yet.

A colleague of mine had a lot of success with Edubuntu. [2] Her six-year-old is a whiz at the command line. Again with the keyboard use, so not quite appropriate.

I'm still looking, basically. He likes clicking around and seeing that he's having an effect on things, but he usually ends up at YouTube, which isn't so great.

[1]: kano.me

[2]: [https://www.edubuntu.org/](https://www.edubuntu.org/)

</comment></comment></comment></comment></comment><comment><USER61> As a person who taught himself programming (and a bit of English) with QBasic, and also have known many people that did the same. I agree with this article.

But you have other BASICs such as the one for computers such as the ZX Spectrum.

Python in my opinion can also be used to teach programming, since many high level constructs are optional and syntax is simple.

</comment><comment><USER62> I couldn't agree more. I started programming with QBasic -- basically teaching myself on my own -- when I was seven. And it worked. I was programming little interactive stories, drew crazy stuff on the screen, wrote small games. I was happy with it. The only things I was always curious about (and know one I knew back then could help me with) was on how to access the computer's mouse and the sound blaster. With my limited knowledge I never got that working until I switched to Delphi and Windows four years later.

One of the best things I remember about QBasic is the help system (also referred to in the article). This where I found everything I wanted to know, including examples, about the language. I believe that's one of the reasons why I'm still more patient when it comes to studying software documentation compared to the average programmer.

</comment><comment><USER63> Try to teach your kids programming this way, and you are more than likely only going to turn them off programming for many years. There is actual research on teaching kids how to code.

Personally, I would start with code.org or Scratch. If you have an ipad, there is Hopscotch. Here is a huge list of more tools to teach young kids programming: [http://bit.ly/ortonacode](http://bit.ly/ortonacode)

But if you start with basic or python, you'll be teaching them that coding is basically similar to solving boring puzzles - not of any real use, and not as fun as videogames.

Start instead with something they would find motivating or useful, not you. Making a game, or creating a useful little app/tool that solves some problem they think is important, etc.

<comment><USER64> Boring puzzles? The very original article showed what kind of programs the kid made. Far from boring puzzle.

When I was 8-9 I started with QBasic with the first program being pretty much identical as what the kid in the article did. Then we did text adventures with friends. They were simply awesome back then. Then we moved to graphics as we figured out how to draw lines etc. Animation was beyond us but managing to draw something was brilliant.

Around 12 it was C and games by using Allegro, and getting into slight trouble due to the nature of them. But it would not have been possible without first learning the basic stuff in QBasic (Oh the amount of IF blocks was ridiculous in some of the games).

<comment><USER65> When I was 10 and known Basic only from book I was wondering what would happen with that code:

        10 echo "hello"
        20 goto 10

After trying that I was quite disappointed that computers are that stupid...

</comment></comment></comment><comment><USER66> I'm a bit late to the party on this one but if you are looking for a great way for kids to learn basic and make video games, check out [http://www.blitzbasic.com/](http://www.blitzbasic.com/)

</comment><comment><USER67> Last month I reconnected with QBasic, was surprised about the live formatter and linter. And the pseudo module handling. Each function being seen as a separate entity.

Sorry MS, I didn't understand how valuable it was.

</comment><comment><USER68> One of my disappointments with the original Raspberry Pi was that I felt that its genesis story was from people whose early experience with programming came from Apple II's and QBASIC. It was pitched as a way to expose kids today to that same kind of low-overhead, get-in-and-start-making-things-happen experience some of us had 25 years ago.

Imagine my disappointment when the Pi's getting started experience was "Boot into a graphical window manager, open up the Python IDE, start writing Python..."

<comment><USER69> The RPi guy(s) grew up on BBC BASIC:

[https://www.raspberrypi.org/blog/celebrating-50-years-of- bas...](https://www.raspberrypi.org/blog/celebrating-50-years-of-basic/)

</comment></comment><comment><USER70> I think Qbasic was so fun because it was easy do do graphics. Doing graphics in any other language is just insanely hard as you have to understand _university_ grade math.

</comment><comment><USER71> I agree- we should also have just as easy of a way to start off with drawing.

Why do we need to install 50 frameworks, tell a window how to spawn, basically create a universe just to start experimenting with creating computer graphics? It's a (Width x Height) matrix of RGB values-- why can't we get a simple way to create a simple 100x100 box for kids to draw in?

No reason your son couldn't tell a screen to print colored pixels in RGB value with the right syntax.

<comment><USER72> [https://processing.org/](https://processing.org/)

I absolutely love Processing. It's a subset of Java with a dead simple IDE. Bonus points for exporting to Android, javascript, and executable jars for the desktop. Comes with excellent examples. The community is generally quite supporting and open as well.

And to answer your question "why can't we get a simple way to create a simple 100x100 box for kids to draw in?"

Here's the processing code that does exactly that:

void setup() { size(100,100) }

That pops a blank 100x100 box onto the screen. Drawing a line is line(start_x, start_y, end_x, end_y).

Adding interactivity and animation is as simple as adding:

void draw(){ ... do stuff ... }

You, and everyone else, should check it out.

<comment><USER73> Processing is a great and fun way to learn programming! I learned it that way, and I found that it kept my interest cause I could use it in a creative way while it also was easy to use.

</comment></comment></comment><comment><USER74> I learnt Qbasic not that long ago it was my first taste of programming. However back then I couldn't afford a computer, so I had this Qbasic book and just had to 'imagine' how my programs run.

Fast forward 13ish years and I own my own mac and know more programming languages than most of my workmates :) Although now I try and specialize in just three Rust, Javascript and Python to avoid being the 'master of none'.

</comment><comment><USER75> BASIC-256 is a good alternative to QBasic: [http://www.basic256.org/index_en](http://www.basic256.org/index_en)

The voice synthesis with the "say" command is impressive: [http://doc.basic256.org/doku.php?id=en:say](http://doc.basic256.org/doku.php?id=en:say)

Say "Hello, World" (instead of Print...)

</comment><comment><USER76> Key to get people coding, doesn't matter what the language, platform, etc. is in my opinion. Think I've worked in more than 20 or 30 languages to help someone new to programming write some programs. Each language has it own set of strengths and weaknesses, but normally my experience is that the person having a choice, is really important to them sticking with it.

</comment><comment><USER77> I introduced my 10 years old cousin to turbo pascal when we met a few years ago. It took less than 3 hours to download it, install (also the patches to run on modern computer), make a game where you can move a circle around the screen, and teach him how can he modify it and how basic syntax works.

There's nothing like that in modern programming. Python comes close, but is too magical.

<comment><USER78> My Dad taught me Turbo Pascal when I was about 7 or 8 years old, this was the early 90's msdos environment. I wrote one or two very simple programs got bored and moved on to other things. I just didn't have the attention span for it at that age.

When I was 13 I taught myself html. I used to write webpages by opening up notepad in Windows 95 and typing in all the tags (frames tables even the dreaded blink tag). I consider this my first real experience with programming.

</comment></comment><comment><USER79> Wow... good job man. My first experience with programming was QBasic, and that was about 16 years ago. I only did it for a couple of weeks but when I picked up on programming several years later as a young adult, it all came back to me - assigning variables from user inputs, printing on screen, if then else, all the basics. Good stuff!

</comment><comment><USER80> That is awesome!

It is not surprising that Noah's desire to program comes from his desire to make games. That's where I got my start, with QBASIC ~20 years ago.

Before that, I remember wanting to take a Entenmann's Donut box and put action figures on sticks to make my own analog fighting game.

How many of you got into programming because of a desire to make games?

</comment><comment><USER81> I think Racket comes close but is still a little more adult.

I remember going to GaTech early 2000 and there was a teacher named Guzdial pushing Squeek like it was gods gift to children and humanity. There is nothing wrong with the language but I have yet to see kids use it or like it. I have seen high school kids use racket though.

</comment><comment><USER56> Who'd a thought thirty years ago we'd all be sittin' here drinking Chateau de Chassilier wine?

</comment><comment><USER82> Oh man I am having a nostalgia heart attack right now. I remember coding a "guy shooting falling aliens from the bottom of the screen" game and hilariously having the aliens move not only through a timer but ALSO when you moved since there was no threading. Classic.

</comment><comment><USER83> I also started with BASIC. First was Commodore BASIC and then QBasic. I remember there was also LOGO, one of the original didactic languages. IMHO, if you want a simple language in the same spirit as BASIC, the closest you can find is Lua.

</comment><comment><USER84> My post won't add much to the discussion, but QBasic was also my very first language. I was a little older than Noah when I first used it (I think I was ~12/13) and I still remember having so much fun with it :)

</comment><comment> mark-r So who will do an equivalent of QBasic for the web? It seems that the language is simple enough to be implemented entirely in Javascript. Then you wouldn't have to deal with the hassle of installing.

<comment><USER85> You mean javascript? It's already implemented in your browser.

<comment> mark-r No, I mean implementing a full Basic interpreter in Javascript. For nostalgia's sake, or for teaching the kids, as in the article.

<comment><USER86> No need to reimplement. The original QBasic runs in your browser: [https://archive.org/details/msdos_qbasic_megapack](https://archive.org/details/msdos_qbasic_megapack)

</comment></comment></comment></comment><comment><USER87> I remember learning to program with QBasic as well. It was so much fun as a kid. I painstakingly drew out full scenes with line and circle commands for a small text based adventure game. Good times.

</comment><comment><USER88> im getting my toddler started with this RL code. [http://www.primotoys.com/cubetto](http://www.primotoys.com/cubetto)

</comment><comment><USER89> I tried (+ 2 2) on a four-year-old once.

Instant, complete acceptance; no complaints about parentheses or lack of infix or anything.

<comment><USER90> There was no previous assumptions there that caused impediment for learning.

</comment></comment><comment><USER91> "OMG please don't teach him GOTOs!!"

GOTOs are easy to abuse, but they would really come in handy sometimes.

</comment><comment><USER92> My first language too! haha PRINT "Welcome to the club Noah!"

Great insights for education

</comment><comment><USER93> of course: [http://www.nicholson.com/rhn/basic/](http://www.nicholson.com/rhn/basic/) chipmunk basic

</comment><comment><USER94> sonic pi was created for this very purpose - to teach kids to code - [http://sonic-pi.net/](http://sonic-pi.net/)

</comment><comment><USER95> Man, I wish I'd kept some of my .bas files.

</comment><comment><USER96> :') My first code was written in QBasic

</comment><comment><USER97> Rebol ?

<comment><USER98> Yes Rebol is a great language to teach kids, especially Rebol/View ([http://rebol.com/docs/easy-vid.html](http://rebol.com/docs/easy-vid.html)).

Below is an example of it _draw_ dialect:

      view layout [
        box 320x200 effect [
          draw [
            pen black
            line 20x20 80x80
          ]
        ]
      ]

Many more drawing examples can be found here - [http://www.rebol.com/docs/draw.html](http://www.rebol.com/docs/draw.html)

</comment></comment><comment><USER99> Emacs, then elisp perhaps?

</comment><comment><USER100> My first language too :)

</comment><comment><USER101> QBASIC.js

QBASICScript

QBASIC in a browser

<comment><USER102> done

[http://stevehanov.ca/blog/index.php?id=92](http://stevehanov.ca/blog/index.php?id=92)

</comment></comment><comment><USER103> My kids have a great time with PICO8:

[http://www.lexaloffle.com/pico-8.php](http://www.lexaloffle.com/pico-8.php)

The fact that everything you need to build a game is built-in is very key to their enjoyment - they don't need to deal with any operating system in this environment, and have (almost) everything they need to be self-contained developers. (Built-in docs would be nice..)

Its interesting, having watched the evolution of PICO8, to see the mass explosion in creativity around the scene, and I have observed a key to its success - by putting constraints on what you can do and how you can do it, while also filling in the inner space of those constraints with _excellent_ tooling, you give people freedom - within a limit - to create amazing things that push those limits.

You can read more about PICO8 (if you're interested) in this wonderful 'zine, which reflects the culture of the scene very well:

[http://pico8fanzine.bigcartel.com](http://pico8fanzine.bigcartel.com)

Another big hit is LOAD81, from antirez:

[http://github.com/antirez/load81](http://github.com/antirez/load81)

This, I think, is better than QBasic, in that it has all the same functionality in the IDE, but teaches them a better language: Lua. Plus you can install it almost everywhere you can't install QBasic.

Anyway, in case any other HN'er out there is interested in doing stuff like this with their kids, give PICO8 and LOAD81 a try .. they're both, in my opinion, great ways to get young minds programming ..

</comment><comment> guard-of-terra I don't think that QBasic is so bad as procedural language.

All the primitives are there and I've never written any code with much GOTOs in them. Just did not feel the need even when I was 10 years old.

What this article clearly lacks is

        SCREEN 13

Seriously, unsurpassed easiness of programmable graphics. Even by javascript, which is otherwise better for teaching.

<comment><USER104> Absolutely, this is what I miss, both for myself and for teaching youngsters. Not even Python or Javascript has an easy way to just get a full screen canvas that lets you set RGB colors onto pixels and draw shapes.

The python way is to import pygame and get mired in page flipping, creating canvases, creating your own event loop, etc.

The javascript way is to create an HTML5 canvas, learn how to get page elements and store them in a variable, and where to put your code so it will run at the right time, etc.

Both have so much scaffolding before you can just create some procedural graphics and begin to reason about x and y coordinates in a way that's fun and shows the power of programming visually.

My hobby with QBasic was making variations on Conway's Game of Life. So easy and fun in that language compared to anything else.

<comment><USER105> Some screen modes[1] like screen 9 actually had page flipping as an option. You could write to the "back" screen buffer and then switch which buffer was shown. I used that to make a poor man's strobe light.

I really miss the simplicity of QBasic sometimes.

[1] [http://www.qb64.net/wiki/index.php/SCREEN_(statement)](http://www.qb64.net/wiki/index.php/SCREEN_\(statement\))

</comment></comment></comment><comment><USER106> Wonderful post. I did something similar for my younger daughter and one of her friends with Lua and Love2d. In just a couple of hours they had written a Breakout clone and also understood every line of code. Very satisfying.

</comment><comment><USER107> I think kids should not be actively encouraged to learn to code early.

You can learn to code any time, when you are older. As far as I can see, there is no advantage in learning to code early.

But there are skills you need to pick up, and experience that you can only have when you are a kid. Let us encourage to kids to do those stuff..

</comment><comment><USER108> The Monkey X programming language is a great alternative to qbasic. It's simple to install, cross platform, procedural, OOP, and incredibly powerful the more you get to know it.

</comment><comment><USER109> BASIC:

an acronym for Beginner's All-purpose Symbolic Instruction Code.

Yep, I'd say that checks out.

</comment><comment><USER110> Less about Qbasic and why it is still the best and more about a parent bragging about their kid doing stuff with computers so early.

I mean, just make the title "my kid wrote a text game in Qbasic" and do your bragging there. No problem..</comment>


Ask HN: I could really use some business advice. - <AUTHOR>

I co-own an online retail business in a niche industry (prefer not to mention the company name here).  We started from scratch with no real funding about four years ago (savings and credit cards), and are doing about $800/day in sales now (on average).  We have a couple of part-timers to help ship product and handle customer service issues.  Our site is in the top 10 on Google for most of our keywords, and we've recently started doing Adwords fairly seriously.  Question is, how do we get to the next level?  Where can we go for funding? Do we even want funding, or do we want to keep limping along and growing organically?<p>I'm asking these questions to the larger community because we're completely in a vacuum. <comment><USER4> So, there are a few things that make me think you're not a startup...which means VCs are not your ideal source of capital. VCs don't generally do "retail", and they don't generally do "niche", unless "retail" is something entirely novel (like Amazon.com was in 1994 or whenever it started), and "niche" is something with huge growth potential (like Cisco when they started, the market had nearly zero demand for "ethernet routers" at the time, but within a few years demand was astronomical and Cisco profited from their prescience). That doesn't mean you shouldn't get additional funding...it just seems likely you shouldn't waste your time on VCs or tech angels, which is what most folks around these parts talk about.

Other kinds of funding might be appropriate for your growth plans, though, like bank loans, lines of credit from your suppliers, etc. One reason startups don't fund through loans is that startups are too risky. A four year old retail business that has consistent sales over a long period is not risky. It's generally quite predictable from a risk perspective, and banks will trust you to use their money wisely.

There's also traditional friends and family investment, or you could bring on a new partner who brings money, expertise, and business relationships. The latter is probably what I would be thinking about, if I were in your shoes. It sounds like you need someone to help you grow beyond your current vision and into something larger.

Or, if you're making enough money right now to live on, and hire someone to take away the day to day processes of running the business, you have some other options that don't involve loans or giving away equity. You could try thinking like Amazon. I don't mean "imitate Amazon"...I mean, start thinking of new ways to leverage your existing technology and infrastructure and customer base. Did you build your own shopping cart software and inventory management tools? If so, can those be used for some other purpose? Could you open sister sites selling other products? Could you partner with local companies that want to sell their products online? Could you build out an affiliate system? Could you use it to sell virtual goods, like ad inventory? Can you make your customer base worth more? Amazon sells ads on their site, lets other retailers sell through their site, and has dozens of ways to make every customer worth more. Again, don't imitate Amazon (because you can't beat Amazon at their own game)...just start thinking like they do...always evolving, always figuring out new ways to provide additional value for your customers.

</comment><comment><USER5> Google Jay Abraham! His stuff is awesome!!! Here are some questions he would ask :

Who do you market to?

Who are your customers?

Where do you find them?

How else can you reach them?

What else will they buy?

Why don't non-customers buy from you?

More funding is never the answer. More sales, more revenue and greater profits are always the way to grow. Selling on the web is only one of many ways.

</comment><comment><USER6> Put it this way - you're doing more revenue than half the site featured on here - and probably making more profit than twitter or facebook.

SwellJoe had some good advice. To use the E-Myth distinction - work "on" your business, not "in" it. (also - probably read E myth revisited). Look at adjoining niches? Create a new niche on the same kind of platform? begin adding breadth and not depth Information Products / ebooks / lulu / etc - <USER2> well and with a significant profit margin (think parrotsecrets)

Do you need funding? What would you do with extra cash? If your aim is to build the next facebook - you need servers, staff, power, etc.. If you just need to grow/expand - what would you use the cash for?

Other book recommendations might be (How to Get Rich - Felix Dennis (ignore the title - fantastic book) and maye the 4 Hour Work Week - Tim Ferris - <USER3> haven't even read it - but I know that a large part of it was his story of automating his product sales online. I'd guess it should have at least one $15 idea)

</comment><comment><USER7> Get a partner.

If you're stating you're in a vacuum now, well wait, because there will be an infinite stream of decisions and competing priorities and aims and risks that come from taking a co to the next level. So, if you want to take it to the next level you need a partner, somebody that complements you, but kinda knows what to do (either because of his experiences or the way he's built).

But, get a partner in a smart way. Take a year or two. Get somebody in your own age range (not too old, not too young). Talk with him _a lot_. Get that weird feeling that your not in sync on a couple of big issues, don't do it. And make expectations clear that you expect him to take on quick projects that are immediately CF positive for at least a year while he learns the business. ( I always slap my forehead when I hear those stories of founders letting a new ceo take a huge flier early on. Big new marketing plan. Conferences! etc.)

good news in it all: Time is on your side.

</comment><comment><USER8> Have you thought about other sales channels - Mail Order Catalog, Physical Stores, Licensing or Distribution to other Retailers?

$800/day or $300K/year isn't limping - it's a nice little business which might or might not have growth potential. Do some market research and answer those questions CyberFonic asked.

If you're in the USA contact the SBA. The SBA SCORE program is great for getting help with growing a business.

</comment><comment><USER9> Do you know the coaching program from Rich Sheffren an Jay Abraham? Maybe this is a product you want to buy now.</comment>


Map-Reduce implemented in year 2001 at SenSage (Addamark) - <AUTHOR> http://www.sensage.com/blog/2009/06/11/mapreduce-made-easy-the-future-of-database-analytics/ A recent HN posting referenced article http://www.facebook.com/note.php?note_id=89508453919 where Facebook engineers discuss Hive and Map-Reduce.  The description there maps very closely to this 2001 patent from SenSage/Addamark:  http://www.google.com/patents/about?id=_VaHAAAAEBAJ, in its discussion of:<p>* distributed compressed storage
 * columnar databases
 * temporal partitioning
 * distributed query planning and processing
 * ... many other aspects ...<p>The CEO of SenSage (formerly Addamark) points this out at http://www.sensage.com/blog/2009/06/11/mapreduce-made-easy-the-future-of-database-analytics/.  Various other companies have also taken the Hive/Hadoop/Map-Reduce model, including Vertica (founded by Michael Stonebraker after his stint as tech advisor at SenSage).  These commercial offerings are quite popular and have lots of uptake in the market.  Probably a lot faster than standard Hadoop/Map-Reduce. <comment><AUTHOR> (Seems these notes did make it into posting ...)

</comment><comment></comment><comment></comment><comment></comment><comment></comment><comment>

A recent HN posting referenced article <http://www.facebook.com/note.php?note_id=89508453919> where Facebook engineers discuss Hive and Map-Reduce. The description there maps very closely to this 2001 patent from SenSage/Addamark: <http://www.google.com/patents/about?id=_VaHAAAAEBAJ>, in its discussion of:

* distributed compressed storage

* columnar databases

* temporal partitioning

* distributed query planning and processing

* ... many other aspects ...

The CEO of SenSage (formerly Addamark) points this out at [http://www.sensage.com/blog/2009/06/11/mapreduce-made- easy-t...](http://www.sensage.com/blog/2009/06/11/mapreduce-made-easy-the- future-of-database-analytics/). Various other companies have also taken the Hive/Hadoop/Map-Reduce model, including Vertica (founded by Michael Stonebraker after his stint as tech advisor at SenSage). These commercial offerings are quite popular and have lots of uptake in the market. Probably a lot faster than standard Hadoop/Map-Reduce. </comment><comment></comment><comment></comment><comment>=====</comment>


Interview with British Pianist Stephen Hough - who-knows https://www.musicandliterature.org/features/2020/7/7/the-stephen-hough-interview <comment><AUTHOR> This bit in particular resonated with me, as someone who's had problems with nervousness giving piano recitals:

 _I have a psychological approach to nerves as well. We have to consider the so-called importance of our little place in the world. This Beethoven performance is unlikely to be of any significance in three hundred years—and in three thousand years, not at all.

It's like standing on a different planet and looking down; let go and lose yourself. At the same time, we have to realize that the smallest gesture has enormous implications._

<comment><USER2> If you've never done it before, consider drilling _every_ single aspect of the performance.

For example-- in a performance, you usually walk to the instrument, bow, sit down, adjust the bench, pause, consider the tempo... all to play the first few notes that establish the tempo of the piece.

So you would drill that entire entrance, as well as drilling from a sitting position and establishing the tempo.

What you'll probably find is that the variance in speed among these drills is well beyond what you desire for your performance. And the more you drill, the more control you have over the established tempo, which is probably the most important moment to _not_ make a mistake. :)

This approach doesn't "solve" nerves. But it can slowly decouple them from the performance. E.g., you start freaking out because you never noticed how "weird" your thumbs look in this passage; nevertheless, muscle memory established a nice, solid tempo for your freakout instead of one thats 1.5x too fast... :)

<comment><USER3> Yes. I've used this for public speaking. Also for parachuting, where I finally got a clean jump (back in solo static-line days) by working through in my mind all of the distractions: stall alarm sounding, jump-master shouting instructions, clambering into the door (seated position in a Cessna), smell of exhaust fumes, slipstream.

</comment></comment></comment><comment><USER4> "I am composing the test piece for the 2021 Van Cliburn competition ... One issue [about Bach] may be that I celebrate a certain chaos or irresolution in art ..."

Can't help but wonder if modern composers use 'chaos and irresolution' as a way to rationalize their terrible compositions.

Hopefully Hough will give us a beautiful pastiche.

Previous Van Cliburn test pieces:

Bernstein's Touches [https://www.youtube.com/watch?v=lFjdVP_tQYA](https://www.youtube.com/watch?v=lFjdVP_tQYA)

Christopher Theofanidis BIRICHINO [https://www.youtube.com/watch?v=ZXuKF20h480](https://www.youtube.com/watch?v=ZXuKF20h480)

<comment><USER5> >Can't help but wonder if modern composers use 'chaos and irresolution' as a way to rationalize their terrible compositions.

I can somewhat sympathise with artists feeling everything is done. I'm not convinced you could be novel in a baroque or classical form without ending up feeling derivative

</comment></comment><comment><USER6> Liszt: Bénédiction de Dieu dans la solitude: [https://www.youtube.com/watch?v=K03xMG7fdQ4](https://www.youtube.com/watch?v=K03xMG7fdQ4)

A great performance by Hough — a devout Catholic.

Currently one of my favorite pieces to play.

I was inspired to learn it after hearing him play it. Both the titles and the content are deeply relevant during times of coronavirus.

Especially at the height of a solitary lockdown.

</comment><comment><USER7> Learning to play piano takes years, but rewards can be more or less immediate if one knows how to set the right expectations.

As an adult learner, you need to make sure you are enjoying the instrument so it should have the right action and sound. It's unbeliable how you can purchase a Casio CDP S100 these days for less than 400 bucks and get a decent keybed and sound, advances in digital piano technology are staggering! not only sample libraries are huge these days, most digital piano companies have been including physical modelling into their sound engines with success, it's only a matter of time until these offering end up in the lower price points

One can safely predict that in a decade the only difference between an affordable digital piano and a real acoustic piano will be the keyboard action.

<comment><USER8> It is absolutely true that adults can begin to learn piano (or any musical instrument) and reap rich rewards. And as you say the key is to set the right expectations and enjoy the sound, enjoy the process.

However, I don't agree that affordable to even high-end digital pianos will be able to approximate real acoustic pianos within 10 years in two primary areas: dynamics (being able to produce the full range of sounds from pianissimo to fortissimo) and haptic feedback (the subtle vibrations felt by the fingers and body when playing a real piano). Digital piano keybeds are getting better and better in these areas, but are just not close yet to a real piano sound and feel IMHO.

If anyone knows of any models of keyboards that prove me wrong, please share!

<comment><USER9> I wouldn't say it would prove you wrong, but the StudioLogic SL88 Grand with the sound coming from Pianoteq is stunning for the money. Obviously it's not going to feel exactly like a real piano, but it is absolutely similar enough to feel way more like a real piano than anything else I've tried, and at a bit more than $1KUS, the price is unbeatable for anyone up to a very advanced level. StudioLogic is Fatar's in-house brand, so you get the key-bed of a much more expensive digital piano in a cheaper minimal housing, blowing away anything else in the same price bracket on key feel. You might have to hunt for them. They have weird arrangements as a part supplier for other brands, so for instance I found it at long & mcquade in Canada, but it was _not_ on their websites.

<comment><USER7> On a similar spirit, the Kawai VPC1 although you need a PC to generate the sounds. Most people tend to use Modartts' Pianoteq.

<comment><USER10> I've started to use a RPi4 instead (output is through a simple USB DAC) and the quality is pretty much the same. Additionally, it makes for a simpler setup if you have a dedicated unit for the purpose.

<comment><USER7> Are you running Pianoteq or other software?

My Korg Kronos is just a dedicated mini-PC working as a synthesizer workstation appliance. It takes about 3-4 minutes to boot so hooking a RPi4 next to it would make for a great weekend project.

<comment><USER10> I'm running Pianoteq indeed</comment></comment></comment></comment></comment></comment></comment>


Newest coworking space costs just $2.25 an hour, because it is a parking spot - <AUTHOR> https://www.fastcompany.com/90342223/the-newest-hot-coworking-space-costs-just-2-25-an-hour-because-it-is-a-parking-spot <comment><USER2> Welcome to Silicon Valley: where everyone has somehow bamboozled themselves into believing that working in a cramped parking space is more valuable than buying office real estate in LITERALLY any other state...

Remember kids: you don't HAVE to live in California.

<comment><USER3> The irony is that all the companies and startups work on internet companies which could happen anywhere with internet access. It's not like there is a gold mine under San Francisco streets that requires on site mining. And before you say "the people are the gold mine", those people could be interacted with remotely quite easily.

<comment><USER4> I don't understand the push for remote work.

I have been a part of remote teams for over 11 years of my career (16 yrs). I have worked from home more days than I can count. It has enough drawbacks that I'd avoid it at any given opportunity. Here are a few reasons:

\- You are not part of the hallway conversations / decision changes / fly by meetings / face-memory / kitchen run ins and every other benefit of having people together. When your level is senior enough, these are very much a deciding factor in whether your last 6 months of work is going to be thrown out or kept relevant.

\- Video conferencing is terrible. If you notice a pattern, the conversation is DOMINATED by the side with most power. I have seen very senior engineers (including myself I suppose) have trouble corralling a meeting / participating in a discussion that's going back and forth animatedly when there are other senior folk in one room. When you are junior, there is a high possibility your chances to speak are just perfunctory because almost all relevant points have been made already.

\- Yes I have heard and tried the notions of ensuring meeting etiquette. I have also been part of these meetings where there is someone (or everyone) trying to police how the meeting is run (let everyone speak, juniors go first, go in a circle ...). Those have been considerably less productive to put it mildly. (Remember - I am the one who is remote).

\- There are always mic-hogs who don't make a ton of points - most of the efficient places weed these out real quick. In a different rant - I hate optimizing for the bad actors that penalize the good actors heavily. Anyway - in this case you are left with few folks with real talking points not being able to convey the whole nuance.

\- Essentially this leads to you doing extra work in ensuring at least some folks on the other side are on the same page before the meeting to ensure your points are considered.

So yes - in short remote is bad IMO. Video conferencing pretty much doesn't work since it doesn't capture the full presence and energy of folks. This is going to sound metaphysical, but my real presence is a million times better representation of the full me than my text/video :). It _may_ work when everyone is remote with an individual screen - the usual situations I am in is where there are 2 or 3 conference rooms with people.

<comment><USER5> Having people work remote in a non-remote culture is a completely different experience than working with a fully remote culture.

If the entire team/division/org doesn't fully embrace it, it usually just doesn't work. That doesn't mean everyone had to be remote, either.

<comment><USER4> Can you please suggest some ways how to fully embrace this? I don't think offices are going away at least in my fang world.

I saw a note about everyone headphoning in - I can try this, but am skeptical because those people are still going to be more present than me (I mentioned this in my op). There are going to be side conversations, notes, glances, eye rolls, sighs I miss - the things I definitely need to get the full presence. Not to mention the walkie talkie nature of this - with everyone muting / unmuting and feedbacking.

I am open to other ideas - but am looking for ones that don't make the human interaction a lot more measured and artificial. As much as I like to be Spock, my xp points at emotions driving 90% of real decisions because the logical ones pretty much are a lay up in a sane group.

<comment><USER5> Well, we went through the transition at my last job so I kind of have some incite. We had 3 or 4 people on my project who had came over from Invision, who are a fully remote company and I have a good friends at other well known fully remote companies that I gleamed things from to help us transition from 0 remote company to a fully remote project team (50ppl-ish).

1\. Every meeting should be video first. Going without video should be extraordinarily rare. Even if that's just an impromptu meeting with 2 or 3 people. Kill conference phones completely. Get used to screen sharing. Good reliable tools like Zoom are invaluable. You miss a lot from body language and facial expressions if you use audio only, which will fix your major issue. It also makes people feel more included and that the people working somewhere else are actually real people and not just voices. Make good use of Slack video

2\. Every meeting should be able to be taken as remote, even if that means just from your desk (or personal meeting room if you're in an open office). This means that the people who are in a conference room must be on video with an open mic, unless there is uncontrollable excessive background noise or something. No cross the table talk on mute.

3\. Don't be afraid to make temp rooms with multiple people when you have conversations on Slack (or whatever you use), it'll help more people get involved as if you were talking at someone's desk.

The first 2 things are _extremely_ important. Invision has recently released some blogs about cultivating a good remote culture that are pretty good. I don't have any links handy, however but it's worth a look if you're interested.

</comment></comment></comment></comment></comment></comment><comment><USER6> In a similar vein I'm working on an idea to monetize cemetery plots and crypts in and around San Francisco. They're quiet workplaces with scenic views (lots of flowers and greenery), often centrally located and many are close to coffee shops. With a little cabling/wiring and some temporary structures they would make ideal workplaces.

<comment><USER7> I think you are missing the whole point of cemeteries and crypts: to honor the dead. They are not parks. They are not nature preserves. They are not just quiet places with scenic views. They are memorials to those who have gone before.

Turning a place of honor into an office space kinda defeats the whole point and is super disrespectful.

<comment><USER8> I'm pretty sure the comment you're replying to was sarcastic.

</comment></comment></comment><comment><USER9> Has anybody tried to create something like AirBnB for co-working/office spaces? There must be people willing to rent out a spare bedroom they never use, etc. All you really need to provide is a desk and internet.

<comment><USER2> A lot of states have laws against office and living spaces being in the same building, if I recall. Maybe someone else has more expertise and correct me.

This would obviously make it difficult for someone to rent out their living room to $Startup, for example.

<comment><USER10> Did Uber let local laws strangle its business? NO!

Did Airbnb let local laws strangle its business? NO!

Did PayPal let money transmitter licenses and rampant fraud strangle its business? NO!

Did YouTube let rampant piracy strangle its business? NO!

Now go start your residential hot-desking business!!'

<comment><USER11> I guess the moral is that if you make enough money fast enough, you can hire lawyers to keep you out of jail.

</comment></comment></comment></comment><comment><USER12> $2.25/hr for 8 hours is $18. I don't know about the SF prices but in Manhattan you can get a "hot desk" for $30/day at some fairly nice places. I'd guess in Brooklyn you can probably find/negotiate something comparable to $18/hr.

<comment><USER13> I was just going to say the same - and $18 / day * 21-ish working days per month is...$400 / month.

Hey, that's roughly what a coworking office space costs! Except sitting in a parking spot, you don't get free wifi, coffee / tea, bathrooms, networking events, shelter from the elements, facilities security / maintenance...

So: I'm not sure how coworking fits into the larger point they're trying to make. Yes, residential rent is _insane_ in San Francisco - no argument there. Yes, parking spaces that sit unused throughout most of the day are an unfortunate legacy of car-centric urban design. Both of these are solid and reasonable points to make.

But $400 / month for an office space that comes with a slew of amenities? That seems entirely reasonable to me, and definitely in keeping with permanent desk costs in other, less extravagantly priced cities.

<comment><USER14> The best part of co-working spaces is that the cost scales completely linearly without signing multi-year leases and deposits and all the other logistics of having an office.

</comment></comment></comment><comment> WD-42 This is a fantastic demonstration of how poorly we manage our streets. There is no doubt in my mind that in the future we will look back at how we currently treat parking and wonder "What took so long?"

I wonder if anyone has ever calculated the amount of actual acreage taken up by street parking in San Francisco. Undoubtedly it's a huge amount that you would consider extremely valuable in a place like San Francisco. Yet we're letting people dump their single passenger vehicles in public and it's no big deal.

</comment><comment><USER15> That is the actual plot of the SheWork episode in Broad City.

<comment><USER16> Clip of the SheWork concept.

[https://youtu.be/Sk-WvSvQbKk?t=93](https://youtu.be/Sk-WvSvQbKk?t=93)

</comment></comment><comment><USER17> That makes me wonder what else you could repurpose as an office in places where offices are disproportionally expensive. What about a climate-controlled storage unit? A quick Googling tells me you can get a small (but large enough for a desk) climate controlled storage unit in San Fran for about $100-150/month. That's vastly cheaper than a co-working space. I know you can get storage units with power, they're pretty popular as practice spaces for bands around where I live. You'd need a mobile hotspot for internet, and no windows might be a bit depressing, but for the price...

<comment><USER18> Met a guy in DC that actually lived inside a warehouse storage unit. He had installed lights, walls for multiple bedrooms, a kitchen/bar, and a lot of cool art. I'm awful at estimating distances but I'd guess the main room was about 800sqft and the bedrooms/bathrooms were divided from another 400sqft. With a little love, any place can become a home.

<comment><USER19> I haven't ever seem a storage unit with plumbing before...

<comment><USER20> I think he meant rented warehouse space, not an actual storage unit. Storage units rarely have more than a single electrical outlet and many lower end ones don't even have that.

</comment></comment></comment></comment><comment><USER21> Was the reporter too credulous or were they in on the joke?

</comment><comment><USER22> They should invest in getting those large collapsable umbrellas for shade, working in 'on-road parking' during summer doesn't sound practical.

<comment><USER23> Or an RV or van converted to an office space.

<comment><USER24> I did this (in an RV) for a few years in my younger days, when starting my first business. It worked very, very well for me and came with the added benefit that I could move my office any time I wanted to be in a place that was more convenient or enjoyable.

</comment></comment></comment><comment><AUTHOR> the website: [https://www.wepark.us](https://www.wepark.us)

the original twitter thread (first test drive): [https://twitter.com/VictorPontis/status/1121521771633500160](https://twitter.com/VictorPontis/status/1121521771633500160)

<comment><USER10> It's $2.75/hr. Talk about inflation!

</comment></comment><comment><USER25> Good on them for bringing attention to how much space is wasted for parking in cities! A clever way to raise awareness.

<comment><USER26> Apparently a bit too clever for a lot of people, going by many of the comments here.

</comment></comment><comment><USER27> The group Improv Everywhere did a similar thing, playing it more for laughs: [https://improveverywhere.com/2018/11/13/phone-booth- coworkin...](https://improveverywhere.com/2018/11/13/phone-booth-coworking/)

</comment><comment><USER28> Twenty people working in a space about the size of a parking spot? I call bullshit.

</comment><comment><USER29> I've seen someone being literally bumped out of a parking spot by a car, because the driver wanted to park there.

</comment><comment><USER30> I hope they have the added cost of theft, vandalism, and medical. That looks really risky.

</comment><comment><USER31> This is getting ridiculous.

<comment><USER32> That appears to be the point.

</comment></comment><comment><USER33> What a time we live in...</comment>


Show HN: Da Vinci Art Snapchat AR Lens - <AUTHOR> https://s3.amazonaws.com/andrewmendez.me/files/da-vinci.MP4 <comment><AUTHOR> Creator here! I am excited about how Augmented Reality(AR) can enhance experiencing art, and I wanted to share this collection of notable Da Vinci art in AR!

You can view this creation live on Snapchat using this link: [https://www.snapchat.com/unlock/?type=SNAPCODE&uuid=e72cf6fd...](https://www.snapchat.com/unlock/?type=SNAPCODE&uuid=e72cf6fd7d7d4e06a71a9e5e8fb5ab3d&metadata=01)

Please share and let me know what you all think!</comment>


Meet the wizard of Web 2.0 (Arrington) - <AUTHOR> http://money.cnn.com/2008/03/18/technology/Walter_Winchell.fortune/

<comment><USER2> There's some interesting subtext here. TechCrunch is for sale, Mike affirms, in the same conversation he mentions that TechCrunch may take investment to grow larger. The message to acquirers: Would you rather buy it when it's small, or buy it when it's big?</comment>


Ask HN: Do you always FULLY understand the code you are working with? - <AUTHOR>

I wonder if other devs have the same problem as me: i am extremely uncomfortable doing work on code i dont FULLY understand and grasp. Mostly this is due to lack of time, something needs to be fixed urgently, something needs to be extended, etc. I can still get my work done, but as i said, i feel not very good about it (simply put: i hate it).<p>Is this just me or are other devs experiencing the same? <comment><USER2> Wait till you go back to your own code in 1,2,5 years and think who wrote this rubbish - only to look it up and find out it was you :-)

<comment><USER3> Hahhha... some days ago I checked one of my old PHP codes (I was not aware it was written by me) - I was swearing much.. then I saw my name in a comment on the top and then.. I sweared more :-)

My style is transforming from year to year to a better one (I hope), so sometimes I cannot recognize my old ones.

</comment></comment><comment><USER4> No one does, that's why we write unit tests. You'll eventually not remember you own code, and you can basically ensure the next guy to come along won't fully understand your code either. If you have good coverage, its like having a safety net to fall on allowing you to take large leaps.

</comment><comment><USER5> You're not alone. But you're also missing an important point. You often use libraries without fully understanding their code, don't you?

You have to. You usually don't have the time or luxury to dig in and understand everything when you have a specific task to complete. Unless you're refactoring some old code where you try and make sure that you understand everything relevant to that codebase. Or you can just wait until it breaks...

Things like automated testing and proper documentation try to help in this regard, but they're useless if they're not kept up-to-date with the code and they have their own set of problems.

</comment><comment><USER6> Recently got hired at a new place and I defiantly am having the same problem. There are two major hurdles: Domain knowledge and code-complexity. Then trying to dive into the countless layers of logic in the code itself.

With a large codebase, it's impossible to understand everything. So the only thing we can do is to gradually learn how it works.

Sticking with it will make you valuable to the company in time. Moving on will free your mind to do other things.

<comment><USER7> Same here. A thing that helped me a lot was to try to divide code parts into boxes, and understand one piece after the other. Even after a year and a half, there are plenty of pieces I can't get. But it gets easier once you can find the main articulations.

</comment></comment><comment><USER8> I have found that you need to learn to trust other developers work. Even if you are going into their code to fix a bug.. you have to trust the rest of it works!

</comment><comment><USER9> I think the important thing is not to understand all the code, but to know where you are and why you are there.</comment>