[HN Gopher] Show HN: I developed a native macOS Hacker News client
___________________________________________________________________
Show HN: I developed a native macOS Hacker News client
Author : pcr910303
Score : 87 points
Date : 2021-07-21 00:20 UTC (1 days ago)
(HTM) web link (github.com)
(TXT) w3m dump (github.com)
| smoldesu wrote:
| I feel like calling it "Hacker News" is a bit of a misnomer at
| this point, right? /s
| grishka wrote:
| Any chance for Mojave support? It currently requires Big Sur.
| Looks good on screenshots tho.
| przemub wrote:
| I like that you kept at it for 1.5 year - it is inspiring me to
| pick up some projects I've half-started.
| SavantIdiot wrote:
| This raises a question I've always wondered:
|
| 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?
| et-al wrote:
| 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.
| judge2020 wrote:
| I prefer PWAs since it combines the window-ness of regular
| applications with the security sandbox traits of websites in
| the browser.
| justaguy88 wrote:
| I always prefer the native (so long as it's really native, not
| just electron)
|
| I'm usually lost in a sea of browser tabs
| Austin_Conlon wrote:
| Seems that it's usually long time Mac users that prefer native
| with extensive menu bar support, familiar keyboard shortcuts,
| etc.
| kitsunesoba wrote:
| 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.
| tasogare wrote:
| Of course desktop software, as they are way better than web
| sites.
|
| - 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.
| rootsudo wrote:
| Depends, web apps are nifty af but a console app can be better,
| but lately I enjoy using a browser entirely as it makes it
| computer agnostic.
| willyt wrote:
| 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.
| TranquilMarmot wrote:
| 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?
| brailsafe wrote:
| 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.
| seany wrote:
| I don't think I've ever picked the web interface over native as
| long as the native app is "really native"
| tailspin2019 wrote:
| Agreed, the "really native" bit is important!
| geoah wrote:
| If it's an app I want open all the time I'd rather have a
| dedicated native app for it.
| cartoonworld wrote:
| I use materialistic(on fdroid and gplay) because it gives me a
| phone home screen widget of top hn stories.
|
| https://f-droid.org/is/packages/io.github.hidroh.materialist...
| jll29 wrote:
| 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.)
| Naac wrote:
| 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.
| pcr910303 wrote:
| > 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
| :)
|
| [0]: https://github.com/HackerNews/API
|
| [1]: https://hn.algolia.com/api
| krapp wrote:
| Oh wow, I... really wish I'd known about that second API a
| while ago. I gave up on writing my own client because HN's
| API was so frustrating.
| Karrot_Kream wrote:
| > 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.
| dahfizz wrote:
| Agreed. Generally I prefer native apps, but HN is so well
| designed and so minimalist that I don't feel it needs a native
| client.
| sys_64738 wrote:
| Wouldn't Vienna with the RSS feed give you the same?
| tailspin2019 wrote:
| Haven't tried it yet but the screen shot looks great. Clean,
| simple and not over engineered.
| pcr910303 wrote:
| 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!
| caseyf7 wrote:
| Would love to see the ability to search and/or export upvoted
| submissions/comments.
| adammenges wrote:
| Nice! This looks great.
| c17r wrote:
| 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.
| jll29 wrote:
| Would be great to get that and read it in Emacs (gnus).
| floss_silicate wrote:
| "Mac-er News", surely?
| themodelplumber wrote:
| HrNReader 2000
| paulcole wrote:
| God I would love somebody to make one of these that could block
| specific users, linked sites, or topics/keywords.
| leecb wrote:
| Very happy to see a "mac-assed" app!
|
| 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.
| geoah wrote:
| 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.
| pcr910303 wrote:
| 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.
| soheil wrote:
| Here is some code for a simple chrome ext for HN to show
| votes/created date/bio inline (just stick it in a chrome ext)
| function hackernews() { if
| (document.location.toString().indexOf('news.ycombinator') === -1)
| return; document.querySelector('#hnmain td').style =
| 'background-color: #55b6f2;'; var i = 0; function
| render(user, html) { const div =
| document.createElement('div'); let style = 'cursor:
| text;overflow-y: scroll; height: 39px;position: absolute;border:
| 1px dotted black;width: 250px;margin-left: 250px;margin-top:
| -34px;background-color: #f6f6ef;'; div.innerHTML =
| html; const date = div.querySelectorAll('tr')[5].queryS
| electorAll('td')[1].innerHTML.split(', ')[1]; const
| karma = div.querySelectorAll('tr')[6].querySelectorAll('td')[1].i
| nnerHTML; const about = div.querySelectorAll('tr')[7].q
| uerySelectorAll('td')[1].innerHTML; if (about.length <
| 60) { style += 'display: flex;flex-direction: column-
| reverse;margin-top: -39px;border: none;background-color:
| transparent;'; } div.innerHTML = about;
| div.style = style; user.querySelector('.age').innerHTML
| += date ? ' ' + date + ' ' + parseInt(karma).toLocaleString() : '
| (x_x)'; user.appendChild(div); }
| function next() { if (i >=
| document.querySelectorAll('.default .comhead').length) return;
| const user = document.querySelectorAll('.default .comhead')[i++];
| if (!user) return next(); const username =
| user.querySelector('a').href; if
| (username.indexOf('soheil') !== -1) return next();
| const html = localStorage.getItem(user); if (html) {
| render(username, html); next(); return;
| } fetch(username) .then(res => res.text())
| .then(res => { localStorage.setItem(username, res);
| render(user, res); setTimeout(next, 3000);
| }); } next(); }
| Jerry2 wrote:
| 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!
| npunt wrote:
| 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.
| pcr910303 wrote:
| Thanks for the feature requests! Will definitely add a text
| zoom feature and a 'My Postsm 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.
|
| [0]: https://github.com/HackerNews/API
| npunt wrote:
| 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.
___________________________________________________________________
(page generated 2021-07-22 23:00 UTC)