Hacker News new | past | comments | ask | show | jobs | submit login
A Personal API (webb.page)
156 points by NetOpWibby on Dec 2, 2019 | hide | past | favorite | 105 comments

It's nicer vertically scrolling https://imgur.com/a/6Xw7quy . Just compare the 2 op.

https://outline.com/evxWSv also works. Please let's stop commenting on the scrolling now, and focus on what's interesting herre.

I've browsed hundreds of thousands of websites and used a computer daily for the better part of my life...and it took me ten seconds to figure out how to even scroll the horizontal version. PLEASE stop breaking scrolling, people.

The Solid project by Tim Berners Lee has the same idea. People have a personal data POD with an API to interact with. Social websites pull data from there.


Also reminds me of the Islet idea, from this Carl Hewitt talk: https://www.infoq.com/presentations/strong-types-actor-iot

I think this is the way of the future and it's exciting to think about. Who you are is yours, not some other social media sites. You control what is and is not available. That would be good.

More prior art: pfrazee.hashbase.io has been working on this sort of thing in unwalled.garden, but was last seen going off into the weeds to focus on yak-shaving and schema-polishing.

The predecessor to unwalled.garden (fritter.hashbase.io) also bears some resemblance to the author's Socii. It would be neat to see Socii "rebased" onto Dat and Fritter, but also made to work for legacy plebs still on the legacy web, and then trying to organically grow "A personal API" out of that, instead of the sort of top-down, second-system thing that happened with unwalled.garden.

> More prior art: pfrazee.hashbase.io has been working on this sort of thing in unwalled.garden, but was last seen going off into the weeds to focus on yak-shaving and schema-polishing.

As far as I can tell right now the author is mostly working on UI/UX improvements right now, what gives you the impression that he's yak shaving?

Past experience from having seen quite a few yaks in my day.

I'm toying around with this idea myself. After some thoughts I created a simple node.js app that provides services like a http server and a spotify api client to module that are autoloaded from some folder.

Whenever I feel like it I can very easily extend this platform by just writing a new javascript file. Currently there are thinks like

  * An endpoint to show my currently playing track on spotify
  * An endpoint that renders one of my todoist lists as html (my whislist)
  * A reporting module that receives webhooks from different backup scripts and sends me a report by mail every day
  * Move new songs from a spotify playlist to an archive playlist after a few weeks to keep the playlist "fresh"
I always wanted to create a bigger project based on my learnings but I'm not yet completely happy with the technical implementation

You should check out Code on Standard Library [0], we do exactly this - turn JavaScript files into APIs via the open source FunctionScript specification [1]. We’re a Stripe-backed company and we do a lot of other stuff, too (handle auth between multiple providers... etc.), but building APIs easily is where we started.

We have a lot of new tooling coming soon, so if this is of interest to you please reach out! You can e-mail me directly: keith at (our domain).

[0] https://code.stdlib.com/

[1] https://github.com/functionscript/functionscript

I signed up to stdlib a while back because it sounds like exactly what I want and looked really cool. I don't remember what through me off exactly but I will take another look.

No worries! We’re improving all the time. The problems we solve within organizations revolve around connecting APIs together (like Stripe and Slack), but the system we’ve built to manage that is effectively a fully-functional API registry and module management system you can use on your own :).

So I love the ambition - especially as a way to decouple services and encourage interop. But in the end, isn’t this kind of thing typically a lowest common denominator approach? For example, Spotify or iTunes specific features/integrations either get lost or get added as an extension, to the point where you’re only worse off the main service’s APIs (which will be always up to date and are still required to be up, and will have dedicated devops teams unlike your VPS).

The case of updating your website again is pretty specific and niche... the majority of people’s personal sites these days are their FB/IG pages. And this does nothing to create APIs for locked down 3rd parties like WhatsApp or Messages.

Rather than being a simple wrapper / bridge, is there the possibility of doing something more new that isn’t possible with a variety of SDKs? Like a personal API into my health or routines, that either creates inferences or is able to intelligently control a variety of devices/services?

I really wish more people had personal sites that were interesting or just off-the-wall crazy. The web was so much more fun when people didn't know what the rules were, so they didn't follow them.

I feel the same way, which is why I do weird things with my web design today.

