HNHacker News
TopNewBestAskShowJobs

chrisfarms

1,029 karma · joined May 6, 2010

Web Developer, Brighton UK
submissionscomments
chrisfarms··on Parse, Don't Validate – In a Language That Doesn't Want You To
The "satisfies" keyword may be what you are missing. Most of the cases I used to need "as" (usually weirdly permissive types from some lib) can be nudged in line with a "satisfies"
chrisfarms··on Timeliness without datagrams using QUIC
> Video games tend to use UDP for the same reason everyone else mentioned does: timeliness. You want the most recent position of the various game objects now, and you don't give a shit about where they were 100ms ago.

This is only true for games that can replicate their entire state in each packet.

There are many situations where this is infeasible and so you may be replicating diffs of the state, partial state, or even replicating the player inputs instead of any state at all.

In those cases the "latest" packet is not necessarily enough, the "timliness" property does not quite cover the requirements, and like with most things, it's a "it depends".

chrisfarms··on Show HN: Koonchi – Convert Photo to Hand-Painted Painting by Artists from India
Tell us more... Is this for previews of the artist assigned you? Or something else?
chrisfarms··on Tekton: Kubernetes-native open source framework for CI/CD building blocks
Is there a relationship with the "Build" component of Knative here? ... It seems they were working on a very similar abstraction of CI/CD... This seems like a more general abstraction of the same problem
chrisfarms··on You can now run Linux apps on Chrome OS
I'm really happy Google are giving a go at making ChromeOS into something more than browser on steroids. I really believe this is a path to a decent Linux Desktop future.

I'm def considering getting a pixelbook for my main machine this year now.

chrisfarms··on Golden Carrots
> Why exactly Australians need a peer-to-peer payments system isn’t exactly clear...

Probably as the first steps towards removing cash. Cash must be such a pain for a government, I'm surprised it is still around.

chrisfarms··on MacBook Pro is a lie
You do, and xiwi (X11 in a window) is almost magic in letting me spawn a proper terminal emulator integrated with ChromeOS's window manager (Aura?).

...but it feels like a bit of a hack. I have to have the laptop in dev mode and there's a slight fear that an automatic update might prevent the chroot from working, or that my stateful downloads directory might disappear.

My thought was that ChromeOS is kinda where OS X 10.0 was... a great UI on top of a great base that just works. That's what drove many of us to Apple when we got bored of re-configuring linux, it's what made many of us recommend Apple to friends/family.... Apple have dropped the ball, Google is in a pretty good place to pick it up.

chrisfarms··on MacBook Pro is a lie
As surprised as I am to say this; I think Google could steal a large chunk of the developer market overnight with some slight changes to Chrome OS.

I needed an emergency machine last week (My 2011 Pro finally died), and I opt'd for a £200 Chromebook (EDGAR), thinking all I need is a browser and a terminal right this second and I'd worry about what Apple is doing later.

A solid Linux laptop with working sleep, working wifi, great battery life. Tad underpowered but hey it's £200. I'm _really_ impressed.

If Google relaxed the constraints a little on the OS, or supported a Crouton-like workflow for containers without having to stick it in dev-mode, they could make A LOT of developers very happy.

chrisfarms··on Show HN: Nodal. Next-Generation Node.js Server and Framework
Maybe just a new colour.
chrisfarms··on Telegram gains 1M users after Whatsapp ban
I like how the Signal app (at least on Android) also works for insecure SMS to give me one place for messaging... well apart from everyone who uses WhatsApp at least.

What I'd love is if they could also make it an email client too. Letting me send/receive insecure emails or (if the recipient has Signal) encrypted email using the same key management. I'd much prefur to give out an email address (totally in my control) than a phone number (could be taken away from me at any moment).

One digital communication app please.

chrisfarms··on Why Americans dress so casually
> His prediction was that everyone would dress in uniforms. But that’s the complete opposite of what has happened. And I don’t think people will be dressing in uniforms anytime soon.

OK, here's a potential prediction that could bring about "uniforms"...

If we end up with some kind of ubiquitous augmented reality, we may end up styling ourselves like you would a game avatar, and even "themeing" everyone around us. In that world, it might make more sense to just all wear comfy grey onezies all day.

Of course all predictions like this are hilariously off... it'll probably be more like the entire earth bizarrely becomes a comfortable 23C and everyone just walks around in socks.

chrisfarms··on Dart back end for Ceylon
Pretty sure Dart has it's own VM. It just also happens to compile to Javascript.
chrisfarms··on AdNauseam Browser Extension: Clicking Ads So You Don't Have To
> don't go to sites that have them

That's not really a viable solution. You cannot know the site you are about to visit has ads on it or not.

chrisfarms··on The Movable Feast Machine
My bedtime reading recently has been Propagator Networks[1][2][3] ... and I keep daydreaming of a resource management system just like Dave describes in this video... I do believe "mostly correct" computing is going to play a big role in the future.

[1] http://web.mit.edu/~axch/www/phd-thesis.pdf [2] http://web.mit.edu/~axch/www/art.pdf [3] http://groups.csail.mit.edu/mac/users/gjs/propagators/

chrisfarms··on Syncano.io
Not very clear what this is from the home page.... appengine-style PaaS?
chrisfarms··on Details of UK website visits 'to be stored for year'
I don't see anywhere in the bill what EXACTLY an Internet Connection Record is, and since there is no such thing as a standard Internet Connection Record in any of our existing network infrastructure, I assume this has been left vague so that it can be extended to whatever they want.

