I could talk for days on all the peculiar bugs resolved. Once the alpha stabilizes I have drafts to publish on several topics.
You actually nailed the major pain points. Particularly window focus and state management. I've spent months solving this problem alone.
-
1. Applications data list: Getting the list is easy! Finding out which apps in that list are "real" apps isn't. Getting icons isn't. Reliably getting information on app state isn't. Finding out why something doesn't work right is as painful as can be. Doing all this in a performant way is a nightmare.
2. Applications menu renderer: Rendering the list for the menu is easy enough: the macOS app sends this data via socket. The frontend is just web sockets and web components under the hood (https://lit.dev). The difficult part was converting app icons to PNG, which is awfully slow. So a cache-warmup stage on startup finds all apps, converts their icons to png, and caches them to the app directory for read.
3. Window state: again, by far the worst and it isn't even close. Bugs galore. The biggest issue was overriding macOS core behavior on what a window is, when it's focused, and how to communicate its events reliably to the app. Although I did include a couple private APIs to achieve this, you can get pretty far by overriding Window class types in ways that I don't think were intended (lol). There is trickery required for the app to behave correctly: and the app is deceptively simple at a glance.
-
One bug, and realization, that still makes me chuckle today.. anything can be a window in macOS.
I'm writing this on Firefox now, and if I hover over a tab and a tooltip pops up - that's a window. So a fair amount of time has gone into determining _what_ these apps are doing and why. Then coming up with rules on determining when a window is likely to be a "real" window or not.
The Accessibility Inspector app comes standard on macOS and was helpful for debugging this, but it was a pain regardless.
Very nicely done. Supporting good/honest apps is important, I gave you a five-star review and I hope others do the same.
I would've enjoyed an "About" tab, or something similar. I like your basic approach to the app, but if you did want to share more with your users, I think that'd be a good thing.
If anyone feels this way and wants to try an alpha I have 1,000+ hours in.. I've implemented a Windows 10-like UI for MacOS. Similar to uBar (ubarapp.com).
The key distinction is it's built to be extended with third-party plugins (think Obsidian). I stopped using uBar because it had features I needed, but it's not actively adding features anymore last I checked. And of course, this will be fully open source.
It's in active alpha development but has all the core features you'd expect: taskbar works great, but only a basic system tray and start menu. And it'd be very much an alpha that needs feedback :-)
Explaining a difficult concept in terms anyone can understand. Great diagrams and examples. And top marks on readability UX for spacing and typography.
OP, what inspired you to create your current theme? Have you ever considered creating an engineer-focused publishing platform?
I skimmed the Readme, the What is Superstreamer? page, and features list. I still don't understand when I would use this, or when I would recommend it to someone. I'm an engineer somewhat familiar with the space.
You may consider starting with a simple unique value proposition and reworking presentation from there.
Take the first sentence of the Readme as example: "Superstreamer is a self hostable platform that aims to simplify the complexities of video delivery" - and answer questions:
1. Who is benefiting?
2. How is this better?
3. What complexity is being solved?
4. What's the tangible outcome, or CTA?
5. What well-known alternative is this related to?
ChatGPT took a stab at it. Not amazing, but something to start with:
"Superstreamer is a self-hosted platform that simplifies video delivery, giving you full control over your content without third-party dependencies. Reduce costs, customize your setup, and deliver high-quality streams with ease. Drop <competitor> today and get started in minutes."
Also simple things like defining an acronym before it's used goes a long way.
Overall presentation, UX, design, code quality, and detail is a homerun IMO. Nice work, I can tell you put a heap of passion into it.
This is really neat. Well done on the UX and functionality.
I saw others already mentioned uniqueness of city names. In the US there is no guarantee a state, zip code, or even county won't have a duplicate city name. To solve this one must store the lat/lng coordinates instead. Then offer users a search list of matched cities, so they can select the right geographic location.
To some degree OS productivity is subjective based on what you grew up with. Your neural pathways form around a certain way of work management and it becomes hard to change that after ten years.
I'm naturally biased then to early Windows and MATE-esque environments. And, it's worth noting that I despise Win11 overall, so a better comparison is indeed Linux Mint MATE[1]. Part of the project inspiration is to never use Windows 11 again, actually!
Before I started the project I wrote down what I consider productivity boosters for me:
1. Fast context switching between open apps and windows, natively. All open apps are in front of me by way of the taskbar, always, and never hidden. I never have to think about where to find my immediate work. I can group apps, pin them, and create custom behavior for them.
2. System tray apps for things that you interact with often, but aren't necessarily immediately working on. Macos has something similar but it isn't really pluggable or widely used yet, and nowhere near as customizable. With Win10 I can add, remove, or hide system tray apps based on how I use my workstation best.
3. Optimized Start Menu. I press a button, I get access to things I've favorited, recent apps/files, and categories of apps I use often. It is highly customizable in Win10, while I struggle to have something as efficient in macos (even though macos global search is wonderful!).
I feel like the old UX rule of "don't make me think" applies heavily here. The macos app dock is a great example of this. You're forced to think about what you want to do with 10-20+ options glaring at you. Disabling the dock is the first thing I do on a new Mac ;)
Lastly, Win10 lets me customize my system to a high degree as my needs change. I just don't get that with macos, nor have I found apps that hit the mark for me.
I'm curious about your own experiences if you care to share :-)
I have been working on porting concepts of the Windows 10/11 taskbar, tray, and window management, to macos. With emphasis on simplicity, speed, and function inspired by Linux Mint MATE.
It has been a wild ride. Often frustrating but rewarding. Some days I may spend 10 hours solving an API for which app is frontmost at a given second. Sure, there's a system API for that, but it doesn't even remotely cover edge cases that exist. And many times with no answers out there on how to do something, it feels like I'm the first, so finally solving it is a great endorphin rush.
Part of the complexity is I wanted the app to be completely pluggable, kind of like Obsidian. The app communicates events to a local socket server in full duplex, which enables cross-plugin communication (but also cross-app!). Plugins access the app's JavaScript system bridge API for pubsub and system calls through a Webkit interface. Edits are hot reloaded and instant, no compile time necessary. The first time I could change my "Start" menu in real time through JavaScript/CSS was quite a feeling.
Sadly, I couldn't leverage existing tools like Tauri or Electron. They don't have adequate system bridge APIs available, and would be more work to leverage instead of less. They are too general, whereas this project only builds to macos. Therefore it can be much more complicated (and useful) by design.
I originally set out to be more productive in macos. But I've also spent time making prototypes for fun. A desktop widget system, real-time system color theme set from Spotify album art, live video desktop backgrounds from Twitch/YT, a Destiny 2 macos system theme, etc.
I plan to open source it and build a community around it one day.
The exception I have found to poor AI chatbot experiences, oddly, was Carvana.com.
I needed to resolve a highly complicated title problem I was battling two separate state DMVs over (plus a defunct lender). It was starting to seem I needed to retain a lawyer.
So I was just compiling information at the time. I asked an esoteric question about one of the private LLC names Carvana have as their lending arm in a specific state. You would only know this name reviewing a stack of paperwork, it is not public.
The chatbot responded with detailed information on what I needed to do to resolve the problem. Plus information about the LLC. And then emailed me supporting documentation automatically.
Funny enough, the handful I clicked through being prominently displayed on the Readme all had their Calendlys booked solid. One even made their Calendly private.
The killer feature for me is how extensible the software is made to be.
It truly lets you operate how you know best, making very few assumptions on how you use it.
Case in point: one of my favorite productivity plugins is a full-fledged Kanban board. It has deep integration into Obsidian features:
One of the coolest hack projects I've seen in some time. Looking at the schematics took me back to my electronics technology class, learning the value of heat syncs and accidentally setting amps on fire :,)
Having an accompanying explainer article or video is something I'd pay/donate for, just out of sheer curiosity of the work involved.
This is the first I've become aware of B Corp and I like the idea.
I dug into what defines a B Corp. Notably the self-described "stringent" rules for becoming licensed. Pardon my ignorance, but it seems like a lot of regulatory checks to adhere to for keeping the company accountable? Seems.. like a lot of overhead.
I've been silently cheering on Teamshares.com over the past year hoping their idea catches on. I'm not sure if that's the same idea (emphasis being on employee ownership). But I'd be interested in hearing the account of others who have worked for a B Corp.
This is fascinating. If this ever becomes a more serious endeavor, reach out - email in my profile.
Another user posted about Teamshares (https://www.teamshares.com/). It appears to operate similarly: investors buy up companies and give them to the employees. I'm assuming some level of fee is given to Teamshares to continue operating.
Oddly enough.. one of the backers of Teamshares is Collab Fund, where my second quote is pulled from on one of their most recent posts. Small world.
I heard few song lines from a new artist I've discovered. It has me thinking on a problem I want solved. Although, I'm not actively working on it.
Why aren't there more employee-owned companies? And I don't mean solely shareholder programs, I mean actually owned by every employee and they are paid dividends of profit after all planned R&D costs. Similar to the Alaska oil pipeline bonus. Even interns.
All studies show that the companies structured this way that do exist (they seem few) have much higher output, quality, and happiness among staff.
After more research I found that this exists: https://esca.us/ - Wawa is a member, pretty cool.
Talking more to others about the idea I've heard interesting stories. Some machine tooling shops have an actual employee-owned setup. All employees are incentivized to make every product output great and keep profits high, because they all share the profits.
Anyway, I'm not actively working on this. But wanting to shape this idea more in the future. It feels like it could help the current state of America. But perhaps I'm too hopeful and naive :-)
---
Hobo Johnson - My Therapist:
"The idea's about equity, it's about wealth
Most think that it's dumb, you should think for yourself
If I buy a pizza place that makes a definite profit
Yeah, let's say yearly, the owners make $100,000 off it
And if I buy this pizza place for, let's say, $300k
And when the workers recoup in three years, I'll sign it over that day
And wouldn't everybody not see
They should buy their pies from me?
You'd rather have a boss
When you can work democratically?"
---
"Incentives are the strongest force in the world. They explain why good people do awful things, why smart people do stupid things, and why ordinary people do amazing things."
I couldn't find the second study I wanted to link to. I recall reading a study on team composition that focused on impact of different types of leaders. Teams that had a leader which got everyone to talk in a group were consistently successful. That was the one constant over time, even beating out visionary/charisma types that weren't inclusive.
I'm late to the game but I'll throw in the opinion of a hobbyist doing VR development.
I gave Unreal 4 a solid shot: did the tutorials, watched videos, learned simple concepts and advanced concepts alike. After months of learning one weekend I thought "I'm not having fun anymore" because 70% of my time was troubleshooting build errors and vague bugs (I actually counted). I'm no stranger to build errors (I'm an engineer) and even for me it was a difficult task to fix them. I would go down rabbit holes for hours fixing vague errors. Further, just about every tutorial I came across for UE4 was outdated and didn't work.
I swapped to UE5 a few months before they released their first public version. It was an absolute beaut of a system to use in comparison: better UI, drastically fewer bugs, tutorials were accurate, and no build errors. Quite a bit Just Worked, A+.
Ultimately I went to Unity because at least for VR, there were better tools that were better supported by the package maintainers. Adding a new third party Thing to a project in UE5 was a guaranteed recipe for troubleshooting weird bugs. In Unity, everything worked flawlessly. And personally, I dig C# more than C++.
So, I did the same learning process with Unity: simple/advanced tutorials, plenty of time dedicated to picking up all the concepts over several months. I'd say Unity for a hobbyist is still the better route if you are planning on doing game dev part-time. It's just easier to use and breaks less.
This is the opinion of a hobbyist doing VR development part-time though, and I fully believe other comments from industry pros saying Unreal is the way to go. I can't comment on that but I will say Unity was best for me.
Both asset stores were pretty killer and I spent WAY too much money on assets and scripts. Prepare to have a checkbook handy if you get started with either ;)
You actually nailed the major pain points. Particularly window focus and state management. I've spent months solving this problem alone.
-
1. Applications data list: Getting the list is easy! Finding out which apps in that list are "real" apps isn't. Getting icons isn't. Reliably getting information on app state isn't. Finding out why something doesn't work right is as painful as can be. Doing all this in a performant way is a nightmare.
2. Applications menu renderer: Rendering the list for the menu is easy enough: the macOS app sends this data via socket. The frontend is just web sockets and web components under the hood (https://lit.dev). The difficult part was converting app icons to PNG, which is awfully slow. So a cache-warmup stage on startup finds all apps, converts their icons to png, and caches them to the app directory for read.
3. Window state: again, by far the worst and it isn't even close. Bugs galore. The biggest issue was overriding macOS core behavior on what a window is, when it's focused, and how to communicate its events reliably to the app. Although I did include a couple private APIs to achieve this, you can get pretty far by overriding Window class types in ways that I don't think were intended (lol). There is trickery required for the app to behave correctly: and the app is deceptively simple at a glance.
-
One bug, and realization, that still makes me chuckle today.. anything can be a window in macOS.
I'm writing this on Firefox now, and if I hover over a tab and a tooltip pops up - that's a window. So a fair amount of time has gone into determining _what_ these apps are doing and why. Then coming up with rules on determining when a window is likely to be a "real" window or not.
The Accessibility Inspector app comes standard on macOS and was helpful for debugging this, but it was a pain regardless.