That's an interesting idea but unfortunately we're limited by the walled gardens of the devices and platforms we use. We'd need sufficiently strong outside sources to entice companies to give us raw access to our health and things like that.

Until then, this personal API concept is the best thing I could think of.

But this personal API is still calling out to the same services, with the same restrictions.

True, but these services are just a stop gap (for me). I am slowly building replacements for the services I use. The end goal is to be a publisher of my stuff, using my own services.

Interesting idea - but it boils down to being a workaround for the lack of persistently connected and pervasively VPN-ed personal devices around us.

Yes, we could have a VPS per person being our fixed point on the Internet (and a fixed address...) but wouldn't it be better to return to the original idea of the Internet with devices always connected and routable? It might take an overlay network such as a DHT-like thing, it might be something IPFS or Torrents eventually lead to, but the end game is "everyone always on-line."

Im doing "this" using the chrome codebase and using DHT and torrents for content distribution.

The chrome codebase mostly help me for the multi-process IPC communication and reusing the UI compositor for UI and Web.

I wont say much more, because i want to keep some idea of novelty for when i launch this here on HN.

For me is what a mix of what a Browser + App platform should be, with the idea of people owning their data, devs distributing without centralized control, and without forcing you to use some hardware or specific OS.

> wouldn't it be better to return to the original idea of the Internet with devices always connected and routable?

Yes. However, I'd still like to do something in the meantime. There's no telling how long an overlay network would take to implement and release.

Such overlay networks exist today, albeit in early form, but functional none the less.

Could you list the ones you know? I'm interested in learning more.

Yggdrasil Network, cjdns, libp2p I think for a start.

This kind of large-scale general purpose end-to-end reachability is what the Yggdrasil Network is designed to provide.

NAT rules this world and all on it.

Even moving to the cloud cannot seem to shake its networking presence.


I've thought about this on and off for a long time. Urbit, Solid, Mastodon (anything ActivityPub), SecureScuttleButt, Matrix servers, etc.

The biggest problem as I see it is cost. While I might want to have this for $60/year (or own my own hardware for a little more), the vast majority of people (whose adoption you need), don't want to pay for this.

There are countless other UX and technical challenges, all interesting and largely tractable.

But I'm not sure how to deal with the cost problem. It underlies the failure of essentially all anti-centralization efforts.

Cost is definitely the primary blocker.

Everyone wants free but "free" costs more than money. It's quite the pickle.

One of the main devs from SecureScuttleButt is working on something called Unwalled Garden [0] which is very similar to this but decentralized (you can host your site from your home computer and other people can seed it so it's still available when your computer is turned off).

If you have a few friends who will seed your page for you out of the goodness of their hearts, I imagine your site will have pretty good uptime without anyone having to buy a VPS.

[0]: https://unwalled.garden/

This is a project I followed a while ago that does this: https://github.com/danfang/me-api

In addition to providing you a profile/bio, it can pull in your content from various social media sites into a single central API for you to use.

Perkeep (Camlistore) is also loosely related to this space.

HMM, three-year-old project and it's still going strong. I find that quite promising.

Hey Paul. Cool idea! Just wanted to say good luck, and we're here to help, if you want it. The Standard Library team knows you well. :)

Whoah! That's cool, haha! Thanks!

I started building something like this for my personal site*, the idea was I already had accounts at Github/Instagram etc, why not use that to keep my site up to date? Some of the services (looking at you Instagram) are making it harder to get your data out though, its a bit of a challenge. Hoping to eventually make this available for other people to use.


Simon Willisons Dogsheep is also a similar project: https://dogsheep.github.io/

I've got something like that, using python package as my personal API.

Here are some examples https://beepb00p.xyz/mypkg.html#examples . (the post is in draft stage and a bit rough, I will share it once it's done)

And link to the package: https://github.com/karlicoss/my

I'd like something like this but for communications w/ search, and automation.

Think of an inbox for all your starred/saved convos on discord, slack, etc... and all starred emails on gmail... and saved reddit comments or threads.

Then being able to schedule maybe once a month posts to slack / reddit job boards that you're 'forhire'... And being to see all messages/replies from reddit and search across all types of messages.

This sounds like a good idea for three modules someone could conceivably build.

That's actually pretty cool, thanks for the link.

No prob, I tried to refactor it in Vue and using Zeit Now serverless functions but moved onto other things. https://github.com/jake-101/Syte2-4-Zeit2.0

Exciting idea! Makes me want to make my own


It's interesting to me how no one here has objected to the idea stated that "we are all digital sharecroppers."

I think my usage of horizontal scrolling is the big objection at the moment.

Do you have qualms with that line? IMHO we provide content for a number of social networks with questionable returns. Yes we have community and can connect on shared beliefs and learn something new but lately it seems that we'd be better off tending to our own spaces and sharing with the larger networks should we choose to do so.

No, but in general if you say to folks around here, "The idea of renting things is worse for people than ownership" all sorts of patriotism comes into play.

Ahh gotcha.

keybase.io does a great job of allowing you to "prove yourself" across a plethora of sites/services.

Props to the OP/author for both the article and receptivity to critique regarding UX here in comments.

Thank you! Just added a scroll toggle.

Man, I wish it was possible to sticky comments. Anyhoo, for those of you who had issues with or plain disliked the horizontal scrolling, I've added a site-wide toggle.

I intend to write more and post here so at least for future posts the convo can be on the content.

Ive been looking for something like this, but with the usecase to dump to github. Including all the personal knowledge base type stuff a la Evernote, OneNote, snippets, bookmarks.

Great idea!

I know we're supposed to be reading something on this page, but the scroll UX is so amazing I don't think anyone's going to be able to look past it.

There's no world in which you can: make your website scroll horizontally, disable horizontal scroll, make vertical scrolling actually scroll horizontally and have users be okay with it.

Also breaks back / forward gestures on Mac.

Also hijacks `ctrl + scrollwheel` zoom control. Ew.

Was going to say that!

Completely agree. Doesn't even matter what the page says, the scrolling is so bad I left as quickly as I could.

It physically hurts

Same. Left because scrolling.

There is one: Pressreader. I think it does a decent job of it, and doesn't break the gestures. You just may need to exit the "scroll" part of the page (think microfiche reader?).


Each push of my mouse wheel moves the content about one character width. (Firefox 71 on Windows)

That...sounds terrible. I'll look into it.

It appears to give me one pixel per click of the wheel

Until HN I wasn't aware it was a problem. Of course, I didn't conduct user studies either. I use a Magic Trackpad on desktop and basically the same thing on my MBP so it felt natural for me to implement.

What's your preferred method of input and platform?

To say nothing of the content, the site is a UX Dumpster™ fire. Look at the home page.

Agreed. I didn't give up on reading it only because I was viewing it on a laptop with a touchscreen, so I dragged my way sideways.

I can't read this because I'm having trouble scrolling to the right. Just me? What's with the annoying horizontal scrolling?

The majority of this scrolling implementation is pure CSS. It's reasonably elegant code, even if I'm not sure that the effect is worth pursuing. I think I like this page more as an engineer than I do as a user.

If you disable Javascript, it's a lot more consistent because the Javascript is only there to swap vertical scrolling for horizontal. Without JS it's still horizontal scrolling, but you scroll left/right the same way you would expect to, and for the most part the page just handles it -- it'll even resize correctly as you change the browser height.

The quick, dismissive comment I could give is that I don't think I like this as a user, so the author should just give the entire thing up. But it's kind of interesting, and I can see why someone might want to pursue a strange effect like this, and there might be ways to make it more tolerable. I think overriding vertical scroll controls was a mistake; maybe it's better to lean into the fact that it's horizontal, use pure CSS for the core, and only use Javascript to make horizontal scroll speed a bit faster or add shortcuts or something. Let the browser handle scrolling horizontally.

Cool or not, the effect seems to distract from the content though. Since the CSS is fairly nice and clean, something simple like a button that toggled between horizontal/vertical modes would not require overriding many rules, and would head off a lot of these kinds of comments.

I was honestly not expecting any comments regarding scrolling but as you've suggested, I think adding a toggle would be beneficial.

I want to stress, regardless of my lukewarm feelings towards the UX, the engineering side of how this page is implemented is great.

It's using a few overlooked properties like CSS columns that get around needing to use JS to dynamically calculate height, and it's using Flexbox to get rid of any weird padding issues. I haven't tested, but I assume this will work in pretty much any modern browser (and even a few older ones like IE11) and degrades wonderfully when Javascript is disabled. It's screenreader accessible, it doesn't require messing with the HTML layout. It's some really pretty CSS.

:D Thanks Dan!

When it does scroll (which you must do using vertical scroll instead of horizontal, apparently) it's slower than standard vertical scrolling and it repeatedly jumps back and forth before you hit the rightmost edge of the page. It doesn't even respond to standard pagination keys.

You have to scroll down to scroll right. What an awful design.

I didn't try scrolling vertically until I saw the other comments posted here. I would presume whomever implemented the scrolling didn't personally own a mouse or touchpad that has horizontal scrolling functionality.

Having the same issue. I've always understood horizontal scrolling to be a big web design no-no. On this page, it's especially awful because it scrolls painfully slowly for me, using latest version of Firefox.

Scrolling down has been overridden to scroll to the right instead. So just scroll up and down to read. ¯\_(ツ)_/¯

Haha finally figured that out by accident. Weird.

I rather like the horizontal scrolling. It was refreshing to see a site adapt properly to the vertical size of the viewport as well.

Makes reading such pages much more comfortable on a wide screen like my 17" HP Omen.

Unfortunately it doesn't react to horizontal scroll events...

The fact that Chrome maps left/right touchpad swipe gestures to Back/Forward basically makes proper horizontal scrolling unviable. :(

I'm using Chrome right now, and it doesn't seem to do that? I can't confirm that horizontal scrolling works at all, admittedly; I'm having trouble finding a website that lets me force it to not fit horizontally.

Maybe they changed the default? I turned it off long ago: https://www.addictivetips.com/web/disable-swipe-to-go-back-i...

This is all moving to the browser itself.

Or an extension, thereof.

So it isn't a "server" that is running that a webapp talks to, instead, it is that the webapp talks to your "localhost" or similar (browser extensions are easier).

Then the apps are decentralized from the start.

We're already doing something similar (alpha) with http://party.lol and in the http://gun.eco (our decentralized Open Source Firebase alternative) community.


<comment type="annoying">Works for me.</comment>

Roll the mouse and I get a vertical scroll.

Linux whatever, firefox=latest pushed update from whenever

On a laptop without any sort of mouse wheel / scrolling capabilities. It sucks -- pressing space doesn't scroll to the next page. Page up and page down don't work either.

Damn, I didn't think of your use case. I'm on an iMac/MBP and use the Magic Mouse as my primary input device.

I should add a button and/or keyboard shortcut to disable the horizontal scrolling.

I don't have a disability but plenty of people do. Not everyone can use a mouse, and that's a fairly important thing to remember in UX design.

Thanks for adding other options for scrolling!

I’ll certainly remember this moving forward!

I use the Magic Trackpad and had a bit of a different experience than others suggested, but I still couldn't scroll all the way (I had to go the actual scrollbars)

I think adding a toggle will be the best way forward. Thanks for sharing your experience!

Win 10, FF 70.0.1 left and right cursor control keys work fine.

Linux, FF 70.0.1, and left / right cursor keys work.. but only if I click on the content first. I have no idea where focus is when the page loads, but it's not where I want it.

I had a similarly frustrating UX with an external trackpad.

It takes me 26 flicks of my scroll wheel to show a single column. Given the content, each column should be about 3 flicks max.

Really stupid scrolling, thanks.

Did anyone manage to read enough of this to see whether this is more than a "wouldn't it be great if.." idea? Ideas are cheap..

"Please don't post shallow dismissals, especially of other people's work. A good critical comment teaches us something."


Thanks for correcting me! (upvote -- not like you need them but I appreciate all your hard work!)

I mention actually implementing it for my personal site, so yes.

I don't whether this was posted because the submitter has a particular interest in a "personal API", or if it's discussion fodder for "here's how NOT to do a web UI".

Seriously, do so few people ever say, "hey, honey, come here for a minute and try something for me..."?

(On the off chance that the page author comes to their senses, or a different URL is offered, the current link goes to a page with horizontal scrolling that will wear out your scroll wheel if you try and use it to navigate. One tick of the wheel = one pixel of movement.)

I'm OP and author of the post so I shared this out of interest that others here might be interested. If you still want to read it, the horizontal scrolling is turned off on mobile devices or if your window width is less than 1000px (might have to refresh the page).

I'm gonna be adding a toggle for visitors who wish to do away with the polarizing scrolling.

Use the cursor keys.

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