HNHacker News
TopNewBestAskShowJobs

lubutu

1,147 karma · joined March 26, 2011

submissionscomments
lubutu··on My Prime Factorization Sweater
The problem is that such a language may have a mathematical basis but that alone wouldn't be able to convey anything besides mathematics. It can demonstrate intelligence, as used in Carl Sagan's novel Contact by broadcasting a sequence of prime numbers — but that doesn't exactly constitute a language.
lubutu··on The most important tool for Ruby/Rails on *nix
I'm pretty certain that's not what the parent was implying.
lubutu··on Name: Illegitimate
This reminds me of Patrick McKenzie's article "Falsehoods Programmers Believe About Names".

http://www.kalzumeus.com/2010/06/17/falsehoods-programmers-b...

lubutu··on My Problem with Git: No Abstraction
As much as I agree with the rest of the article, I have no idea what is meant by this "implementation leakage". Relative and absolute paths are a part of the fundamental Unix interface.
lubutu··on Use and Abuse of Garbage Collected Languages
One problem here is that because of the complexity required to make a modern garbage collector manage memory effectively, when the GC fails to do its job properly it is far more complicated to fix ('optimise') than in a language with explicit allocation. The higher-level a language the less predictable its memory usage.
lubutu··on Use and Abuse of Garbage Collected Languages
This is one of the examples I use to explain why higher-level functional languages can be more drastically optimised than lower-level imperative languages. These fusions are also sometimes called hylomorphisms.
lubutu··on On Structural Regexes – the theory behind multi-editing
Wow, this is the first I've heard of this, thanks!

I take it from that blog post they don't have equivalents to the commands [XYGV!] I talked about, in e? Still, awesome stuff.

lubutu··on The Lisp Curse
But only that of certain social circles. For example, it fails miserably (imho) as a "hacker's language". I suspect the social and technical aspects of a language are inextricably linked.
lubutu··on Why I hate search
This is the one reason I stick with Firefox. In Chrome if you search for the name of a YouTube video, with a string you know was in the title of the page, you're very unlikely to get that page as a result. If you're lucky you'll get another page with a link to the page you want in the suggestions list. In Firefox it'll almost always be an instant result, right at the top of the list. It seems strange, but Firefox's search really blows Chrome's out of the water.
lubutu··on Poll: How long have you been programming?
You may as well just open up notepad and type "Hello, world!", and leave it at that. HTML is not a programming language; if you want to program on the Web you do have to jump into JavaScript.
lubutu··on Visualizing Code to Fail Faster
Something I would love to have is a debugger for an interpreted language which visualises the program's state as a graph, say, and you can wind time forward and back. Then, as you make changes to the code the visualisation updates according to what the program's state would have been at this point in the program had it been running the updated code. To me that would feel like magic.
lubutu··on Xv6 - Unix V6 rewritten in modern, ANSI C for MIT 6.828
It's "Xv6", not "X6v", btw. It's a kind of portmanteau of x86 and V6.

Edit: (For context, the submission title was originally "X6v".)

lubutu··on Su VS sudo su VS sudo -u -i
I've just done some testing, and my sudo (1.7.4p6) does honour NOPASSWD in /etc/sudoers, when I sudo -su to any user. Are you sure your configuration is correct?
lubutu··on Su VS sudo su VS sudo -u -i
That's possible using sudo -su user (which looks similar, but doesn't hand over to su).
lubutu··on Su VS sudo su VS sudo -u -i
Whether sudo sets $HOME depends on your /etc/sudoers configuration. Alternatively, sudo -Hs.
lubutu··on Su VS sudo su VS sudo -u -i
su is unnecessary; sudo -s is equivalent to sudo su, but allows the admin to restrict who may sudo to whom, for which programs, and so on.
lubutu··on Poll: What's Your Most Disliked Programming Language?
Well, duck typing can still be statically checked, so I'd argue that dynamic typing is more misguided. That said, I do agree that duck typing is fundamentally flawed. I think swans actually don't quack, they honk, but so does a car. Here we can see a problem with both synonymous and homonymous verbs.

I think it comes down to namespacing: we use modules to prevent naming conflicts, allowing us to compose two modules, but if we do the same with objects their attributes conflict. In Haskell everything has a namespace — there are no methods, only functions — and type classes provide polymorphism without (henceforth) 'quack conflicts'.

Two terrible examples of quack conflicts from the Python standard library are '+' meaning both "add" and "append" (the latter being non-commutative), and the comparison operators '<', '<=', '>=', '>' actually meaning ⊂, ⊆, ⊇, ⊃ when dealing with sets.

