HNHacker News
TopNewBestAskShowJobs

thu

980 karma · joined April 14, 2010

Võ Minh Thu - @noteed

Looking for work (freelance, from Belgium).

I build https://refli.be on the side, and have some other projects, including e.g. https://slab-lang.org.

My GitHub profile: https://github.com/noteed/ — The one of my freelancing company: https://github.com/hypered/

[ my public key: https://keybase.io/thu; my proof: https://keybase.io/thu/sigs/JeP2OIWF199YvdBYLUCAFc-VpjpJA-XzgmwtxG85IaQ ]

submissionscomments
thu··on Uber ordered to halt transportation services in Germany
Free market can destroy itself, for instance by the creation of a monopoly. How to apply the mechanism of the free market, as good as it can be, if it disappears ?

Anyway here, it's not about competition (that's what they want you to believe it is), it's about regulations (e.g. ensure some safety rules).

thu··on Replicated PostgreSQL with pgpool2
PostgreSQL provides different ways to replicate a database state. There are multiple ways to create full backups (file-sytsem level backups, so-called basebackups, and dumps) and accompanying ways to restore them. There are multiple continuous synchronisation schemes too: shipping WAL segments, and streaming replication. Streaming replication can be synchronous or asynchronous.

When I started Reesd, the main reason was to be able to use (a single invokation of) scp to ship WAL segments to three different machines in different datacenters.

Actually, now that Reesd is deployed, it itself uses multiple of the above mechanisms. It ships WAL segments (exactly as a user of Reesd could do it, by uploading to a Reesd bucket), uses synchronous replication between the primary and a first standby, and asynchronous replication with a second standby. Both standby's are also configured to use WAL segments if available. Indeed, starting a standby will first use the WAL segments before connecting to the primary to begin streamming replication.

thu··on Dockersh – a shell that puts users into individual docker containers
Are you sure it is related to entering an existing container (and running a new process) ?

From reading the README file, it seemed to me it was only spawning a login shell process in a new container (not an existing one), and possibly resuming an existing container.

thu··on Dockersh – a shell that puts users into individual docker containers
The point is not containerization with Docker (vs. something else), but showing a project that can be used as a login shell. I.e. I think a good chunk of the challenge was gluing everything from sshd to the running individual containers.

Even if you were saying that such a login shell already exists with another containerization scheme, the fact it uses Docker is relevant to those who are investing in Docker. For instance Dockersh can be configured to run the shell in a specific Docker image; that is you can re-use your existing knowlegde and tooling.

thu··on Docker Registry experiencing full service disruption
Solomon, where can we read more about the decentralization plans ?
thu··on The Python I Would Like To See
You missed his point 1.
thu··on Is Java the Cobol of tomorrow and Go the Java of the future?
Lightweight threads in Haskell (using the excellent GHC runtime).
thu··on Best GitHub repositories
"correct" w.r.t. what ? A checkout (or a tarball as offered by GitHub) of the repo is all those files, which is probably what most people want.
thu··on Wikipedia refuses to delete photo taken by monkey
What is "creating the circumstances" ? The airline company that made the trip possible ? The company building the camera ? The upset wife that sent her husband away (probably not relevant here) ?

Would a burglar taken by surveillance camera be creating those circumstances ?

Clearly he's not involved in the monkey taking the pictures. He has no right to them.

thu··on DNS And Docker Containers
The idea it that if I have a few containers that need to know each others. Say an application server `app` and a PostgreSQL database `db`. While conceptually I need to spawn only `app` and `db`, I have a script to actually spawn `ns` (i.e. dnsmasq), `app`, and `db`. That script will register the IPs of `app` and `db` into dnsmasq (as you describe in the post).

This means that I can run that script more than once on my laptop and have multiple triple (`app`, `db`,` ns`) side by side without fear of crosstalking between logical groups.

thu··on DNS And Docker Containers
I'm using that approach for Reesd. Instead of a single dnsmasq instance on the host, I have one instance (actually a Docker container) for each logical group of containers. Containers can reference db.storage.local and different groups will actually talk to their own database. This is pretty cool for integration tests or spinning a new version of the group before promoting it into production.

