Hacker Newsnew | past | comments | ask | show | jobs | submit | GeneralMaximus's commentslogin

I quite like Tailwind. I've had great experiences with it, especially on projects where the skill level of contributors was highly variable.

That said, Tailwind is not as powerful as plain old CSS. It's a bit like training wheels for CSS—you gain some guardrails and prevent newbies from messing things up too badly, but you also give up the power modern CSS affords you.

E.g. I invite you to look at some of Ahmed Shadeed's (https://ishadeed.com) layout tutorials, or whatever you find on the CSS-Tricks/Masters.dev homepage today. It's bonkers what you can do with modern CSS!

Tailwind gives you access some of what's possible with CSS today, and they keep adding support for new features, but it's impossible to express everything CSS is capable of using only utility classes. At some point, you need to write some actual real CSS code.

So personally, it's a tradeoff for me. If I really want the full power of CSS, I use plain old CSS. If I'm willing to trade power for the convenience of Tailwind's built-in design tokens and guardrails, then I pick Tailwind.

Both approaches are good and valid. The right choice is context dependent. With And with LLMs in the mix, it's not that hard to port a Tailwind codebase to plain CSS, or vice versa, so picking the wrong thing doesn't have as high a cost as it used to.


In many cases, yes. A software pipeline can only achieve as much throughput as its slowest stage, and much of the software we write can be modeled as a sequence of processing stages.


In an ideal world, I would do exactly what you do. I don't WANT to block ads everywhere. I would love to support my favorite websites, and if watching a couple of ads is what it takes for them to stay online, then I don't really mind.

Problem is, the ads I see when I disable my ad-blocker are uniformly terrible. Maybe this is because I'm in India, but I've never once seen an ad that wasn't outright disgusting, let alone useful.

I regularly see ads for: escort services, shady hair loss prevention pills, shady weight loss pills, astrology, TV shows and movies in languages I don't understand, gacha games, gambling apps, educational programs I can't sign up for, apps that are clearly malware. Once Instagram inexplicably showed me ads for expensive lab equipment only available in Germany for a whole week.

I would like to see ads for: local businesses around me, concerts and gigs in my city, new restaurants around me, indie fashion brands, TV shows and movies in languages I can understand. Basically, ads based on my interests and recent search terms.

The ad networks insist on delivering the worst kinds of ads to me, sometimes accompanied by imagery I would prefer not to see (e.g hair loss and dermatology ads). The websites I frequent and want to support don't get to choose what ads I'll see. All they can do is insert the ad-network's JavaScript into their pages and hope for the best.

Unless the networks can guarantee that I won't see something illegal, harmful, or plain disgusting when I enable their ads, I'll keep my ad-blocker on. I'm not going hurt myself for somebody else's business model.


While I think I agree with you in principle, it's worth pointing out that at least some of these targeted/relevant ads you want come with privacy concerns which, at least in my opinion, are just as important if not more so than the content/experience of the ads themselves.

Either way though, GP putting the responsibility on the viewer, at this point - given what we know about how the ad companies operate and use our data - is just absurd. We're not the ones who burned up any good will in this particular social contract.


In theory site owners could be more selective about the ad networks they partner with. They bear a responsibility for a poor user experience, but many don’t care.

I remember hearing about a lawsuit several years ago from several news organizations against an ad blocking company in which they described themselves as “ad companies that serve content” as opposed to “content companies that serve ads”.


To be fair to the news organizations, ads are very probably their primary source of revenue.

The "get a bunch of people looking at something interesting and then show them ads" business model has under-pinned newspapers, television, and now websites like Facebook, Reddit and Instagram.

The content was always kind of a side show, an excuse to serve you ads.

An example of an actual content company would be something like a movie studio, where the product is the actual movie, or a publishing house, where the product is an actual book.

Newspapers, television channels and YouTube, however, are making their money selling your attention to advertisers. So I think calling them "ad companies that serve content" is actually correct.


Why would you not?

I use Ableton, Figma, and Emacs regularly. I have a decade (or more) of muscle memory around these apps. If they suddenly decided to adopt the look, feel, and conventions of their underlying host platform, I’d be very upset.

If I’m using Emacs, I don’t want to use Cmd+S to save my files on macOS and Ctrl+S on Windows. I’ve already memorized C-x C-s. I don’t want Ableton to adopt whatever new design language Apple or Microsoft is chasing this week. I want to open the app and find the UI controls looking and behaving exactly the same as they’ve looked and behaved since I started using it in 2014. I want to write code, make music, do design. I don’t want to be frustrated because the button for enabling the metronome is 15px to the left on Windows vs. macOS.

Apps that look and feel native only make sense in two cases:

1. The app is tied to the platform. E.g. Logic Pro. It can integrate deeply into macOS and use the native widget set because it will never run on any other platform. Same for Bear, Things, Pixelmator, Omni Group apps, etc.

