This article definitely captures the general joy I get being able to work with the web. I understand it has its warts, but there's something really magical about having one ecosystem where you can so seamlessly play with user input, network requests, audio, graphics, and it can be shared or deployed on basically any consumer hardware.
I recently have undertaken a little side project that at first I assumed I was going to need to pick up an Arduino and hack together some physical inputs, LEDs for an interface, and a speaker. It wasn't until I started shopping around for pieces and learning about the tech stack that I realized I could just take my old phone, pop open a browser, and prototype it that way.
There's a lot of complaints that not everything should be in the browser, and that's very true for a lot of cases, but it's extremely empowering that anything _could_ be in the browser, at least for your MVP.
> there's something really magical about having one ecosystem where you can so seamlessly play with user input, network requests, audio, graphics,
It seems that that was the experience Smalltalk was aiming for back in the 1980's with it's totally integrated development environments (integrated to the point that it was basically its own operating system).
One could argue that the modern web browser with its integrated tooling for javascript is a reasonable modern interpretation for this. Note the similarities that the web-browser is almost its own operating system in this scenario as well
> We could view my investigations of Cookie Clicker’s mechanisms as ‘basic research’, i.e., research without an immediate application in mind.
> But perhaps the simplest way to view this episode was as a playful, recreational activity which through sheer dumb luck gave me the skills needed to solve an important problem in my work life.
I see it capturing my joy of using GPT-4 on ChatGPT, with its cap of 25 messages every 3 hours. There's a joy in exhausting the limit for each session (may be that's what gamification is). Not able to do for full day, as got to sleep for >3 continuous hours, but exploring topics besides day to day work as a result :)
Learning I am doing, how much useful - not sure.
It really doesn't. It's much harder in every ecosystem except the web. Just shipping software to people at all is harder on every other platform, before even discussing how it's built.
Back in 1990 I was several years into a PhD in neural networks, having
fun, but not really making especially useful progress. I spent a lot
of time trying to get some simulated bugs to learn to move around,
find food, and generally learn how to be better bugs. To help me
understand why my learning algorithms didn't work, I'd written a nice
graphical user interface, and generally camped out on a lovely Sun
workstation belonging to some defunct research project, at least whenever I got
to it first.
About that time, the Bank of England issued a new five pound note and
made huge claims that it could not be scanned. Supposedly they had
designed in loads of high detail textures that would show weird
aliasing artifacts on the 300 dpi colour scanners that were state of
the art at the time. Challenge accepted! The Sun workstation I camped out on just happened to be connected to a nice 1200 dpi monochrome scanner. I
went to my friends at the university theatre and returned with a whole
stack of different coloured gels from the theatre lights. Then I took
a whole series of scans of a £5 note through the various coloured
gels, and wrote software to combine multiple monochrome scans into a
colour image and re-align all the layers properly. As a result, my
screen background was a perfect image on a supposedly unscannable £5
note.
Six months later, I ran out of funding for my PhD without very much to
show for it, but didn't fancy joining the real world. There were two
research projects needing people, and I very much liked the idea of
one on surgical robotics for neurosurgery, but I guess that was too
ambitious and didn't get funded in the end. The one remaining project
was on multimedia conferencing. Now, as an undergrad I had avoided
all the classes on networking as I thought they would be boring, so I
was spectacularly unqualified to do research on networked multimedia,
but I applied anyway as I didn't really have any alternatives left.
Of course the first question at interview was ``So, what do you know about
multimedia?''. The honest answer would have been that I didn't know
much at all, but that didn't seem to be what the Professor was hoping to hear. I
couldn't think of anything else to talk about, so I told him all about
faking £5 notes.
A couple of days later I was really surprised to get offered the job,
and a decade or so later, it was me that became Professor of Networked Systems.
All because I couldn't resist the challenge to copy a £5 note.
Did you ever do anything with the £5 story at the time? I can imagine just that project would be enough material for a paper that you could at the very least send to the Bank of England to show their premise was false.
Good question - I guess at least I showed I could figure about for myself how GIF images work, and showed some initiative. I never asked the Professor if he actually had any other qualified applicants for the job - maybe I was the only one - but if so I'd rather not know.
If someone is vaguely smart and has the right morals and virtues you will likely be better off with them than someone who doesn't but is otherwise more skilled at the moment.
I've never played cookie clicker, but I have a hard time imagining that it can hold a candle to universal paperclips. Never has such a pointless game made its point so well.
Universal Paperclips has the best story out of all the idle games I know, but it's not the best game. For one thing, it has very limited reset/prestige mechanisms, and the expansion mechanism in the final phase is very opaque and can mislead players into frustrating dead ends.
Ah Cookie Clicker's got fancier graphics (although they're kinda heavy, I'd turn them off) and it goes... eldritch at some point. It's definitely the longer of the two to play, I recall finishing Paperclips in about three slow workdays.
There's one, I don't think Cookie Clicker has an ending. It's got countless multipliers, but eventually you're completely out of upgrades and achievements and it just sort of peters out in diminishing returns.
One remark though: if you've been playing for a while, save & back-up your save games. It stores progress in a cookie (I think) and they have a tendency to expire / get lost after a while. I just opened it up (it seems I last played a year ago) and it started a new game, but I had it backed up. Save before you stop playing.
When I first played paperclip I didn't know it was based on that thought experiment. I felt silly a year+ later when someone made the connection for me.
ugh... I can't remember the name someone posted a game here before web-based, you're in a terminal/folders structure, as an AI trying to escape into the net
> Previously, this might have taken me weeks. With JavaScript, I built the prototype in hours.
I really like web/html/javascript for building UIs for this reason. It's really fast to prototype and get something decent looking/working, it has a very fast edit-compile-run loop (if you don't use any fancy tooling, as fast as you can press CTRL-S, Alt-Tab, F5), great debugging tools, and in the end, your product immediately works cross platform, both on desktop and mobile!
How is this in any aspect better than Delphi from the ‘90s? And you get about the same performance with JavaScript on a modern CPU as ObjectPascal on an old Pentium.
Instant global distribution, to anyone with a computing device who enters the name of your app in a text box. Developers all over the world are paying billions per year in lost productivity for that killer feature. It's so easily worth it.
I still force XHTML-style markup for HTML5 applications. Maybe it's my experience that is the real problem-solver, but I feel sticking to very strict markup reduces a number of bugs that are extremely hard to solve.
I played Swarm Simulator on iphone for a good while, it's a pretty compelling idle game.
I'd say my main issue with idle games is how much they reward you for active play. In Cookie Clicker's case, at random, golden cookies will appear that when clicked apply a random boost, e.g. a 7x multiplier. Eventually you unlock upgrades so that another one may appear while the boost is active, leading to a double boost. The ultimate combination involves a multiplier, a boost to cookies per click (again active), then selling a lot of buildings for an additional short-lived bonus, then clicking like mad.
You can earn a year's worth of idling / not playing within a minute then. If it's not more.
Semi-related, I was idly wondering the other day why we don't see more "F12 Zines" like the "BASIC Zines" of the 70s and 80s. You could collect all sorts of neat little bits of JS that run easily in the browser's Dev Tools (F12) and introduce simple programming concepts from whatever browser they already have available on their machine. Dev Tools have gotten to be impressive REPLs with surprisingly deep IDEs. There's probably an interesting "punk" experiment in trying to open that to people of all ages interested in exploring it.
Imagine the wonder of introducing the right sorts of curious people to the magical world of "about:blank" and from there hitting F12 to go on a journey of making it not quite so blank anymore.
My guess is the lack of income from providing this information from a browser vendor (who are all mostly Chromium based, so there's no reason to offer anything that makes it easier to use their specific browser), and the number of companies that have popped up offering to sell you tutorials on web development.
I am in my almost mid-40's, so I got to watch the web grow, and have my skills grow with it. Reading uncompressed source code from libraries like PrototypeJS/Scriptaculous, and early jQuery, along with the custom code per website, definitely made me the developer I am today (in regards to web development, although desktop tools have definitely gotten better, as well).
Well, the problem is rather, that JavaScript is a pretty bad language (nobody claimed otherwise, when it was designed in 10 days), so that using something like TypeScript makes it much better. Unfortunately your browser understands JavaScript, not TypeScript.
That's the immense tragedy of web development: It's a giant pile of excrement, because it's built on several things that were never meant to be what they are used for today.
It's also why I left a long time ago, and never looked back.
Interpreted languages are so improved by lengthy build processes involving compilers, linkers, transpiration, and sixteen different kinds of incompatible package formats, I don’t know why anyone would eschew them.
Node? Who uses Node for anything serious in 2023? Real backend coding today is done using Bun. And yeah, you can write something in JavaScript, but it definitely won't scale and will constantly throw errors. Pretty much all serious frontend code today is written in Typescript across the board. /s
I very often write little scripts that I can just copy and paste into the console in dev tools. Sometimes I even do this in customer demos to show what our product would look like in their web pages. To many people it really seems like magic.
The title is a bit hyperbolic but I enjoyed the sentiments nonetheless.
I definitely remember as a kid learning Lua scripting because of video games. Just going over forum posts trying to make my own games or break other games.
Definitely gave me the basis to rocket ahead when I took a formal CS class.
I think for vanilla GUI where you only need readily available vanilla components, Java is fine. But I suppose you would be in for quite an adventure if you intend to do a lot of highly customized user interfaces. The curse of JavaScript is that you can readily devise newfangled componentry so easily that as a user, you end up with all sorts of unpredictable things where straightforward tasks become much harder thanks to endless gadgetification and whizbangery. The idea of "standard" flew out the window long ago.
It would be exaggeration to say QWOP has become the new normal, but only by so much...
Eventually we'll get tired of this and straighten up, I'm sure. Maybe menu mnemonics will make a comeback (they really are a good idea).
I'd love to try to prototype a GUI that harmonizes GUIs with keyboard accessibility; bring back some external component model to script them again, put some sort of effort into making that scriptability discoverable for users and easier to maintain for developers than Applescript was, make it easy to give and surface expert-level shortcuts, make it so keystrokes are buffered across contexts so you can develop expert-level skills in pre-keying what you want the UI to do even before it pops up (one of the reasons why you had to pry the console-based point-of-sale software out of customer's services hands at gunpoint), and just generally make something useful for experts again... but it's years of effort to even prototype such a thing to the point where it's useful for anything. GUIs are stuck in the 20th century because they're just so big.
I recently have undertaken a little side project that at first I assumed I was going to need to pick up an Arduino and hack together some physical inputs, LEDs for an interface, and a speaker. It wasn't until I started shopping around for pieces and learning about the tech stack that I realized I could just take my old phone, pop open a browser, and prototype it that way.
There's a lot of complaints that not everything should be in the browser, and that's very true for a lot of cases, but it's extremely empowering that anything _could_ be in the browser, at least for your MVP.
It seems that that was the experience Smalltalk was aiming for back in the 1980's with it's totally integrated development environments (integrated to the point that it was basically its own operating system).
One could argue that the modern web browser with its integrated tooling for javascript is a reasonable modern interpretation for this. Note the similarities that the web-browser is almost its own operating system in this scenario as well
> But perhaps the simplest way to view this episode was as a playful, recreational activity which through sheer dumb luck gave me the skills needed to solve an important problem in my work life.
I see it capturing my joy of using GPT-4 on ChatGPT, with its cap of 25 messages every 3 hours. There's a joy in exhausting the limit for each session (may be that's what gamification is). Not able to do for full day, as got to sleep for >3 continuous hours, but exploring topics besides day to day work as a result :) Learning I am doing, how much useful - not sure.
I moved towards ML later. I do no interaction with the web whatsoever other than a Flask web app once or twice a year for higher ups' pet projects.
I want to feel the joy of web again as a hobby and maybe side projects.
How do you think Phoenix will fit? I write programs in functional way and somewhat know Elixir.
Do you recommend me learning Phoenix?
About that time, the Bank of England issued a new five pound note and made huge claims that it could not be scanned. Supposedly they had designed in loads of high detail textures that would show weird aliasing artifacts on the 300 dpi colour scanners that were state of the art at the time. Challenge accepted! The Sun workstation I camped out on just happened to be connected to a nice 1200 dpi monochrome scanner. I went to my friends at the university theatre and returned with a whole stack of different coloured gels from the theatre lights. Then I took a whole series of scans of a £5 note through the various coloured gels, and wrote software to combine multiple monochrome scans into a colour image and re-align all the layers properly. As a result, my screen background was a perfect image on a supposedly unscannable £5 note.
Six months later, I ran out of funding for my PhD without very much to show for it, but didn't fancy joining the real world. There were two research projects needing people, and I very much liked the idea of one on surgical robotics for neurosurgery, but I guess that was too ambitious and didn't get funded in the end. The one remaining project was on multimedia conferencing. Now, as an undergrad I had avoided all the classes on networking as I thought they would be boring, so I was spectacularly unqualified to do research on networked multimedia, but I applied anyway as I didn't really have any alternatives left. Of course the first question at interview was ``So, what do you know about multimedia?''. The honest answer would have been that I didn't know much at all, but that didn't seem to be what the Professor was hoping to hear. I couldn't think of anything else to talk about, so I told him all about faking £5 notes.
A couple of days later I was really surprised to get offered the job, and a decade or so later, it was me that became Professor of Networked Systems. All because I couldn't resist the challenge to copy a £5 note.
But why did the professor thought you scanning a bill had much to do with networked multimedia?
There's one, I don't think Cookie Clicker has an ending. It's got countless multipliers, but eventually you're completely out of upgrades and achievements and it just sort of peters out in diminishing returns.
One remark though: if you've been playing for a while, save & back-up your save games. It stores progress in a cookie (I think) and they have a tendency to expire / get lost after a while. I just opened it up (it seems I last played a year ago) and it started a new game, but I had it backed up. Save before you stop playing.
Deleted Comment
I remember the first time that I played it, knowing absolutely nothing about it. It goes so much deeper than I had anticipated.
As a heads-up, there is more than one ending!
https://conicgames.github.io/exponentialidle/
I even bought a zipper after I played it because it impressed me so much. It was rather expensive but the quality was pretty poor.
I really like web/html/javascript for building UIs for this reason. It's really fast to prototype and get something decent looking/working, it has a very fast edit-compile-run loop (if you don't use any fancy tooling, as fast as you can press CTRL-S, Alt-Tab, F5), great debugging tools, and in the end, your product immediately works cross platform, both on desktop and mobile!
(I grew up on Delphi).
/s
I do use fancy tooling (an editor with autosave and a framework with hot reloading), and my edit-compile-run loop is as fast as I can press Alt-Tab ;)
https://www.swarmsim.com/#/
https://conicgames.github.io/exponentialidle/
https://apps.apple.com/us/app/exponential-idle/id1538487382
https://play.google.com/store/apps/details?id=com.conicgames...
I'd say my main issue with idle games is how much they reward you for active play. In Cookie Clicker's case, at random, golden cookies will appear that when clicked apply a random boost, e.g. a 7x multiplier. Eventually you unlock upgrades so that another one may appear while the boost is active, leading to a double boost. The ultimate combination involves a multiplier, a boost to cookies per click (again active), then selling a lot of buildings for an additional short-lived bonus, then clicking like mad.
You can earn a year's worth of idling / not playing within a minute then. If it's not more.
Imagine the wonder of introducing the right sorts of curious people to the magical world of "about:blank" and from there hitting F12 to go on a journey of making it not quite so blank anymore.
[0] https://blog.haschek.at/2014/why-hackits-are-the-first-thing... [1] https://www.0xf.at/
I am in my almost mid-40's, so I got to watch the web grow, and have my skills grow with it. Reading uncompressed source code from libraries like PrototypeJS/Scriptaculous, and early jQuery, along with the custom code per website, definitely made me the developer I am today (in regards to web development, although desktop tools have definitely gotten better, as well).
Well, the problem is rather, that JavaScript is a pretty bad language (nobody claimed otherwise, when it was designed in 10 days), so that using something like TypeScript makes it much better. Unfortunately your browser understands JavaScript, not TypeScript.
That's the immense tragedy of web development: It's a giant pile of excrement, because it's built on several things that were never meant to be what they are used for today.
It's also why I left a long time ago, and never looked back.
I definitely remember as a kid learning Lua scripting because of video games. Just going over forum posts trying to make my own games or break other games.
Definitely gave me the basis to rocket ahead when I took a formal CS class.
Dead Comment
It would be exaggeration to say QWOP has become the new normal, but only by so much...
Eventually we'll get tired of this and straighten up, I'm sure. Maybe menu mnemonics will make a comeback (they really are a good idea).