Founder came back after 8 years to rewrite Flash photo editor in Canvas/WebGL
pixlr.com
pixlr.com
Autodesk sold it for near to nothing and the new owners contacted me (org founder) and asked me if I wanted to get involved somehow. So we build a new product from scratch since the original app was 100% Flash and we are just month away from a completely browser block :)
“The Flash” the film character dies in December 2019, flash the shitapp dies in December 2020
All the knowledge of how Photo Editing works came out of building the original products back in the day, there is more information about the field today to be found written online but much is still secrets kept at a few companies.
The browsers is really a shitty environment to be writing this kind of apps in, performances is a struggle in every step :)
Typescript is really nice and close to Actionscript3. I’m glad Flash died.
The new open ecosystem with tc39 and wc3 is pretty awesome.
All the best!
with Adobe AIR for ex
It was also nice to see a negative point (no drawing on image layers) get resolved from one week to the next.
Pixlr was (well, still is) a flash-based webapp that allows you to edit images in your browsers, and apparently had ~60 Million users back in 2012. It was sold to Autodesk, they didn't do much with it. Then Autodesk sold it to new owners, who invited the original founder to come and work on it, and as a result, this canvas/WebGL version was launched.
Actually, it is the 19th most frequent format of files opened in Photopea :) https://twitter.com/photopeacom/status/1172183966125871105
Jaw dropped when i realised the "screenshot" of the editor is actually the editor. On my phone!
Of course I've used Pixlr and i love it bur will definitely try PeaApp more
Ivan and Ola deserve a huge thank you for releasing these tools!
WASM builds of two C libraries are used in Photopea: Harfbuzz (177 kB) and Fribidi (32 kB). But their authors were kind enough to give me WASM files directly, so I did not have to compile anything.
Wow, that's amazing.
I did some headscratching with WebAssembly a little while back while figuring out what approach to take for a small thing I wanted to make reasonably cross-platform. My terribly nonscientific back-of-the-envelope benchmark was to time reading/writing an array. Initially JavaScript won squarely over WASM, but then I realized I wasn't using -O3 (woops) and the WebAssembly got about 1.75x faster than it appeared my JS code ever would.
In my very limited experience the most significant difference at the end of the day seems to be that the source language isn't JavaScript. All tooling seems to have grown some element of "????" sadly, and all languages bring their own warts. Once I figured out a working [webassembly generation] workflow, it felt pretty solid, like it wasn't about to fall over too easily. Clang support seems to be just about perfect at this point, if you haven't tried it within the past few months.
My personal first medium/long-term step will be to get a good grip on reading WebAssembly S-expressions, so I can help keep the loop as closed as possible in terms of understanding what my source is generating. (And maybe follow the occasional reverse engineering white rabbit.)
Next will be conquering my love of interpreted languages that don't have a compile step (let alone a long one ;) ), haha. JavaScript indeed can't be beat for rapid iteration! (Particularly if you use live-reload in testing...)
I gave a talk about it: https://www.youtube.com/watch?v=IZmaeC_Ma5A
Have you tried moving particularly hot portions of code to WebAssembly yet?
Obviously in Photopea's case this would generally require rewriting portions of the code in C/C++/Rust, and potentially doing a few iterations of looking at the generated WASM and tweaking the input to produce the best (maintainable) results... so a bit of a long-term project :)
Whenever you get to this, I'm sure a lot of people would appreciate a benchmark post with speedup percentages etc.
And WASM is so new that maybe sharing some of the approaches you used, the JS you started with, and the C/C++/Rust/etc you ended up with, might also attract folks looking for assistance with their own image-processing-related projects. (This being said... translation: I, like lots of others, am extremely interested in the bits of code that make Photopea so efficient, which you worked hard to perfect and have every right to not share :D)
I open-sourced many parts of Photopea: https://github.com/photopea?tab=repositories .
(No offense meant to the companies being acquired, they’re usually great. Autodesk is the one who seems to screw everything up.)
Kind of interesting to look through these and wonder what (if anything) survived:
* https://en.wikipedia.org/wiki/List_of_acquisitions_by_AOL
* https://en.wikipedia.org/wiki/List_of_acquisitions_by_Oracle
* https://en.wikipedia.org/wiki/List_of_mergers_and_acquisitio...
* https://en.wikipedia.org/wiki/List_of_mergers_and_acquisitio...
* https://en.wikipedia.org/wiki/List_of_acquisitions_by_Cisco_...
* https://en.wikipedia.org/wiki/List_of_acquisitions_by_Electr...
They did the NC Java station alongside Sun, were the first RDMS to support Java stored procedures, ported their installers and GUI tooling to Java, created their own JVM, later bought BEA, and created their own JEE implementation, among other Java frameworks.
But it's not just the underlying speed. It's GUI interface design is simply beautiful. It's also intuitive, and discoverable. God how I wish other young designers would follow this example.
I suspect you are going to struggle commercially against "free" from the likes of Gimp unless you can survive on advertising revenue, but you've done well so far - bought out, run into the ground, sold back for pennies. It doesn't get much better than that. Given the quality of this product who knows, it may happen again.
I wish you and your product the best of luck - you deserve it.
Thank you for sharing this!
2. Alpha composition? Are you sure that's what you mean? we've had that universally in browsers since IE7.
I am continually stunned at how little most developers know of what browsers are capable of.
I guess it's because developers don't always need to know everything.
The browser platform has turned native computational capabilities into a "hodge podge" of functionalities that a developer needs to pick from, so programming becomes more like shopping than like building things. Not every developer likes that mindset.
Browsers are just a platform like any other, you work with the platform capabilities the OS or platform gives you. what alternative do you think there is?
Is this some debug mode of a minifier? Is it supposed to make reverse engineering harder? (it seems to make it easier to me IMO)
Even with the comments it isn't clear what the story is (at least at time of 15 comments)
Its not the end of the world but one of the things I like best about HN is trustworthy titles. This erodes that.
Just my 2 Canadian cents.
It's important that HN's front page not be completely predictable, so we allow variations sometimes. The rules here are called guidelines for that reason. HN is a spirit of the law place, not a letter of the law place, and the spirit is curiosity.
The actual story behind this is quite interesting. I wish there was a blog post with more details. Perhaps if they were forced to use proper titles we might have got that.
I don’t argue with your authority to vary the rules. I just wanted to provide feedback.