On my "projects to do when I have lots more free time" list is to make a Hacker News NNTP server. Read only, of course. Few details to work out (edits, polls, making comments, etc) but I think it could work. It would solve the "what's new in this thread" problem.
My only complaint so far is that I can only see about 12 items in the app on one screen, vs the whole front page in a browser. Adds a lot more scrolling.
Thanks for sharing this. It looks really great and pretty minimal which I personally love. The main thing I'm missing from this would be read/unread indicators on stories.
A roadmap of planned features would be nice or some tickets that other people could help with.
I'm not sure how much time you plan on spending this, but I'd personally probably be willing to buy a version of this if it was able to do notifications on replies and similar features hn lurkers might want. Other interesting paid features could be read-later list, favourites, cross device syncing of read indicators and lists, etc. If you don't wanna deal with paid features maybe consider enabling the github sponsor feature so people could optionally pitch-in.
For me, right now, this is a hobby project — until now, the feature roadmap was basically the feature that I have in mind.
I’m more than happy to get feature requests though — read/unread indication and favorites are something that I would definitely try implementing. Notifications are a bit harder because it would require polling HN — I’ll be thinking on it.
I would love to see some user-related features a la Reddit Enhancement Suite.
Displaying the total number of times I've upvoted someone, a flair which I could put next to their user name, and, sad but true, being able to put a user in the block bin.
If I had those features I'd use this app in preference to the site.
Excellent work! I really like the UI. I've been using some iOS app for HN because the UI offers easy and quick swipe-based upvotes and bookmarking. But your UI is more reminiscent of a mail app and that's better suited for a desktop app. So kudos!
Change the world news ? They can't make hacker news open source because that would show that hacker news is a voting ring and click farm for YC garbage. The most "extensible" language has been used to write the most ugly forum, filled with insecure losers who have to fake vote counts.
News for failed language designers and total failures working in a dead end job.
News for haskell faggots and mathematicians into fisting each other with chalk pieces who have failed to write any usable software despite 40 years of funding from microsoft sugar daddy.
News for java apologists who are still recovering from the news that sun failed as a company and fake unfuckable fat cucks who think 40% of android apps that use webkit to render are really Java apps.
News for benchmark freaks who like to compare precompiled code to compiled code and think its really the same comparison.
News for adults with special needs who should have otherwise been aborted or abandoned in the garbage dumps for rats, but are now middle mangers who wonder why no one wants talks to them IRL except their ugly wife or pet.
How many of you prefer to run a native app rather than the web app?
Personally I hate installing things on my desktop if there is a website because it is just another thing I have to manage. (Even more so because I have multiple Windows, Mac and Linux boxes I'm bouncing around between during the day and rather just have sync'd Firefox bookmarks than have to install s/w on each box.)
I'm the same way; I use multiple machines (and my phone!) every day so having synced Firefox tabs is ideal. Especially for something as simple as Hacker News a native client seems a little... overkill?
I much prefer a native mac experience for things that aren't necessarily tied directly to services and I do more than just read on, and usually that I'd like them to be offline by default. However, I've been wanting a HN client for a while for some reason. I don't sync tabs around, but do use Firefox.
Literally the only non-actual native app I use that I don't mind it with is VS code, but from what I gather code is actually mostly native code, just the actual UI is web, and even then I gather they do a lot in native to make the UI as fast as it is. But yeah, I'm so tired of having to have a billion chat clients that are all using 1.4gb of ram each for some stupid reason.
This app is my 1st choice for HN engagement but could really use an update and a search function inside comments view.
It is has an infinite scroll system so there is no page1/2/3 etc and in the comments section this is especially useful. I used to wonder why Dang inserted the extra pages links at the top of high comment count posts and it is obviously a pain point for him. With this android app its just all there in a slick card presentation.
I think there are a lot of interesting ways to enhance our connection to HN's valuable store of knowledge...
The main pain point for me is the article view in the app. I would prefer that it display the comments as it does but open the article in my browser of choice.
The built-in browser view is a little janky, I'd prefer it just pop a firefox tab that I can sync, etc.
In the absence of a USENET news server comp.bbs.hn, a TUI RSS reader would be the next best thing for me, and viewing the site in a Web browser after that.
(I appreciate that many will enjoy a native app, and I applaud the effort, but for me personally content sites are harder to keep track of if each has its own app.)
On a phone, I can see apps being easier to use (saved credentials and ideally the UX is streamlined for touchscreen use). But if I have a keyboard and mouse, I strongly prefer a web app for stuff that requires minimal interaction from me because it's sandboxed and accessible anywhere.
A native app should be snappier and maybe offline capable, but I'm not expecting to use Hacker News offline.
I like native apps (as in, uses the host platform’s UI toolkit) where available, because it’s almost a given that the operating systems’s typography, color scheme, etc are more legible and less annoying than whatever choices were made by a website’s designer. This is especially important now that all major desktop OSes implement a dark mode, which many sites still lack.
Things like reader mode and user styles help a lot with that, but they’re both kind of clunky bolt-ons and in the case of userstyles, often manual since many sites don’t have any readily available.
A lot of this could be improved if browsers had restyling built in as a first class feature and site owners were incentivized to make their sites work with it.
Depends. Something I use all the time, like a music player or a chat app, I hate having to use a web app or a app that just wraps a web interface as they are usually slow, clunky, glitchy, power hungry and with non-standard interfaces especially things like keyboard shortcuts, drag n drop support. But something like this app I would probably never install as I don’t spend that much time writing stuff on HN. HN is just a website that links to other websites that I mostly just have a look once or twice a day for semi-obscure interesting science, tech and design news that hasn’t made it to ars technica or whatever.
There's some things I prefer native apps for, others I prefer web for. But it's a highly personal choice, I think. For instance, for me, all web and social stuff is browser based, but I _loathe_ using chat or email in a browser. And until quite recently, I still used a desktop RSS reader just for headline aggregation, I finally gave up on that as another handful of sites I follow killed their RSS feeds.
my number one reason is that most native apps care about accessibility (and my other preferences, fonts, UI, etc.)
the idea that modern web-based apps (mobile or desktop) provide a modicum of accessibility is laughable at best. it is something that makes me depressed everyday.
Prefer web, less chance of spyware/malware, easier to inject custom CSS, easier to inject custom JS to disable features/spying/telemetry you don't want.
I use Slack's web client for this reason, I don't want it to tell the other person when I'm typing.
What do you use to prevent the Slack web client from telling other people you're typing? Searching just now, I found a Chrome extension that hasn't been updated in a couple of years, but maybe you have a better method.
I like my apps to have an icon in the dock/taskbar, and I like being able to alt/command - tab. For web apps that I use a lot, I make an app shortcut so the app has it's own window and dock/taskbar icon.
The thing is, I really need tabs/multiple windows for some apps. (Log viewers, Jira/Asana, GitHub...) I used to use application-specific browsers for those sites, but the html engines never kept up.
I usually like electron apps... When they're correctly made. Slack's electron app works well. LastPass's electron app is missing too many features and doesn't integrate into the browser.
I really don't like the idea of a native app unless it's a 10x improvement. Beyond privacy concerns at install time there is also the fact that it could be phoning home and log your activity or even send your session cookie who knows where. Even if the code is open source and it can be trusted today what if tomorrow it autoupdates after a hacker seizes control of the repo?
Does the Algolia hackernews api ( the specific API this client uses ) still require you to query in a tree like fashion, every comment item id if you want an entire page of comments?
Its extremely inefficient, to the point where I have a better time curling the HN web page and piping it through python beautifulsoup
Regarding a native app vs the using the HN website. The HN website I think is pretty ideal for the type of content its displaying, a native app doesn't give you much over having a HN tab open. I guess only if you want to read HN but not have a web browser open? But how often does that happen?
The only benefit I see from a native app ( and why I use one on Android ) is the ability to save articles and comments for offline reading, say, when I get on a plane.
> Does the Algolia hackernews api ( the specific API this client uses ) still require you to query in a tree like fashion, every comment item id if you want an entire page of comments?
> Its extremely inefficient, to the point where I have a better time curling the HN web page and piping it through python beautifulsoup
Yes it still does and yeah it's ridiculously inefficient. I have a couple tools I've written atop the HN API and all of them are forced to go async simply because the sheer # of page loads necessary to render a thread makes async almost a necessity.
> Does the Algolia hackernews api ( the specific API this client uses ) still require you to query in a tree like fashion, every comment item id if you want an entire page of comments?
I’m using two different APIs — the inefficient API that requires you querying in a tree fashion is the HN official API[0], but there’s also the Algolia API[1], which is much faster and gives a much sensible data shape. I also do actually fetch the HN website as well — it’s needed for account/voting features. With these sources, it’s much faster than a usual client that gets it’s data from the official API.
> The HN website I think is pretty ideal for the type of content its displaying, a native app doesn't give you much over having a HN tab open.
I guess it’s a bit of difference on how one uses HN? I didn’t like HN tabs being mixed with other work—related tabs. I felt that having an app would be a perfect solution to me, but YMMV I guess.
> The only benefit I see from a native app is the ability to save articles and comments for offline reading
I guess that’s one more feature that I should add to my backlog :)
Unfortunately the second API is also a bit of a mess — the comment order is mixed up, so you have no option but to parse the HN HTML and sync the orders. I really wanted faster load speed (than slowly querying the tree-like API), so I did wrote that code…
Looks good but needs text zoom (cmd =/+ and cmd -).
I'd also consider the sidebar include 'My Posts' and 'My Comments'. Maybe it has those, but I couldn't tell, as I turned off outgoing network access to firebase before logging in just to be on the safe side. Any reason you're connecting to firebase rather than storing preferences locally? I'm worried about my HN credentials being stolen.
Thanks for the feature requests! Will definitely add a text zoom feature and a ‘My Posts’ category.
> Any reason you're connecting to firebase rather than storing preferences locally?
All of your preferences are stored locally — the firebase connection is due to the official HN API[0] implemented on Firebase. Your HN credentials never leave the app (except for news.ycombinator.com) — it’s tucked in your keychain.
Ah thank you for the clarification! Keychain is truly the 'Mac-assed' solution isn't it?
I know it's kind of a feature/property of HN to not implement notifications or other attention driving features but it'd be interesting to see this app periodically poll HN for any replies to My Posts / My Comments and generate at least sidebar number badges, if not app badges and system notifications. I'd implement a preference on the latter two though, in keeping with the spirit of not having HN turn completely into an attention grabbing social network for those that wish it not to be.
Unfortunately I’m not expecting to support anything lower than Big Sur. I tried supporting Catalina, and having to support an OS that I don’t use daily was hard… Sorry about that. :-(
I really wish Apple provided an easy, official way to run older versions of macOS/OSX in a VM. It'd be incredibly useful for testing, and for ensuring reliability in old build toolchains (say, for a years-old product that needs a security patch). I mean, it already has a hypervisor built in. :-/
They don't even make it particularly easy to script an installation of an older version in a VM. There are 3rd-party tools but they're usually just as complete & compatible as whoever wrote them needed them to be, and/or they're abandoned.
[EDIT] like the VM images Microsoft provides. Those are wonderful.
And if you do install macOS on a VM, it won't run with hardware-accelerated graphics. Even if the host is also macOS. And Apple just likes to pretend that older OS versions cease to exist the moment they release a new one.
Regarding Mojave... Yeah I still use that daily. Catalina is a mess, and Big Sur can't be (officially) installed on my mac. I could've tried to have a go at backporting the OP app, but Swift is too annoying of a language and I don't know much of it.
I run a setup where I have 10.13, 10.14, 10.15 and 12.0 installed on dynamic APFS volumes and big Sur (11.0) as my main. While not exactly VM I can switch between them as a matter of rebooting, filesystem is shared and setting each one take 15 minutes as you can download original install images.
Hello, I’m the developer. Didn’t expect a Show HN post to go into a second—chance pool — I woke up an hour ago to find that my app was trending on HN.
I developed this b.c. I found that I didn’t like HN mixed with other work/school related tabs, and realized that a separate app would be great for me. I believe that apps should use the most native-like UI possible — especially Cocoa on macOS, so I aimed to be the most ‘Mac-assed’ HN client possible.
Unfortunately the current app is in fact pretty unpolished — it’s in a usable state, but there’s a lot of missing features that one would expect from a ‘full-featured’ HN client. Probably a bunch of unknown bugs as well :-(. I would very appreciate any suggestions on feature additions or simple bug reports. Thanks!
Thanks for putting it together. I've been curious about modern macos development for a while, but haven't found many good resources on what that entails. In the past, I used BigNerdRanch's Cocoa book to put together a small UI that accessed an external service in ObjC, but that book hasn't received updates in a hell of a long time.
I also started studying Cocoa with Big Nerd Ranch’s book.
Unfortunately, I found that resources on Cocoa are very lacking, you have to search all day to get some trivial thing to do. The best resources you have would be WWDC videos and transcripts[0]. If the subject you’re looking for is older than a few years, the documentation archive[1] might have detailed, good documentation with concepts and sample code. Some more obscure features will require you search all day, find a few blog posts from ~10 years ago, and munge them enough to make something workable.
The best resource of all was the help of more experienced Cocoa devs – the AppKit Abusers Slack [2] was very helpful and pointed out problems when I had problems. Very grateful for them.
If you find yourself in a position of not wanting a specific website mixed in with your browser tabs again but not caring enough to make another native app, check out nativefier. Quickly makes an electron wrapper for any website.
Unfortunately I don’t like Electron, and I did try out some solutions (e.g. Fluid[0]) that don’t use Electron, but it felt best to create a native Mac app with Cocoa.
This is great! I built a native. macOS client that I actually sold in the AppStore a while ago. It did everything was native except rendering of the article but I was just using plain web view for that part. The pain was keeping but synced with changes on HN. I still have a personal build that I use on a daily basis.
I still have the landing page up which warning, looks awful on mobile https://mackernews.com/
But congrats! I stopped selling my client and it’s starting to show age for my personal use too. Will check this out. Do you have voting and commenting working? That’s one thing I miss the most that stopped working on my client.
Looks nice. More screenshots would be appreciated...for example, how it displays italics, indented text "code blocks", the limited amount of emoji/utf-8 supported on HN, etc.
85 comments
[ 4.9 ms ] story [ 164 ms ] threadMy only complaint so far is that I can only see about 12 items in the app on one screen, vs the whole front page in a browser. Adds a lot more scrolling.
A roadmap of planned features would be nice or some tickets that other people could help with.
I'm not sure how much time you plan on spending this, but I'd personally probably be willing to buy a version of this if it was able to do notifications on replies and similar features hn lurkers might want. Other interesting paid features could be read-later list, favourites, cross device syncing of read indicators and lists, etc. If you don't wanna deal with paid features maybe consider enabling the github sponsor feature so people could optionally pitch-in.
I’m more than happy to get feature requests though — read/unread indication and favorites are something that I would definitely try implementing. Notifications are a bit harder because it would require polling HN — I’ll be thinking on it.
Displaying the total number of times I've upvoted someone, a flair which I could put next to their user name, and, sad but true, being able to put a user in the block bin.
If I had those features I'd use this app in preference to the site.
The app is already great, but those few things would make it something I could see having a small subscription for, to help keep development going.
News for failed language designers and total failures working in a dead end job. News for haskell faggots and mathematicians into fisting each other with chalk pieces who have failed to write any usable software despite 40 years of funding from microsoft sugar daddy. News for java apologists who are still recovering from the news that sun failed as a company and fake unfuckable fat cucks who think 40% of android apps that use webkit to render are really Java apps. News for benchmark freaks who like to compare precompiled code to compiled code and think its really the same comparison. News for adults with special needs who should have otherwise been aborted or abandoned in the garbage dumps for rats, but are now middle mangers who wonder why no one wants talks to them IRL except their ugly wife or pet.
How many of you prefer to run a native app rather than the web app?
Personally I hate installing things on my desktop if there is a website because it is just another thing I have to manage. (Even more so because I have multiple Windows, Mac and Linux boxes I'm bouncing around between during the day and rather just have sync'd Firefox bookmarks than have to install s/w on each box.)
Am I in the minority, majority, both, neither?
https://f-droid.org/is/packages/io.github.hidroh.materialist...
It is has an infinite scroll system so there is no page1/2/3 etc and in the comments section this is especially useful. I used to wonder why Dang inserted the extra pages links at the top of high comment count posts and it is obviously a pain point for him. With this android app its just all there in a slick card presentation.
I think there are a lot of interesting ways to enhance our connection to HN's valuable store of knowledge...
The main pain point for me is the article view in the app. I would prefer that it display the comments as it does but open the article in my browser of choice.
The built-in browser view is a little janky, I'd prefer it just pop a firefox tab that I can sync, etc.
(I appreciate that many will enjoy a native app, and I applaud the effort, but for me personally content sites are harder to keep track of if each has its own app.)
A native app should be snappier and maybe offline capable, but I'm not expecting to use Hacker News offline.
I'm usually lost in a sea of browser tabs
Things like reader mode and user styles help a lot with that, but they’re both kind of clunky bolt-ons and in the case of userstyles, often manual since many sites don’t have any readily available.
A lot of this could be improved if browsers had restyling built in as a first class feature and site owners were incentivized to make their sites work with it.
- don't need to create yet another account (and won't be deplatformed arbitrarily)
- my data stay in local and are not used in shaddy way by the service provider
- usable offline or with poor connection
- better performance
- I'm in control with upgrades
Webapps in general are hostile to the user and are just a way for the developer to take over (undue) control over the software usage and user data.
my number one reason is that most native apps care about accessibility (and my other preferences, fonts, UI, etc.)
the idea that modern web-based apps (mobile or desktop) provide a modicum of accessibility is laughable at best. it is something that makes me depressed everyday.
I use Slack's web client for this reason, I don't want it to tell the other person when I'm typing.
I like my apps to have an icon in the dock/taskbar, and I like being able to alt/command - tab. For web apps that I use a lot, I make an app shortcut so the app has it's own window and dock/taskbar icon.
The thing is, I really need tabs/multiple windows for some apps. (Log viewers, Jira/Asana, GitHub...) I used to use application-specific browsers for those sites, but the html engines never kept up.
I usually like electron apps... When they're correctly made. Slack's electron app works well. LastPass's electron app is missing too many features and doesn't integrate into the browser.
Its extremely inefficient, to the point where I have a better time curling the HN web page and piping it through python beautifulsoup
Regarding a native app vs the using the HN website. The HN website I think is pretty ideal for the type of content its displaying, a native app doesn't give you much over having a HN tab open. I guess only if you want to read HN but not have a web browser open? But how often does that happen?
The only benefit I see from a native app ( and why I use one on Android ) is the ability to save articles and comments for offline reading, say, when I get on a plane.
> Its extremely inefficient, to the point where I have a better time curling the HN web page and piping it through python beautifulsoup
Yes it still does and yeah it's ridiculously inefficient. I have a couple tools I've written atop the HN API and all of them are forced to go async simply because the sheer # of page loads necessary to render a thread makes async almost a necessity.
I’m using two different APIs — the inefficient API that requires you querying in a tree fashion is the HN official API[0], but there’s also the Algolia API[1], which is much faster and gives a much sensible data shape. I also do actually fetch the HN website as well — it’s needed for account/voting features. With these sources, it’s much faster than a usual client that gets it’s data from the official API.
> The HN website I think is pretty ideal for the type of content its displaying, a native app doesn't give you much over having a HN tab open.
I guess it’s a bit of difference on how one uses HN? I didn’t like HN tabs being mixed with other work—related tabs. I felt that having an app would be a perfect solution to me, but YMMV I guess.
> The only benefit I see from a native app is the ability to save articles and comments for offline reading
I guess that’s one more feature that I should add to my backlog :)
[0]: https://github.com/HackerNews/API
[1]: https://hn.algolia.com/api
I'd also consider the sidebar include 'My Posts' and 'My Comments'. Maybe it has those, but I couldn't tell, as I turned off outgoing network access to firebase before logging in just to be on the safe side. Any reason you're connecting to firebase rather than storing preferences locally? I'm worried about my HN credentials being stolen.
> Any reason you're connecting to firebase rather than storing preferences locally?
All of your preferences are stored locally — the firebase connection is due to the official HN API[0] implemented on Firebase. Your HN credentials never leave the app (except for news.ycombinator.com) — it’s tucked in your keychain.
[0]: https://github.com/HackerNews/API
I know it's kind of a feature/property of HN to not implement notifications or other attention driving features but it'd be interesting to see this app periodically poll HN for any replies to My Posts / My Comments and generate at least sidebar number badges, if not app badges and system notifications. I'd implement a preference on the latter two though, in keeping with the spirit of not having HN turn completely into an attention grabbing social network for those that wish it not to be.
They don't even make it particularly easy to script an installation of an older version in a VM. There are 3rd-party tools but they're usually just as complete & compatible as whoever wrote them needed them to be, and/or they're abandoned.
[EDIT] like the VM images Microsoft provides. Those are wonderful.
Regarding Mojave... Yeah I still use that daily. Catalina is a mess, and Big Sur can't be (officially) installed on my mac. I could've tried to have a go at backporting the OP app, but Swift is too annoying of a language and I don't know much of it.
I developed this b.c. I found that I didn’t like HN mixed with other work/school related tabs, and realized that a separate app would be great for me. I believe that apps should use the most native-like UI possible — especially Cocoa on macOS, so I aimed to be the most ‘Mac-assed’ HN client possible.
Unfortunately the current app is in fact pretty unpolished — it’s in a usable state, but there’s a lot of missing features that one would expect from a ‘full-featured’ HN client. Probably a bunch of unknown bugs as well :-(. I would very appreciate any suggestions on feature additions or simple bug reports. Thanks!
Unfortunately, I found that resources on Cocoa are very lacking, you have to search all day to get some trivial thing to do. The best resources you have would be WWDC videos and transcripts[0]. If the subject you’re looking for is older than a few years, the documentation archive[1] might have detailed, good documentation with concepts and sample code. Some more obscure features will require you search all day, find a few blog posts from ~10 years ago, and munge them enough to make something workable.
The best resource of all was the help of more experienced Cocoa devs – the AppKit Abusers Slack [2] was very helpful and pointed out problems when I had problems. Very grateful for them.
[0]: https://asciiwwdc.com
[1]: https://developer.apple.com/library/archive/navigation/
[2]: https://appkit-abusers.herokuapp.com
https://choosealicense.com/licenses/isc/
If you find yourself in a position of not wanting a specific website mixed in with your browser tabs again but not caring enough to make another native app, check out nativefier. Quickly makes an electron wrapper for any website.
https://github.com/nativefier/nativefier
[0]: https://fluidapp.com
I still have the landing page up which warning, looks awful on mobile https://mackernews.com/
But congrats! I stopped selling my client and it’s starting to show age for my personal use too. Will check this out. Do you have voting and commenting working? That’s one thing I miss the most that stopped working on my client.