Settings

Theme

Ask HN: Are there things that Flash did that we still can’t do with today’s web?

108 points by sendos 3 years ago · 158 comments (157 loaded) · 1 min read


As I recall, as of a few years ago, that was the case, ie web apps could not do some of the things Flash was able to do.

But maybe web technologies have advanced recently so that that’s no longer the case.

irrational 3 years ago

Maybe there is a vector animation tool that is as easy to use as Flash was, but that fact that we rarely see vector animations like we did back in the day makes me think not.

I used to work with a group that created training materials using Flash. We had a bunch of animators that knew nothing about coding, but they could produce all of these amazing animated videos using Flash.

They could also produce interactive animations. One job we did was creating 3d renderings of printers. The printers could be torn down in the flash app to the smallest screw. A technician could choose what they wanted to do to the printer, and the flash movie would show them step by step in full animation what to do. At any time they could rotate the printer in all an axes to view different angles. It was amazing. And it was animators who knew nothing about code that built it all. The things they could do you just don’t see anymore.

I remember another project we worked on that had these mini games you could play in place of being multiple choice quizzes.

All of that is just gone. There was so much animation and interaction and fun that has been replaced with boring, text, images, and videos.

The best part was, it was all vectors, so the file sizes for even long animated movies was incredibly small. Back in those days we had very low bandwidth, but flash worked great. We had retailers in Asia that consumed our content no problem. Now our content is mostly text, images and videos. Those same retailers have higher bandwidth, but really struggle because the files sizes are enormous compared to flash.

  • bartread 3 years ago

    Related to this, but building anything interactive in general was made super-easy by Flash because it was basically one IDE with everything you needed included out of the box. No complex toolchain, or ludicrous dependency tree, no nonsense build and deployment (though the fact that the default for Flash content was one giant binary blob wasn't always ideal when bandwidth was at a premium), no having to learn a new framework and toolchain every 12 - 24 months. And, frankly, were the security holes any worse than plenty of other apps at the time, or the constant parade of issues we see with our current dependencies that require ongoing vigilance and updates?

    The big problem is it was proprietary and the cost of entry was high at a time when I was short of cash for quite a few years.

    Still, I wish I'd invested in learning it back in the day, as I really only came to appreciate its benefits after its fate was effectively sealed by Steve Jobs: could have made some good money whilst having some good fun doing it for 8 or 10 years up to around 2010.

    (Of course, I would have had to deal with the consequence of my skillset being obsoleted seemingly overnight, but I got kind of a taste of that from the Microsoft ecosystem as well: it's WinForms, no, it's WPF, no it's Silverlight, no, etc...)

    • kinggencha 3 years ago

      While Macromedia/Adobe Flash was an important IDE for some time, we later developed complex Flash applications in code-centric IDEs (like Flashdevelop) and compiled using the SWF SDK from Adobe. This also came at no cost, as far as I remember.

  • hackshack 3 years ago

    About once a month, I dwell on this. Modern web pages can easily be 20MB. You can do a lot in 20 megs.

    Re-reading Apple’s “Thoughts on Flash” tonight, I was surprised at how many times Apple mentioned vendor lock-in. JavaScript is definitely here to stay. Ten years later, though, I wonder if we have ended up in nearly the same place we strived to avoid - high power consumption - but with worse authoring tools. But with at least open standards, which are good.

    I figure the magic moment will occur when some tiny startup builds friendly authoring tools on top of a tight runtime à la Decker. Like HyperCard/Director/Flash it’ll only get you 66% there, but that will be enough for many folks. Hackers. Hobbyists. Students. Tiny companies, and guerrilla departments.

    The challenges will be preventing feature-itis, keeping it embeddable / avoiding JS library dependencies, and making it at least free-as-in-beer with an open format. I know there’s space for such a thing. My money’s on some lean 5-person startup with strong opinions.

    Decker: https://beyondloom.com/decker/index.html

    • mike_hearn 3 years ago

      Worth noting that the SWF format was towards the end of its lifecycle and open standard as well. Fully documented with open source players and tooling available.

      • ac29 3 years ago

        As someone who has used Linux on the Desktop for 20+ years, I can say with pretty high confidence that open source flash players could not run more than a trivial amount of real world flash content at the end of its life cycle ~10 years ago.

      • stuaxo 3 years ago

        Ruffle.rs looks pretty promising for playing flash.

        Adobe still has the editor as Adobe Animate - if they made it more widely available, I think there is a big demographic of designers that would like to make a bit of animation or active graphics that is not being served any more.

  • dspillett 3 years ago

    > All of that is just gone. There was so much animation and interaction and fun that has been replaced with boring, text, images, and videos.

    This might be partially a fashion thing: people want the flashy interactions less. I for one appreciate some boring text with minimal animation! Also away from games where animated interaction is part of the point, designing a good animation that works better than text+images is often not as easy as many think, and you need to contend with that before you attempt to implement the design.

    As there are less people wanting to make the animations the tools that would have replaced the tooling for flash (but outputting SVG+JS instead), of which there were a fair few in active development at one point, have languished unloved and incomplete – so not only do fewer people want to make such animations but those that do want to don't have easy tooling to do so.

    There are a couple of e-learning sites out there using interactive animations to illustrate their points, one often has sponsor spots on a couple of podcasts & video series I follow though I forget its name ATM. I wonder what tooling they use, if any (though I doubt it is all manually coded).

    • warrenm 3 years ago

      >Also away from games where animated interaction is part of the point, designing a good animation that works better than text+images is often not as easy as many think, and you need to contend with that before you attempt to implement the design

      The places where "animation that works better than text+images" is incredibly small

      I can read faster than you can animate - speed it up!

      Or I want to read longer than you animate - slow it down!

      Text (+images) solves this perfectly - and has for millennia

      • stuaxo 3 years ago

        There is a whole segment of the web that is now gone, things have become boring and uniform, and while that's fine for all sorts of sites, it's sad that we have just thrown all that out.

        • warrenm 3 years ago

          I wouldn't say it's so much "we have just thrown all that out" as it is "we found out the overwhelming majority of it wasn't wanted or even 'good'"

          • noduerme 3 years ago

            well, it would be nice if Adobe hadn't unilaterally nuked the ability for anyone to even look at it and judge for themselves.

            • warrenm 3 years ago

              Adobe spent years telling people the end was coming - ending Android in 2011, deprecating in 2017, and only finally EoL'ing in 2020

              If that wasn't enough time to move on, I don't know what to tell you :)

              • noduerme 3 years ago

                They put an undocumented kill switch in players and then disabled them remotely in the wild. Such that no bytecode can be run on any machine that took the last couple years updates. Then they sold the player rights to a company that ransoms them by offering to bundle a working player with individual critical binaries at unlisted prices.

                Laughably, they claimed this was ethical to prevent users from accidentally running insecure versions after they stopped patching.

                I can still install Basilisk and run HyperCard stacks I wrote 30 years ago, but I can't run the dozens of games I wrote in Flash. It destroyed a good chunk of my life's work.

                So your comment is rude. It's fine to move on and work in other languages, as I have, but to not be able to even show 80% of your portfolio because it was intentionally crippled by the company you rented the software from that you used to make it, isn't something you can move on from. It's been disastrous.

                • warrenm 3 years ago

                  >So your comment is rude. It's fine to move on and work in other languages, as I have, but to not be able to even show 80% of your portfolio because it was intentionally crippled by the company you rented the software from that you used to make it, isn't something you can move on from. It's been disastrous.

                  It's no different than what happened when the C64 when the way of the dodo

                  Or folks who built stuff for DOS, and never updated to Windows

                  Technology moves on

                  Languages and platforms get deprecated and/or die

                  And if "80% of your portfolio" is on a now-dead platform, I'd say it speaks more to you not wanting to do something new than that you happened to build a bunch of stuff on something now dead

                  I get that it sucks that stuff drops out of support/manufacture/etc

                  But it happens

                  You can be sour about it, or realize it's the nature of life, and move ahead :)

                • animitronix 3 years ago

                  It was all Apple's fault, specifically Jobs.

          • esparrohack 3 years ago

            Homestar runner.

    • philwelch 3 years ago

      For websites qua websites, sure. But Flash enabled a lot of animation qua animation on the web, natively. And unlike the videos you see on Instagram/YT/TikTok today, Flash cartoons didn’t require high-capital monopolistic intermediaries to host online.

    • agent008t 3 years ago

      Switch to mobile played a larger role I think. People used to browse on PCs with mouse pointers and keyboards, now they do on phones with touchscreens.

      • dspillett 3 years ago

        That would be one of the reasons that “people want the flashy interactions less” – though for good interactive animations, assuming screen-size is not a massive issue, touch could be a more natural interface than a mouse or similar.

  • jen729w 3 years ago

    And my mate Tim, a designer not a coder, could bang up really neat stuff really easily. Now you need to be Bartosz Ciechanowski and only he is.

    • kome 3 years ago

      Bartosz Ciechanowski is indeed awesome; and indeed the web got worse. Boring. A template repeated million of times by people that know libraries, but no html+css.

      • warrenm 3 years ago

        I'd say "boring" is not - usually - "worse"

        Most of the time, it's far better: boring works. Boring pays the bills. Boring gets more people to use something. Boring is ubiquitous.

        Everything "new" eventually becomes "boring" - and that's good

        • esparrohack 3 years ago

          Yeah, that’s a HN fortune cookie.

          You’re saying boring is popular which goes against the principles of aesthetics. People think pretty things are better quality. You do too.

          Boring gets forgotten and replaced. Boring is not ubiquitous.

          Notice how zed Shaw tried that quixotic ugly website trend. Supposedly that’s what the world wanted. The world ignored it.

          I know what you mean tho. Boring refers to old tech vs new hype. The issue is they used the word “boring” to denote “mature” software, and that’s where it all went wrong.

          Bad form.

          • warrenm 3 years ago

            >People think pretty things are better quality. You do too.

            some people think pretty=better quality

            I am not one of them - I think better quality=better quality

            >Boring gets forgotten and replaced. Boring is not ubiquitous.

            Boring is ubiquitous - Diesel engines are boring. Diesel engines are ubiquitous. Apache is boring. Apache is ubiquitous. Wordpress is boring. Wordpress is ubiquitous. Reinforced concrete is boring. Reinforced concrete is ubiquitous. iOS is boring. iOS is ubiquitous. 1/4-20 bolts are boring. 1/4-20 bolts are ubiquitous. SQL is boring. SQL is ubiquitous.

            Boring doesn't get "forgotten and replaced" - it gets used by everyone everywhere ... the very definition of "ubiquitous" :)

            Boring doesn't equal "ugly" - that you think it does seems to speak to your lack of understanding of the nature of engineering: engineers love "boring" because boring works. Boring is reliable. Boring lets you build bigger things because all those boring things Just Work™

            • esparrohack 3 years ago

              Yeah see. You need to read other stuff than engineering blogs.

              I don’t care how you feel. Everyone likes prettier things. Where’s your proof that’s false?

              You’re making up your own definition of boring. It’s just a bunch of talking points I’ve heard forever.

              I’ve read the same stuff you did. But nobody outside of tech could call diesel “boring” tech

              • warrenm 3 years ago

                >You’re making up your own definition of boring. It’s just a bunch of talking points I’ve heard forever.

                Thank you for agreeing that my definition of boring is commonplace

        • kome 3 years ago

          fair, but it's still boring. i have seen a better internet...

          • warrenm 3 years ago

            >i have seen a better internet...

            I've been online for just shy of 30 years

            Can't say I've seen a "better" internet in terms of aesthetics ever

    • Treblemaker 3 years ago

      TIL of Bartosz Ciechanowski. What an incredibly gifted communicator. Thank you!

    • mms__ 3 years ago

      I just googled him to see what you were talking about. First article of his blog just blew my mind

  • Springtime 3 years ago

    Lottie[1], an Adobe After Effects plugin, fills a gap in vector animation authoring and is quite widely used (primarily in mobile applications but also works on the web, Discord for example supports them for stickers).

    It's a pity SVG animation authoring tools never eventuated since it's an underutilized but useful native format. Though I know Blender allows for SMIL export via its Freestyle feature (the animation is effectively frame-by-frame only though, not leveraging SMIL's path interpolation/morph ability).

    [1] (ignore the GIF-converted examples, the originals are lightweight and vector-based) https://airbnb.io/lottie/

    • yreg 3 years ago

      We use tons of vector animations in the UIs, but I guess what the GP meant are animations in the form of short movies like Happy Tree Friends or Animator vs. Animation. That style is no longer popular and it used to be everywhere.

      As for the cause, I think it's not only that Flash is dead, but also that there are now many other easy options to create content including professional looking video and much more refined animations. That wasn't an option 20 years ago for most.

  • resoluteteeth 3 years ago

    > Maybe there is a vector animation tool that is as easy to use as Flash was, but that fact that we rarely see vector animations like we did back in the day makes me think not.

    Doesn't the animation tool still exist just not under the name "flash"?

    My understanding is that the free browser plugin to view the animations that got killed, but the the actual animation software that was used to produce them got bought by adobe and is still widely used to produce animations, it just doesn't have the option to produce swf files anymore (and even during the flash plugin era it was also being used to produce animations for tv, etc.).

skytreader 3 years ago

A lot of answers already boil down to, basically, superior developer experience. But there's an aspect of this that I want to highlight: resource efficiency.

Around the latter half of the 00s, I had a Windows XP machine with 256MB of RAM and a Pentium 4 processor, with a matching spinning metal-disk hard drive. I could make decent Flash animations and games with it. I could view entire websites in Flash with Internet Explorer 8.

Today, my personal machine is a laptop I bought from 2016. Core i7 (4 cores), AMD graphics card, 16GB of RAM. It's not top-of-the-line even when I bought it but I put in ~200 hours of The Witcher 3 in it, finishing the main quest and the two paid DLCs. That said, modern web dev is a PITA in this mostly because I'm too cheap to upgrade to an SSD. Oh, also, the GitHub homepage that showed live commits on the globe makes the fans scream with Chrome unless I enable hardware acceleration. (In fairness that's enabled by default, but it so happened I had to turn it off and forgot to turn it back on.)

I still can't figure out why my personal machine can't provide a decent feedback loop on a React/Angular+Typescript stack (that's not even doing animations!) just because I don't have an SSD. In my very opinionated opinion, only a database server needs an SSD.

A Phaser+Typescript project (my preferred modern web gaming stack) is just a slightly better experience than React. But, again, I wonder why it needs hardware acceleration at all to function well and I've only implemented very "static" boardgames so far. Maybe I'm just a sloppy programmer but I'm definitely better than when I was making stuff in Flash. This shouldn't be eating that much resources, right?

  • ChrisRR 3 years ago

    As an embedded developer it always surprises me that simple programs are still barely any faster, take 100s of MB of RAM, require a decent CPU despite the fact we're all using supercomputers compared to the Windows 95 days.

    How is it that physicists and engineers are pushing the limits of physics to bring us ever faster processors and we still can't smoothly scroll a webpage, where as I can design an embedded product with a GUI on a 40MHz CPU

    • AnIdiotOnTheNet 3 years ago

      Simple answer: because the software industry is a goddamned joke. It's full of complexity-fetishists who are arrogant enough to try and call themselves engineers while producing objectively terrible products and patting themselves on the back for it.

      Remember a while back, when Casey Muratori told Microsoft their terminal emulator could be a lot faster if it used a glyph index, and professional Microsoft engineers told him that was complexity worthy of a doctoral thesis [0]?

      There's a reason he got so mad at them, and its because this level of "competence" is pervasive in our industry and he has to see it every single f'ing day. See also: "When does the draw window change?", a demonstration of how Microsoft's flagship IDE's debugger fails to compete with a one-man project.

      https://imgs.xkcd.com/comics/voting_software.png

      [0] For anyone not in the know, this is essentially just emulating how a real dumb terminal from the 70s would work, is the blindingly obvious implementation, and would be familiar to just about any game developer on earth. Casey spent the next weekend coding a 3-orders-of-magnitude faster terminal display demo that was completely unoptimized as a demonstration of the lower bound of how fast a terminal should be. Microsoft's terminal is still not as fast, even though they did eventually implement his solution without, initially, giving him any credit.

    • mike_hearn 3 years ago

      There's a few things that have led to this trend, none of which are obviously 'wrong' or dysfunctional:

      1. Better GFX quality. Modern screens have vastly higher pixel resolutions than before and vastly higher than any embedded device. Also everything now has to be anti-aliased by default and we expect sophisticated Unicode support everywhere.

      This means UI is lovely and sharp - our stuff just looks fantastic compared to the Windows 95 era. But this came at a really high and non-linear cost increase because you can't do CPU rendering and keep up the needed pixel rates anymore. This has caused a lot of awkwardness, complexity and difficulties lower down in the stack as people try to move more and more graphics work to the GPU but hit problems of internal code complexity, backwards compatibility etc.

      2. Windows dominance ended, meaning apps have to be platform neutral at reasonable cost. In turn that means you can't use the OS native GUI widgets anymore unless you're writing mobile apps or some artisanal macOS app - you have to use some cross platform abstraction. This also led to the widespread use of GCd languages for UI, because ain't nobody got time for mucking around with refcounting and memory ownership in their UI code anymore.

      3. For various reasons like distribution and sandboxing, browsers met people's needs better than other ways of writing apps but browser rendering engines are massively constrained in how much they can improve due to the backwards compatibility requirements of the web again. Flash demonstrated that viscerally back when it was around. So a lot of potential performance got lost there in the transition to web apps, and memory usage exploded due to the highly indirect and complicated DOM rendering model which in turn needs layers of (non-mmap-shareable) code to make it digestable for devs.

      4. Browser devs lost confidence in language based sandboxes and so moved to process based sandboxes, but a process is an extremely heavyweight thing - lots of CPU cost from all the IPC and context switching and especially expensive in terms of memory overhead.

      You ask why is embedded different. Others here are asking why games are different. This is simple enough:

      1. Embedded apps don't care about OS independence, don't care about security or sandboxing and only sometimes have large hi-res displays. If you're on a 40MHz CPU your display is probably a dinky LCD. You can lose the abstractions and write much closer to the metal.

      2. Game engines and GPUs co-evolved with the needs of games driving GPU features and capabilities. In contrast, nobody was buying a hot new NVIDIA card to make their browser scroll faster. Games also benefit from historically being disposable software in which the core tech isn't really evolved over a long period of time, so devs can start over from scratch quite frequently without backwards compatibility being a big deal. Normal application software can't justify this. Of course games are going the same way as app software with Unreal becoming a kind of OS for games, but ultimately, it's shipped with the app every time and porting titles between major engine versions is rare, so they can change things up every so often to get better performance.

      Could things have been different? Maybe. If just a tiny handful of decisions had been different in the late 90s then Jobs would never have come back to Apple and the dominance of Windows would have never ended. The iPhone would have never happened and Android would have remained a BlackBerry competitor at best, with a UI to match. If the Windows team had executed better and paid more attention to security basics like sandboxing, ActiveX could have remained a common and viable way to way to ship apps inside the browser. Flash might still be around because it was ultimately Google and Apple who killed it off by fiat - Microsoft wanted to compete via Silverlight, but were by then sufficiently respectful of anti-trust concerns that they wouldn't have simply announced they were going to murder it in cold blood.

      So it's easy to imagine a parallel universe where our tech stack looks very different. But, this is the one we live in.

  • paganel 3 years ago

    > resource efficiency

    Glad that you pointed that out.

    Around 2002-2003 I was working an office night-shift, in front of a computer that was in no way the fastest even by those times' standards. But, even so, I was able to follow almost every at-bat in the MLB, live, through their Flash app (while I was doing my regular work in another browser tab). And it wasn't only showing stuff like Batter X hit a 1B, it showed you the exact location and the speed of the incoming pitch, where the ball landed (more or less), what was the out-field formation of the pitching side etc. Really cool stuff given the limited processing resources.

    I'd say a HTML+JS solution (which, obviously, wasn't even possible back then for that kind of stuff) would require at least an order of magnitude more resources on the client side.

  • teh_klev 3 years ago

    > only a database server needs an SSD

    Where did you acquire that (somewhat flawed) opinion?

    I've been using SSD's since ~2009 and those early devices were transformational even on already elderly equipment. You can pick up a modern 1TB SSD with a SATA interface for ~GBP77.00. A price well worth paying for the increase in productivity and quality of life not waiting for spinning rust disks to do their thing.

  • nicoburns 3 years ago

    > mostly because I'm too cheap to upgrade to an SSD

    Wow, that is cheap. We’re talking, what, $40? Basically everything these days assumes fast random disk IO, and will be slow if you don’t have it. If you’ve upgraded your computer at all in the last 10 years then you probably have been better off keeping the old one and getting an SSD.

    • notacoward 3 years ago

      > Basically everything these days assumes fast random disk IO

      I think the point is that they shouldn't. The majority of things that people do every day should fit in memory, requiring only short bursts of sequential access when loading and when saving files. Even databases and filesystems are pretty good at avoiding or overlapping random accesses. Exceptions exist, to be sure, but if "basically everything" gets slow when it doesn't have fast random access then "basically everything minus epsilon" is broken.

      • nicoburns 3 years ago

        I mean yes and no. One might make the same claim about an FPU for example. It should be possible for most software to be fast without assuming fast floating point calculations. But if it can reasonably be assumed that the deployment platform does have that capability then does it make sense to focus effort into optimising that.

        I think there's an argument to be that programs should focus more on when they're reading from disk because some programs can end up slow or laggy even on SSDs. But systems not running on SSDs (outside of embedded and object storage use cases) are exceedingly rare these days. And that's only likely to be more true over time.

        • ridgered4 3 years ago

          I remember adopting SSDs quite early in their lifetime despite them having controller firmware teething issues at the time. It was hands down the most significant PC upgrade I've made in the last 20 years.

          That said, Windows used to run acceptably on hard drive. I don't think I could even endure Windows 10 on one now with the amount of background disk hammering it does just staring at an empty desktop.

          • Arrath 3 years ago

            I maintain that the jump from spinning rust to solid state may well be the biggest single QoL jump we'll see in consumer computing for another couple decades, barring, like, direct neural interface or something wild.

        • notacoward 3 years ago

          > systems not running on SSDs ... are exceedingly rare these days

          Just because it's there doesn't mean you have to rely on it. As you yourself say:

          > programs should focus more on when they're reading from disk

          Yes, they should. A program's interface to storage is often one of the main limiters on its overall performance or scalability, even with the fastest kinds of storage available. In general, it's best to assume that storage access - especially random access - will be crazy slow compared to anything else. Batch it, parallelize it, overlap it with other kinds of work. Any program that is unnecessarily I/O bound, relying on storage to be fast in order to be fast itself, will be unable to take advantage of other resources (CPU, memory). That's excusable for programs whose whole purpose is to access storage - e.g. the storage servers I worked on for ~30 years including in HPC - but otherwise it's just poor design. Unfortunately, that's the norm in our industry nowadays.

  • warrenm 3 years ago

    Dan Luu has several articles on latency that address these questions:

    - https://danluu.com/keyboard-latency/

    - https://danluu.com/term-latency/

    - https://danluu.com/input-lag/

  • speedgoose 3 years ago

    Please get a SSD today. You stress me!

    • HarleyBestfield 3 years ago

      Let me stress you more. I use a mid-2010 iMac as a daily driver. It still uses the original spinning disk hardware with more than 77000 Power_On_Hours. SMART says Old_age.

      I like living dangerously.

      • speedgoose 3 years ago

        What worries me is that you purchased a premium computer from Apple when everyone recommended not to buy it because its obsolete low-end hard drive crippled it.

        And you didn’t consider making it a magnitude faster for a fraction of its price.

        I’m sure you can find a fridge with better IO performance.

captainmuon 3 years ago

HTML+JS is "turing complete" so in a sense you can make everything in HTML that you could make in Flash.

In practice, I think the authoring experience has been lost. There is still Adobe Animate (which is the renamed Flash application), but I think you can not export to a fully interactive HTML application - only to static videos or simple HTML (like interactive ads). Maybe it is now possible, but I haven't seen much use of it.

The magic of Flash started with a very nice vector editor - it even allowed you to "paint" Vectors with a brush. Then you had very intuitive tools for animations (tweening, onion shells). You could add simple interaction from the GUI. But it was easy to run custom ActionScript (basically JS) code on events, and move objects around on the screen. When you needed more control, you could also completely go to the ActionScript level and create your objects from code.

Nowadays, what do you use to create animations? After Effects seems what a lot of people use but it is overkill. Animate seems to be barely maintained. And if you want to do a game? I think Unity & co. have taken over, but they lack a bit the low barrier to entry that Flash had.

  • josefx 3 years ago

    > HTML+JS is "turing complete" so in a sense you can make everything in HTML that you could make in Flash.

    I love how turing complete gets thrown around every time. Can a turing machine by itself run a voice chat, print documents, display images, stream videos? If I emulated a turing machine on a 1 Hz CPU would it be capable of decoding a 4k video stream in acceptable time?

    • captainmuon 3 years ago

      Jeez, I knew people would comment on this. I put it in quotes because I don't mean turing complete it in the technical sense, but as an analogy. It is "fully functional", you can achive basically any result that you can with Flash. Analogous to the fact that a Turing complete system can simulate any Turing machine, I mean a certain interactive graphical programming environment - like HTML5+js for example - can remake any Flash game.

      But that "Turing completeness" or "result achiveability" is not at all the interesing point.

      The point is that despite this "completeness" or "equivalency" there is a difference. You could write a line of business application in plain C or say even FORTH, but it is probably easier and makes more sense in C# or Java. And you can create great games and animations in HTML+JS, but something was lost in the experience, and in the tooling, that was available with Flash.

      • andrewflnr 3 years ago

        For future reference, the relatively casual term you want here is "Pacman-complete". :)

  • billpg 3 years ago

    When I was reading about Turing Completeness as a child, I remarked to my mother that "Computers can do anything". She quickly told me that wasn't right. I went back and thought about what I actually meant. My revised statement was "Computers can do anything that computers can do", which sounds significantly less grand.

  • Dylan16807 3 years ago

    > turing complete

    The question is what you can do, not what can you write a function to calculate.

  • hutzlibu 3 years ago

    "but I think you can not export to a fully interactive HTML application"

    You can, with the help of integrated EaselJS. But it is way more complicated, so I also never used it and I don't know if anyone is using it at all.

    And yes, the ease of flash is gone. This was the most appealing of it.

wodenokoto 3 years ago

I'd say you can do anything with java-script and a canvas as flash could, but the number of people who could do it in flash was much higher than the number of people who can do it with "modern" tools.

  • t-writescode 3 years ago

    This is the answer. Flash was at its best, in my opinion, with its low-to-no-code animation approach. Newgrounds is or was full of people creating splines-based, animated artwork in a way I haven't seen as easily and fully replicated by as many people as it was in the days of Flash.

    • piva00 3 years ago

      I've been thinking about this sometimes, I don't understand why there hasn't been any editor suite to generate HTML5 + JS animations like Macromedia Flash did. On the foundation it's basically the same concepts: a canvas that can draw vectors and a scripting language based on ECMAScript. The editor then has a timeline control and can render the appropriate assets for animating it: vectors and scripts that animate those vectors based on the timeline information.

      Is there some technical limitation I haven't figured out? Or is it simply a matter that no one has done it yet?

      • yetihehe 3 years ago

        There is no technical limitation, it's very possible today. Commercial developers don't want to touch it because Adobe could sue them and/or it could be hard to extract enough money from such system, open-source developers apparently don't care enough to start doing it from scratch

  • amelius 3 years ago

    What are these people doing now?

    • piceas 3 years ago

      Video killed the flash vector star and games moved to steam.

      A good example of the former is a e-card service that eventually chose to move to video. Video is worse for their product but there was/is a more robust path to move to video than modern vector options.

      https://www.jacquielawson.com/

      • ChrisRR 3 years ago

        I think games moved to mobile. Churning out a mobile game and slapping ads all over it is very easy to do

  • seydor 3 years ago

    Can't even have a hyperlink in canvas. Flash was much more 'web native' than canvas and webgl

MengerSponge 3 years ago

People's use of the internet has changed, but the fact that there is not a new Homestar Runner or NewGrounds is telling. How much does a weird high school/college art nerd need to know about the tech stack to get their vision online?

I'm old enough that HSR is still part of my lexicon. Kids just think I'm weird, which is fine.

  • krapp 3 years ago

    The weird high school/college art nerds today are designing their own VTuber rigs, selling art commissions or making indie games. The biggest reason there isn't a new Homestar Runner or Newgrounds has less to do with technological limitations or complexity and more to do with evolving tastes over time.

    Also the fact that the new whatever would be either Youtube or Twitter. Or Tiktok. Or something most people here have never even heard of.

    • danuker 3 years ago

      > more to do with evolving tastes over time.

      Among the top HN posts of all time is an interactive watch visualization: https://news.ycombinator.com/item?id=31261533

      This is evidence that people still enjoy interactive experiences, but they are just harder to create.

      • jjk166 3 years ago

        That's only evidence that interactive experiences can be enjoyed under the right circumstances. In that particular instance, such interactivity is both useful and fresh. But there's no evidence that people want to make more content like that but can't, nor that all such content would be appreciated.

        • esparrohack 3 years ago

          How do you know there’s no evidence? You gotta prove that too

          • jjk166 3 years ago

            I'm saying no evidence has been presented, not that there couldn't be evidence out there. You don't have to prove lack of evidence.

            • esparrohack 3 years ago

              There is plenty of evidence in this thread to prove both points wrong.

              The strange claim is that people dislike interactive flashy experiences and favor plain text with minimal styling. That needs extraordinary proof

              • krapp 3 years ago

                I mean, Hacker News is practically a nexus of people who dislike interactive flashy experiences and favor plain text with minimal styling. I don't know what more proof you need.

  • lucumo 3 years ago

    > but the fact that there is not a new Homestar Runner or NewGrounds is telling.

    I think that niche is now filled by the app stores. A lot of little games can be installed on your phone.

    The monetization of those games has made them less fun, in my opinion, but that's more on the evolution of game makers, and not really on the development technology.

  • swilliamsio 3 years ago

    itch.io is massive for games if you want a new Newgrounds. The tech stack has moved on from Flash to use Unity or GameMaker or Godot or Construct. It's feasible for someone not knowing how to code to use most game engines to create something - not uncommon in Game Jams to see teams like that.

KaiserPro 3 years ago

Look the same on all platforms.

Allow artists to create simple animation quickly.

run fast.

The key selling point of flash was that it was an author once, run anywhere tool. I could use keyframe animation along with a simple scripting language to make almost anything. Not only that it was fast to build and deploy.

Nothing I've seen recently allows an artist to do the same. I've tried a couple of times over the years to make an animated SVG on the web, and all of them required me to program keyframes using code, which sucked. Not only that its dogshit slow. animating <5 low complexity shapes would eat 50% of CPU, (think squares and circles).

Worse still all of those libraries are deprecated now, so if I want to do it again, I'll need to start again from scratch and select a new animation library.

  • manscrober 3 years ago

    >Worse still all of those libraries are deprecated now, so if I want to do it again, I'll need to start again from scratch and select a new animation library.

    This is why I stopped being interested in modern web anymore. Everything is deprecated at unbelievable pace, you can't keep track of it unless you work full time in the field. If it was all for great efficiency and performance, I'd get it, but it seems to just follow the newest fad every 2 years. Maybe with wasm that could change, but I'll believe it when I see it.

    • capableweb 3 years ago

      > Everything is deprecated at unbelievable pace, you can't keep track of it unless you work full time in the field.

      Is this really true? The same JavaScript I wrote 3 years ago still work, for multiple different applications. It's really uncommon that browsers break "user-space" JavaScript, I can't even remember the last heavily dependent API that got removed and cause havoc.

      What does change very often is the latest trends/fads in JavaScript frameworks/UI libraries, but if you pick one and stick with it, it won't magically break because JavaScript changed. I think what's causing your problem is here is the want/need to stick with the latest flavor of frameworks/libraries instead of becoming deeply familiar with one and sticking with it.

      • noduerme 3 years ago

        3 years is no time. I have userland code that still works 15 years on. The problem is only if I want to change from jQuery 1.x or some ancient CSS library... it would break completely. I can live with that. What I can't really live with is the 500,000 loc I wrote in Actionscript 3 being permanent unusable and unable to run anywhere, ever again. That kind of thing makes you never want to work on another project.

  • yreg 3 years ago

    >Look the same on all platforms.

    Provided you have Flash player installed. Doesn't the same apply to web technologies provided you have the same browser installed?

    • KaiserPro 3 years ago

      Kinda, but for example you could have mobile flash and it would look the same on that as it would in opera, IE, netscape or what ever browser you wanted.

  • the_only_law 3 years ago

    I noticed that around the death of flash and the rise of games using new native technologies on the web, a lot of “web games” were technically or graphically impressive compared to anything done with flash, but felt very sterile and and soulless. Flash games had fun narratives, stories, etc. I wonder if it just attracted a different crowd.

fxtentacle 3 years ago

Nowadays with WASM and WebGL you can do basically everything in a web browser, but you'll take a 100x performance hit.

Every game using Unity/Unreal + WASM needs to download 10-20 MB of JavaScript before it even starts loading the actual assets. With Flash, that could have been a 10 KB SWF instead.

Similarly, Flash had really fluid animations that were drawn purely on the CPU. Why my 266 MHz P2 could have better vector animations than people nowadays can squeeze out of a 3070 with WebGL is beyond me.

In my opinion, we still DO NOT have any worthwhile replacement for the ease of cross-platform development combined with excellent performance that Flash had.

  • exceptione 3 years ago

    I remember that loading a flash plugin would choke the browser for a while. I think we always had to to pay a startup penalty.

    I have experienced flash for the last time a while ago though, so my memory might have been corrupted in the mean time. Also, I am talking about computing capacity of a decade ago, so the comparison is never going to be fair.

    But I am definitely sure that the java applets were a disaster in terms of UX (slow to load, interaction feeling very foreign).

  • singularity2001 3 years ago

    A Unity wasm empty scene is ≈1MB:

    https://blog-api.unity.com/sites/default/files/styles/focal_...

    couldn't find a live demo to confirm, which strongly speaks against Unity being anywhere as flashy.

    • _jezell_ 3 years ago

      Unity is not a good example, it's bloated as hell and takes like 15s minimum to load a square. It wasn't built for WASM and uses a toolchain that makes WASM hard.

      Bevy loads pretty instantly in comparison. That's where I'd invest my time if I was doing web games.

      https://bevyengine.org/examples/

    • fxtentacle 3 years ago

      1 MB after compression. And only if you turn off physics and limit yourself to 2D

  • seydor 3 years ago

    I consider that intentional

hlandau 3 years ago

We can't distribute an entire game or animation as a single file which can be downloaded or embedded on a website. Think about things like Newgrounds.

I mean I guess you could do something awful with base64 encoding assets into a giant HTML file, but that sounds horrible.

Flash was also a platform for hosting bandwidth-efficient animation and people have just gone to using video now. That sacrifices incidental, easter egg-type interactivity and drives people to centralised services like YouTube.

  • zozbot234 3 years ago

    Isn't that what EPUB is for? It could even be embedded in an iframe similar to how you can embed PDF.

  • pengaru 3 years ago

    emscripten gets pretty close via webassembly, you can embed all your assets... but it takes awhile to load before anything's happening when done that way.

    • viraptor 3 years ago

      Flash also took time to load. The sites used loaders with progress bars for larger flash apps as well.

      • madarco 3 years ago

        But it supported progressive loading. You could load only the first level and then load the next on-demand

        • viraptor 3 years ago

          You can still do that with wasm by splitting the code. You need to loop through js to connect them, but for things like levels, you can likely do that or just memcpy between those environments.

trilbyglens 3 years ago

ActionScript was a terrible language. More complex flash projects were really a hacked together mishmash of things, none of it standard, none of it supported without plugins, and oh, have we all forgotten about the weekly zero-days that flash had?

It might have been more "creative" but that was also due to the fact that it was around at the beginning of the web, when everything was more creative. People had not figured out UI or UX patterns yet at that point, and there was massive wheel reinvention taking place all the time.

Flash was an absolute catastrophe for accessibility at well. A screen reader would just say "Flash movie" as that's all that was actually in the page.

We've had to reinvent a lot of that stuff, true, but we've also gained interoperability, security, and accessibility. I think those are all worthy trade-offs.

  • CJefferson 3 years ago

    When I was 12, me and my brother made simple flash games. You could produce something with cool animation, basically functional, in a week or two.

    What is the modern replacement for my nephews now? There might be one but I haven't seen it.

  • est 3 years ago

    > Flash was an absolute catastrophe for accessibility at well

    Compared to what? All SVG/canvas/WebGL doesn't solve the problem either.

  • noduerme 3 years ago

    AS3 was a gorgeous, concise, incredibly fast, strongly typed ES4/5 language with GPU access and all kinds of native APIs at a time when nothing remotely close to that existed in the browser. I humbly suggest that you never worked with it and/or don't understand what it was capable of.

noduerme 3 years ago

I'm surprised no one has mentioned vector-based animation, which was a primary tool in Flash. AFAIK there's no SVG solution that comes close in performance or flexibility to keyframe- or programmatically animating complex vector graphics (with user interaction!) the way you could in Flash.

planede 3 years ago

The original N game v1.0, released in 2004 [1] had fluid vector animation without stutter on a modest computer at the time. It's a pretty challenging platformer, and any stutter would have killed the gameplay.

Later flash versions regressed in performance and can't run this game without stutter in my experience. A way to play the original game today is to get an old version of "Adobe flash player projector". If you are paranoid, use some OS level sandbox around it.

I did not see an in-browser game since the original N game that matches its low system requirements and smooth gameplay.

[1] https://www.thewayoftheninja.org/n_history.html

BTW, the successor N v2 is also pretty good, and it's not flash-based, AFAIK.

rendall 3 years ago

I would say no, that modern browsers have the potential to do everything that Flash did, but it's not nearly as easy.

While it is possible in modern browsers to make a) cross-platform, front-end web applications with b) smooth vector and c) bitmap animation incorporating d) multimedia sound and e) video driven by f) a backend API (called dynamic data back then), it is not nearly as prevalent as it was. Animations and multi-media objects were first-class citizens in Flash in a way they are not in browsers.

