
A Personal API - NetOpWibby
https://blog.webb.page/2019/a-personal-api
======
karma_fountain
It's nicer vertically scrolling
[https://imgur.com/a/6Xw7quy](https://imgur.com/a/6Xw7quy) . Just compare the
2 op.

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

------
oever
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.

[https://en.wikipedia.org/wiki/Solid_(web_decentralization_pr...](https://en.wikipedia.org/wiki/Solid_\(web_decentralization_project\))

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

------
cxr
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.

~~~
anchpop
> 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?

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

------
mawalu
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

~~~
keithwhor
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/](https://code.stdlib.com/)

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

~~~
mawalu
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.

~~~
keithwhor
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 :).

------
azinman2
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?

~~~
Pigo
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.

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

------
ivoras
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."

~~~
NetOpWibby
> 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.

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

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

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

------
eximius
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.

~~~
NetOpWibby
Cost is definitely the primary blocker.

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

------
ocdtrekkie
This is a project I followed a while ago that does this:
[https://github.com/danfang/me-api](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.

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

------
keithwhor
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. :)

~~~
NetOpWibby
Whoah! That's cool, haha! Thanks!

------
lpellis
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.

[https://loftie.whoami.dev/activity](https://loftie.whoami.dev/activity)

------
Uninen
Simon Willisons Dogsheep is also a similar project:
[https://dogsheep.github.io/](https://dogsheep.github.io/)

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

Here are some examples
[https://beepb00p.xyz/mypkg.html#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](https://github.com/karlicoss/my)

------
gremlinsinc
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.

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

------
digisocialnet
check out
[https://github.com/rigoneri/Syte2](https://github.com/rigoneri/Syte2)

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

~~~
digisocialnet
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](https://github.com/jake-101/Syte2-4-Zeit2.0)

------
aleken
Exciting idea! Makes me want to make my own

~~~
NetOpWibby
DO IT

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

~~~
NetOpWibby
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.

~~~
KirinDave
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.

~~~
NetOpWibby
Ahh gotcha.

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

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

~~~
NetOpWibby
Thank you! Just added a scroll toggle.

------
NetOpWibby
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.

------
SonicDeathMnkey
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.

------
mstaylorwebb
Great idea!

------
Fauntleroy
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.

~~~
jaquers
Also breaks back / forward gestures on Mac.

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

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

~~~
danShumway
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.

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

~~~
danShumway
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.

~~~
NetOpWibby
:D Thanks Dan!

------
kwhitefoot
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.

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

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

~~~
Filligree
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.

~~~
lukifer
Maybe they changed the default? I turned it off long ago:
[https://www.addictivetips.com/web/disable-swipe-to-go-
back-i...](https://www.addictivetips.com/web/disable-swipe-to-go-back-in-
chrome/)

------
marknadal
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](http://party.lol) and in the
[http://gun.eco](http://gun.eco) (our decentralized Open Source Firebase
alternative) community.

------
a3n
Scrolling:

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

Roll the mouse and I get a vertical scroll.

Linux whatever, firefox=latest pushed update from whenever

~~~
fullstop
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.

~~~
NetOpWibby
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.

~~~
fullstop
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!

~~~
NetOpWibby
I’ll certainly remember this moving forward!

------
iamaelephant
Really stupid scrolling, thanks.

------
jascii
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..

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

[https://news.ycombinator.com/newsguidelines.html](https://news.ycombinator.com/newsguidelines.html)

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

------
mikestew
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.)

~~~
NetOpWibby
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.