2. The app is a replaceable, throw-away utility. I call these “fungible apps”. For example, it doesn’t really matter which Mastodon or Bluesky client you use. There are hundreds of them, and they’re not complex enough that the loss of familiarity or muscle memory matters very much. You can use one client on Windows, a different one on macOS, and a third one on Linux, and it’ll be fine. They can all be native to their platforms, or not. The interaction model is simple enough that you can afford to have a different one on every platform.

For apps that really matter—the apps I use to put food on the table—I absolutely want them to look and feel exactly the same on every platform. The app is the OS, the actual OS is just a hardware abstraction layer.

Can Flutter be used to build apps like Figma or Ableton or Emacs? I actually don’t think so. It’s a poor toolkit for building anything that must last for more than 3-5 years. If you care about longevity, there are basically only three options in 2026: Qt, Electron, or roll your own like Zed/Sublime.


(Adding this as a comment because I'm over my edit window.)

I want to add a third category to the categories that make sense as native apps: apps that are built by the platform vendor (and potentially shipped with the platform).

GNOME apps are built with GTK+, KDE apps are built with Qt, and macOS apps are built with SwiftUI/AppKit. This is how it should be. Microsoft is the only outlier here, shipping apps built with everything from Win32 to React Native to Electron to their own WebView2.


Regarding Microsoft - that's a sad story indeed. The only reason they don't use Win32/GDI+ etc is because it's harder and you ideally want to do that in C++ to get the true powers available to you.

I've recently had to do some win32 stuff in a Flutter app and it's amazing what you can do, but it's pretty hard, even with an AI to help you.

So the "lazy" devs go to work using React Native and Electron rather for apps inside of Windows shipped by Microsoft. Crazy, but it's to meet deadlines.


For end user apps, I want them to look according to the OS, at least on Apple devices. That's what picky customers. For stuff where design does not matter much, such as enterprise apps that "put food on the table", as you say, I use Flutter and still get a very decent result.

But with sufficient time and effort, proper native iOS/macOS wins every time.


Oh boy do I have a website for you!

I love browsing https://www.themarginalian.org whenever I have a few hours to kill. It's a bit like TVTropes, but much more "literary" for lack of a better word.

The author has spent decades building a digital commonplace book of everything she's ever read, and hyperlinked everything together in a way that you can get lost in her notes for hours on end and never surface. It's one of my favorite websites on the internet, and the best example of the power of marginalia and hypertext.


This lines up with my own experience with writing and (more recently) blogging.

You get over the fear of writing by doing a LOT of it, until you get to a point where writing a story or blog post stops feeling "special" and becomes just another thing you do. Each individual piece of writing stops feeling like an important work of art that you must get right at any cost, and becomes more like doing the dishes or taking out the garbage.

You can then separate the act of creating from the act of curating and editing. I regularly cut thousands of words from my writing before I share in public. I regularly throw away (well, archive) fully written drafts because I don't like them. A few years ago, this would've been unimaginable. Today, it feels like part of the process.

At some point, you gain confidence that you'll always have another story, another blog post, another poem inside you. If the current thing sucks, you just write another thing, and another, and another, until something clicks. It's freeing.

IME when creative work starts feeling like "just a job" is EXACTLY when it also becomes most fulfilling and satisfying.


The meaning of this is dismayingly slippery. You're presumably being creative and enjoying it, for all this "just a job".

> Routines might be a better name, but I like how action-oriented and well defined "chore" sounds.

The article's use of "boring" is somewhat misleading too, I think. It's trendy to say that being bored is good, but really that's always about enjoying patience, not about experiencing drudgery and having a miserable time.


I've heard this sentiment repeated and I believe it, but at least the purpose of my own blog is to communicate insights I've had. I almost make a point out of not blogging unless I feel that I have something truly interesting to share. It seems that flipping that around would come at a price.

Come think it, I feel that I have on the other side of this many times: I read a post or watch a video that opens up something in my brain and I get a sort of crush on the author. I read everything they write or watch all their videos. For some authors, I retain interest. But for others, where it seems like they produce regularly in order to maintain the frequency, I lose interest.


> I've heard this sentiment repeated and I believe it, but at least the purpose of my own blog is to communicate insights I've had. I almost make a point out of not blogging unless I feel that I have something truly interesting to share. It seems that flipping that around would come at a price.

That's where the editing and curation step comes in, at least for me. I write a lot more than I publish. If my writing:publishing ratio ever became 1:1, I'll stop publishing things that are interesting and insightful (well, interesting and insightful to me personally; other people might judge my writing differently).

Sometimes what works for me is to write something and let it sit in my drafts for a few days. Then if I read it back and still find it worth sharing, I polish it and hit the publish button. If not, it goes into a folder called "Retired" in my Obsidian.


This is a feature many apps actually need.

E.g. Tauri uses WebKitGTK on Linux, which has historically been slow, unstable, and frequently lagging behind the main WebKit project. This is enough of an issue that even Tauri is working on the ability to use CEF instead of the system web view in Tauri apps.

Things are generally fine on recent versions of Windows and macOS. The system web views on these platforms will be evergreen versions of WebKit or Blink. But if you want to support very old versions of Windows or macOS, you might choose to use CEF instead of wrestling with Safari-from-five-years-ago.


Not always.

Some web pages don't send referrers by making all links rel="noreferrer". Mastodon used to do this by default, though now they've changed their stance.

Links opened from non-browser apps don't have any referrer information either. E.g. if somebody shares your link on iMessage, WhatsApp, or Telegram.

Email clients may also strip out referrers, but I'm not entirely sure about this one.

If people read your work via RSS readers, you'll almost certainly not get any referrers. Unless it's a web-based reader like Feedly.

My website gets a lot of traffic marked as "Direct / None" by Plausible. I suspect this is traffic from RSS readers or Mastodon, but I can't be sure. A few times I've considered adding a "?ref=RSS" to all URLs served to RSS readers and "?ref=Mastodon" to everything I post on Mastodon. But like the author of this post, I feel uncomfortable tracking my readers like this.


I see where (both of you) are coming from, and I'm very privacy conscious (=paranoid) myself, but in this case, as a user, I wouldn't actually mind. It seems to me you would be tracking flows instead of users, which is fine in my book. Now, including Google fonts on every page, using their tag manager, analytics, captcha... That gives me the creeps. Waaay too much information about each and every user. But generic origin query params? Yeah, ok. :shrug:


I don't even want a local account, I just want to be able to set a custom username for my account instead of some autogenerated jumble of letters.

My Microsoft Account email is "contact@<my-domain-name>". If I set up a new Windows 11 computer using this account, Windows picks the first 4 letters of my email address and sets that as the username. So my username becomes "conta", and the path to my user directory becomes "C:\Users\conta".

I know this is a really small thing, but I find it incredibly irritating. I can't be typing that into the terminal all day long! It's not the end of the world, but it speaks to a lack of polish and care across the whole product, not to mention a disrespect for their users' intelligence.

I'm not a Windows user—I only use it for gaming—so I don't really know how to get around this issue. Maybe there's a secret keycombo I can press during install? Or some unrelated checkbox that I can toggle that will do the magic? I just know that I login via my iCloud account on all my Macs, and Apple has always allowed me to choose my own username and home directory.

I don't think this is high on their list of issues to fix so I'm not very hopeful that this will ever get addressed. Maybe I should just change my legal name to Conta?


> I'm not a Windows user—I only use it for gaming—so I don't really know how to get around this issue.

5ish years back I used to have a PCI passthrough via OVMF [0] setup for my GPU and my windows VM (Arch host) so I could game on windows.

Then I realized Proton/wine had gotten good enough to play all my games (I don't play AAA competitive shooters) and I dropped the VM and never looked back.

I would encourage everyone to give Steam/Proton on Linux a shot if you haven't recently and see if you're able to drop windows for good. These days, I don't even look at compatibility - 95% of games work OOTB and the other 5% work by changing the proton version (i.e. proton-ge). YMMV of course but I've been much happier without windows on my system.

[0] https://wiki.archlinux.org/title/PCI_passthrough_via_OVMF


Yes, just a username.

“ To create an offline (local) account during Windows 11 setup, disconnect from the internet, then use the command OOBE\BYPASSNRO in the command prompt (Shift+F10) to enable a "I don't have internet" ”

This is what I do. I have heard this has been patched out. My work gives me an MSDN account, and so far I’ve been able to still do this. When this goes away forever and I lose all my ISO’s/access to ISO’s that allow this, I’ll be done with windows forever.


My account email is info@<domain-name>.com.

I feel you.

And what I do is create a local account and then add the Microsoft account to it after creation.


Location: Bangalore, India (UTC+5:30)

Remote: preferred

Willing to relocate: no

Technologies: web platform (HTML, CSS, JavaScript), the React ecosystem, TypeScript, Tailwind, Astro. Good enough at UI/UX design to be dangerous.

Résumé/CV: https://ankursethi.com/work/

Email: contact@ankursethi.com

I'm an independent consultant and frontend engineer helping startups (and a few large organizations) bring new products to market since 2012.

I can help you with:

- Building an MVP of your product to put in front of investors and early adopters.

- Overhauling existing products by adding major new features, fixing performance bottlenecks, or paying off tech debt.

- Helping your team get up to speed with emerging technologies (currently interested in helping with TypeScript, modern React, the Jujutsu VCS, and LLM-driven programming).

- Modernizing legacy products and migrating them off legacy tech stacks.

- Acting as a bridge between your design and engineering teams.

I'm primarily a frontend developer comfortable with vanilla HTML/JS/CSS as well as more complex frameworks (mainly React, but I've worked with others). I enjoy being a heads-down technical contributor to codebases. However, working with early-stage companies has allowed me to dabble in UX design, hiring, mentoring, technical writing, technical workshops, and product design. I enjoy wearing a ton of hats, and prefer to work at orgs that allow me to use the full set of my abilities.

I enjoy using LLMs, but I do so responsibly. I write regularly at https://ankursethi.com/.

I'm currently looking for short to medium term contracts (think 6-8 months).


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: