If you haven't checked them out, I highly recommend checking out Andreas YouTube channel [1]. It's the most interesting programming content I've ever watched - and I feel like he's honestly taught me a lot about programming!
Wow, thanks for the endorsement! I'm happy to have found a way to share my love for programming with so many people, and it's even cooler when it helps someone improve their skills :)
Props for making it through rehab by the way. I also fought drug addiction, though in a different country to yours! I completely understand the drive to have a coding project as a part of recovery -- I've done the same, though my projects are much less impressive than yours :)
I want to second that. Andreas YouTube channel is a great source of genuine inspiration. It's enlightening to see a person as skilled as Andrea doing such great craftsmanship regarding scoping things, improvising, making mistakes, fixing them, making compromises to achieve goals, and more.
Seconded. Dude is super positive and a hacker in the OG sense of the word. I watched him port Diablo to serenity in like an hour. Mindblowing. Quite frankly his ability is almost intimidating.
Yes, and it's a very functional GUI: well thought, informative, rational, with every section put where it belongs. It comes from an era in which GUIs were made to solve problems. I hope it will never ever ever go the path that GTK took after version 2.
I've been thinking recently that Windows 95/98/2000 had better UX than you can find nowadays on most websites, and while not "beautiful", it was still aesthetic.
That + a good console? Great idea. I'd love to see some innovation with the old school design ethos too; maybe there are even better ways of displaying controls? Or maybe a new way to think about controls that weren't around back then.
I think that era of Windows stuck to the literature and best practices, the UI spoke to us in its own visual language and let us know what could be clicked or right-clicked or that it had focus and might do something if you hit the spacebar etc. etc. things that behave similarly look alike, all the clues you need to learn some software on your own were there, the visual language was teaching us how we're meant to use it, the more familiar we were with windows software the quicker we could pickup new windows software.
and then I don't know what happened Steven Sinofsky showed up with radical ideas that software should be beautiful and everything sort of went to hell? curious if there was actually some kind of event marking the beginning of the end of intuitive software design for MS
Mac also caved after a real highpoint of good definition in the 90s.
With MS, they just seemed to stop paying attention to their own guidance and much preferred doing their own thing (see most editions of Office!), people just got fed up and it seems like it crumbled from there.
I think that Windows 2000 and Max OS were the pinnacle of clean Interfaces.
It seems like once the graphics capabilities became common, OS interface developers used them even when they shouldn't have. Remember when moving windows in Linux had a "jiggle" to them? The genie effect in OS X? What about the "cube" of multiple desktop? I still don't know what the point of transparent windows is.
A few effects are useful - like aero peek in Windows.
I think some of those animations make the desktop behave a little more like objects would in the real world.
For minimize, whether it's a line that shrinks, a genie lamp, a simple shrink effect, it's all the same. A simple visual cue telling you where it went.
A little form with the function is fine with me. There's a ton of computing power in even the weakest of machines. That said, I hope we'll always be able to turn it off.
Even a default install of Raspberry Pi OS uses a composited window manager on the RPi 4 now.
It can make things more intuitive. If you use mental models people already have, they tend to pick things up faster. I think the point of the cube, for instance, was to help people keep track of multiple windows a little easier by making it spacial as opposed to just a list. Maybe it wasn't very effective in that case, but I think the hypothesis was sound.
I think a lot of these things make interactions more pleasant, definitely more aesthetically pleasing. I know people love to hate on everything new but I grew up on early windows (my first PC was Windows 95) and I always thought it was kinda ugly but PCs couldn’t handle much more.
I think you can face-lift the W95/W2000 system without losing the usability, people just didn't do that. That's what I hate the most about "modern" UIs, designers make them look pretty and degrade usability, instead of just making them pretty.
And the keyboard shortcuts! Don’t forget the keyboard shortcuts! Which could help you automate, if you save a Windows macro and repeat it.
And the F1-Help! In context, boring but always available.
And the rearrangeable toolbars, native!! The status bar, not the flimsy tooltip at the bottom which disappears.
And the treeviews! And the files ordered by name! Nowadays everything is ordered by “Most recently seen” so you can go back to the past because of the infinite roll. Everything was ordered and safe there. But you would lose your mind if you didn’t reorganize your desktop regularly, and that has faded away, no-one needs to organize files nowadays.
Windows had reached an incredible level of usability, complete with blind and disability support, scriptable, standardized, reorganizable, repeatable UIs.
Then the web appeared and despite having a searchbox in every app, there still isn’t a keyboard shortcut for it.
> the web appeared and despite having a searchbox in every app, there still isn’t a keyboard shortcut for it
This infuriates me. None of the browsers have a shortcut to "search this highlighted text with Google". I instead have to right click, and carefully pick the option between "Print" and "Copy".
Not a single one, for an operation I do 200 times a day. I do not understand how it is possible. It's the most common operation I do in a browser.
The biggest problem - across a lot of fronts - was that we abandoned the idea of consistency and rooting these things in research. The original success of the Mac interface was rooted in the HIG which provided rigorous, clear, and (at least sometimes) evidence-based principles for UI/UX. Sun paid a bunch for work to be done on the GNOME 1.x series at one point, to try and significantly improve it.
The HIG is no more at Apple. GNOME design decisions are justified with comments like "I asked some friends and they liked this better". Most of the pain in Windows 10 are all the jagged edges where you cut from one era to another for no particularly good reason.
> ... let us know what could be clicked or right-clicked ...
Oh my gosh, yes. This is what drives me to distraction with recent Android releases. I'm tapping on things in the battery settings menu that used to do something, but no, not anymore.
Seriously, what is so damn awful about having some visual indication of what is a button?
Fundamentally, ui has to be a consequence of function - there's a pragmatic reality to how a thing is used that informs the limits of the representation of controls. In a visual context, it's less about skeumorphic analogs and more about how the brain maps those controls to things we already know.
This is muscle memory and plasticity in action - the relative locations, stateful appearance, and behavior of controls gets mapped in our brains in the same way as taxi drivers learning the routes in a city, a violinist learning fingerings, or a child learning the alphabet.
"Muscle memory" is required to establish foundations of more complex behaviors. Once you've built a user interface, you should not ever touch elements upon which the users have built those muscle memory mappings. Yo Yo Ma would be as lost as a child if you told him he had to play the bassoon instead of cello. After a couple years of practice, some of the higher level artistry could be brought to bear on the new instrument, but it's the low level fundamentals that matter.
Firefox screwed with fundamentals, and their market share is evidence of why that shouldn't be done.
Windows keeps pushing down that path as well, mistaking their current dominance in desktop as something absolute.
Not only on the UI level, they were also responsible for COM's revenge on .NET after Longhorn, and the golden spot it now enjoys on Windows APIs, although most that don't do Windows think of it as gone.
I can't but wonder how nice it would be if ported to ARM devices. If Linux can run on $15 small boards with much fewer resources than big PCs, this much lighter OS could literally fly.
If you like the Windows 98 era of UI design, I recommend you having a look at the GUI for the UNIX-like embedded operating system QNX. The care, tactility and readability of that interface is in my opinion unparalleled, and hidden behind a operating system few have heard of, and fewer even used.
I honestly think anything else produced since is worse than this, and since flat design has taken root, UIs have fallen off a cliff both in usability and style.
I tend to get very Patrick Bateman-like when appreciating old UIs, the colour combination and choice of fonts on off-grey backgrounds, while modern interfaces just feel like there's no personality or warmth to them. Just flat uppercase #222 sans text on flat white background.
Yeah, while I haven't spent enough time in Haiku[0] to get familiar with really it's design language, it is so responsive, readable, and discoverable that it forced me to remember all that we have lost in personal computing because of... I'm not entirely sure who to blame, a lot of people who aught to be shot out of a cannon into the sun, I reckon.
[0] sadly it doesn't even quite meet my relatively minimal almost-never-used laptop use case due to the only RDP client that worked at all being so horrifically out of date that it can't understand modern RDP authentication mechanisms.
> the only RDP client that worked at all being so horrifically out of date that it can't understand modern RDP authentication mechanisms.
Do you mean rdesktop? Indeed it's pretty old and probably should be disabled, so I just did that.
Did FreeRDP not work, then? It seems we had a 3-year-old version, so I just spent the morning updating it to the very latest (2.4.1). Seems to work fine here for me, I connected to a remote Windows machine successfully. (The port is missing a bunch of features, but the basics seem to work.)
In the future you can report issues to HaikuPorts directly, or feel free to ping me on IRC/Matrix/XMPP.
Thanks, I will take a look when I get home. I was using rdesktop via BeRDP and on its own, but it choked on the auth portion. IIRC FreeRDP failed to launch. Also tried the KRDC port but it never gave me the option of using RDP despite its claims.
I was a little annoyed at the gigantic pile of packages that came along with those last two options, but there's no need to rehash rehash that argument. I do wish there had been an obvious way to clean those up after removing the applications they supported though.
FreeRDP is CLI-launch-only, so if you tried to start it via the GUI, that may have been your problem. We should probably rework BeRDP to use FreeRDP instead of rdesktop, but that's more involved.
I think KRDC may be hardcoded to use "xfreerdp", so it won't find the Haiku variant.
Yeah, "autoremove" isn't implemented unfortunately, nobody has gotten around to that yet. It would indeed be nice to have.
I was launching it via the CLI. As I said, I'm afraid I do not recall the reason it failed to launch. If it does so now that you have updated it I will forward what information I can through the appropriate channels.
BlackBerry's tablet (which I loved; combined with a cheap Curve and a $40 AUD a month prepaid plan, I had unlimited internet access on both devices, super neat) was based on QNX if I recall correctly! Though it had its own touch UI on top of it.
ive seen first hand at an amazon sortation/distribution warehouse i worked to construct just last year used QNX for their automated conveyor and barcode sortation system, i guess since its a real-time OS? I love the UI as well and it was really neat to see QNX in the wild.
Our current product has a UI that is on par with windows 2000. We reuse the same ~26 hand-rolled UI elements on a fixed-size layout. Things like alpha blending and pixel shaders are a distant fantasy for us. Target market is highly regulated B2B, so we have more tolerance to work with here. Everything is very serious business. No one really cares about button radii or drop shadows. They just want to push the paperwork as quickly as our screens will come back and then go home. We listen to our user delegates on a weekly basis. On the actual telephone for up to an hour. Any little UX gripes are usually dealt with judiciously as a result.
Nothing is more frustrating than a perfect UI being fucked up by the passage of time. You don't need fancy shit. You just need consistency and speed. Give me back my xp-era explorer and start menu snappiness. Put a high speed camera on a windows 10 task bar and record someone right clicking on it. You might need a larger SD card than originally planned for this activity.
XP explorer is so much faster it blows my damn mind. I ran it inside Windows 10 in VirtualBox, the explorer window opens instantly and navigates instantly, while the new explorer has lag with every operation. The best way to see this is to copy or rename a file. Explorer, a Microsoft product (presumably better integrated with the kernel) will take a second or two to show the result of the action that it itself performed (!!), while Sublime Text open in the background will detect the change and display it instantly. Madness!
I feel like way too many engineers ca. 2005-2010 internalized the misconception that "asynchronous" is synonymous with "I don't need to care how long it takes". It turns out that the distinction isn't trivial.
I wonder if Explorer is deliberately updating the display after a timeout to handle the scenario where many files might rename in short succession.
One simple way to handle this could be to compute the timer to fire at $last_rename_time + $delay, initialize $last_rename_time to 0 (and later set it to the current time in milliseconds), then only actually start the timer if the calculated value is actually in the future (which it won't be for the first run).
Of course... Explorer might (...still) be using periodic polling. xD
You might be able to use Event Tracing for Windows to find out if Explorer is actually following events in real time, with the minor caveat that it might be a bit of a project. I gathered a small handful of ETW-related links over at https://news.ycombinator.com/item?id=28348564 a little while back FWIW.
I believe this is what's happening. I read something recently from Raymond Chen that it works like:
1. Open file with the delete flag
2. Call a function to set the new file information
3. Close the handle.
The signal that a file was renamed happens in step 2, and that signal/event is what many applications subscribe to.
Explorer will wait until the rename is fully completed with the handle closed before showing the change.
>I'd love to see some innovation with the old school design ethos too; maybe there are even better ways of displaying controls? Or maybe a new way to think about controls that weren't around back then.
Oh yeah, this is something we've been exploring (carefully) with SerenityOS! There's obviously been a lot of good UI/UX innovations since the late 90s, and it's super interesting to look for ways to integrate them with the classic aesthetics.
As an example, we use breadcrumb bars in our file manager, to display the current directory as a part of separately interactive segments.
And we also have "Assistant" which works similarly to macOS Spotlight, for fast access to a range of data providers.
I'm sure there are many similar concepts we have yet to discover :)
Yes! That’s such a great post. For people interested in this, I strongly recommend getting a hold of the old Windows 2000 era user interface guidelines book from Microsoft.
What book are you talking about? Is it "Microsoft Windows User Experience" published by Microsoft Professional Editions?
Aside: Thank you for your video! It looks great and that's yet another OS I'd like to try and play with -- along with Plan 9, which Serenity made me think of a bit, and TempleOS because of the soul-saving effect of devoting to a hard piece of beautiful software craftmanship.
Neumorphism is interesting, but as far away from Windows 95 style as can be.
It's tactile, yes, but low density, low contrast, borders are non existent, colours are used to create intense gradient background palettes, instead of using them to increase readability and usability.
Neumorphism has all the drawbacks of modern flat design, with none of the benefits of old UI design studies. But it looks cool.
Do check out the Spotlight version in Tiger — the first iteration has been the best iteration of it, by far. You might be able to pick up a few things!
@akling, I want to take a moment to comment just how amazing recovery can be. As someone who's suffered some similar substance issues. Thank you for being a great example of just how amazing of a place the mind can be when its trained onto something that gives us meaning and direction. I am in sheer awe of what you've created. Its incredibly powerful but yet so simple its staggering. I am so following the progress of SerenityOS (i get the name too, btw) and look forward to seeing great things come of it and from you.
Just to second what this good person here has said. Having suffered with substance abuse myself, it truly is inspiring to follow your accomplishments Andreas! I love that your hostname is 'courage', and like my fellow poster here, Serenity makes a lot of sense. Much strength to others having walked/still walking on a dark path.
For me it's the efficiency. The 90's era Windows UI and applications ran productively on machines with 8MB of RAM. That's an enormous amount of value for what amounts half today's desktop CPU cache. The limited memory forced developers to conform to the OS provided API and resources (fonts, color pallets, image formats, etc.) and the result was small, fast, consistent applications.
Today this discipline survives in mobile devices. Meanwhile, our desktop operating systems are festooned with a multitude of widget toolkits and language runtimes yielding wildly diverse, inconsistent and often fragile behavior and require 3+ orders of magnitude more memory.
Aside from (usually) pretty nice font rendering, what has actually been achieved with all of this?
I don't really think it is only that. My first OS was DOS and i used Win3.1 a lot and while i do have nostalgia for those two, i think Win9x was better in terms of GUI design and as others have mentioned, the peak was around Win2K (though not everything was going upwards, i still think border-on-hover introduced in Win98 was backwards and essentially the herald of featureless form-over-function modern flat design).
And ever since i started using a window manager in Linux (somewhere in early 2000s) i really liked Window Maker's style even though i never used NeXTSTEP for many years (in fact the only time i used it i was kinda disappointed at how primitive it was in terms of window management compared to Window Maker :-P).
Not a HN thread but he posts monthly project updates very similar to this demo but often longer and more in-depth. If you liked this post you will definitely enjoy these too:
I'd honestly love to see this with some modern workloads and practices. This guy seems like a total savant - there is something to be said for creating a whole system instead of layers.
I've been following Andreas on Youtube for quite some time. It is a monumental undertaking to write a completely new OS from scratch, and I admire his perserverence so far.
He has managed to make a worthy tribute to both UNIX and old Windows aesthetic style. And he did it almost all alone. Of course, Serenity OS is now a living, breathing community, just as it should be.
BTW, the guy has even ported DOOM, old DukeNukem and freakin' Diablo 1 to his OS. Mad respect to Andreas, Serenity is truly a work of genius.
The list of people speaking at Handmade Seattle as well as the topics sounds absolutely fantastic. So many conferences are either too corporate with presentations that are mostly flashy marketing, or they are technical but there's only like 2 or 3 people giving a genuinely solid talk. This conference looks like it has everything, great speakers and great topics.
Agreed, the Handmade Seattle event was fantastic! They have started posting recordings of this year's event to the website, so you'll be able to watch all the talks there soon (AFAIK) :)
Wow! I love the mashup of unix/linux command line functionality with functional gui. I had been looking at Mezzano, because I prefer Lisp, but then I thought it would be great to implement a Lisp on SerenityOS with all native tie-ins to the gui and OS. Hmmm... So inspiring!
Just to be clear, while I started the project, it's since been hacked on by hundreds of people (we're well over 500 contributors on GitHub) and it's by no means a solo project anymore! https://github.com/SerenityOS/serenity
I've seen his videos a few times via HN - how close is the OS to being able to use GCC or CLANG and say, compile all Debian packages.... which is one of the largest repos. I mean for this to really be usable it would have to be able to work well w/existing millions of lines of C/C++ code...
Very impressive! The GUI is very similar to an old friendly Windows style, did Andreas intentially designed it such way or use some 3rd party framework ?
From the github
'SerenityOS is a love letter to '90s user interfaces with a custom Unix-like core. It flatters with sincerity by stealing beautiful ideas from various other systems.'
The video in the link, Andreas mentions that its all from scratch.
I don't understand how they write an OS kernel, command shell, graphical shell, and browser in 3 years? I get there are more than a single person involved but it still seems very rapid.
What are the catches? Is it still very immature or assuming there was enough user-land software (which I'm sure there is not), is this ready for production use?
He has a strong philosophy of "if you want it, do it". Coming into the Serenity community and asking for features to be implemented for you is a taboo. He believes that all computing tasks can be done given enough dedication. This project is basically proof of that.
Keep in mind though that he was a WebKit developer at Apple for many years working with full stack control of iOS from kernel to browser.
Updating tools in your environment/workflow is exactly a thing that can lose a lot of time, often for not much gain[1]. One way to become very productive is to know your tools very well, and that would extend to not changing them often.
[1] not much gain in productivity, but perhaps in security, compatibility, etc
You are ignoring that we often use software created by other people.
Raise your hand if you have ever spend an afternoon trying to get someone else's build scripts working. Wondering why make, cmake, scones and ninja are used in the same project...
There you nailed it. Want a feature X in the plan9 kernel? Okay, add it. Recompile and Run. When a system is self contained and has fewer external users it's easy to iterate and develop without the fear of breakage
I've watched many of your videos and love your approach to building complex features, building the skeleton first with asserts for uimplemeted code paths. However I'd love to see how you got started, the first early (before gui) steps of the kernel. Is that documented? The earliest git checkin I found was already a pretty capable os.
Huge congrats on building such a positive community by the way.
> With bottom-up design you start with the components [...] Designing a component is a small tractable task that can be finished and called _done_. You’re creating a perfect, beautiful, reusable jewel. All engineers really want to _do_ is write components. [...] At every level there's pressure to do bottom-up programming. Avoid it. Instead, start at the top, with `main()` or its equivalent, and write it as if you had all the parts already written. Get that to look right. Stub out or hard-code the parts until you can get it to compile and run. Then slowly move your way down, keeping everything as brutally simple as you can. Don’t write a line of code that isn’t solving a problem you have _right now_.
Thanks, that was a great read and watch. The progress made over a few weeks was immense.
I didn't know about computron until you mentioned it in the video, so I have to ask, would serenity run under computtron? If so, could a serenity port of computron run serenity in serenity?
Amazing job, hope it becomes the new Linux some day, who knows. What did you add that might be interesting from a security standpoint? Things like “hardened out of the box” or “buffer overflow protection” or “network anomaly detection” or ability to plug in things that will make endpoint / server security easier can make it very popular!
SerenityOS is licenced under BSD-2-Clause License while SkyOS was entirely proprietary (and therefore disappeared when its development stalled), so the comparison seems irrelevant (your point would be more relevant if you were mentioning Syllable instead, which was quited advanced and open-source, yet somewhat seems to have disappeared... https://en.wikipedia.org/wiki/Syllable_Desktop . But since source-code is available anyone could restart it :)
I also hope that SerenityOS has a long and successful lifespan, as it seems promising !)
Trivial to do in many modern terminal emulators, the most flexible approach being in kitty, where you can map clicks on filenames printed by ls to arbitrary actions: https://sw.kovidgoyal.net/kitty/open_actions/
Yes, Andreas has an excellent eye for usability so SerenityOS and its included applications have a lot of wonderful quality if life features such as this.
I get quite jealous when I fire up the latest build of Serenity and see how functional the whole platform is in terms of QoL tweaks.
188 comments
[ 0.19 ms ] story [ 83.6 ms ] threadIf you haven't checked them out, I highly recommend checking out Andreas YouTube channel [1]. It's the most interesting programming content I've ever watched - and I feel like he's honestly taught me a lot about programming!
[1] https://www.youtube.com/c/AndreasKling
How does one even go about writing something from scratch which runs on a particular hardware?
Is this possible to do for mobile OS? Lets say writing an OS from scratch for mobile?
I see Serenity OS, I upvote it :)
That + a good console? Great idea. I'd love to see some innovation with the old school design ethos too; maybe there are even better ways of displaying controls? Or maybe a new way to think about controls that weren't around back then.
and then I don't know what happened Steven Sinofsky showed up with radical ideas that software should be beautiful and everything sort of went to hell? curious if there was actually some kind of event marking the beginning of the end of intuitive software design for MS
With MS, they just seemed to stop paying attention to their own guidance and much preferred doing their own thing (see most editions of Office!), people just got fed up and it seems like it crumbled from there.
It seems like once the graphics capabilities became common, OS interface developers used them even when they shouldn't have. Remember when moving windows in Linux had a "jiggle" to them? The genie effect in OS X? What about the "cube" of multiple desktop? I still don't know what the point of transparent windows is.
A few effects are useful - like aero peek in Windows.
For minimize, whether it's a line that shrinks, a genie lamp, a simple shrink effect, it's all the same. A simple visual cue telling you where it went.
A little form with the function is fine with me. There's a ton of computing power in even the weakest of machines. That said, I hope we'll always be able to turn it off.
Even a default install of Raspberry Pi OS uses a composited window manager on the RPi 4 now.
Why is this desirable? Objects in the real world have many inconvenient properties.
What's worse is, (at least IMO) they aren't even particularly pretty.
When you release a new OS version it has to look fresh or nobody will want it.
But about half of Linux YouTubers proudly display them. (Between you and them, the clueless one isn't you.)
And the F1-Help! In context, boring but always available.
And the rearrangeable toolbars, native!! The status bar, not the flimsy tooltip at the bottom which disappears.
And the treeviews! And the files ordered by name! Nowadays everything is ordered by “Most recently seen” so you can go back to the past because of the infinite roll. Everything was ordered and safe there. But you would lose your mind if you didn’t reorganize your desktop regularly, and that has faded away, no-one needs to organize files nowadays.
Windows had reached an incredible level of usability, complete with blind and disability support, scriptable, standardized, reorganizable, repeatable UIs.
Then the web appeared and despite having a searchbox in every app, there still isn’t a keyboard shortcut for it.
This infuriates me. None of the browsers have a shortcut to "search this highlighted text with Google". I instead have to right click, and carefully pick the option between "Print" and "Copy".
Not a single one, for an operation I do 200 times a day. I do not understand how it is possible. It's the most common operation I do in a browser.
The HIG is no more at Apple. GNOME design decisions are justified with comments like "I asked some friends and they liked this better". Most of the pain in Windows 10 are all the jagged edges where you cut from one era to another for no particularly good reason.
Oh my gosh, yes. This is what drives me to distraction with recent Android releases. I'm tapping on things in the battery settings menu that used to do something, but no, not anymore.
Seriously, what is so damn awful about having some visual indication of what is a button?
This is muscle memory and plasticity in action - the relative locations, stateful appearance, and behavior of controls gets mapped in our brains in the same way as taxi drivers learning the routes in a city, a violinist learning fingerings, or a child learning the alphabet.
"Muscle memory" is required to establish foundations of more complex behaviors. Once you've built a user interface, you should not ever touch elements upon which the users have built those muscle memory mappings. Yo Yo Ma would be as lost as a child if you told him he had to play the bassoon instead of cello. After a couple years of practice, some of the higher level artistry could be brought to bear on the new instrument, but it's the low level fundamentals that matter.
Firefox screwed with fundamentals, and their market share is evidence of why that shouldn't be done.
Windows keeps pushing down that path as well, mistaking their current dominance in desktop as something absolute.
I'm pretty desperate for an OS UI that looks like this. KDE comes close but still too modernized.
Would love to try Serenity on a laptop some time. Anyone know how usable this is as a daily driver?
If you like to hack around and enjoy playing Diablo 1 on obscure software, Serenity OS is for you :)
https://github.com/SerenityOS/serenity/search?q=arm&type=
https://lxqt-project.org/about/
https://www.opencode.net/abgr/qtstep
https://guidebookgallery.org/screenshots/qnx621
I honestly think anything else produced since is worse than this, and since flat design has taken root, UIs have fallen off a cliff both in usability and style.
I tend to get very Patrick Bateman-like when appreciating old UIs, the colour combination and choice of fonts on off-grey backgrounds, while modern interfaces just feel like there's no personality or warmth to them. Just flat uppercase #222 sans text on flat white background.
For me, all the greys date it a little, but other than that it’s a simple, clean, elegant and highly consistent UI!
The consistency is most notable. We’ve lost so much of that in modern operating systems (mainly Windows and macOS).
It feels very approachable.
EDIT: Now having watched the SerenityOS video(!) all the same comments above apply. Really nice work.
[0] sadly it doesn't even quite meet my relatively minimal almost-never-used laptop use case due to the only RDP client that worked at all being so horrifically out of date that it can't understand modern RDP authentication mechanisms.
Do you mean rdesktop? Indeed it's pretty old and probably should be disabled, so I just did that.
Did FreeRDP not work, then? It seems we had a 3-year-old version, so I just spent the morning updating it to the very latest (2.4.1). Seems to work fine here for me, I connected to a remote Windows machine successfully. (The port is missing a bunch of features, but the basics seem to work.)
In the future you can report issues to HaikuPorts directly, or feel free to ping me on IRC/Matrix/XMPP.
I was a little annoyed at the gigantic pile of packages that came along with those last two options, but there's no need to rehash rehash that argument. I do wish there had been an obvious way to clean those up after removing the applications they supported though.
I think KRDC may be hardcoded to use "xfreerdp", so it won't find the Haiku variant.
Yeah, "autoremove" isn't implemented unfortunately, nobody has gotten around to that yet. It would indeed be nice to have.
Nothing is more frustrating than a perfect UI being fucked up by the passage of time. You don't need fancy shit. You just need consistency and speed. Give me back my xp-era explorer and start menu snappiness. Put a high speed camera on a windows 10 task bar and record someone right clicking on it. You might need a larger SD card than originally planned for this activity.
One simple way to handle this could be to compute the timer to fire at $last_rename_time + $delay, initialize $last_rename_time to 0 (and later set it to the current time in milliseconds), then only actually start the timer if the calculated value is actually in the future (which it won't be for the first run).
Of course... Explorer might (...still) be using periodic polling. xD
You might be able to use Event Tracing for Windows to find out if Explorer is actually following events in real time, with the minor caveat that it might be a bit of a project. I gathered a small handful of ETW-related links over at https://news.ycombinator.com/item?id=28348564 a little while back FWIW.
1. Open file with the delete flag 2. Call a function to set the new file information 3. Close the handle.
The signal that a file was renamed happens in step 2, and that signal/event is what many applications subscribe to. Explorer will wait until the rename is fully completed with the handle closed before showing the change.
Oh yeah, this is something we've been exploring (carefully) with SerenityOS! There's obviously been a lot of good UI/UX innovations since the late 90s, and it's super interesting to look for ways to integrate them with the classic aesthetics.
As an example, we use breadcrumb bars in our file manager, to display the current directory as a part of separately interactive segments.
And we also have "Assistant" which works similarly to macOS Spotlight, for fast access to a range of data providers.
I'm sure there are many similar concepts we have yet to discover :)
Aside: Thank you for your video! It looks great and that's yet another OS I'd like to try and play with -- along with Plan 9, which Serenity made me think of a bit, and TempleOS because of the soul-saving effect of devoting to a hard piece of beautiful software craftmanship.
It’s a recent thing, but in a way it is a callback to making it more obvious what is interactible and not.
For a while, quite recently, it seemed to be catching on. But then it didn’t really catch on like.
But I think SerenityOS with a Neumorphism style would be a really interesting experiment.
https://uxdesign.cc/neumorphism-in-user-interfaces-b47cef3bf...
Which I like.
It's tactile, yes, but low density, low contrast, borders are non existent, colours are used to create intense gradient background palettes, instead of using them to increase readability and usability.
Neumorphism has all the drawbacks of modern flat design, with none of the benefits of old UI design studies. But it looks cool.
With current 90s themes for GTK+, "breadcrumb" segments appear just fine as buttons. It works quite well in practice.
For me that was Mac OS 8 on the first iMac :)
Today this discipline survives in mobile devices. Meanwhile, our desktop operating systems are festooned with a multitude of widget toolkits and language runtimes yielding wildly diverse, inconsistent and often fragile behavior and require 3+ orders of magnitude more memory.
Aside from (usually) pretty nice font rendering, what has actually been achieved with all of this?
And ever since i started using a window manager in Linux (somewhere in early 2000s) i really liked Window Maker's style even though i never used NeXTSTEP for many years (in fact the only time i used it i was kinda disappointed at how primitive it was in terms of window management compared to Window Maker :-P).
SerenityOS: A love letter to '90s user interfaces with a Unix-like core - https://news.ycombinator.com/item?id=23911180 - July 2020 (1 comment)
Introduction to SerenityOS Programming - https://news.ycombinator.com/item?id=22479132 - March 2020 (43 comments)
Pledge() and Unveil() in SerenityOS - https://news.ycombinator.com/item?id=22116914 - Jan 2020 (28 comments)
CTF writeup: First published SerenityOS kernel exploit - https://news.ycombinator.com/item?id=21918351 - Dec 2019 (2 comments)
SerenityOS: From Zero to HTML in a Year - https://news.ycombinator.com/item?id=21212294 - Oct 2019 (52 comments)
Serenity OS update (August 2019) [video] - https://news.ycombinator.com/item?id=20851356 - Sept 2019 (2 comments)
SerenityOS – a graphical Unix-like OS for x86, with 90s aesthetics - https://news.ycombinator.com/item?id=19986126 - May 2019 (179 comments)
Serenity: x86 Unix-like operating system for IBM PC-compatibles - https://news.ycombinator.com/item?id=19537807 - March 2019 (83 comments)
https://www.youtube.com/playlist?list=PLMOpZvQB55bfp6ykOLayL...
His hacking sessions on youtube are also great.
A modern replica of NeXTSTEP.
No light grey on dark grey text, no borderless buttons, no pointless 45% width margins.
I'm equally amazed and horrified that they're building a web browser. It seems easier to build the native OS.
Edit: Well, practically.
Great OS, but the browser sucks.
He has managed to make a worthy tribute to both UNIX and old Windows aesthetic style. And he did it almost all alone. Of course, Serenity OS is now a living, breathing community, just as it should be.
BTW, the guy has even ported DOOM, old DukeNukem and freakin' Diablo 1 to his OS. Mad respect to Andreas, Serenity is truly a work of genius.
I'm amazed that he built a whole new browser to go with his OS.
Just to be clear, while I started the project, it's since been hacked on by hundreds of people (we're well over 500 contributors on GitHub) and it's by no means a solo project anymore! https://github.com/SerenityOS/serenity
Note that the system aims to be completely free from dependencies, so all ports are strictly optional.
The video in the link, Andreas mentions that its all from scratch.
I'm not sure how those two points conflict.
What are the catches? Is it still very immature or assuming there was enough user-land software (which I'm sure there is not), is this ready for production use?
Keep in mind though that he was a WebKit developer at Apple for many years working with full stack control of iOS from kernel to browser.
"Today we are going to add X"
2 hours later: X is added and working fine.
Meanwhile, at work I could easily spend 2 hours looking for a GCC flag or figure out why the build script fails on arch after latest update
Updating tools in your environment/workflow is exactly a thing that can lose a lot of time, often for not much gain[1]. One way to become very productive is to know your tools very well, and that would extend to not changing them often.
[1] not much gain in productivity, but perhaps in security, compatibility, etc
Raise your hand if you have ever spend an afternoon trying to get someone else's build scripts working. Wondering why make, cmake, scones and ninja are used in the same project...
That said, you can do a heck of a lot in 3 years if you put in consistent time and effort towards something. :)
Write code top-down <https://www.teamten.com/lawrence/programming/write-code-top-...>:
> With bottom-up design you start with the components [...] Designing a component is a small tractable task that can be finished and called _done_. You’re creating a perfect, beautiful, reusable jewel. All engineers really want to _do_ is write components. [...] At every level there's pressure to do bottom-up programming. Avoid it. Instead, start at the top, with `main()` or its equivalent, and write it as if you had all the parts already written. Get that to look right. Stub out or hard-code the parts until you can get it to compile and run. Then slowly move your way down, keeping everything as brutally simple as you can. Don’t write a line of code that isn’t solving a problem you have _right now_.
There's a bit of history about early development here: https://serenityos.org/happy/1st/
Also, one of my earliest videos was showcasing some pre-YouTube builds of SerenityOS: https://www.youtube.com/watch?v=rveS_vwp0y8
I didn't know about computron until you mentioned it in the video, so I have to ask, would serenity run under computtron? If so, could a serenity port of computron run serenity in serenity?
Thank you for your effort folks
I also hope that SerenityOS has a long and successful lifespan, as it seems promising !)
Iterm2 does something similar with links, but not files printed from something like ls. We should fix that. :)
which terminal supports this out of the box?
I get quite jealous when I fire up the latest build of Serenity and see how functional the whole platform is in terms of QoL tweaks.