HNHacker News
TopNewBestAskShowJobs

mulander

1,409 karma · joined May 30, 2009

Twitter : @mulander

Blog : https://blog.tintagel.pl/

OpenBSD developer, Senior Program Manager for Citus: Distributed PostgreSQL on Azure at Microsoft.

Interested in database engineering, distributed systems, information security and gaming.

[ my public key: https://keybase.io/mulander; my proof: https://keybase.io/mulander/sigs/dQXCBLcpFOM2v-GKDKC8TG6d7XevLe4ZwjrLInY5qII ]

submissionscomments
mulander··on Is it futile to un-Google?
> You can use !s in duckduckgo to use startpage instead of duckduckgo, so you end up with google's results but avoid the privacy leak (so long as you trust ddg and sp).

Actually, the reason Google search results are better is because they profile you and can relate the term to your usual searches. I doubt using sp would yield better results but no I didn't try.

> I prefer syncthing, and it's easier to stay on the local network. ownCloud has lots of features, but it's overkill if you only need a dropbox clone.

Thanks for mentioning syncthing. I don't remember why I crossed it off back then. Will give it a second look. Might be hard since ownnote got my wife off evernote so that's one big plus in favour of ownCloud.

> No longer have a mobile data plan either, that just means I read my emails and hn a bit less. Cyanogenmod seems to be a big improvement over plain Android privacy-wise.

The amount of work required to root the phone seems absurd to me. People say it's frictionless but all the materials I found on it so far didn't convince me yet to try. I might just be getting a dumb phone tbh as my next phone.

> What do you need a google account for?

Like I mentioned. Locked in by some people who refuse to use anything else. Partially work hangout chats included. Consider it a leftover that I log in from time to time to use a one off feature.

> Also I don't know if companies are legally entitled to gather personal information based on ip addresses, but I use Tor Browser as my default browser so I don't feel threatened by that. On the whole the situation could easily improve if gmail actually had a proper competitor.

There's a bigger problem. There are a few corporate players (apple, microsoft, google, facebook) which amount to almost all routed email. If they decide to drop email to your host you are essentially blocked from contacting them. They also don't play nice with spamd type daemons since they use an MX pool to deliver it. They could essentially kill all of us running home email servers in one go, that's why it's important for people to run their own. I hope someone won't look at a spreadsheet one day and say 'ok, it's now not a loss for us to ignore traffic from those guys/gals'. Think that won't happen? There was a time when you could use jabber to talk with people on google talk. Now there's no federation.

mulander··on Is it futile to un-Google?
Yes I am worried, and not extremely happy about ownCloud. I was thinking about limiting access to it to my home IP but that limits the usability of sharing a link to some pictures etc with friends.

Don't get me wrong. The whole setup is both a burden & a liability as suddenly I am responsible for stuff that was done for me (security upgrades, proper configuration, monitoring, backups). That's the price I decided to pay for the ability to learn and control my own privacy. I may wake up to a hacked server - that's true. On the other hand I could wakeup to Google banning my account, then what?

mulander··on Is it futile to un-Google?
No it's not futile. Every little bit helps.

I switched from google search to duckduckgo. I still hit an occasional search on google but that's a percentile of the searches they got from me before that decision.

I host my own mail server. Yes I still have that gmail account for stuff that are not important enough to migrate and look it up from time to time but the majority of my personal email traffic now goes through my own server. They still get some of my mail if the recipient is a gmail account but guess what? It's not all of my mail.

I don't host files on Dropbox or the Google drive. I have my own owncloud server on the same box as the mail server.

I host my own jabber server for real time chat - mostly with my wife as a lot of people no longer use anything except google/facebook chats. I talk on IRC with tech friends/work, jabber for personal stuff and once in a blue moon I open up that g+ chat to check if someone wanted something from me.

I do my backups on tarsnap, feels great.

I run Linux for my work machine and OpenBSD for my private machine.

I do have an Android phone but I essentially stopped carrying it with me everywhere. I hate being a slave of the phone, no longer have a mobile data plan and I take the phone with me only when I really need to be reached.

Does Google know a lot about me? Yes. Are they still learning more from people I communicate with? Yes. The point is, they are getting less information. I already noticed a large quality drop in the accuracy of google searches/youtube recommendations for my account.

Side effect from all of this is that people in my close circle of friends tend to pick up some of the habits (duckduckgo & other small bits). You don't take down a giant with one stroke, you cut it up piece by piece.

mulander··on Ask HN: Do you use Vagrant or Docker for active development?
The only use case I had for docker so far was to set up a cross compiler toolchain to produce binaries for an armv7 igep board.

It was significantly easier to tell my co-workers to install docker and type `make local` for local binaries and `make igep` to produce a igep armv7 binary by running a docker container.

mulander··on Microsoft Now OpenBSD Foundation Gold Contributor
I'm pretty sure they got a donation closer to the lower $25,000 bound. I check the fund raisin page quite often and up to this morning it showed a total of $100,000 raised. It's now at $125,000.

Still great regardless of the amount. I'm happy that the money was donated to the project.

mulander··on Dart in Progress of Switching TLS Support from Mozilla NSS to Boring SSL
Thought more people would find it interesting. See comment #13 in the linked issue.
mulander··on Contributing to OpenBSD
I completely agree. How cooperative is the upstream in regards to porting it to FreeBSD? I am looking at Dart for a while and the upstream doesn't even seem to be interested enough to provide a tarball that would be possible to download without going through the gclient tools (even chrome provided that :().
mulander··on Contributing to OpenBSD
Hi,

blog author here, like I mentioned in the blog post one of the developers suggested that it might just trigger a re-use of poisoned memory. OpenBSD (especially on snapshots) enables a lot of 'hostile' development features - poisoning freed memory is one of them. Some of those checks are disabled on releases in order to limit performance degradation. Why could dhcp impact a kernel panic? It boils down to the driver. If my understanding is correct the re0 driver works on the kernel level and uses the mbuf infrastructure for allocating and using memory on the kernel level. The specific memory usage pattern the re0 driver has might lead to the kernel or the driver reusing already freed memory. This is of course just a speculation I have based on the information I included in the blog post and received off list from one developer. It's not confirmed in any way and just an informed guess on the developers part. I think dhcp is just an easier way to trigger the panic as the OS does lock-up on this box when set to static IP even if dhcp was never fired even once (though I don't get dropped to ddb then).

