zschuessler
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.
I only recently reached an alpha - and I am looking for testers!
- Alpha screenshot: https://drive.google.com/file/d/1Wi6MqxC17iIzfSL--_nNxHxbID1...
- Rambling why I built it, plus Discord link: https://progress.compose.sh/about
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.
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.
This solves a lot of problems I have feeling productive in any not-MATE UI. More here: https://progress.compose.sh/about
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?
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.
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.
Good stuff - cheers!
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 :-)
-
[1] Linux Mint MATE: https://www.linuxmint.com/rel_vanessa_mate_whatsnew.php
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.
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.
My jaw dropped.
Whoops :-)
Case in point: one of my favorite productivity plugins is a full-fledged Kanban board. It has deep integration into Obsidian features:
Having an accompanying explainer article or video is something I'd pay/donate for, just out of sheer curiosity of the work involved.
I can't place it, but it has its own distinct charm.
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.
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.
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."
- Quote I have pinned from @morganhousel
If you are interested in learning more on it here are a few resources!
1. Project Aristotle - A study from Google https://rework.withgoogle.com/print/guides/5721312655835136/
2. Good to Great had a couple chapters touching on safety, but also making company information easy to access.
http://www.squeezedbooks.com/articles/good-to-great-why-some...
3. A more sciencey approach https://www.ncbi.nlm.nih.gov/books/NBK310384/
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 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 ;)
On that note, does anyone have a feature or request they'd like to see in a remote job/content site? No matter how crazy.
1. I made my first submission to HN many years ago. I got an email helpfully suggesting edits to better present the content. It ended with a "Thanks for posting good things to Hacker News" - that part stuck with me, I thought it was nice.
2. I had a later submission that I thought would be an instant hit, but it didn't get traction. I emailed HN to see if it's okay to resubmit. @dang responded with tips on how to get traction, then ended the email with: "Good luck! It's hard to predict what HN will find interesting, and so few posts end up 'making it' with this audience that I hope you don't feel bad either way."
@dang is a good person that cares about HN content and the people that use it.
Have you written about your experience anywhere? And if not would you be open to sharing more of your experiences with it?
Cheers.
We are looking for a savvy, talented WordPress/PHP developer to join the Global Tech Team at The Motley Fool.
Our mission on the Global Tech Team: Helping people invest their hard-earned cash more effectively and profitably all around the world. We are the team that builds and maintains www.fool.com.au, www.fool.ca, www.fool.co.uk, and www.fool.de. We run our sites on WordPress Multisite and write a lot of custom code around customer acquisition, e-commerce, analytics, and user experience using modern PHP and Vue.js, often integrating with 3rd-party systems via APIs.
To apply please visit https://careers.fool.com/openings/?p=job%2Fov8Defwe
Disclaimer: I'm an engineer on the Global Tech Team and this posting is from my personal HN account. My views are my own :-)
The biggest impact has been to have a goal of limiting a paragraph to 2-3 sentences. From this goal my other writing traits came naturally.
When starting a paragraph, start off with a blunt statement that summarizes the paragraph. Following sentences can back up the summary sentence.
Use a short single-sentence paragraph to make an emphatic point.
Do word qualifiers add to your content? Many times not. Humans add qualifiers and adjectives more than what's necessary to understand a concept.
Readers get bored with monotony. If there's a wall of text, that's boring. If there's a wall of images, that's boring too. I try to break up a document into different types of formatting. Lists, headings, quotes, and image/content sections to make things visually appealing.
These are only goals! Sometimes a big honkin' paragraph is just what the doctor ordered.
Fun language or a well-timed joke keeps things interesting. They can give the reader a well-deserved break. Like the big honkin' paragraph usage above.
Lastly, the presentation of the content is important. Medium got their content width, font size, and colors down well. GitHub did a great job, too.
I learned to do this when a publisher took red ink to a tutorial I wrote. They gave me the goal of shortening all paragraphs to 2-3 sentences. It was tough at first but now I'm a fan. It's a fun writing exercise :-)
The disclosure by the reporter was fair. The reporter waited to disclose the story until the department of education reviewed the matter. I don't see a court convicting from that fact, this is all for show on reelection.
What I'd like to see is Parson respond to community questions in a townhall and be held accountable for his words. Namely, can we see the line item breakdown of how we got to $50 million? That is _five_ times the cost it took to build Missouri's great Arch..
I checked ten in the most popular and all resolved correctly. When sorting by date, I see a ton of Show HNs posted recently.
I was surprised to see so many Show HNs posted recently, I personally don't see them hardly ever on the front page anymore. Are they no longer shown as much?
The first burst of inspiration that I wanted to do software was neopets.com. The idea of neopoints somehow magically being stored in this thing called a database and shared through a virtual economy created a deep curiosity in me. Enough that the early days of apache, php4, and mysql were enough to slog through as a kid (truly painful back then!).
I didn't get a degree. I went to a day of university and dropped out because they wanted six figures for things I already knew. Financially it was worth it to do that, but I am sad I wasn't able to live the 'college life' my friends did, and didn't make the same connections they did. Freelance life can be lonely unless you put the effort in to network.
My first paid work was SEO and content writing, then when WordPress 1 launched I found gigs making websites with it. I found clients through online forums and then asking those clients if they knew anyone I could do work for. The best gigs came from those referrals. Honestly I'm not sure I could do that in today's atmosphere! Back then there were no freelance websites (like Upwork) or video call systems to verify you weren't a 17 year old kid. Today it's much harder to find gigs among strangers, especially if you're young. My best months I was 19 and making $10k/m without my clients knowing I was so young :)
I'm an engineer today but have dabbled in other roles like UX, design, PM, bizdev. I love the flexibility and the compensation the right engineer role provides. I wouldn't say there is anything I hate about it, life is good!
I would read a book about this, fwiw.