I do think that's not entirely the browser makers fault. Web aesthetics have changed. Users liked swooping and diving logos with dramatic drop-shadows then, and not so much now.

est 3 years ago

> still can’t do with today’s web

Playing smooth vector animations on a single-core Pentium III computer with 64MB RAM.

fimdomeio 3 years ago

I don't think the problem is the the web, the problem is screen sizes. Things where a lot simpler when all you had to think about was 800 x 600 or 1024 x 768. As soon as you got mobile and all kinds of resolutions it became a lot more technically complex which hinderes creativity.

  • seydor 3 years ago

    Surely it would have adapted to become the defacto for touch apps, and it would be great for that. Apple's decision to kill it made that future impossible

jhoelzel 3 years ago

It was not flash that we were fighting. it was adobe and their proriarity and thought process in keeping flash to themselfs.

If adobe would have not been the way they were, they would now dominate the animation scene too.

Instead, inadvertetly because of patents, we dont have anything cool to show for.

All this minimalism everywhere is disgusting. And they never get it right anyway because you have to put hightower ads everywhere you can.

While it still was macromedia calling the shots, people had trust in flash

  • drewcoo 3 years ago

    > It was not flash that we were fighting. it was adobe

    And I thought it was Steve Jobs' wielding of monopoly power in the name of "taste." Or was it "security?" Or the fact that Apple couldn't keep Flash from crashing Macs?

    • jhoelzel 3 years ago

      I have never owned a Mac but i can guarantee you that on the windows side people where not loving flash either.

      I rather would blame the fact that it allways ran in a plugin and needed to be constantly updaeted where browsers did not easily provide such a mechanism.

      Flash was very cool but also very frustrating if you "just want to use your computer"

ciroduran 3 years ago

I read somewhere that if a tool allows a massive amount of people to churn out mediocre stuff, your tool is an absolute success. I think that Flash was that success.

Even if web standards have caught up with what Adobe Flash used to do a full decade ago, writing games for the browser became a lot more difficult to do.

Barring Adobe killing Flash by disappearing it from the internet, I can run anything I wrote in 2004 on Flash Player in 2022. This level of compatibility is only surpassed by Windows programs. In today's web, I not only need to be careful of supporting 3 major browser vendors, but also support any breaking changes that any of these make, which means I might need to recompile my project long after I have archived it.

The closest thing that has allowed me to make stuff easily for a web browser is PICO-8. A fantasy console, with very limited resolution and capabilities, but all its dev tools integrated, that allows you to quickly export to HTML5 and optionally upload it to its BBS (the website). PICO-8 has made amateur gamedev fun for me again.

yawnxyz 3 years ago

AS3 was very powerful in terms of prototyping games and sound design. A long time ago I worked on lots of "music games" that combined game mechanics (like top down space shooters or "flappy bird" style stuff) with synthesizer code that made music.

I have no idea how to go about recreating my projects today in JS at all...

  • noduerme 3 years ago

    As an old AS3 hand, if I were going to do it now I'd go with HaXe and OpenFL, building the asset files with whatever the last existing version of Flash was. I've been meaning to try this route but I've been feeling too defeated for the last few years to work on anything creative in this vein again.

