Consider Ruby on Rails. It was the most beginner-friendly way to create a web app when it was popular, but the very things that made it that way - opinionated design, sacrificing speed/correctness/scale by using Ruby, "batteries included", and a cultish fanbase that drew new users to it - made it the target of justified criticism from experts who wanted flexibility, type safety, speed, lightweight design, fewer CVEs, and fewer annoying fanboys. Flash came under fire for similar things: performance issues, poor UX when used in the wrong place, constant security vulnerabilities, being a proprietary standard.
These are actually good criticisms! There's no shadowy cabal who arranged feigned outrage over flash vulnerabilities, people were genuinely upset that a proprietary piece of software was turning their browser security into a sieve and stopping screenreaders from working. The criticisms just failed to ask why it was so popular with beginners anyway.
From personal experience, and from the (continuing) weekly HN "Hiring" posts that are looking for Rails devs, Rails is popular because it allows you to build an MVP for an entire product or company over a week. It gets rid of all the distractions when it comes to assembling the perfect stack and just works. It's not perfect by far, but, like Flash, it allows you to shortcut the technical work and get right to the creative work.
Software is one of those spaces where there is an incredible amount of capital invested in making things easy for the lowest common denominator.
There are so many resources for people of any age and background to learn practical skills in this field. There are summer camps where 7 year old kids learn to program.
I'd say if you really want youth interested in technology, you basically need a "montessori model" for computers. I don't believe that's likely to happen in school; you need funding, which requires measurable results. There's also too much bad stuff on the internet for schools to run that risk at that scale.
There are two rough classes into which I would break "tech guys". The first is the sort who enjoys it for what it is. Shaves yaks configuring his system, tries out new languages for the heck of it, that sort. The second has a perfectly respectable career in software, and enjoys other things when he comes home at five p.m. I'm not saying one is better or worse, but at seven years of age, you'll only have the few of the first type _really_ interested. Type two will often switch to a different toy once frustrated (i.e. upon a serious bug). You can't expect everyone to derive the same level of marginal benefit from just playing with tech.
Type twos necessarily better or worse, but we don't put kids into "plumbing boot-camp" at seven expecting them to develop life-long passions. Maybe a few will, but not many. To put it another way, you'll get a lot more kids into architecture letting them play with legos free-form than handing them a kit and saying, "Build this model by following the instructions."
There's no question to me that early exposure and encouragement makes all the difference in educating kids. I can't understand why we're not engineering experiences in all these different fields for kids to build real stuff that can eventually turn into a trade. If you're a kid, even today, and you want to learn an adult trade young, your options are still pretty much just artist or programmer.
If there was a way to start doctors or lawyers young, maybe it'd make a difference. As a kid, I knew one girl that was a hospital volunteer, and she ended up going to Africa as an adult to try and make the world a better place by helping others. People don't realize how activities in formative years really stick with kids.
Instead of giving kids meaningful work, we're raising a generation that's going to be great at self-promotion and fortnite.
Our entire school system is wrong. :) I am working on it. We force parents to go to school and that is wrong.
The key to rapid education is teaching the correct subjects. All science is functionally math. Physics is math and chemistry is math. Music is math. All written homework is functionally English. Art is functionally understanding of light and shadows, which is best taught through photography. Photography decouples ability to render (drawing) from ability to compose. Until the child is fluent at algebra and written English, teaching other subjects except for athletics relies on the child's innate talent or, more likely, their parents.
In other words, you cannot swap all time for study of english and mathematics and expect to simply achieve twice as much in english and mathematics.
Learning 45 minutes at a time is silly. It's far more effective to master one concept at a time.
Logic comes with math. I haven't fully thought it through, but my initial goal is to eliminate the need to rely on parents to do well in school.
> The first is the sort who enjoys it for what it is. Shaves yaks configuring his system, tries out new languages for the heck of it, that sort. The second has a perfectly respectable career in software, and enjoys other things when he comes home at five p.m.
I have found out that these are not in opposition at all. In fact, workplace that holds you in 80 hours a week largely prevents trying out new tech. People dont stay long because trying out new toys. If they do, then they are being dishonest with employer, honestly. They stay long because of stress, pressure, disorganization, etc.
The conflation of the two really not logical, it does not even makes sense. Why cant you go home at 5 and "try out new languages for the heck of it" wherever you feel like? Should you even try out that new language production project? (you should not)
This is true for _education_, however the design of the tooling itself, as well as the purely code-based interface with which we like to rely on (no WYSIWYG or visual creative tools) is what makes it creatively difficult
Compare the experience of making some HTML5 canvas game to making a song in modern day DAWs. In the latter there has been so much investment into improving the workflow and the quality of the software to make the creative experience smoother. In programming, almost no effort is put into the creative experience, outside of niche fantasy terminals (e.g. PICO-8)
But these kids, the clever and curious ones, they'll find this on their own too, and truly many more cool and free things to create stuff with online. A few years back, they were all over these free github student developer packs, especially the credits for a Digital Ocean droplet server, which they used to host sites, minecraft servers (IIRC) or Discord bots.
...perhaps you mean the countless drag-and-drop code-free frameworks that enable people to create apps without writing code? Or that a basic Swift tutorial to do just that takes about 15 minutes, including downloading Xcode? I just can't understand this confused nostalgia.
Ironically, actual embedded devices are far easier to program, with Arduino. You type your code in a window (with all boilerplate and build system abstracted away) and click a button, and boom it's compiled and uploaded and running. This is because it was designed to be easy to use - ostensibly to teach young people, but in practice it means lots of hackers use it too.
Yep, it's never been easier
90% of apps can be replicated as web pages, which are far, far easier to program and deploy. Frameworks do add a lot needless of complexity for little benefit. The reason is not a "test of worthiness" though - the purpose is developer lock-in and make it as much difficult as possible to switch to the competing platform. The only way to win this game is not to play
Although when people start arguing that programming a web page is easy, it really brings home how awful modern programming is, and how long it has been since there was widespread usage of really decent and simple RAD tooling.
Or if one shells out to Delphi, RemObjects, Xamarin, Qt.
And ruffle-rs[2] is a reimplemenation of the flash player itself in Rust. (So you'd still be using ActionScript for authoring)
[1]https://www.openfl.org/ [2]https://github.com/ruffle-rs/ruffle
The first beginner tutorial is about displaying a bitmap and starts with a terminal [1]. This is not as discoverable as Flash’s tools, which felt more like MS Paint when first opened.
[1] https://www.openfl.org/learn/haxelib/tutorials/displaying-a-...
But why reinvent the wheel? I think that the key to Flash's success is in its roots as an excellent, intuitive vector graphics editor called SmartSketch. (Way easier to use than Inkscape, IMO) They added animation to compete with Macromedia Shockwave in 1995, and the rest is the well known history of corporate greed and a victim of its own success.
The Flash IDE is still around, however (https://www.adobe.com/products/animate.html), but Adobe's giving it up at the end of 2020 :( I can only hope that they open source it.
A light, friendly version is Flash 5. It's available online (http://www.oldversion.com/windows/macromedia-flash-5-0), weighs in at a whopping 18 MB, and still works on Windows 10!
Anyway, Flash 5 Player .swf files can be exported as standalone .exe "Projectors". For example, the IDE tutorial one (https://www.sharhon.com/files/flash5test.exe) stands at 405 KB and still runs on Windows 10 as well. Surely it would be possible to wrap _real_ Flash projectors in a WebAssembly Windows NT emulator using a drag-and-drop webpage...and let the games begin.
The Flash IDE, now called Animate, continues to be developed by Adobe. They have not announced an end of life for this tool. It will still be updated after 2020. In fact, it can now export a variety of new formats other than SWF files for Flash Player, and they've been expanding the animation features quite a bit in recent years.
It's unfortunate that many people are confused about what exactly Adobe has discontinued. So many people in this thread are lamenting that this user friendly animation tool no longer exists as a starting point for new users, when in fact, it does and will still be in active development beyond 2020.
(AS1 is gone too, it was something you had to write by selecting verbs in a massive dropdown, and good riddance to that.)
Animate really isn't as simple to use as Flash is, and bluntly in the modern Era the CC suite is too expensive to get those young users.
I wonder if Affinity will have a go at this in the long run.
There is a workflow you can use with a custom Adobe Animate plugin that lets you use Adobe Animate as your authoring tool.
I think an interesting part of my experience was that it started with watching. I just loved the videos and thought they were hilarious. I admired the people who made those videos and I wanted to join that circle of creators. And Flash didn't prevent me from doing that. Not only that, but it was a specific low-effort style of animation. The path from consumer -> producer was short.
So really, I think you have to look at what people are consuming, and then try and make it easy for them to "participate." I'm not sure if people are consuming Flash-style animations anymore. (Maybe they are, and I just aged out of the demographic.)
It seems like a lot of that creative energy has moved to sandbox games like Minecraft for now, where that community of creators and would-be creators still exists, and away from animation and Web design.
They realize that there's no magic; all it takes to make something nice is a little knowledge, and a lot of work.
From what I've seen of Fortnite, it promotes a different kind of creativity, which is more like creative problem solving (boxing people in, riding rockets, etc.) But it does have a sandbox mode that I've seen some interesting creations from.
It's a great animation tool with a great learning curve, I'm surprised Adobe isn't doing more to get it in the hands of teenagers^w young creators.
And on that point it seems that Flash helped to kill itself by accelerating ubiquitous web video.
The 2D GUIs of many 3D games were written in Flash. There are non-Adobe Flash players which can be embedded. The advantage was the authoring tools - the GUIs could be elaborate and graphical without much effort.
As a kid, I could kinda understand how to go from programming in Basic to Pong or Space Invaders.
A kid these days has _so_ many more expectations if they're wondering how Fortnite works...
I had enough hubris as a 12/13 year old to write Space Invaders in ascii in Basic on an Osbourne2, and later to get a quite creditable imitation using sprites on an AppleII.
I wonder if kids these days look at computers and think "I could do that" about anything they care about?
Kids may not no how to go from BASIC to a video-game- but they don't have to write their games in BASIC. There are point and click game studios, there are really great physics engines available, there are libraries that attempt to make it simple.
I remember learning how to build mods in minecraft ~10 years ago- there were tools out there that allowed you to make creatures or blocks that inherited behaviors programmed in other parts of the game- and you could do a lot with that!
I've not tried to do anything like a game for decades, I'm kinda curious about that readily available tools kids could get their hands on these days... Closest I think I've come is launching Scratch from a RasPi's stock linux install...
I've heard great things about 001 Game Creator (free for 7 days, then $60) for more substantial use.
For example, apps that run directly on mobile platforms (specifically, ones that don't need to connect to the 'cloud' to do their compiling):
- For iOS: Codea [1] (Lua), Continuous [2] (.NET), Swift Playgrounds [3] (Swift), Play.js [4] (Node.js + React Native) plus probably more (on that note, I really hope Continuous isn't abandoned, but it doesn't seem to have been updated in awhile).
- For Android: AIDE [5], TIC-80 [6], probably others (I'm not as familiar)
Moving up from mobile, you have FUZE4 Nintendo Switch [7] for the Nintendo Switch (excellent, but needs a bugfix update as there's lots of little annoyances). Probably the most kid-friendly thing there is right now IMHO, if you take into account the platform.
On the PC, there's just a huge amount of stuff. Minecraft [8], GameMaker [9], GDevelop [10], Godot Engine [11]. These are at least suitable for early teens.
[1] https://codea.io/ [2] http://continuous.codes/ [3] https://www.apple.com/au/swift/playgrounds/ [4] https://playdotjs.com/ [5] https://www.android-ide.com/ [6] https://tic.computer/ [7] https://www.nintendo.com/games/detail/fuze4-nintendo-switch/ [8] https://www.minecraft.net/en-us/ [9] https://www.yoyogames.com/gamemaker [10] https://gdevelop-app.com/ [11] https://godotengine.org/
Note: Yes, obvious game-making bias here :)
It’s an incredibly powerful and easy to use game/interactive-app maker that can export packaged programs to Windows, OSX, Linux, and HTML5, then with additional licensing/fees to game consoles.
It has a drag-and-drop mode for absolute beginners that can let someone with zero experience be creating simple games in their first weekend playing with it.
Then it has GML mode which is their programming language with excellent documentation and a decent community cranking out tutorials and guides, which has put out some seriously legit indie games such as Red Strings Club, Hyperlight Drifter, and Hotline Miami.
It’s also not just for games. It’s great for making interactive stories (I’ve made interactive kids books with it), HTML5 demos and interfaces, 2D physics demos, and even does basic 3D stuff.
(Not affiliated just a big fan and use it extensively).
But I would suggest Godot as an alternative for beginners now. Even though I don't like the proprietary scripting languages either uses by default, between GML and GDScript, the latter seems more powerful, and thus more educational. You can do "drag and drop and make a game for some defnition of a 'game'" in any of the modern game frameworks. But really, that only teaches you how to use the GUI, not how programming works.
Also Godot has a version that uses C#, and there are bindings for other languages out there (I don't know how complete or useful they are, though) whereas unless I'm wrong, with Game Maker you're stuck with GML.
I do hope to start publishing some children's games and educational interactive stories one day though, I just need to find an artist (or practice more myself).
If by "framework" you mean "easy to use tool" then I agree.
Programmers are often the last people who should design tools - they dont bat an eye at having to edit a config file, tweak settings, install plugins, manage dependencies, run a compiler or other batch processing tool.
I think there will always be easy ways to break into tech, they just might change from year to year.
You can still make crappy HTML pages with very basic inline JS, but if you're a kid starting out, that's not enough. You should probably learn a JS framework and some graphic design if you don't want it to be laughed at.
Our field is just becoming more mature and advanced. Cars used to be easier to work on, too.
The vast majority of coding should be end user programming. The collective we just wants to own the tools and the jobs.
Developers are users as well, and I think too many fail to understand this.
Whatever tooling makes it easier to develop for, means that I can focus on other parts of the problem.
I don't miss working like I did during the late 80, early 90s. Our computers are so much better for them to be reduced to a green phosphor VT-100 terminal.
End users are way smarter and more capable than programmers give them credit. Applications should be empowering users not capturing them in a walled garden fed by their masters.
So much this. Every time someone harps about this or that great terminal application that looks worse than even MS-DOS applications from the late-80s (when most users had moved on from MDA cards) i die a little inside.
https://en.wikipedia.org/wiki/Professionalization
It's natural to want your job not to be turned over to the CEO's 14 year old son.
The CEOs 14 year old son is a straw boy.
Tee Hee
I would contend Flash was a miserable developer tool, a near feature-free IDE, and rather than "balance", it took a kitchen sink approach to letting you put any kind of code anywhere...in an object, on the document, in a UI event of a button, on a frame.
Meanwhile, there are quite a few flash-likes for HTML5, and many of them are smart enough not to use Canvas (much)!
And raises the barrier to maintenance.
A larval developer's gateway project is all but guaranteed to end up as an incomprehensible mess of spaghetti that'll fall to pieces at the lightest touch after a summer of plugging away at it, but that's not what's important. What's important is that they could make something -- something real. By the time it's left as a shambling pile of kluges and bad practices that'll never see the light of day again, it's still gotten far enough to inspire something, and serves as a great point to move on to greater ambitions -- or even start from scratch with one's lessons learned and make it better, perhaps with a more advanced toolset that now seems infinitely more approachable than it did at the beginning.
This isn't a discussion about tools to create software that'll be refined, depended on, and passed on to new developers over the span of years. It's about bridging the gap between restrictive toys and actual non-trivial projects for novices to tinker with.
If you go back and watch some of the old flash stuff or play old flash games they are not good, they would be completely unnoticed today.
I think you have deftly described a bigger problem, as the whole industry gets more and more sophisticated and complex. The barrier for entry is so high now that I think it stifles young people's interest too quickly.
The great thing about Flash was the developer tool. Part animation studio, part simple programming IDE. It was a great balance.
Maybe there is a place in the market for framework to implement a flash-a-like in a HTML5 Canvas?