mulander··on Emacs Is My New Window Manager
I can tell you how I switched a couple of years ago.

I started to use emacs for the sql-oracle mode since it was tons better than the standard sqlplus client shipped by Oracle. I still kept doing most of my coding in vim but gradually was learning emacs by working with that sql mode (there is of course a mode for every database there).

Later on I started doing notes in org-mode as it was also nicer than anything else I used at that time. The ability to do ad-hoc tables/spreadsheets in it helped a lot. Then stuff just started rapidly speeding up. I found out that browsing changesets with the emacs vcs mode is great (you can open up a file in annotation mode and flip back/forward through revisions). Browsing the filesystem, grepping from withing emacs etc.

By playing around with the modes I got really used to how the editor ticks and switching to coding in it daily was just a natural evolution as I started doing more & more stuff from inside of emacs.

mulander··on Code rot and why I picked OpenBSD
Hi @bootload, I deeply appreciate your response. It's sometimes hard to read between the lines as English is not my native language.

I'll try to put some more light and perspective into how my previous work place 'ticked' and how I intended to outline my passage to OpenBSD in the article.

My previous workplace was a large corporation. I were literally on the clock accounting for every 0.25h of work I did. You were not allowed to touch a single line of code unless you had billed hours against that task (contract with a client, bug report from a client). This literally meant that doing comprehensive code reviews or reworking a particularly nasty part of the code was not possible. There was a 'process' for doing code reviews but it was so bureaucratic that going through the paper work you had to submit after one took 0.5h-2h but the time you had for a code review was counted as a percentage of the time it took someone to produce or alter the code. So if you reviewed a change that took 1h - you had 10 minutes to do the code review and all the alloted paperwork.

I don't want to speak about the quality of the code base in detail due to obvious reasons but I can assure you that people working on it are really experienced and know what they are doing. Most of the problems and the humongous technical debt is years of corporate culture. Did I mention that the banking system I worked on was born around 15 years ago?

