HNHacker News
TopNewBestAskShowJobs

hesselink

420 karma · joined November 11, 2009

meet.hn/city/nl-Driebergen-Rijsenburg
submissionscomments
hesselink··on Technical debt and tacking into the wind
We wrote a custom language, only it's javascript. We built a very simple module/class system that compiles to javascript, in javascript. It consists of functions called 'Module', 'Class', 'Static' and such, that generate javascript code. This has had so much value for us. It allowed us to abstract some patterns into 'compiler extensions' for things like scoping, timeouts and cancellation, etc. And more recently, it allowed us to add typechecking by outputting typescript instead of javascript. I think it was a great idea and would do it again, but it's only been 6 years, so perhaps ask me again in 4 years :)
hesselink··on Shipping Culture Is Hurting Us
While your overall point is correct, your example is wrong: 17/0 == Infinity, and 0^0 == 1. Neither is NaN :)
hesselink··on Will WhatsApp kill Slack?
We've used Campfire and are now using HipChat. What are the things that Slack offers over these?
hesselink··on BLOKK – A font for clients who don't understand lorem ipsum
> that used placeholder texts like Lorum Ipsum can also fail, because the real texts turn out to be much shorter/longer than the placeholder text.

In many cases, the content is dynamic, so the design has to be able to handle many different content lengths.