lubutu··on Forget Today’s Drama, Dustin Curtis’ Svbtle Is About Pushing Blogging Forward
I'm sure Dustin Curtis's 'members' entry used to read "Dustin Curtis, Superhero" rather than "Villain". Why the change?
lubutu··on Poll: What's Your Most Disliked Programming Language?
The programming languages that would make me the most sad/angry/annoyed I don't use, so it's difficult to make a choice. I suppose I'll have to go with Javascript because it's the de facto 'Web language' which people use to force me to evaluate arbitrary code whenever I want to read anything on the Web. Even with a sandbox that seems a terrible idea.

If we're talking about programming languages I hate but still use, I'd have to go with Python. I spend most of my time writing Haskell, and Python's dynamic typing puts me on edge. I might spend half an hour evaluating a Python script only for it to throw an AttributeError because I mistyped some function name or passed the wrong type.

Does anyone know a static analysis tool for Python? I found one a while back but when I tried it it threw (you guessed it) an AttributeError on NoneType.

lubutu··on Poll: What's Your Favorite Programming Language?
What it is to be 'a lambda' isn't particularly well-defined. If we define it to mean an anonymous closure then Java certainly has them — so long as its free variables are final (it closes over references). On the other hand, if we define it as the operator which creates anonymous closures, then Java doesn't, because you have to actually build the closure by hand.

Since the former have a proper name (closures) and the latter doesn't, I'd be inclined to call only the operator a 'lambda'. But since you can at least 'approximate' closures in Java (with anonymous inner classes), I think it's fair to say that they are "very verbose and awkward lambdas", to some definition of lambda.

lubutu··on Fluid windows
Yes it does. As you drag it back from the edge it returns to its 'desired size' (the user's last explicit resize).
lubutu··on Fluid windows
The Haiku window manager does exactly this, but it also resizes the viewport such that the scrollbars are always visible. I've always thought it would be a great feature in other stacking window managers.
lubutu··on Ingo Molnar on what ails the Linux desktop
Steam and the App Store are nothing more than proprietary package management systems.
lubutu··on Ingo Molnar on what ails the Linux desktop
> Without distros, the way to get software is unbearable for Windows converts, where it is just "click, click, done."

Sorry, what? On Windows machines, due to the lack of package management, installing software is not a matter of "click, click, done." You have to google the program, navigate to the website's download area, find the right link, download it, execute it. It asks if you're sure it isn't a Trojan or something, which you promptly ignore (and learn to ignore every other "are you sure you want to execute foo.doc.exe?" popup).

Package management ('done right') is a matter of "click, click, done." Installing software on Windows is an absolutely terrible experience.

lubutu··on Ingo Molnar on what ails the Linux desktop
On the other hand, being able to install software so easily with package management is a huge benefit of distributions. Perhaps the solution is to create a new package management system for a desktop distribution. A system which ensures that when upgrading an application only its personal namespace (libraries etc) changes, while other applications remain untouched. Libraries are second-class citizens, almost. That way we get the benefits of packages and libraries, but each application is logically isolated from changes to any others.

I very much agree with the idea of a slow-moving core, though. That's how I've tended to use Debian: a stable foundation upon which I can install less stable higher-level software (the things I actually interact with). Of course, this doesn't address the distro fragmentation problem Ingo is talking about.

lubutu··on Where’s _why?
I think there's a kind of agreement amongst those of us who look up to _why — and we are not all Ruby programmers — that although it is quite easy to discover _why's true identity, we'd rather just think of him as why the lucky stiff. That said, when he disappeared I read chapter 6 of the Poignant Guide, and his blog, and I feared the worst. When I looked into it and discovered that he was still alive it made me feel a lot less worried. So I'm glad it's made clear that he's really okay.

I'm less sure about broadcasting his real name, but it's been done before and it'll be done again. To me he's just _why.

lubutu··on At the restaurant of the future, tablets take your order
I think it's great that technology can be put to use to improve our everyday lives. But when it comes to replacing human contact with a touchscreen, I'm going to have to decline. As a programmer I can spend up to 8 hours per day staring at a screen and being frustrated. I don't want the same to spend my time outside of work doing the same. Can't we improve the backend technology but retain the brief human contact? It may be more efficient, but is that really all that matters?
lubutu··on The Day Python Embarassed Imperative Programming
I don't think that's a fair comparison. Here's a toy trie implementation I've just thrown together in Haskell. It may not be perfect, but I think it's more comparable to your Python.

http://lubutu.com/media/temp/trie.hs

lubutu··on The Day Python Embarassed Imperative Programming
It does come with an overhead for a beginner, to be sure. But because it is a consistent abstraction we can build idioms on top of the concept of a monad, and in doing so it actually becomes easier to reason about. The best things in life have a learning curve.

Edit: Wow, I was downvoted for this?

lubutu··on The Day Python Embarassed Imperative Programming
A nice analogy, but I would argue that as monads are at a higher level of abstraction than nullables it's more akin to "but what is this if stuff?" It is the f(v) if v else None which is analogous to GOTO, not the simpler and more direct v >>= f.
← PreviousPage 4 of 7Next →