Before that, I was using SkyDNS but I was not happy in having to maintain/reset the TTL.

Side note: when you use --dns on a container and commit the result to an image, that image will have the --dns value in its /etc/resolv.conf (meaning that you still have to run a DNS at that address or to provide again --dns to supply a new address).

thu··on SpaceX Layoffs
Indeed, and Google Images search is pretty good with thumbnails.
thu··on The Problem With Founders
Articles like these always repeat it is hard to hire in the SV. I got a few interviews to do remote working for such startups and some of them said it was not possible to work with me only four days per week (I'd like a part time job). If talent is so rare, why is it better to go with zero hours instead of four days ? (Or maybe I just suck at something they don't want to say and telling me about the part-time requirement is easier.)
thu··on Load Balancing with HAProxy
I could have used part of that yesterday!

Suggestions:

As I have installed HAProxy in a Docker container, I noticed that the dependencies for `sudo add-apt-repository` are quite numerous. Instead I created a new sources.list and added the signing key manually.

Since you use SSL, a nice addition to your configuration is to redirect non-ssl trafic:

    redirect scheme https code 301 if !{ ssl_fc }
Examples on the web leave out the `code 301` (the default is 302).

Finally I had to try a few different ways to get my certificate and key to work with HAProxy. The order in my case was certificate, private key, intermediate, root ca (concatenated in a single file).

thu··on Last day to apply for Startup School Europe
I'm not complaining about the location but your statement about "how serious" I am is over the top.

I am willing to create a startup on which I'm working in my free time (I need a day job to pay the bills) and personal elements made my life a bit more complicated than necessary financially-wise and I couldn't afford a trip abroad right now.

thu··on Obtain a GitHub user's public keys
I'd say that at most it forces you a bit more (if that was necessary) to check the SSH fingerprint of the machines you're SSHing into.
thu··on Online JSON editor
I guess rawgit should change its strategy: they instruct people to not link to rawgit.com but to cdn.rawgit.com when you expect heavy traffic. The thing is that you have to read their instructions, which is probably not what you see when you receive a link to them. So you share that very same link, and if you share it on HN it crosses their threshold. Maybe they could use a redirect to their cdn URLs when such threshold is crossed, reverting it when some time is passed.

Beside, the redirect or a gentle message would be cheaper than serving evil.js and evil.css.

thu··on Jumpers and the Software Defined Localhost
For my project I am using Tinc to create a VPN that bridges the different per-host local Docker networks. I have described how to do that in a Gist: https://gist.github.com/noteed/11031504

The approach is taken from a blog post where Open vSwitch was used instead of Tinc: http://goldmann.pl/blog/2014/01/21/connecting-docker-contain...

I really like this approach: I run a SkyDNS per group of containers. That DNS is used in `docker run --dns`. Containers can then look up services naturally (via DNS) and those services can actually be running on different machines. Those containers can be running on my laptop or multiple machines across multiple datacenters and there's no difference to them.

thu··on Swift, and why it hurts you (from an GNUStep developer)
Your answer appears to be for another post; here the post is about Swift being closed-source and tight to the Apple ecosystem, not about being compared to another language.
thu··on Change.org Petition: Tell media not to use 'Hacker' when they mean 'Cracker'
Not for everyone, and the one we advocate isn't new at all: http://en.wikipedia.org/wiki/Hacker_%28term%29
thu··on Ask HN: Who wants to be hired? (June 2014)
Namur (Belgium), remote, contract or part time

I am a capable Haskell and Python developer. To get a feel of what I can do:

My side project is Reesd, a redundant storage service for developers. It is made of:

    - Several Docker containers (linked together on multiple machines through Tinc),
    - Web frontend,
    - SCP reimplementation with account permissions,
      bucket plan limits, and on-the-fly SHA1 check,
    - Redundant backend store,
    - PostgreSQL synchronous replication + WAL archiving (using scp@reesd itself),
    - Background jobs to check files SHA1 to detect early corruption,
    - Payment done through Stripe,
    - Nginx and HAProxy,
    - Email through mandrill.