hesselink··on Learn You an Agda
I always thought the statement

    {-# BUILTIN NATURAL ℕ #-}
binds the inductive definition of ℕ to an efficient implementation. However, googling now I can find no confirmation of this. Does anyone know more?
hesselink··on Strider – Open-Source Continuous Integration and Deployment Server
I didn't post the grandparent, but we have a self-hosted Jenkins instance and have looked as hosted alternatives. One issue is that we use the build artifacts to deploy to developer machines, and those are Macs. So we need the CI setup to build Linux (for live deployment) and Mac binaries. From a quick browse it wasn't clear if circleci can do that.
hesselink··on Unicode Text Converter
Found it, it was https://github.com/darrinhenein/VerticalTabs.
hesselink··on Unicode Text Converter
Strangely, for me on Firefox 33.1 on OS X, the title shows up fine on the main page. But when I click through to the comment, I get boxes only, and from then on, the main page also doesn't work anymore until I restart Firefox. I suspect an extension, but I'm not sure.
hesselink··on Some REST best practices
Thanks for replying.

> The plurals or not thing isn't a big deal. I really just object to the author picking one and claiming it's better with justification.

Agreed, I was annoyed by that as well when reading the article.

> Putting "vi" in your URL decreases both readability and modularity. All things being equal, concise URLs are more readable. "v1" are extra characters without significant benefit. It also creates huge maintenance overhead. How many APIs do you think you can simultaneously maintain well? I am happy with one good one myself. Every extra new version you create (as opposed to gracefully improving the existing one) is more technical debt.

It is true that versioning your API creates more maintenance, since you're supporting old versions of your code. However, it does make things more maintainable for users of your API. If you don't provide at least two versions, there is really no way to make a breaking change to your API without breaking your API clients. We have an API that is now up to version (IIRC) v1.13.4, where the first two components indicate breaking changes, and the last component is for additions. While the extra maintenance is noticeable (and we sometimes discuss how to decrease it) it's not huge, and very manageable. And it's helped us maintain our own internal tools, as well as upgrade different services that talk to each other using these APIs, but can't be upgraded simultaneously.

> Let's take the nesting example: /artists/8/albums. What if you want to access an album by itself? You also need an /albums resource so you've just created two resources when you need only one. The /artists/8 response should include a list of albums that hyperlink to the /albums resources. If you absolutely have to have a clean list (without the artist header information, just filter it with a query string /albums/?artist=8. This accomplishes the same thing in a more predictable and consistent way without magic URL params. The major benefit of this type of design is it makes tracing execution from the interface to a code location much clearer by avoiding spaghetti URL routing.

I can see this if you have lots of domain objects that are related more loosely. However, for objects that are more closely related (say, a blog post and its comments) I can also see the advantages of the nested structure, and you'll probably never request a certain comment without first knowing the post. On the other hand, perhaps you want the comments but relating to a user instead of a post...

How we've dealt with this is by mounting a sub-resource (comments, for example) on multiple parent resources (posts and users). This doesn't have to lead to complicated code if your abstractions are set up right. But I can definitely also see the advantages to a completely flat url structure. The more I think about it, the more I want to try this for a future API.

hesselink··on How I Start: Haskell
It's a pretty advanced library, and I don't think you should use it if you've only been trying Haskell for a few weeks. I've been using Haskell for about 7 years, 5 of which commerically, and I've never used it seriously. I find the smaller lens libraries, like 'fclabels', solve the most important problems 'lens' also solves, but with a lot less surface area and complexity. But even that can wait until you're further along.
hesselink··on Some REST best practices
The article gives some motivation for its best practices, you do not. Would you care to provide some?

> using plurals is not the only, and probably not the superior, solution.

Why?

> Whatever you do, putting "v1" in the middle of your URL is the wrong way to do it.

Why?

> Nesting resources is an anti-pattern that quickly creates a mess.

Why?

Edit: not sure why the downvotes. I'm genuinely interested, but the parent doesn't contain much useful content.

hesselink··on The Greatest Story Reddit Ever Told
This is not news, it's a story. In a story it's important to draw you in and take you on a journey. Facts don't do that on their own.
hesselink··on Immutable JavaScript data structures, backwards-compatible with arrays, objects
I wonder what the performance of this is. While functional languages like Haskell are optimized for these kinds of data structures, I doubt Javascript runtimes currently are. We've been bitten before by writing code in too much of a functional style and getting terrible performance, so benchmarks would be really useful before we'd start to use this.
hesselink··on Announcing RemoteIE: Test the Latest IE on Windows, Mac OS X, iOS and Android
This seems to work really well (for me at least) and I like the idea. However, for actually testing the product we're building it's currently not usable, since they've disabled cookies completely. Our product requires a login, so I guess we'll have to stick with the VMs for now.
hesselink··on Show HN: A Dockerized proxy to watch Netflix outside the US
Be careful with Hola: they started injecting ads in all pages on Firefox at some point...
hesselink··on For Cinephiles, Netflix Is Less and Less an Option
This problem is even worse when you're outside of the US, and the Netflix selection is even smaller. On the upside, I don't think we ever had the Netflix DVD service, so we don't miss it.
hesselink··on Getting It Done with Haskell
Each of your points contain mistakes:

Exceptions in Haskell are separate from successful execution paths. It has `throw :: Exception e => e -> a`, which can be used in pure code. Only catching, i.e. handling exceptions, has to be in IO.

The IO issue you mention is a feature to me: it means your code will have a very clean structure with IO at the top level, and pure domain code further down. But perhaps others prefer other structures, I don't know.

Field names are not global. They are scoped the same way as everything else. They are in scope in the module, and you can manage visibility in other modules with exports and imports.

hesselink··on A Gentle Introduction to Monad Transformers – or, Values as Exceptions
In Haskell, `a -> b -> c` and `a -> (b -> c)` are the same types.
hesselink··on Why does Outlook map Ctrl+F to Forward instead of Find?
The localized Excel formulas! Oh, the horror! Who would translate a programming language?
hesselink··on Why does Outlook map Ctrl+F to Forward instead of Find?
Yes, that's one terrible shortcut. For those on Firefox: in about:config, set browser.backspace_action to 2 to disable it. Made my life better, though it also made me realize I used to use it to go back sometimes.
hesselink··on Sick of Ruby, dynamic typing, side effects, and object-oriented programming
> No, I'm right, because people smarter than me have said it.

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

hesselink··on What's an idea or creation that you've had success with locally that I can copy?
This site (http://www.worldstartupwiki.org/) is tracking startup ideas that haven't been implemented in certain locations yet.
hesselink··on What Happened When We Tried to Publish a Real Paper Investigating Time Travel
Great article, but I was annoyed that in an online science publishing platform, this article contained no links, but textual references that the reader had to look up manually.
hesselink··on A Tale of Two Newlines: Carriage Returns, Line Feeds, JavaScript Hair-Pulling
I actually like it. It's pretty clear it's a joke. I always disregard testimonials like this anyway, at least this one made me laugh.
hesselink··on Computers are fast
Isn't a lot of numpy implemented in C?
hesselink··on GitHub monoculture
Why not use Google? Searching for 'coverage.py', the bitbucked repository is the fifth link for me. The first and second link are more general informational pages which link to the bitbucket repository. Searching for 'coverage.py source repository' gives the bitbucket repository as the first and second result.
hesselink··on Distrusting StartSSL
They're also not about to change it: https://twitter.com/startssl/status/453631038883758080
hesselink··on a16z Programming Test
Who says they're not recruiting other kinds of people through other channels? This kind of test is appealing to some people, and I'd guess those people have a github account.
hesselink··on GHC 7.8.1 released
Can you elaborate? Perhaps you are talking about the Char8 ByteString instance? It was a mistake to declare that instance, I think.
hesselink··on IE6 is dead
It's a protocol relative link. So if the page is served over http, it'll be an http link, and if the page is served over https, it'll be an https link. See http://en.wikipedia.org/wiki/Protocol_relative_URL#Protocol-...
← PreviousPage 2 of 5Next →