4 ms·
> There's an enormous difference between claiming that "you can also just drop files on your server" and have a running application You're definitely right, bu
by pwdisswordfish9 4y ago
> There's an enormous difference between claiming that "you can also just drop files on your server" and have a running application
You're definitely right, but the entire lament seems like a lot of special catering for the convenience of an audience that is technical enough to write PHP, but isn't particularly accommodating to, like, the actual masses of people out in the world who are not and will not ever be inclined to wade through the issues inherent to setting up a shared hosting plan with a PHP provider and hashing out their craving to publish by fiddling with templating code.
The author of this piece has a lot to say about SPAs and other client-side fads, which is fair. Lots of what makes up current trends in the "modern" Web is an abomination. But the PHP application/deployment model they advocate for is nothing special wrt the affordances it makes for non-technical folks, nor is it a particularly good implementation of TBL's original vision for the Web—despite the implicit ("explicit"?) claims in the article to the contrary. On both of those fronts, stuff like Zonelets <https://zonelets.net/ https://zonelets.net/> has moral superiority (despite its being basically a toy). The essence of Zonelets is also, at a fundamental level, much closer to what we see with SPAs than the "mildly dynamic websites" of yore.
- hlandau 4y agoAuthor here. One thing that occurs to me is that it seems to me that there's a lot of "dark matter" programmers out there, which we don't often interact with. These are not professional programmers but they tinkered with it at some point, possibly out of curiosity, possibly out of necessity. These people maybe wrangled with PHP because they had to to get the website they wanted back then. These people may drift out of doing any programming as and when it becomes unnecessary. It's similar to the sentiments expressed with GeoCities, where you had web design being done by amateurs who weren't very good at it. Nowadays they probably use some kind of site generator and aren't exposed to HTML at all. Of course one can say that these these things are better left to professionals, but it's clear I'm not the only one with a clear sense that we've lost something here. Neocities, for example, is a clear reaction to that. It's similar to how home computers used to boot to a command prompt and now they don't. They essentially invited you to learn how they worked, whereas the modern desktop computing experience tries to seem as magic as possible. Many people of a certain generation probably learnt to program as kids on these old 8-bits because the machines themselves basically invited to. As a professional programmer now I'm genuinely unsure what I would recommend to a child of the same age today.
- pwdisswordfish9 4y agoThoughts on Zonelets (linked earlier)? It's very much in that GeoCities/Neocities niche, without being PHP or PHP-alike/-adjacent. (See also: <https://ichi.city https://ichi.city>.) Once you have something like that, you can do a lot with some way to process basic forms. (On that note: <https://riku.miso.town https://riku.miso.town>.) The KBFS-backed keybase.pub and the never-officially-launched Keybase Pages also had such huge potential.
- hlandau 4y agoThese all look interesting and I'm looking forward to exploring them. I've already quite some fun discovering new warrens of the indieweb in the wake of this article. I haven't felt this way browsing the web in, say, 20 years? ;)
- woojoo666 4y agoYou definitely have a point that we are getting further and further abstracted away from the lower level workings. And perhaps we lost something along the way. I just don't think what we lost is the UX, the dynamicity gap that you alluded to in the article. From my experience UX is crucial for beginners, and if PHP truly had a better UX for simply apps and for beginners, it would not have dwindled so much in popularity
- kragen 4y agoMost beginners nowadays are instead using something like Wordpress or Squarespace. I agree that UX is crucial.
- kragen 4y agoWhat was it that motivated you to program those old 8-bits? For me, it wasn't the command prompt; it was graphics, sound (especially speech synthesis), and games. Based on that, some ideas about what to recommend, based on zero actual experience teaching kids to program: 0. Arduino. You can make colors and sounds that aren't locked in a box and that communicate over infrared. You can drive motors. In some cases, you can repurpose parts from existing consumer electronics. I had the privilege one weekend of helping out with a beginner programming class for artists; in about four hours they went from not knowing what a variable was to being able to program the robots they'd been given to follow a line around a racetrack. (Adults, but evidence suggests Arduino is good enough for kids too.) 1. Minetest. If they like Minecraft, Minetest is a Minecraft clone where they can write mods in Lua. This requires juggling a lot of files, and it can be difficult to figure out why existing mods are doing one thing or another, but you can add new mobs and blocks to the world that affect existing ones in a wide variety of ways. You can play it on your phone, even hosting a server, but there isn't a reasonable way to edit mods on your phone. And if you've spent a few hours playing Minetest the things in the simulated Minetest world can seem very real to you, which makes programming them more appealing. 2. Scratch or, on Squeak, EToys. A lot of kids seem to find Scratch easy to start out with but then want to switch to a textual programming language because they see it as more "grown up". And to be fair Scratch does have some real intrinsic limitations. EToys has maybe a smoother path to full Smalltalk but kids may not be impressed by full Smalltalk if they don't see adults using it. 3. Browser JS. The applicability and deployability is super high, and the barrier to entry here is pretty low if you have a desktop browser: type data:text/html,<a href="javascript:alert('hi')">x into the address bar. Graphics, sound, and multitouch APIs are available. You can easily load in images, including animated GIFs, composite them with alpha, and move them around and stretch them. For more elaborate graphics there's both a pixel-based <canvas> API and a vector-based SVG API. You can draw SVGs with Inkscape. You can render a fractal in <canvas> in an OG Tweet, though color costs a few more bytes: <canvas onclick="c=this.getContext('2d');function d(x,y,k){ c.fillRect(x,y,1,1);(k/=2)>1&&(d(x,y,k),d(x,y+=k,k),d(x+k,y,k)) }d(0,0,150)"> By putting your JS into a bookmarklet you can use it on pages you didn't write, including things like Fecebutt. The developer tools in the modern clones of Firebug (browser console, element inspection, CSS editing) are absolutely first class. Unfortunately a lot of this is limited to desktop browsers because vendors have deliberately crippled the browsers on hand computers; those are for consumers, not creators. Video games are very doable in browser JS, and the situation has improved significantly in the last five, ten, and twenty years. Beginners, especially kids, would probably benefit from a game engine library here because they don't know how to combine constructs to solve problems yet. I wrote http://canonical.org/~kragen/sw/dev3/invaders http://canonical.org/~kragen/sw/dev3/invaders one day last March, but that's four pages of code full of arcane constructs like row.push((x / barricades.dx / 2 + 12) % 16 < 8). I refactored a game engine ("qj2d") out of it and got http://canonical.org/~kragen/sw/dev3/qvaders http://canonical.org/~kragen/sw/dev3/qvaders, but I haven't tried to teach anyone else to use the game engine, and it has some stumbling blocks and boilerplate. Chris DeLeon demonstrates coding Pong in Notepad with <canvas> in 5½ minutes in https://youtu.be/KoWqdEACyLI https://youtu.be/KoWqdEACyLI as a teaser for a longer course. JSFiddle and similar services make it easy to anonymously share your work without signing up for a hosting plan. 4. Micropython, or Adafruit's fork, Circuitpython, as an alternative to the Arduino environment. Circuitpython is focused on getting beginners, especially kids, up and running with a smooth UX. What we were saying above about dropping PHP files in a directory on a server to run them? Well, with Circuitpython you drop Python files in a directory on a USB device to run them. AFAIK they don't run on the AVR that's in the traditional Arduino boards but they do run on another half-dozen types of microcontrollers, mostly ARM. 5. Proce55ing. The Arduino IDE is a fork of the Proce55ing IDE, which is optimized for making mouse-interactive graphics on the CPU, but it can also straightforwardly do sound, integrate with additional sensors and actuators, load GPU shaders, and so on. It's been demonstrated to be very accessible to adult beginners, and I think it works for kids too. You can export the results as Android apps. It normally uses its own Java-like language but there are also JS and Python versions. 6. Shadertoy. There are a lot of graphical effects that are straightforward to achieve on in a shader on the GPU but difficult or impossible to achieve on the CPU, and the Shadertoy website makes it easy to get started with that; you can edit the shader live and see the results in your browser, and save it to a URL. Also maybe check out Patricio Gonzalez Vivo's The Book of Shaders. 7. PyGame, the Python binding for SDL. You can write games in PyGame (solarwolf is in apt, and you can find others with apt-cache rdepends python-pygame) but also it's good for the kind of interactive graphical art Proce55ing is great at. You can get a blue rectangle on the screen as simply as this: #!/usr/bin/python from pygame import * pantalla = display.set_mode((0, 0), FULLSCREEN) draw.rect(pantalla, 128, (50, 100, 200, 400)) display.flip() time.delay(2000) And work up from there. That's https://github.com/kragen/pyconar-talk/blob/master/helloneg1.py https://github.com/kragen/pyconar-talk/blob/master/helloneg1..., which is one of a series of examples I wrote for a talk on this 11 years ago. 8. Godot.
- kragen 4y ago"Technical enough to write PHP" is similar to "technical enough to drive a car," "technical enough to write formulas in Excel," "technical enough to edit Wikipedia," or "technical enough to write a Hypercard stack". Empirically, it's highly accessible to people who don't know how to program, even though it's not a good implementation of TimBL's original vision for the web, or of Ted Nelson's original vision for "hypertext".
- pwdisswordfish9 4y ago> [PHP] is highly accessible to people who don't know how to program The commitment to this claim is the source of contention. On "technical enough to write PHP" vs "technical enough to drive a car": there's a much lower barrier to entry for the latter than the former. The latter is about the same as merely operating a computer. Derping around in PHP is def a level above that.
- kragen 4y agoIn both cases we're talking about a total training time of a few hours. My experience taking driving lessons and watching intro-to-programming classes make me think it's more like 1 hour to get productive with PHP (or Arduino, or Hypercard, or Excel) and 10 hours to drive a car safely without a driving instructor, but you could be right that it's the other way around. Regardless of theoretical considerations, it's clearly the case that at least hundreds of thousands of people have used PHP without previous programming experience, and from talking to them (and maintaining their code, eugh, and worse, tweaking their servers—via TeamViewer on one occasion) I think the dirt-simple deployment model is a major enabler of that. They don't have to learn about decentralized version control and build processes to get something running.