During my 7 years at that job. I had the chance to refactor code once. In my first 3 months of working there since I was not yet on the 'clock'. When I was at my leaving period I was given a free hand and was took off the clock again. This allowed me to really look at the code, analyze potential problems and actually react on them. People that are still working on it don't have that privilege on a daily basis.

The stab at Linux was actually accidental :) I use Linux personally since late 90s. What I mostly pointed out was some of my bad hardware choices in the passage and how OpenBSD drives me more into actually diving into the code contrasted to all the years I solely used Linux.

You are correct that my 'evolution' towards tighter, smaller and correct implementations drew me towards OpenBSD. I think I had that feeling for a long time but hopefully you understand that it's not always in the hands of the programmer himself to call the shots and do things right. What I really loved though was auditing and removing a ton of cruft in one code base while OpenBSD did the same with LibreSSL :)

Hope this answers your question.

mulander··on Code rot and why I picked OpenBSD
I'm the author of the article. Can you elaborate more clearly on what you are pointing out?
mulander··on Code rot and why I picked OpenBSD
Time or money?

If they were the ones ending the contract then I also would have to stay for 3 months (getting paid for it).

I would get no money if we would both agree to let me go on the first day. They didn't want me to leave and I was not in a hurry to go on the first day. So I stayed for the whole period and tried to do my best both for my co-workers and my employer.

mulander··on Ask HN: I've learned a programming language – how do I solve problems with code?
I can't relate to baseball but I notice a common pattern that applies to most fields.

You are told to do the basics over & over again so you:

a) Learn the motions

b) Learn how they work

You can't successfully apply your knowledge/tools/skills without knowing what makes them tick.

Let me phrase that with an example from my past. I was big into Starcraft at one point in my life.

Started with SC:BW. I was terrible back then, doing builds like an automaton following a recipe - I lost as soon as someone stepped out of the cannon and did something non-standard. Why? Easy. I had the mechanics but was missing the know-how on what made them work and how to apply them.

Instead of going that route I started to watch better players. They quickly diverged from the builds - enlightenment came when I noticed that they were playing reactionary. They observed their opponents and made decisions.

Why am I expanding now? Not because the build says so but because my opponent invested in tech so will not have the resources to pressure my new base etc. The basics are important, if you have your mechanics down then your mind is clear to react and just execute the movements to achieve the goal you want based on what you observed.

It works the same with programming. If you're stumbling with language syntax, your framework - the basics. You will then loose a lot of time hunting small issues and constantly loosing the big picture. When you're basics are down you are free to experiment and will notice patterns that beg you to apply one of the basics you learned.

Some problems are specific, fall into the 'what data structure, algorithm' should I use. Some are structure/flow related - how do I make those two things connect to each other and pass data around. Some are new - but they all mingle and repeat themselves very often.

When you read a lot of code, write a lot of code - you will start noticing the patterns. In the worst case scenario - knowing the basics will make it easier for you to ask better questions/find answers to hard problems faster.

mulander··on Ask HN: I've learned a programming language – how do I solve problems with code?
You're welcome. I'm glad that you found my write up helpful.
mulander··on “Start Rails 5 development”
I recently came to a similar opinion[1] of Angular like both of you though I was evaluating AgnularDart.

I decided to stick with plain Dart mostly of the reasons you mentioned (JavaScript ecosystem feeling like a mess). Polymer does look great but feels a bit unstable (at least for Dart).

What I would really love to see is a simple front-end framework handling:

- routing

- view encapsulation

- basic animations (when views are altered/loaded)

- back-end requests - preferably swap-in-out (http, websockets)

I ended up basically doing the above by hand in plain Dart. The only part that I found ready made and working nicely so far is the routing part[2] from Angular.

[1] - http://homing-on-code.blogspot.com/2014/11/dart-one-year-lat...

[2] - https://pub.dartlang.org/packages/route_hierarchical

mulander··on Ask HN: I've learned a programming language – how do I solve problems with code?
Hi bnb,

I started programming around 20 years ago - self taught and experiencing the same problems as you in the early beginnings.

I made mistakes when I started

- jumping around between languages

- thinking I couldn't grasp something

- jumping from one tutorial to another, and another, and another

- I wish I started learning algorithms & data structures earlier

- I wish I took time to dive deep instead of rushing to getting something working

What was my breakthrough?

I got a job in social assistance - it was mostly sitting at a desk and distributing food supplies. This left me with most of the day unfilled with errands and a PC in front of me. I installed Perl on it and started learning, digging deep into every bit of the language.

- Learning how the interpreter works

- Reading the perldoc for every module I used, every function I called

- Writing small scripts to help with my then daily tasks

- Writing code every day, even for stupid one off tasks or things I wanted to try

Three months later I got my first job as a Perl programmer - mostly doing web interfaces, marketing mailers & web scrapers. Having learned Perl to the level when the language itself wasn't getting in my way it was far easier to grasp additional concepts:

- programming paradigms

- algorithms & data structures

- abstraction

- documentation & good practices (version control, testing etc.)

This was a major stepping stone for me. Picking up any other programming language, framework was a breeze since then. I worked at a corporation doing Oracle PL/SQL for seven years. I programmed in Ada, Ruby, Perl, Python & JavaScript professionally in long term employment. I did contract work for C, C++, Java. I played with Common Lisp, Scheme, Prolog, Erlang & Smalltalk (mostly when I was hospitalized for a long period of time) and now I'm working with a start-up I co-founded where I'm doing Python, Ruby, Javascript, C, Go and recently some Dart.

Don't let anyone tell you that you're limited in any way - most of all don't think it yourself. The only limitation is what you want to achieve.

Recently I got really interested in OpenBSD and would really want to be involved in OpenBSD development.

Here's how I'm tackling this specific problem now with hindsights to the mistakes I made when starting as a programmer.

1) Pick one project

This is OpenBSD in my case - should be a heavily developed framework, library, application in your case.

I ignore all the OpenBSD vs X articles, post whatever. I made my choice.

2) Follow it

Subscribe to the mailing lists, join the IRC channel - consume news & changes about the project.

Don't feel bad when you can't keep up! 20 emails per day? Try to read a few of them and leave the rest for later - just keep at it.

3) Follow the code

Take a look at each code change made to the project, try to understand it even if it's over your head.

4) Run it!

Changes were made? Pull them in, run them.

5) Poke around

Try introducing your own changes. Hit a bug? Try to trace it down as much as you can & fix it. If you can't fix it, report it upstream.

6) Make your own

You want it to do more? Add it, or at least give it a good try.

Don't know how? Still try! Even if you just end up breaking stuff you will learn!

7) Rinse & repeat

Until you feel confident enough to go in on your own - though you rarely are completely on your own. Don't be afraid to ask for guidance & help. Just remember that it's always nicer to show people that you tried on your own (and documenting that) before going public with a help request.

So this was a wall of text, hope it helps you at least a little bit :)

I mostly work from home on my own schedule so can devote a few hours spread out throughout the day. If you really want to learn and need a helping hand in the early steps or someone to bump ideas against feel free to catch me on freenode @ #hncode.

mulander··on Using Erlang, C And Lisp To Fight The Tsunami Of Mobile Data
Is there a specific process you follow? Lean/agile whatever buzzword that is closest to describe how you go from idea to delivery.

How close do you work with your clients and how much is your system changing in response to feedback?

What drawbacks (if any) the current tech stack choices had so far on your?

mulander··on Perl/Linux, a Linux distribution where all programs are written in Perl
Yes, AuroraUX is generally dead but on the bright sight it initiated[1] the development of GNAT-AUX[2] which is fine up to this day and even compiles Ada for Android devices :)

[1] http://www.dragonlace.net/questions/quest_003/

[2] http://www.dragonlace.net/

mulander··on C++11 and Ada 2012 - renaissance of native languages?
> Ada suffered for years for being an unimplementable language. It was a long time before compiler technology caught up with it

Could you explain what features of the language made it that hard to implement?

I would really like to see your general opinion on Ada from a language designer standpoint. Considering you're the main mind behind D - did you draw any inspiration from Ada while fleshing out the language?

mulander··on Android Ported to C#
> like the "push to walk" button at the street corner.

Thanks for using that comparison - oddly enough it provided some nice entertainment for me :D

Since I wasn't aware if "push to walk" was a cultural reference that I might not know I started some quick research that lead me to a couple of interesting articles.

I started off with a search that resulted in the Placebo Button (http://en.wikipedia.org/wiki/Placebo_button) article on wikipedia.

From the references section in that article I found a nice column from NY times about the street crossing buttons in NY (http://www.nytimes.com/2004/02/27/nyregion/27BUTT.html).

From which I picked up an interesting pattern in traffic control solutions - called the 'Barnes Dance'.

Which lead me to this video (http://www.streetfilms.org/barnes-dance/) from which I learned that it's also known as Pedestrian scramble (http://en.wikipedia.org/wiki/Pedestrian_scramble).

It's funny how a couple of well picked words on your side has lead me to an entertaining research.

I just wanted to say thanks and share this experience :)

mulander··on SQL Fiddle
Testing out snippets of code without altering a structure of the database you have installed locally/on a server.

Doesn't require a startup of the database - the results can be discarded and you don't have to worry about cleaning it up :)

Generally, just a fast way to test things - I would see it coming in handy during some presentations maybe?

mulander··on Mozilla releases version 0.1 of the Rust programming language
Honestly, I am observing closely the way some new system languages evolve - D, Go, Rust and I see a large intersection of features with Ada.

I am always amazed that no valid discussion/comparison of those languages and Ada erupt in these threads :( Ada is not as bad as it's painted to be.

mulander··on Java apps face more performance issues
I miss the time when papers were published as plain text and didn't require logging in/registration.

I'll have to skip on this one.

mulander··on The key value store we ignored (Postgresql)
Each database worth its salt will use as much memory as you allow it to use in order to avoid physical IO.

Your point is valid of course. I just wanted to point it out for people that think each action in a RDBMS results in a costly IO operation.

mulander··on The key value store we ignored (Postgresql)
I can sustain this claim. I work with a system implemented almost entirely in Oracle PL/SQL. Some tables in the system are nearing 800-900 columns, their size often exceeds 600 GB per table (not many of such large tables though). Querying isn't a problem at all. Large schema changes are also mostly painless. The only point at which one has to be really careful is when a schema change requires actual calculations based on historic data with an additional write on each record.
mulander··on Python 3 implementation in Haskell

  CLPython (http://common-lisp.net/project/clpython/) is 
  an open-source implementation of Python written in 
  Common Lisp. 
  It bridges the Python and Lisp worlds, so you can:
   * access Python libraries from Lisp;
   * access Lisp libraries from Python.
Runs on 6 different CL implementations. Like Berp it can interpret and compile if the underlying CL implementation supports compilation.
mulander··on Google paper comparing performance of C++, Java, Scala, and Go [PDF]
The paper uses wc -l (probably because sloccount doesn't handle go and scala?) to count the lines of code.

Here is the output of sloccount:

    SLOC    Directory       SLOC-by-Language (Sorted)
    595     java_pro        java=595
    591     java            java=591
    488     cpp             cpp=488
    328     python          python=328
    0       go              (none)
    0       go_pro          (none)
    0       scala           (none)
    0       scala_pro       (none)

    generated using David A. Wheeler's 'SLOCCount'.
Compare it to the paper.

    Benchmark   wc -l
    C++ Dbg/Opt 850
    Java        1068
    Java Pro    1240
    Scala       658
    Scala Pro   297
    Go          902
    Go Pro      786
mulander··on Opera launches Opera Mail web app
You still have to give some credit to gmail. Even without the competition new features are rolled out quite often (all the things in the 'labs').
mulander··on Samsung installs keylogger on its laptop computers
By booting an OS from a CD - yes I knew about this. I just hope it isn't a built in 'unlock' utility.

If that was the case then OK. I also understand running things to check if they work - that's why I didn't make a problem out of it.

I am not OK in changing/running things on the machine without contacting the owner. This makes a user uncomfortable.

mulander··on Samsung installs keylogger on its laptop computers
I own a HP laptop which recently had its mother board replaced. The machine came with an OEM installation of MS Windows Vista - I didn't reinstall / remove but I did lock out and changed the password for the 'Administrator' account. To my surprise when the laptop came back from repair (official HP on warranty repair) the Administrator account was unlocked and the recent activity on that account indicated that video files were being run recently from it.

I assume that they must have a way to unlock the account I just hope it's not a full time remote control like mentioned in this article. You can be sure of one thing - I will never buy from HP again.

← PreviousPage 4 of 5Next →