HNHacker News
TopNewBestAskShowJobs

_sh

614 karma · joined February 25, 2009

submissionscomments
_sh··on Rich Hickey: Simple Made Easy
If, like me, you're overwhelmed with complexity in software projects, you need 'Out Of The Tar Pit'[1]. This essay is so good, I've read it four times, gaining new insights every time.

[1] http://web.mac.com/ben_moseley/frp/paper-v1_01.pdf

_sh··on What the hell does ≡ do, anyway?
I call it the 'ideq' (pronounced eye-deck), a portmanteau of 'identity equals' because in my scheme background, equivalent (eqv?) is less strict than equal (eq?). The 'identity' part of the name, in programming context, means the address of the item.

So in order of strictness: equivalent < equal < ideq

_sh··on Fred Wilson's response to "Paul Graham's Letter to YC Companies"
This god-awful meme assumes 'payment' is made only in cash, fails to grasp the nuances of marketing, sweeps aside the subtleties of non-cash transactions, and is such a silly oversimplification that it is almost entirely meaningless.
_sh··on JQuery++
Is there any information on browser compatibility? I see ES5 getters/setters in use for fastfix as well as CSS animations, so I'm assuming there'll be a compatibility matrix somewhere.

Also, swipe doesn't seem to work on Chromium 17/Fedora. Otherwise, great work!

_sh··on A Boggling Return to C
May I suggest a wander through http://programmingpraxis.com/
_sh··on Why Use Postgres
Yep, I know the command pattern--it requires knowledge of all state up front and breaks down in the presence of distributed state. It makes statements like 'update all records where value x is y' difficult. You need to gather all such records first, possibly guarding their current state with a timestamp/vector clock (we are talking distributed systems after all), make the change encapsulating the current state in the command pattern and commit. If you have to extend this model to multiple queries, you'll be rolling your own transaction protocol lest you expose partial state to other queries in transit.

Or you could delegate all this to the database, which already has its own transaction protocol.

_sh··on Why Use Postgres
I get your point, but there is value in delegating to the database--how do I roll back an external state machine?
_sh··on PHP: A fractal of bad design
Does warts-and-all PHP include that eval wart, or is it more like most-warts-and-a-subset-of-all PHP? Not snarky, just curious if there was something I missed.
_sh··on Programming is hard, let's go scripting..
If the mainframe won't cooperate, you'll have work to do no matter what. But you can isolate that work into as little as possible. That is what the Unix tools do.

Everything is a service, if you make it so. A component is a service, offering the functionality of its interface. The 'wc' tool is a service--its interface is its command-line switches. And you're right, when everything is a service, everything is easy (I'd say easier).

_sh··on Programming is hard, let's go scripting..
What you say is indeed true, if you take a monolithic approach to problem solving. And I tire of this approach--dammit, we're tool-builders! We have been shown the Unix Way, and yet we ignore it time and again, forcing us into suboptimal solutions to our problems.

Moving "QUUX formatted records from BAZ mainframe to new Oracle Windows Java 7.0 Lightweight Enterprise Server" involves these things: a source, a sink and the pipe character. Your source and sink may necessarily be in Java--meh, whatever works. But now you have a decoupled framework for doing these kinds of jobs, and you haven't invested any more time or effort than you would have with your one-off, inflexible solution. And you can now stuff anything in that pipeline. And I regularly use racket for exactly this, using protocol buffers as the pipe character. It's not rocket science, it's the Unix Way. People, embrace it and free yourself from the monolithic millstone!

_sh··on Notch's Specification for the In-Game DCPU-16
32-bit types are only common in LLVM because typically the target architecture is 32/64-bit. LLVM will handle 16-bit (and even 8-bit or 13-bit) targets just fine.

That said, a LLVM backend is overkill for this and I'm sure the simple interpreter Notch has rigged up will be just fine for its purpose.

_sh··on Leisure Suit Larry
The Digital Antiquarian wrote some interesting blog posts on On-Line Systems and Softporn back in February (with screenshots!). This blog is a great read for info on this and other early adventure games and their creators.

http://www.filfre.net/2012/02/

_sh··on [dead]
I think the title is fair. The author won a competition by 'beating' the Windows phone with his Android at some task, but was cheated out of his prize. Yes, not paying up when you lose a bet is cheating.
_sh··on Arch Linux turns 10
If you can, try and track down the documentary Einstein's Brain by Kevin Hull[1], an amusing yarn about a Japanese professor's trip across the US in search of the great man's grey matter.

[1] http://en.wikipedia.org/wiki/Relics:_Einsteins_Brain

_sh··on Torvalds: More bitwise tricks
But this is slower than with multiplication, as Linus explains:

  the simple shift+add version is all totally serialized
  and nothing can be done before the previous operation
  ends: as a result the three adds and three shifts will
  inevitably take 6 cycles (the original P4 had that 
  double-pumped ALU, but not for shifts). That's already
  slower than almost any multiply.
Edit: oops, I forgot your '(without multiplication)' qualifier. Yes, your way is likely the quickest without multiplication.
_sh··on Zen And The Art Of Scaling - A Koan And Epigram Approach
6. Scaling is about compromises. Statelessness scales forever, but does nothing.
_sh··on Comparing PHP, Perl, Python and Ruby
Learning a language is an investment. People defend their investment strategies lest they be considered a fool. Attacking alternatives is a form of defense. I fear it's as simple as that.
_sh··on Right versus pragmatic
In the film noir classic 'Double Indemnity', the writers Billy Wilder and Raymond Chandler needed to resolve a particular conceit in the plot where the femme fatale shows up at the doomed hero's apartment but needs to be hidden from an occupant inside. They decided to use an outward-opening door.