thom 3 years ago

Given broad support for the Web Audio API these days I can’t think of anything that’s not been standardised, unless you wanted some form of preloading baked into the spec. ActionScript had actual integer types, if I remember correctly.

As others have said, it’s mostly tooling and workflow. As much as I’d like to sneer at Flash in general, my experience with it on projects was positive. The IDEs and tools were good, you could approach everything code first with unit tests. The process of cutting up PhotoShop PSDs from a designer and building UIs in FlashBuilder, while orchestrating everything in code in an MVC style was very pleasant.

ajsnigrutin 3 years ago

I miss flash games... and there were A LOT of good flash games.

I know that they can be remade with other technologies, but except for some clones remade to be a pay-to-win mobile apps, a lot of those games are just gone now.

onion2k 3 years ago

It's definitely harder to break out of the browser sandbox and attack the underlying system without it.

rcarmo 3 years ago

I keep hoping that we’ll be able to package Flash-grade animations as WASM and send them out as a single file (or as two files, one for a Haxe-like runtime and another for the game or animation). But since there is no real standard authoring tool (and nobody mentions those, or the ease of use the Flash “IDE” had) I don’t have much hope.

The closest I’ve seen (and actually use) is Hype (https://tumult.com/hype/), but it is Mac only.

halpmeh 3 years ago

Kind of late to the party here, but there is a major thing provided by Flash that's missing from today's web: the ability to get artists and hobbyists into creating interactive digital experiences. The current web sucks at that because it doesn't provide a seamless path to upgrade one's artistic talent the way Flash did for people who were already familiar with digital art tools.

  • stuaxo 3 years ago

    Exactly, Flash's editors primary UI was a drawing program with an animation timeline, you can get started without knowing anything more - it was amazingly freeing.

gregjor 3 years ago

We can't make users download a third-party plugin to use a web site anymore. I suppose that's possible but I don't miss those pop-ups.

I still have one customer with a Flash-based web site, even though it doesn't work on any modern browser. They actually have some old version of IE and the Flash plugin available for download just to use their site.

  • qurashee 3 years ago

    Why don't they setup https://ruffle.rs/ on their website? I've managed to rescue a website using it and seems to work pretty much with all modern browsers.

    • tetris11 3 years ago

      AS2 support is good, but not the more modern and powerful AS3

    • gregjor 3 years ago

      Will point that customer to ruffle. They are not terribly sophisticated, technically, as you can imagine. Nor do they seem willing to spend any money to fix the Flash problem. Nothing about the site needs Flash, it could be implemented in plain HTML+Javascript. They just don't want to pay anything to do that.

superasn 3 years ago

I don't know if this is the case with HTML5 but one small feature of flash that I really loved is the seamless music loop even when the audio had trailing or padding silence.

The loop just worked and flash trimmed out silence automatically when playing the music. Very useful for games.

DoItToMe81 3 years ago

Most tools today do some part of what Flash did but far better. Godot's scripting language is a ton better than ActionScript, practically all animating and spriting programs are better, too. Except for Vector animation, I have no idea what happened to that.

But not a single one has the same 'all in one' nature that Flash did. Back in the day, people who'd never even think of making a game could be exposed to it and eventually make one, now everything is more specialized and compartmentalized. The smallest webgame engines I see still have 5 MB of bloat, too, whereas a decently big flash game could be 500~ish KB.

Cloudef 3 years ago

There's rive that's very similar to flash https://rive.app/

  • rcarmo 3 years ago

    It is also a cloud-based service that artificially limits what you can do for pricing, not a standalone desktop app. No thanks, I will resist buying into those for as long as I can.

    • Cloudef 3 years ago

      Be it web or offline, does not really change as both flash and rive are proprietary software. I think rive is still better as its runtimes are open source and the export format is documented https://help.rive.app/runtimes/advanced_topics/format so technically you could make your own editor.

      • rcarmo 3 years ago

        That’s what I call the “infinite monkeys” argument. I could theoretically do _anything_, but it is actually impractical.

        • Cloudef 3 years ago

          At least your produced rive content could be kept online / shown in your software as the runtimes are open source. Meanwhile flash has been reversed for ages and ruffle still isn't 100% compatible. Adobe being adobe, they are even worse as they aren't web app, but still contain heavy online DRM making the software useless if you don't have subscription, in addition to their cancelation terms being very shady.

    • ChrisRR 3 years ago

      Flash was also proprietary

warpech 3 years ago

One thing that comes to mind: Flash could do rawish TCP socket communication. You could implement various protocols on top of it in user code.

That's not possible with Web APIs. Web APIs are more high-level (complex, purpose-oriented), e.g. WebSockets, WebRTC, WebTransport. The low-level stuff is not exposed to user code and probably never will. One of the reasons is security.

seydor 3 years ago

Lots mainly because it was integrated. Video conference was supported right away with the free red5 streaming server, decades ago. Compare that with webrtc thats so hard to make it work right

Html does most of the stuff now in theory, but its so much more difficult to access that it's not fun

adamredwoods 3 years ago

Compressed frame-by-frame animation.

atonse 3 years ago

Are there editors like flash that allow you to build flash like animations with just output as css?

Probably…

BoppreH 3 years ago

As a refugee from the collapse of Flash myself, about once a year I'll check what's the state of similar tools and be disappointed.

This year the situation is a little better. There's gdevelop, Rive, ct.js, Godot, Construct 3, and Wick Editor. None of them feel as friendly as Flash (except maybe Wick), or as efficient (I just played a small Rive game that made 500+ network requests to load assets). But they come with their upsides, like better game frameworks, better addons, better 3D support, etc.

So I wonder why we're still not seeing small free games. Are the tools not good enough? Packaging is too hard? Lack of good portals, à la Miniclip/Newgrounds/Kongregate? Or has internet culture simply moved away from interactivity to catchy videos?

skyde 3 years ago

sadly a lot.

Show me a tool where a 10 years old can draw and animate stick figure cartoons and publish is in a lightweight vector format (not video)!

tmaly 3 years ago

Adobe Animate seems to pretty much the same with HTML5. You can still script things in ECMAscript like you could with Flash.

bobsmooth 3 years ago

No, but is there anything that has replaced Flash Builder? Also no.

tatersolid 3 years ago

Remote code execution.

1attice 3 years ago

I have an original theory, and it goes like this.

Generalizing, tech progress swings repeatedly and unpredictably between three optimands or poles: Developer-first, User-first, and Machine-first.

Developer-first tech is like Flash -- it's powerful because the developer experience is powerful. The quality and profusion of great products drives the adoption and other network effects. Yet these programs tend to be heavier (non-optimal for machines) and, for lack of a better term, frou-frou-ier; the ease of applying themes and styles promotes 'mystery UI', where the dev reinvents (or more commonly, balderizes) the visual language of the user interface. Flash apps always had ornate, ridiculous scroll bars and buttons and so forth, mostly because the DX made customization so easy, and this imposed a sort of psychological tax on the users, often to the point of compromising the user experience.

By contrast, user-first tech emphasizes the experience of the end user or consumer. For example, HTML5/CSS3 is harder to author than Flash, but, as an open standard, offered the end-user choice of platform and graceful degradation on mobile.

That said, user-first tech can often have terrible developer experience (DX), and that is very true of HTML5/CSS3. It's basically coders-only, for certain lightweight values of the word 'code'.

Finally, there is machine-first tech -- apps that prioritize the machine's experience. This family of tools generally pursues performance at the expense of both the developer and the user. Generally one can think of Moore's Law as describing an asymptotic decline in the importance of what I'll haltingly call 'MX', because as machines get more powerful, it's less important to cater to them.

So you can think of the birth of the web as a move away from optimizing for MX towards optimizing some balance of DX or UX, but which of those two other poles picks up the bounty of Moore's Law is up to fashion, social trends, etc.

Finally, it's common for premature market anticipation of MX-shedding to drive clumsy, non-performant solutions that privileged DX or UX (or both) to such a degree that the machines simply don't like to run it much anymore. In other words, people overshoot in their attempts to optimize DX, UX, or both, and in doing so compromise the machine's experience of that code. When this happens, the market tends to lurch back towards MX. I perceive the move to (say) Rust from higher-level languages (Python, etc) as an example of trading off DX and even UX for MX. Arguably, Wayland does this as well, shedding both UX and DX considerations to improve machine-oriented properties such as security.

Going deeper, one could think of MX as being 'hardware-owner-first', as machines are not the sort of things that can have genuine experiences of their own -- however, animism is a useful form of lossy compression here.

joshxyz 3 years ago

yes, lots of RCE's, we miss that dont we?

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection