[HN Gopher] That Time I Recreated Photoshop in C++
       ___________________________________________________________________
        
       That Time I Recreated Photoshop in C++
        
       Author : f055
       Score  : 287 points
       Date   : 2025-03-15 18:22 UTC (2 days ago)
        
 (HTM) web link (f055.net)
 (TXT) w3m dump (f055.net)
        
       | chpatrick wrote:
       | Photoshop has a million features though, a couple of image
       | filters doesn't really count as recreating.
        
         | ForTheKidz wrote:
         | Still very, very impressive for undergraduate work.
        
         | JackFr wrote:
         | Nailing the UI though is both very difficult and very
         | important.
         | 
         | In 2006, GIMP had a ton of features, but compared to
         | Photoshop's UI it was positively awful.
        
           | brnt wrote:
           | People say this, but I didnt have such issues using Gimp
           | compared to PS. They are different, that's it.
           | 
           | The main thing I missed were stackable layers, but it was not
           | a huge issue for me.
        
             | phendrenad2 wrote:
             | People say it because it's true for them. User experience
             | is after all highly subjective. I think that the open-
             | source world largely ignores this fact and pretends that if
             | any one person says "good enough for me" then it's done.
        
               | brnt wrote:
               | The reserve is true too: if anyone says it's NOT good
               | enough for them, then it's done.
               | 
               | Actually check it out yourself, and give yourself some
               | time to get used to it. If you care about not using PS of
               | course.
        
           | Arainach wrote:
           | You could replace that year with any year since the start of
           | the GIMP project and it would still be true. It's the epitome
           | of an open source project run by people who care about
           | technical features, not real world users.
        
             | pdntspa wrote:
             | Photoshop had a pretty steep learning curve. "Users" had to
             | spend some time getting to know the workflow.
             | 
             | GIMP also has a steep learning curve. But these same
             | "users" turn their noses at spending some time getting to
             | know the workflow.
             | 
             | As someone who is proficient in both, it is not hard to hit
             | similar levels of productivity with GIMP as it is in
             | Photoshop.
             | 
             | I hate this attitude that people have with open source
             | being "user hostile". Stop acting like spoiled children.
             | Why must the software always come to you? Why cant you come
             | to the software?
        
               | Lord-Jobo wrote:
               | I think the biggest hurdle is that the shortcuts, ui, and
               | workflows all feel different for the sake of being
               | different. Why reinvent the wheel on it?
               | 
               | I also hate this idea that we aren't allowed to give
               | feedback on open source software. I get it, it's an
               | incredibly thankless thing to do, but feedback of "having
               | to relearn all of this stuff is unpleasant" isn't a
               | problematic thing
        
               | BizarroLand wrote:
               | It's not that they CAN'T duplicate photoshop, it's that
               | adobe would sue them out of existence if they did.
        
               | m-schuetz wrote:
               | Gimp is an entirely different league of user hostile.
               | There are intuitive GUIs, unintuitive GUIs, and then
               | there is GIMP.
        
               | pdntspa wrote:
               | Everyone says this, but nobody backs it up.
        
               | m-schuetz wrote:
               | The thing about something like usability is that if, as
               | you say, "everyone" says it's bad, then it is bad.
        
               | pdntspa wrote:
               | Or they're propagating a meme.
        
               | HeyLaughingBoy wrote:
               | Because tools should be built for their users, not the
               | other way around.
        
             | mock-possum wrote:
             | Last time I checked ( a few months back) there was a little
             | package of configurations + plugins / skins that were
             | geared towards tweaking GIMP to be more accessible to
             | people who were familiar with Photoshop -
             | 
             | And it wasn't perfect, but give credit where credit is due,
             | it was better than it's ever been, it definitely got me
             | close enough to complete a little photo collage project.
        
             | jeroenhd wrote:
             | GIMP definitely suffers from programmer UI design, but
             | Photoshop isn't much better. Menus nested in menus nested
             | in dialogue boxes, keyboard shortcuts that conflict with
             | every other shortcut on any system still in use today, and
             | of course the assumption that everyone already knows what
             | every button does. It's not quite Blender levels of
             | unintuitive, but there's a reason people take courses just
             | to use the damn program. If it weren't for the branding
             | popularity and the fact Photoshop was one of the first
             | programs of its kind, I don't think it'd ever gain
             | popularity with that terrible kludge of a UI, and that's
             | without the ridiculous price.
             | 
             | Ever since GIMP docked toolbars and windows by default
             | (which also took a few versions in Photoshop) I don't think
             | the interface is that bad anymore, at least not compared to
             | Photoshop.
        
             | raincole wrote:
             | Photoshop's UI is terrible as well (not defending GIMP). At
             | least for digital painting.
             | 
             | - How to set 'C' key as to open color palette?
             | Surprisingly, you can't do it in Photoshop.
             | 
             | - Photoshop is the only painting app that needs a
             | completely new interface for liquifying, instead of just
             | implementing it as a brush.
             | 
             | - Photoshop's 3D, vector path and animation feature are all
             | abysmal. I guess it's to push you to buy other Adobe
             | software.
        
             | kakuri wrote:
             | GIMP is astonishingly bad. I got by for many years with
             | Paint Shop Pro, even through its steady decline after Corel
             | acquired it, but eventually they destroyed it. In
             | desperation I turned to GIMP but it is so bad that I now
             | use Photopea. I would pay for a modern functional
             | equivalent of Paint Shop Pro, but I don't know that it
             | exists.
        
           | 77pt77 wrote:
           | What's your opinion on Krita?
        
             | badsectoracula wrote:
             | As someone who has used a bunch of different image editing
             | tools to make stuff (mainly for games, though i'm not an
             | artist - i just need to make art :-P), Krita is fine. It
             | has a bunch of weirdnesses (e.g. 2983942 commands to paste
             | an image and all of them are kinda weird or missing in some
             | way) and doesn't have as much features as GIMP but overall
             | it is fine. Then again i found GIMP fine for a long time.
             | 
             | Though my favorite UX (and features) of all time is Paint
             | Shop Pro 7 which i find superior to Krita (i have it
             | installed alongside Krita, GIMP and Kolourpaint -used for
             | minor edits since it starts instantly- on my Linux setup
             | via Wine). I used it since Win3.x days in the 90s until
             | PSP8 was released and they screwed up the UI. I moved to
             | GIMP some time later when i started using Linux and used
             | that for years. Some years ago i found a boxed copy of PSP7
             | anniversary edition, reinstalled it and despite not using
             | it for more than a decade i found it much easier than GIMP
             | and i'm using that since, until i wanted to make a plugin
             | to assist me with texture painting for 3D models. Making
             | plugins for PSP7 was very cumbersome so i thought to try
             | Krita instead (Krita has an MDI mode which i like when
             | working with images) and ended up sticking with it since
             | making the plugin was relatively easy[0].
             | 
             | I'll download Krita's source code and try to build it and
             | add the features i miss from PSP7 at some point, KDE people
             | do not seem very allergic to having options so i might be
             | able to recreate the stuff and behavior i miss from PSP7 in
             | Krita.
             | 
             | In order of preference:
             | 
             | 1. PSP7
             | 
             | 2. Krita
             | 
             | 3. Pixelmator (only under macOS of course and i only used
             | an old version before App Store with the only alternative
             | being GIMP running under XQuartz - i think GIMP got a
             | native version later but i never used it)
             | 
             | 4. GIMP (i found older versions easier to use, but every
             | time they introduce a new major UI change i find it more
             | awkward than before and now they're switching away from
             | Gtk2 to Gtk3 -which i dislike the feel of- i decided to
             | stick with Krita)
             | 
             | 5?. Photoshop, maybe (i only used it a little in the past,
             | always found it more cumbersome than GIMP or PSP, but it'll
             | do if nothing else is available)
             | 
             | [0] http://runtimeterror.com/tools/kritaview3d/
        
               | numerosix wrote:
               | Same as you... I don't use psp anymore because i'm on the
               | lovely penguin for decades but psp was the finest paint i
               | ever use, since, too, win3...
        
             | raincole wrote:
             | (not the GP)
             | 
             | Krita is very functional as a digial painting program. But
             | I think the dev team took the "painting" part of digital
             | painting too literal. They clearly spent a lot of time
             | developing niche brush features (the only painting app has
             | more detailed brush settings I know is Corel Painter),
             | which is nice, but some other areas are neglected.
             | 
             | In comparison to Photosho, it's quite painful to add any
             | text in Krita. The layer styles and filters are much less
             | performant. But if you only do painting, Krita is totally
             | fine.
        
           | ffaser5gxlsll wrote:
           | This is completely subjective.
           | 
           | As a student I used a ton of warez software in the 90ies. As
           | such, I didn't have any real prejudice back then, and
           | photoshop was the worst of the bunch from my perspective. I
           | held that view for a long time, akin to how I consider
           | autocad from autodesk one of the worst cads you could use
           | despite being outrageously popular.
           | 
           | I have no longer an opinion on it as I didn't use it for such
           | a long time. I'm cycling between krita and GIMP, and GIMP's
           | UI is just fine to me, in the same way I suppose a ton of
           | designers-with-big-opinions are more familiar with photoshop
           | due to all the training they did on it (and probably,
           | _mostly_ on it).
        
             | Nzen wrote:
             | Sure, our expectations about UI patterns are path
             | dependent. However, if a program isn't consistent
             | internally [0] (rather than against the body of software we
             | are familiar with), then the complaint is less subjective.
             | 
             | [0] https://www.youtube.com/shorts/tFYkGyaXCw0 1 minute
             | example of the procedure for editing a brush style
        
               | BizarroLand wrote:
               | I get that whoever made and posted that terrible youtube
               | short is annoyed, but if they had done a basic search
               | online, specifically "how to edit a brush in gimp", the
               | first result would have taken them to this page:
               | 
               | https://docs.gimp.org/en/gimp-brush-dialog.html
               | 
               | Which says:
               | 
               | It is a general rule that you cannot alter the resources
               | that GIMP pre-installs for you: brushes, patterns,
               | gradients, etc; only ones that you create yourself.
               | 
               | It's okay to be annoyed when something doesn't work the
               | way you want it to, but RTFM before you make a rant about
               | it. It's the bare minimum.
        
           | rcxdude wrote:
           | It also did lack some important features. It still doesn't
           | have proper support for different colorspaces, for example,
           | and it's really not very on board with non-destructive
           | editing in general.
        
         | airstrike wrote:
         | I don't think we're meant to take "recreating" literally
        
           | account42 wrote:
           | Op chose to go with the clickbait title so it's fair that
           | they get criticized for it.
        
             | airstrike wrote:
             | that's not clickbait at all
        
         | imoreno wrote:
         | If you say "I made basic image editor" it doesn't sound as
         | impressive, of course. Not surprising given how it opens with:
         | 
         | >As I'm getting older I look back on all the things I've done
         | as a creative developer, and I see so many cool projects!
         | 
         | Such modesty...
        
         | bufferoverflow wrote:
         | Exactly. I think Photopea is the closest replication attempt,
         | but even it misses many features.
        
       | bschmidt44 wrote:
       | Check out https://photopea.com/
       | 
       | I use it daily.
       | 
       | bro who made it is a beast
        
         | timnetworks wrote:
         | The native keyboard shortcuts
        
           | wink wrote:
           | IIRC it can't to ctrl-t (transform) because it opens a new
           | tab.
           | 
           | Gets me every time I use it. It's still a lovely piece of
           | software.
        
         | brulard wrote:
         | Photopea is really nice. I was pleasantly surprise how many
         | features they implemented to a free product. And even UI is not
         | half bad. Kudos!
        
         | busymom0 wrote:
         | I have used Photopea for so many of my projects. I make apps
         | and I use it for every app icon and App Store screenshots I
         | have built. Also used it to make memes. Not having to install
         | it on my Mac and just easily accessing it from browser is
         | immensely helpful.
        
         | urbandw311er wrote:
         | Yep. Have it as a desktop icon and use it like a native app.
        
       | mrandish wrote:
       | > "It followed a set of five rules to benefit the end user: no
       | installers, no archives, no registry keys, no additional runtimes
       | and a single executable file."
       | 
       | Reading this sentence made me feel warm and happy. I get why the
       | registry exists and things work the way they do today around the
       | Windows software ecosystem but... damn, I really miss the days
       | when most desktop software was more like this. These days I try
       | to use portable installs whenever they're available, I just wish
       | it was more common. The time, inconvenience and uncertainty I'll
       | be able to fully restore all my preferences makes me actively
       | avoid reinstalling Windows.
        
         | dkga wrote:
         | That simplicity and lightness of design also resonated with me.
         | 
         | By the way, really cool read-off. The only thing I missed
         | though was a deeper discussion of some of the challenges that
         | the author alludes to in the beginning. But that's just me
         | being pedantic, the post is really nice and actually seems to
         | be quite an impressive work.
        
         | yndoendo wrote:
         | That is one of the reasons I like GO language. Single
         | executable, which makes tooling easier for others to use. My
         | alternative method is using single executable packaged with
         | NSIS that extracts everything to a temp directory before
         | running.
         | 
         | Sorry, Window Registry is a cornucopia of inconsistency and
         | poor design. Gnome's Registry is well designed, comparatively.
         | Key descriptions, value options with limitations and which is
         | the default is a quality User Interface design. Just look at
         | the Windows group policy to registry mappings, they are all
         | over the place for the same logic layout with double negatives
         | for keys.
        
           | airstrike wrote:
           | Obligatory comment saying you can do the same in Rust
        
             | IshKebab wrote:
             | It's not quite as seamless as in Go to be fair. But it does
             | mean you can write Rust instead of Go.
        
             | delusional wrote:
             | You can in fact also do it in C
        
             | eptcyka wrote:
             | I can't target msvc or aarch-64-apple-* and compile a
             | binary on Linux, without resorting to significant amounts
             | of rectal dentistry.
        
               | iknowstuff wrote:
               | Can't you just replace the "cargo" command with "cross"
               | cross build ---target=...
               | 
               | https://github.com/cross-rs/cross
        
               | demurgos wrote:
               | Cross-building for Apple is possible, but it's far from
               | smooth with many steps that you have to figure out by
               | yourself unfortunately.
        
               | cooljacob204 wrote:
               | I use this which seems to work well for my projects.
               | Particularly their docker image.
               | 
               | https://github.com/rust-cross/cargo-zigbuild
        
               | jeroenhd wrote:
               | I've built .exes for Windows just fine on Linux. I don't
               | know about Apple stuff, though, I don't think there's any
               | built-in Linux tooling to submit an executable for
               | Apple's signature scheme.
        
             | p_ing wrote:
             | And .NET
        
           | djfobbz wrote:
           | Yeah, that's why Go is a solid win - single binary, no
           | installer headaches, just build and run. Rust's powerful but
           | comes with build complexity and dependency juggling. Go keeps
           | it clean, fast, and dead simple to deploy.
        
         | dgfitz wrote:
         | I'm not sure what the best path forward is for making single-
         | binary apps without static-compiling in of the libraries.
         | Licensing usually makes that untenable.
        
           | ryandrake wrote:
           | The license is one of many the tradeoffs you make when you
           | choose whether or not to include third party libraries. You
           | don't have to use them.
        
             | dgfitz wrote:
             | I sure don't. You nailed it.
        
           | maccard wrote:
           | Pay for it, or open source your work (assuming you're talking
           | about QT).
        
           | TingPing wrote:
           | The classic option is just a self extracting exe. I don't
           | really understand the fear of archives personally.
        
           | gkbrk wrote:
           | Which license forbids static linking?
        
             | 01HNNWZ0MV43FF wrote:
             | They might be referring to *GPL libraries not allowing
             | proprietary / permissive exes to static-link them. e.g. I
             | think Qt requires its DLLs to be separate on disk as part
             | of the LGPL, unless you buy the commercial license.
        
               | rubymamis wrote:
               | Please don't spread misinformation, there's a HUGE
               | difference between GPL and LGPL, and you CAN statically
               | link with LGPL you just must provide the object files to
               | the user so they can re-link them with any version of Qt
               | they want.
        
         | thrdbndndn wrote:
         | There are lots of useful actions an installer does that (some,
         | if not most) end users actually want, including but not limited
         | to adding shortcuts to start menu so you can find it or search
         | for it, associating file formats, registering to Windows'
         | program list, etc.
         | 
         | I was a big fan of "portable" software, but nowadays if a
         | software offers both ways, I actually prefer using installer.
         | Otherwise I have to manually add them to Start Menu to be able
         | to search for it, to begin with.
         | 
         | I do hate registry keys, simply for the fact they are often
         | lost after reinstalling the OS. Please just keep all the
         | settings in %appdata%!
        
           | pjmlp wrote:
           | If only everyone actually kept up with Windows development
           | best practices, including Microsoft teams themselves[0].
           | 
           | Configuration via XML files, AppData, registry free COM
           | activation, MSI installers, only to quote a few examples, are
           | decades old by now, at very least since Windows XP.
           | 
           | [0] - To be fair, nowadays many young employees seem to only
           | ever used Windows after joining Microsoft, so what else can
           | we expect, if apparently they don't get the right mentoring.
        
             | CLiED wrote:
             | Is there a book or site documenting these best practices
             | somewhere? I'm getting into windows dev and am curious
             | about them.
        
               | p_ing wrote:
               | https://learn.microsoft.com/windows/apps/get-
               | started/best-pr...
        
             | kibibu wrote:
             | I cannot stand AppData, specifically the way it's often
             | used to store files that should be in Documents.
        
               | jeroenhd wrote:
               | That should be covered by the part about "best
               | practices".
               | 
               | That said, I keep finding more AppData files in my
               | Documents folders than the other way around. Linux
               | software (especially legacy software that doesn't respect
               | the XDG spec) is the worst for that, somehow spreading
               | files and directories across my user profile directory
               | and my documents directory.
        
               | jamesfinlayson wrote:
               | I'd never heard of AppData until a few years ago when I
               | went hunting for where some game config file was getting
               | written to.
               | 
               | Seemed like a bunch of disparate things with the most
               | common probably being a dumping ground for programming
               | language library caches (Maven and NuGet and maybe
               | another couple).
        
               | kibibu wrote:
               | I lost my kid's minecraft world because it stored
               | everything under AppData/Local or some nonsense.
        
               | mattl wrote:
               | How did you lose it? That sounds super frustrating
        
               | kibibu wrote:
               | By backing up everything in important-looking folders
               | (including My Documents, My Games, the Minecraft
               | installation folder), and overlooking AppData as it is
               | 99% download caches, tempfiles, and other garbage.
        
               | hobs wrote:
               | :) and local state, configuration, and anything an app
               | needs when you do stuff. It's really the local user state
               | in most cases, very important to back up!
        
               | wink wrote:
               | On my Win10 desktop it got to 30GB though and the stuff
               | worth backup is actually about 1GB of it.
               | 
               | Let's just call it what it is: a complete mess. Some apps
               | install their binaries in there, some just config files,
               | some all your data.
               | 
               | If there are guidelines (and they are not conflicting)
               | about 1/3 of apps are ignoring them.
               | 
               | Also good luck trying to back it up with robocopy or
               | anything, maybe windows' own backup tool can read it
               | while running on that account, I usually get errors,
               | which I think are mostly fine to ignore.
        
               | hobs wrote:
               | There's no good guideline - if you want a local cache
               | that transports across user migration, that's the show.
               | Windows doesn't really have a "separate your local disk
               | cache from your backups" method, but you can certainly do
               | the Cleanup Task to remove some things that buy into that
               | modal that's 25 years old :)
        
               | fngjdflmdflg wrote:
               | I made a similar mistake when upgrading my SSD. There was
               | some token that was stored in there that I needed, and
               | IIRC I had lost the password needed to generate a new
               | token. I only realized that I was even missing it a few
               | weeks later when I needed to use the tool again. luckily
               | I still had the old SSD so nothing happened. This
               | happened even though I'm familiar with locallappdata and
               | have even used it in some apps I created. It's just not
               | the first thing you would think about when doing a backup
               | unless you've already been bit by it before. Apps
               | generally don't tell you if they store something
               | important there, and the tool I was using never tell me
               | where the token was stored. Doesn't help that file
               | explorer hides the folder from you by default.
        
               | pjmlp wrote:
               | It is not meant for that, rather blame the developers.
        
               | Dennip wrote:
               | Probably just preference but I hate when apps put things
               | in the documents folder, thats where I want to put the
               | things I've created specifically, not automated config
               | files etc. There should be a 'Preferences' folder or
               | something to separate the chod in AppData from the useful
               | stuff.
        
               | Suppafly wrote:
               | >I cannot stand AppData, specifically the way it's often
               | used to store files that should be in Documents.
               | 
               | Which programs do that? Or do you think things like
               | preferences for programs should live among your
               | documents?
        
               | Gracana wrote:
               | A lot of games store save files in appdata. That's the
               | only thing I (not op) can think of, and one I regularly
               | find annoying (if only slightly).
        
               | Suppafly wrote:
               | Yeah I suppose that's the only example I can think of, I
               | noticed a comment later mentioning that that is where
               | minecraft saves things, although I'm not sure I'd want
               | those in with my documents either. They probably should
               | live some place that the user has access to, so I guess
               | that leaves app data or documents, neither feels like a
               | great choice.
        
           | vlovich123 wrote:
           | What about a standalone executable that just offered the
           | ability to install itself without having a dedicated separate
           | installer?
        
             | restalis wrote:
             | It would be annoying. If the use-case is as a portable
             | application, but the application would want to let the user
             | know (in a sufficiently loud manner) that it can install
             | itself, then either the user would be forced to pay
             | attention at that aspect every time it opens the
             | application, or that "portable" application will have to
             | somehow pollute the environment with (at least) a note for
             | itself of the fact that user was offered but chose not to
             | install anything. That note is usually just a first change
             | in the system and, for a non trivial application, is way
             | too easily followed by many other kind of saved changes,
             | which in itself looks like a creeping install. Then, if the
             | user would actually choose to install, the app will have to
             | do what, make shortcuts to its current location, which may
             | be a thumb-drive, or another less ideal placement for a
             | program (because how many of us take time to think about
             | file management anyway)? Or, if the application makes a
             | copy of itself to a conventional place (for an application)
             | in the system, then now the useless standalone executable
             | either gets forgotten about or becomes a burden for the
             | user (who has to decide what to do with it).
             | 
             | The most appropriate behavior for a portable application is
             | for it to stay clean by default and only offer the user to
             | explicitly enable persistency-dependent functionality. When
             | the application starts, it checks if there's any previous
             | trace of itself and depending on that it either keeps its
             | portable-like clean behavior or switches to installed-like
             | one.
        
               | vlovich123 wrote:
               | Why would it have to let the user know via an obtrusive
               | splash or anything? Could just be a very simple
               | unobtrusive option on app launch or a menu item.
               | 
               | Same goes for post install - not too hard to arrange to
               | auto delete the old copy.
        
             | jamesfinlayson wrote:
             | I remember a game that did this in like 2006 (it was a
             | small GUI program called drug baron or something like that
             | - you bought and sold drugs and weapons with your sales and
             | purchases affecting the market - like a text-based game
             | without having to use the command line).
             | 
             | It didn't work so well (probably not programmed that well I
             | guess).
        
               | moron4hire wrote:
               | I suspect there were a few games like this, but I think
               | the most popular one was called Drug Wars, in case anyone
               | cares to go looking.
               | 
               | Yes, it was very poorly programmed. It always surprised
               | me how popular it was. I think it was kind of a middle-
               | to high-school meme game. I think the main popularity was
               | that A) it was edgy, and B) kids could run it in school
               | computers.
        
             | pjc50 wrote:
             | The really tedious answer is that there's special (very
             | badly documented) magic to installers on Windows. I suppose
             | you could shove an MSI inside the executable, then write it
             | out and shellexec to install the MSI.
        
           | klodolph wrote:
           | I'm really fond of the way macOS does this, which is to stick
           | this information in the executable.
           | 
           | Back in the day, this worked via a flag in the metadata for
           | each file. When you got a new executable, the flag was
           | _unset_. The OS would see a file with an unset flag, ask "Is
           | this an executable? What files can it open?" and then add
           | this information to a database called the desktop database.
           | 
           | This is why file associations work on a Mac without an
           | installer, and without writing any code (you just have to
           | write the code for "open file in response to OS request").
        
             | alt227 wrote:
             | > which is to stick this information in the executable
             | 
             | This is neat, shame they went completely the other way with
             | file metadata. It forces a hidden .ds_store file in every
             | single folder a mac touches just to store info like access
             | time. Every other system stores this in the file itself.
        
               | manwe150 wrote:
               | Not to be too annoying, but that file is how it supports
               | the feature on non-posix-compliant file systems (usually
               | FAT). On filesystems that support file-streams (or the
               | original HFS), that metadata is stored on the file itself
        
               | alt227 wrote:
               | Considering how pushy Apple normally are when it comes to
               | forcing their customers to use new things so they can
               | obselete old ones, I am very surprised where Apple have
               | drawn the line in supporting older systems.
        
               | p_ing wrote:
               | You're thinking of resource forks. .DS_Store is stored as
               | ".DS_Store" even on APFS.
        
               | NobodyNada wrote:
               | Windows does the same thing with 'Thumbs.db' files.
               | They're just hidden from you on Windows systems, just as
               | .DS_Store files are hidden on Unix-like systems; but
               | you'll see them if you use a thumb drive with both types
               | of machines.
        
               | alt227 wrote:
               | So why are the smb shares on my linux file servers full
               | of millions .ds_store files but zero thumbs.db files? I
               | have to run automated scripts to remove them regularly,
               | and try to run the commands on the macs to stop them
               | writing ds_store files to network shares [0]. But still
               | it seems to magically reenable itself every now and then.
               | This is a problem I have never had with windows machines
               | and 'thumbs.db' files.
               | 
               | [0] https://web.archive.org/web/20190714230437/https://su
               | pport.a...
        
               | p_ing wrote:
               | If I recall, Windows does not generate thumbs.db files,
               | thus file icons-as-pictures, on any non-local device.
        
               | jamesfinlayson wrote:
               | I didn't think newer versions of Windows generated
               | Thumbs.db either (well I think they do, but in some
               | centralised location I thought rather than in every
               | single individual directory).
        
               | noisem4ker wrote:
               | "Newer versions" >= Vista (2007)
               | 
               | They switched to storing thumbnails locally.
        
               | NobodyNada wrote:
               | Ah, guess my knowledge was a bit out of date then :) I
               | haven't been a regular Windows user for quite some time.
               | I _thought_ I 'd seen Thumbs.db files generated on flash
               | drives by at least 7 though.
        
               | DidYaWipe wrote:
               | Because Apple thinks nothing of spewing these turds all
               | over every machine and directory you visit from a Mac,
               | which is not just a dick move but also technically
               | incompetent.
               | 
               | The next Mac visitor who comes along will overwrite the
               | turd with his own, so that's a blunder.
               | 
               | Then there's the fact that they could have stored all the
               | turds on the local machine, keyed by URI or path or
               | network address. This would solve both the dickishness
               | and the overwriting problem. And if a remote machine's
               | path or address changed, whoop dee doo... you lost your
               | Finder layout for that directory. Pretty low stakes.
        
               | Lammy wrote:
               | Relevant: "The Mac, Metadata, and you" (2001)
               | https://arstechnica.com/gadgets/2001/08/metadata/
        
               | neotek wrote:
               | First thing I used to install on macOS was Binaryage's
               | superb asepsis utility, which intercepts the creation of
               | .ds_store files and redirects them all to a local
               | container folder, until SIP killed its development.
               | 
               | It always seemed suspicious to me that Apple, a company
               | that is famously obsessed with UI/UX, would settle on
               | such a ridiculous process for storing file metadata.
        
             | paulddraper wrote:
             | I mean...that's just the same thing right?
        
               | klodolph wrote:
               | Same thing as what? Same thing as having an installer
               | modify HKEY_LOCAL_MACHINE\Software\Classes, and having
               | the associations break if you move the program to a thumb
               | drive?
        
             | cosmic_cheese wrote:
             | Furthermore, the OS can pick up the extensions, services,
             | etc the app carries within its app bundle and offer them to
             | the user to enable this way. No need to copy files to
             | obscure directories (be it manually or with an installer),
             | and when you trash the app bundle they're all gone.
             | 
             | This is why merely having a copy of an app is enough to
             | make QuickLook able to preview the filetypes the app is
             | capable of opening. The system picks up the QuickLook
             | extension in the app bundle and enables it.
             | 
             | It's not perfect since small .plist config files get left
             | behind, but it's a whole lot more clean by default compared
             | to the Windows approach.
        
               | DidYaWipe wrote:
               | This is just not true, and hasn't been for decades. Many,
               | if not most applications create subdirectories and store
               | stuff in the Library/Application Support directories.
               | Trashing the app bundle leaves all that stuff behind.
        
               | cosmic_cheese wrote:
               | It comes down to each individual developer, and generally
               | speaking indie devs are much better behaved than cross
               | platform giants like Adobe. It's another reason why Mac
               | users often have a preference for native AppKit apps,
               | which are what indie Mac devs tend to build.
               | 
               | Either way, the end result is still better than under
               | Windows because at least macOS doesn't go out of its way
               | to keep the Application Support folders (user and global)
               | hidden with magic URLs and such. Tick the checkbox to not
               | hide the Library folder in your home folder's Finder
               | inspector window and the only thing making access harder
               | is gone.
        
               | hobs wrote:
               | >Either way, the end result is still better than under
               | Windows because at least macOS doesn't go out of its way
               | to keep the Application Support folders (user and global)
               | hidden with magic URLs and such. Tick the checkbox to not
               | hide the Library folder in your home folder's Finder
               | inspector window and the only thing making access harder
               | is gone.
               | 
               | The way to access your folders in windows is literally
               | exactly the same -> show hidden folders - the "urls"
               | (%APPDATA%) are just shortcuts because of the historical
               | moving around of stuff. Most devs leave all sorts of
               | trash in OSX application support, check it out, its jam
               | packed. Some apps are now running from there.
        
               | cosmic_cheese wrote:
               | It's not the same because macOS has a setting for Library
               | folder visibility specifically. Keeping that folder
               | easily accessible doesn't require turning on visibility
               | for _all_ hidden folders /files and then having to wade
               | through a ton of normally invisible junk.
               | ~/Library/Application Support/ is just a plain old path
               | too, no need for magic platform specific keywords.
               | 
               | And yeah, Application Support is full, but as noted the
               | worst offenders are consistently cross platform apps that
               | don't care to adhere to convention. The Application
               | Support folders for Mac-first apps are usually pretty
               | lightweight/clean, with exception to apps like Logic
               | which use it as a place to keep downloaded assets.
        
               | DidYaWipe wrote:
               | Actually, it does. A few OS versions ago, Apple started
               | hiding the user Library directory. And then obnoxiously
               | RE-hiding it with each OS update if you had cleared its
               | "hidden" attribute.
               | 
               | I think they finally stopped the re-hiding behavior.
               | 
               | None of that compares to the mess that is Windows's user
               | directories. I mean... WTF is all of this stuff? There
               | are two or three copies or shadows of the user-directory
               | structure, and everything is "forbidden..." Windows is
               | just painful and infuriating to use at this point.
        
           | delusional wrote:
           | After using Microsoft Intune I will never again complain
           | about installers. At least installers mostly work, and when
           | they don't you can run them again.
        
           | Kwpolska wrote:
           | If I want to use a program once, I'll just use a portable
           | version. And I'll be angry if it decides to add itself to the
           | context menu of all Explorer files.
           | 
           | But I agree, for things I use more often, installers are the
           | way to go, and I am not a fan of projects that just give you
           | a zip and ask you to figure out where to put it.
        
           | Suppafly wrote:
           | >There are lots of useful actions an installer does that
           | (some, if not most) end users actually want, including but
           | not limited to adding shortcuts to start menu so you can find
           | it or search for it, associating file formats, registering to
           | Windows' program list, etc.
           | 
           | This, I don't really mind unzipping some random small
           | utility, but for things like games and larger applications
           | where you'll actually be saving data and preferences, a real
           | installer that knows how and where to put things following
           | the correct methods for the operating system is much
           | preferred. Then I can run the uninstaller to clean it up when
           | I'm done with it.
        
         | marcodiego wrote:
         | > no installers, no archives, no registry keys, no additional
         | runtimes and a single executable file.
         | 
         | This is exactly the experience nowadays with AppImages.
        
           | Narishma wrote:
           | AppImages still leave traces in your home directory. If
           | you're luck it's just a dot file or folder that can easily be
           | deleted but I've seen some that pollute a lot more.
        
         | tonyhart7 wrote:
         | only works with hobby project with barebones feature
        
         | Dwedit wrote:
         | The original purpose of the registry was to tell COM where to
         | look for a DLL file given a GUID. Then COM could create
         | instances of objects.
         | 
         | You still see that in there with HKEY_CLASSES_ROOT.
         | 
         | You can technically create objects without the registry, if you
         | load up the DLL, then call the exported functions to create a
         | Factory object, then use the factory object to create
         | instances. It's what COM itself does.
        
       | StefanBatory wrote:
       | Author of this article said he finished at Warsaw University of
       | Technology - it was always considered to be one of the better
       | ones here.
       | 
       | That being said, what also strikes me is how different the thesis
       | were back in times. I did mine recently in another university of
       | technology in some bigger city (without wanting to dox myself
       | that much) and 90% of our engineering theses were of very subpar
       | quality; mine included.
        
         | netsharc wrote:
         | Is it any different nowadays? AFAIK the goal isn't to advance
         | the field, but to prove to the people giving you the
         | Bachelor/Master's degree that you're able to create a "paper".
         | Some theses stand out, but most of them are probably quite
         | boring.
        
           | StefanBatory wrote:
           | It seems to me like their tasks were way heavier. For us,
           | most of us did basic CRUDs with some implemention twist, and
           | our papers were your standard: do a short theoretical
           | introduction to the domain, make a few UML diagrams, explain
           | how it works + some code examples, then testing.
        
       | nailer wrote:
       | A friend from Phonegap got acquired by Adobe a decade ago and
       | ported Photoshop to JavaScript for entertainment purposes
       | immediately afterwards.
        
         | nailer wrote:
         | Not complaining about downvotes but it seems a very odd thing
         | for Hacker News to dislike. I would have imagined an internal
         | story about a SW eng's hack project would be interesting. Oh
         | well.
        
           | brulard wrote:
           | I didn't downvote, but I fully understand if anyone would.
           | Your comment shows some serious lack of understanding of the
           | complexity of software like photoshop and the complexity of
           | porting software. We may believe that's what your friend told
           | you, but we have troubles believing he really did that. Maybe
           | exaggerated (a lot)?
        
             | zarzavat wrote:
             | I assume by ported they mean compiled the C++ code to
             | asm.js, now that as an Adobe employee they had access to
             | the source code. Though this would still be a significant
             | effort to get working.
        
             | nailer wrote:
             | > Your comment shows some serious lack of understanding of
             | the complexity of software like photoshop and the
             | complexity of porting software.
             | 
             | No.
             | 
             | He had access to the source code as an Adobe employee, he's
             | a well known low level JS engineer (hence making Phonegap)
             | and there are LLVM to asm.js webassembly compilers.
        
       | aa_is_op wrote:
       | Did it crash every 30 minutes?
       | 
       | If not, how much are you selling it for?
        
       | echelon wrote:
       | It looks like you could have sold licenses to this or gone the
       | startup route. Might have been slower and less glamorous than the
       | gig you wound up getting, though.
       | 
       | The UX looks simple and reasonable. Frankly better than Gimp.
       | 
       | Really cool work!
        
         | pessimizer wrote:
         | > Frankly better than Gimp.
         | 
         | Only for people who think that things are good to the extent
         | they "resemble Photoshop as much as possible." [direct quote]
         | The Photoshop UI isn't ideal, it's fairly terrible (not as bad
         | as Illustrator, but they're both just _old_ ), but people don't
         | want to waste the huge effort it took to commit all of that to
         | muscle memory.
         | 
         | Cloning Photoshop for a thesis is wild, though. From a comic
         | book reader to most of Photoshop in one leap.
        
         | IshKebab wrote:
         | > It looks like you could have sold licenses to this
         | 
         | Doubt it. There are too many good free options on this level,
         | e.g. Krita.
        
           | jeroenhd wrote:
           | Today? Sure. Photopea blows any hobby project out of the
           | water.
           | 
           | In the summer of 2006? This could've been a commercial
           | product for sure.
        
           | echelon wrote:
           | Krita blows though. It looks and feels like a horse of an
           | app. I'd pay for better UX.
        
       | pacifika wrote:
       | The things people make and not tell the world about. Glad it's on
       | GitHub, this is so impressive.
        
       | dingdingdang wrote:
       | Let's get a direct link to this beauty in place:
       | 
       | https://github.com/f055/fedit-image-editor
        
       | brulard wrote:
       | There was a project called "pixel32" and later "Pixel Studio Pro"
       | in the early 2000s. It looked really nice and was sold as early
       | access. But became vaporware, people that paid became really
       | pissed and the guy creating it turned from hero to villain
       | quickly.
       | 
       | https://discuss.haiku-os.org/t/pixel-studio-pro-in-past-call...
        
       | 90s_dev wrote:
       | > But I didn't promote it. A few months later, I landed a C++
       | job. So in the end all that effort paid off.
       | 
       | It's interesting how instinctively we know our hard work deserves
       | to be paid off, but it's a shame how often open source developers
       | put hard work into code that never really gets paid off,
       | especially when it's widely used in production. I guess this
       | explains why so often they look for reputation credits, or why
       | NPM added the "maybe you should donate to the authors of these
       | libs" feature, or why GitHub built in Patreon. There's got to be
       | a better model than what we have now, that doesn't take advantage
       | of naive but hard working young thinkers.
        
       | theodric wrote:
       | Slick. Runs pretty well under Wine!
        
       | DidYaWipe wrote:
       | "Straight from my previous project named Fiew I added a massive
       | image library viewer. It really could quickly and easily scroll
       | through massive amounts of pictures."
       | 
       | Which is now infuriatingly lacking in the entire domain of image
       | editors. Thumbnail browsers used to be an expected feature of
       | image editors, even shareware ones. Now? Fat chance. Good luck
       | even finding a stand-alone one.
       | 
       | Recently one called FlowVision surfaced for Mac, and it's pretty
       | much the lightweight browser that many of us have been looking
       | for for years. It has some rough spots, but the developer is
       | responsive to issues. https://github.com/netdcy/FlowVision
        
       | DeathArrow wrote:
       | In my experience, when developing software the hard part is
       | implementing the actual logic, not the UI.
       | 
       | In this case, replicating Photoshops UI seemed to be the hardest.
       | Maybe using something like MFC, Qt, C++ Builder instead of
       | straight Win API would have been easier.
       | 
       | I remember a long time ago when I was in high-school and tried to
       | implement a paint program under DOS, that had windows using
       | Borland C++ and BGI graphics library. How hard should it be to
       | implement windows, buttons and dialogs, I thought? After all,
       | with the power of OOP and C++, every problem is easy to solve, I
       | thought.
        
         | iforgotpassword wrote:
         | I think most people will agree that ui is the hardest part for
         | normal desktop software. Not getting any kind of ui going, but
         | good ui. Consistency, how to group things, what goes where.
         | 
         | If your app needs two inputs and a button then this won't be so
         | much of an issue, but I've wrestled with qt in the past for
         | more complex layouts that I hate it with a passion.
        
           | waqas123987 wrote:
           | "How can network monitoring improve the reliability and cost-
           | efficiency of telecom services
        
       | promoterr wrote:
       | umm, what's wrong with: https://affinity.serif.com/en-us/ ? Adobe
       | is out-of-everything for decades..
        
         | mjlee wrote:
         | It was released 7 years after this project, and downloading
         | someone else's image editor is not a typical route to
         | submitting a final thesis for a degree.
        
       | vijucat wrote:
       | This is why I love Windows. There is a TON of small, open source
       | software that serves a niche. Used to browse sourceforge.net and
       | freshmeat (is that what it was called?) to find them!
        
       | ArkimPhiri wrote:
       | oh you did?
        
       | NotAnOtter wrote:
       | Photoshop is a stretch.. that's more like MS paint in terms of
       | feature parity.
        
       ___________________________________________________________________
       (page generated 2025-03-17 23:02 UTC)