This small detail has caused much discussion ever since, a good example is here: http://jpgamboa.com/archives/1424

_sh··on SaaS Fatigue
Already exists: JBoss Teiid (http://www.jboss.org/teiid) virtualizes your LDAP (and more besides) allowing you to 'safely' expose your directory as a restricted view. I use it all the time. Haven't made any millions yet, but I'll keep smiling.
_sh··on I want to fix programming
Also fascinating is the amazing and innovative virtual machine that drives Prolog: the Warren Abstract Machine.

See: http://wambook.sourceforge.net/

_sh··on A Word to the Resourceful
This is how I write scheme macros.

First I write some sample code in exactly the syntax I'd like to use, in an ideal way ignoring whether it's possible or not to produce. Then I create a macro to transform that syntax into code, iterating the sample code if I encounter barriers (usually unparseable syntax). It has really helped me (a poor to mediocre scheme programmer) create good macros very quickly, improving the expressive power of my code dramatically.

_sh··on I'm Pirating the Next Version of Windows
It's only a 'better experience' if they're not caught.

Bank robbers have a 'better experience' of a bank if they're not caught too.

_sh··on A Spellchecker Used To Be A Major Feat of Software Engineering
You might like 'How to Fit a Large Program Into a Small Machine' (http://www.csd.uwo.ca/Infocom/Articles/small.html), where some of the founders of Infocom talk about the approaches they used to fit Zork (which required a massive 1MB of memory) onto microcomputer systems which had 32K and a floppy disk drive.

See also the Digital Antiquarian's fascinating (and reasonably technical) blog on the origins of Infocom: http://www.filfre.net/tag/infocom/

_sh··on Richard Stallman Was Right All Along
Apart from better sanitation and medicine and education and irrigation and public health and roads and a freshwater system and baths and public order and a legal document designed to protect the right to read and modify and a philosophy that has influenced an entire generation of creators...?
_sh··on Clojure & Java Interop
While modern JVM languages leverage Java to overcome the 'library problem', the traffic tends to be one-way. So while there are 'clojurely' ways to call Java libraries, calling Clojure from Java is ugly and non-idiomatic, despite what the article claims. How does one even call Scala from Clojure?

Presuming that, for the most part, developers migrate from Java to a different JVM language, then inevitably these languages will fragment code written for the JVM, devaluing the very foundation used to hoist the languages into usefulness in the first place. The tower of Babel will rise higher with competing idiomatic implementations of various libraries. This is not a bad thing--rather it has to be this way because introducing new language features (such as STM in Clojure's case) demands it. We're living in a gold rush on Java to mine it for its libraries. After this will come a period of settlement as each JVM language builds its own community, with civic structures that perform the same duties, but look different, in every town square.

_sh··on 37signals doesn’t like you sorting stuff. Are you just remaking a spreadsheet?
> You should be thinking -- does a tabular view add value to your app?

I think the point of the article was that the author never thought this, but presupposed the answer was always 'yes'. It wasn't until looking at alternative implementations that this question popped up.

I've done the same myself. I once implemented sortable live lists (lists that may be updated with added/removed items in the background, with only part of the list shown and the rest retrieved from the server). I wondered, 'how should this work?' and cast around for other examples. At first I used the (old) Google Reader model: two lists, one is 'All items', the other is 'New items'. But then I realised that, actually, sorting doesn't add anything, and indeed might confuse people who expect predictable order in their lists. Problem solved: don't allow sorting, instead provide a canonical order.

_sh··on What really happened aboard Air France 447
An additional case that I know about, the Tenerife airport disaster: http://en.wikipedia.org/wiki/Tenerife_airport_disaster

Quoting:

  Speculation regarding other contributing factors includes:
    The flight engineer's apparent hesitation to challenge Van Zanten
    further, possibly because Captain Van Zanten was not only senior in rank,
    but also one of the most able and experienced pilots working for the airline.

  As a consequence of the accident, sweeping changes were made to
  international airline regulations and to aircraft... Hierarchical
  relations among crew members were played down. More emphasis was
  placed on team decision-making by mutual agreement.
_sh··on Pixel-perfect Android web UIs
The Android browser has a couple of limitations compared with Mobile Safari: no hardware acceleration (pre-Honeycomb) and no overflow scrolling.

The first simply means lots of lag navigating around pages with many elements, the second really pisses a lot of people off: http://code.google.com/p/android/issues/detail?id=2118

_sh··on Forth Inventor Chuck Moore's $20 144 core CPU now in full production
> maybe I should learn Forth after all

http://factorcode.org/

Make it easy on yourself.

_sh··on Hacker News Needs Honeypots
If my upvotes/downvotes/flags may be secretly used to profile me in ways I can't know about, and my secret profile might negatively impact my experience on this site, isn't my best option to not participate at all?

In short, with this mechanism I can't trust that doing anything, be it clicking through to an article or flagging one, might negatively classify me. I can't be sure this site isn't trying to trap me somehow.

My advice is to let all of this hand-wringing about such nebulous issues as 'quality' go. It's a fairly decent community here and that's about as good as you could expect from the Internet at large. If you're really worried about what this site has become, simply conclude the 'Arc experiment' and shut it down.

← PreviousPage 4 of 7Next →