Nor does it define the exact kind of Internet Service Provider that the law is suppose to be enforced against. (Is this only suppose to apply to those supplying bandwidth or do all websites/services count?).

> Law enforcement agencies would not be able to make a request for the purpose of determining – for example – whether someone had visited a mental health website, a medical website or even a news website.

This seems to imply that there must be a whitelist of domains for which ICR collection is required. But there is no mention of such a list nor how it would be curated.

chrisfarms··on Researchers discovered the perfect password that’s easy to remember
Whenever I see those sorts of limitation I assume there's probably some kind of poorly handled escape situation to exploit and their fix was "well just don't allow that pesky < character"
chrisfarms··on Airwheel – electronic thingamy some Sydney residents are using to get about
There's a guy in Brighton (UK) with one of these... he always looks so happy and surprisingly stable on it.

It seems to make up the relatively steep hill I live on, but I've never seen him use it to go down the hill. Guessing it gets bit sketchy fighting gravity.

chrisfarms··on Show HN: CandyJS – transparent bridge between Go and JavaScript
No the contexts in pools do not share any state. Once you call an Eval from Go-land you'll be tied to context until that Eval returns, but Go-land will yield during that time so other goroutines(/contexts) are free to execute. It's just a convenience for setting up and working with multiple contexts to take advantage of multiple cores. Probably better to think of it like a process-pool.

The use case I had was along the lines of:

    * Bind/Expose a bunch of Go functions to N JS worker contexts.
    * Execute a large queue of JS-functions using the workers.
Spidermonkey did actually have a way to do a kind of shallow copy of a context and save/restore stack, which shared state, however this actually ended up making things much slower for my use as it required locking the threads and constantly copying stacks.
chrisfarms··on Show HN: CandyJS – transparent bridge between Go and JavaScript
I built a package to bridge spidermonkey/Go last year[0]. I ended up doing most of the communication via JSON (after several less stable versions using reflect) which was fine for the use-case I had. Unfortunately since it builds spidermonkey and some wrapper code it ruined any chance of "go get" working cleanly which doesn't make it a very attractive package.

CandyJS looks much simpler. Good work.

[0] https://github.com/chrisfarms/jsapi

chrisfarms··on Boom – HTTP(S) load generator
Looks closer to siege[1] than ab.

https://www.joedog.org/siege-home/

chrisfarms··on Passwordless login done right
I guess if the phone has a pin/pattern unlock... that could be argued as the "something you know" part.
chrisfarms··on Spiders Ingest Nanotubes, Then Weave Silk Reinforced with Carbon
Luckily for all those times I've walked face first into a spider's web:

Spider silk != Poop

chrisfarms··on Spiders Ingest Nanotubes, Then Weave Silk Reinforced with Carbon
Skitter[1] would have been all over this.

[1] http://worm.wikia.com/wiki/Taylor_Hebert

chrisfarms··on Spiders Ingest Nanotubes, Then Weave Silk Reinforced with Carbon

    > exactly how the spiders incorporate carbon nanotubes and graphene flakes into their silk is not clear
This confuses me. Surely they must've had some kind of hypothesis for this, or are they just going around spraying all kinds of creatures hoping they gain super-powers?
chrisfarms··on Atom.io: Multi-Folder Projects
I just mapped ":" to the command palette then added a few commands to my init...

    atom.commands.add 'atom-text-editor', 'w', ->
	atom.commands.dispatch(this, 'core:save')
Repeat for wq, q! etc ...then it works as expected thanks to the shortest commands showing up first in the palette.
chrisfarms··on Show HN: GraphQL for Postgres
I've been playing with getting a Postgres/GraphQL system working recently too. I decided that the definitions of the "edges" in the schema itself should declare what the user/viewer is capable of fetching via the GraphQL.

I started a very naive implementation of A-Relay-Like-Architecture (Arla) and built todomvc with it[1].... schema.js[2] declares the schema/nodes as well as the 'calls/edges' available for each node, which allows you to limit the visible rows/columns based on the $viewer id.

It's all a bit of an experiment... but I'm liking the GraphQL pattern so far.

[1] https://github.com/kiloe/arla-todomvc [2] https://github.com/kiloe/arla-todomvc/blob/master/schema.js

chrisfarms··on Google Memorial: the small museum of projects abandoned by Google
This was my only valid use for sets too, I can kind of see why it wasn't a project worth serious time maintaining. I always thought it would eventually be integrated into Google Proper via a comma separated syntax or something.

This is my current goto for naming duties:

http://en.wikipedia.org/wiki/List_of_lists_of_lists

chrisfarms··on Computing is too easy
Cassette loading was probably what piqued my curiosity.

I distinctly remember being baffled by how playing special "music" could turn into something on the screen and spent along time forcing a poor spectrum to listen to my "Rave 92" tape.

chrisfarms··on Finding a meaningful wearable experience
If the current trend of very large phones continues, the "it's easier than getting your phone out your pocket" feature might actually be enough of a pull for an entire class of wearables.

I've recently got a Nexus 6, and I have a bit of a love/hate thing going with the size. It requires two hands for practical use and (although still fits comfortably in my pockets) does take noticeably more effort for quick glances than my previous iPhone 4. But when I have to use it for anything more meaningful I'm glad for the decent screen size.

A companion device may be a welcome addition here.

Page 1 of 8Next →