To read more about it: http://hypered.io/blog/2014-02-17-building-reesd

Vo Minh Thu

Reesd: https://reesd.com

Email: noteed at gmail.com

GitHub: https://github.com/noteed

Twitter: https://twitter.com/noteed

LinkedIn: http://be.linkedin.com/in/vominhthu

thu··on Give PonyORM a chance
3. when the code is AGPL, receives contributions, then the original author offers a commercial license including said contributions without any contributor agreement.
thu··on Mill CPU Specification [video]
I have mentioned EDSLs in my comment... and yes they can be found everywhere. Lispers are well known for creating DSLs because of their macro system.
thu··on Mill CPU Specification [video]
Just started to watch this presentation and it strikes me that what they do with C++ as a meta language resembles a lot what Haskell programmers do with Haskell and EDSLs.

The note about overloading the comma operator remembers me the idea that monads (and the do notation) gives us a programmable semicolon.

Here's an example of a fun variant of the idea where something that looks like BASIC is embedded in Haskell: http://augustss.blogspot.be/2009/02/more-basic-not-that-anyb...

The same author also made bindings to LLVM that still is in the same realm.

thu··on I'm back. This time without Google
This is not irony. He drops a few Google services and yet other Google services are still in use. The Google cache would still work whether its web site was reporting a 503 or not.

The irony would be that by trying to reduce its reliance on Google he would actually make it more important. That's not the case, even if the 503 was really caused by him not using Google Analytics (I wonder how) or Google CDN.

thu··on Terry Davis Uses This
We can draw attention to interesting bits, like this page: http://www.templeos.org/Wb/Accts/TS/Wb2/TempleOS.html

Reading the usesthis page, I was intrigued by the fact the author uses Windows. Actually he tweeted about switching to Linux a few days ago: https://twitter.com/TempleOS/status/461423615582298112

I find also interesting that someone writing an OS is prevented running it natively by Secure-Boot.

thu··on Elm 0.12.3 – Hardware accelerated 3D rendering with WebGL
This release makes me very happy. I never really took a look at Elm but yesterday I've receive a bug report on a very old library of mine to parse GLSL. The author of Elm told me it was used in their WebGL work and pointed to that Thwomp example. I didn't know that library was actually used by anyone!
thu··on Docker: Lightweight Linux containers for consistent development and deployment
Assuming you are arguing in favour of VMs, the benefits of Docker stand, and you can perfectly run Docker containers within a VMs.

The feature sets/usage sweet points of OS-level package managers, language-specific package managers, VMs, containers, distinct/same hosts, ... are both overlapping and different enough that you need judgement to choose which one you want, but they are certainly not exclusive.

If your use case means you prefer VMs over containers and you don't need to combine them, fine, but every situation is different.

thu··on Google is Breaking the Internet
Do I understand correctly that Google will try to punish you (or the other party) if you host links in exchange of money but that Google is doing it in its search results ? (And I receive from time to time unsolicited regular paper mail from Google so that I advertise my enterprise through them.)

Page Rank is a neat idea, but making everyone listening to Google so that Page Rank remains meaningful is stupid. What do you do if suddenly Google thinks Twitter or Facebook are to be considered spammy link farms (which would be true) ? Do you ask everyon to delete their tweets linking to you ?

thu··on Why I push for Python
I don't understand how your "easier for a beginner" example relates to fundamental programming concepts. Are you talking about variable assignments, jumps, control structure, or about syntax ?

Again how is "the whole purity thing" an overhead w.r.t. to learning the fundamentals ?

If you take your loop example in Python, how does leaking the `i` variable outside the loop's scope (actually there is no such scope) a fundamental that beginners need to grasp ?

What would you say about `map f [0..2]` ?

So Python makes a lot of things easier than in C or in Java I get it. That in itself is not an argument for teaching it instead of, say, Haskell.

If you can choose between A, B, ... Z, sure it is better to use B if it is better than A, but not choosing F because you never use it is a wrong reason (at least if your goal is to teach students).

← PreviousPage 4 of 9Next →