HNHacker News
TopNewBestAskShowJobs

allertonm

411 karma · joined March 28, 2008

submissionscomments
allertonm··on S4
One way of looking at it is that S4 is to map-reduce what Streambase or Coral8 are to SQL.

In the enterprise software world, this is what's called CEP - Complex Event Processing: http://en.wikipedia.org/wiki/Complex_event_processing

allertonm··on VLC developer takes a stand against DRM enforcement in Apple's App Store
He's "taking a stand against Apple", but ISTM the real offender here is about the company that built an app with his code and submitted it to the store in breach of his license.
allertonm··on Apple and the future of Java
I wouldn't go so far as to say grim - but it definitely shows that even with the best of efforts, Swing is never going to cut it for non-developer applications. IntelliJ is about as good as Swing apps get on OSX.

Gotta feel for the JetBrains guys, I have a feeling that a good chunk of their users are on Macs and it's not clear that they'll have a way forward. It does look to me like Eclipse will be a viable option in future. Which, as an IntelliJ fan using a Mac, doesn't make me super happy.

That said, I think the original article was spot-on.

allertonm··on You Can't Sacrifice Partition Tolerance
As you have yourself pointed out, Paxos will in some cases (when less than half the nodes are up) become unavailable, but remain consistent in all cases where it is available.

So it is tolerant of partition and it sacrifices availability in favour of consistency. So it is CP, not CA.

allertonm··on You Can't Sacrifice Partition Tolerance
Yes, a system is available if one node doesn't respond and you can contact another. But that node will be unable to guarantee consistency.

If a node you can contact is required to guarantee consistency, there will be some times that it will have to refuse your request because other nodes are not contactable.

The author's point was that in any distributed system there is a non-zero probability of a network failure. While both clients and server nodes can retry connections, there is a non-zero probability that the problem will persist longer than your "availability agreement" allows. In that case, you have a choice - return potentially inconstent data or refuse the request.

What you seem to be arguing is that the probabilities of failure - in particular of repeated failure - while non-zero, are effectively zero. The author would disagree (as they point out, the probabilities combine exponentially as the number of nodes increase.) I think he's right and that you are wrong.

allertonm··on You Can't Sacrifice Partition Tolerance
Fair point - but of course your client is not making any progress, and so the unavailability ripples up. It's unlikely that there is user facing case where this is a useful way to work, though I can see it's use in loosely coupled connections between backends.
allertonm··on You Can't Sacrifice Partition Tolerance
What you're saying is that so long as there are no partitions, the system can be Consistent and Available, but if there's a partition, it can't.

"Consistent sometimes" is not the same thing as "Consistent" and "Available sometimes" is not the same thing as "Available" - and so "Consistent and Available sometimes" is not the same as "Consistent and Available".

I believe you might be guilty of confusing "Eventual Consistency" with "Consistency".

Funnily enough, no-one has found much use for "Eventual Availability" so far.

allertonm··on Inside D.C.'s Food-Truck Wars
Vancouver has been experimenting with allowing a greater variety of food carts recently. The previous regulations allowed nothing more exotic than a hotdog cart, which led to innovations like Japadog.

In the first instance they've picked 17 sites with the explicit purpose of avoiding the kind of conflict described in the article - so they tend to be in front of office buildings etc. The process of handing out licenses for these sites by lottery initially produced some odd results but this seems to be sorting itself out in the wash - and we're starting to see some success stories.

It'll be interesting to see how the scheme can be expanded while still avoiding conflict - I think we may have a case of Portland-envy and won't stop until we can say Vancouver's scene is as vibrant as Portland's.

The whole area of BIAs and how well they represent the interests of local businesses is somewhat interesting to me right now, as it appears that BIAs are a primary force in opposing any kind of change in the city especially those that affect parking and car usage. Like, for example, better bike lanes.

allertonm··on The Next Big JVM Language
I've been wondering why Fan/Fantom has not had more traction, I rather like the pragmatism that seems to have guided its design.

Is it just not exciting enough?

allertonm··on The Next Big JVM Language
I'm mostly with you on static methods versus singletons but it's worth mentioning that a singleton object has the advantage of being able to implement an interface, but there is no such capability for separating interface and implementation for static methods.

I think static methods are OK for the same reason that not every object needs to be an implementation of an abstract interface, but you should be aware of the possibilities you are eliminating when you make that choice.

allertonm··on The 6502 microprocessor is 35 years old as of September 16th
Yes, I programmed it purely with opcodes. The machine was just running a very basic "monitor" that let you write instructions and data into memory in hex and then let you run them.

At first the machine did not even have a cassette interface, so there was no way to save programs and you had to type them in every time. The machine came with some examples, like Conway's "Life". Given that the machine really only had about 256 bytes of usable program storage (half the 1k was used for video) this wasn't quite as bad as it sounds but still pretty tedious.

Actually when I first got a cassette interface I still had to type the cassette loader in by hand to boot :( Eventually I got the rom expansion that included the cassette loader and an assembler.

Obviously writing a program directly into memory in opcodes does involve some upfront thinking, but you'd be surprised how "REPL-like" the coding experience could be :)

allertonm··on The 6502 microprocessor is 35 years old as of September 16th
I first* learned programming on a 6502-based machine with 1K of RAM and no assembler or basic (Microtan 65, in case anyone remembers that.)

Luckily the 6502's instruction set is pretty easy to memorize, used to know it back to front. Only 56 base instructions and once you understand the way the addressing modes affect the opcode for LDA it's easy to work it out for the others.

Glad I don't have to do that anymore, but it was a great grounding for all the high-level stuff that came later.

(*Well, unless you count my dad's 31-step programmable TI calculator.)

allertonm··on Vmware (A division of EMC) to buy Suse Linux from Novell
It was Citrix, not VMWare, that bought XenSource.
allertonm··on Google Relaunches Instantiations Developer Tools
Some of these criticisms are also true of all of the browser-side application frameworks - i.e SproutCore, Cappuccino etc.

FWIW, the compile time is still pretty long even with one compile permutation - and even while developing there is sometimes a need do do this (for example, changes to serialized objects.)

allertonm··on Google Relaunches Instantiations Developer Tools
I wouldn't have chosen GWT myself but I am working on a project with it and I have to admit it's very good.

You do have to be able to stand Java, of course. The upside of the use of Java is that when you're dealing with a large codebase the kind of tooling you get from Eclipse or IntelliJ is a big timesaver when refactoring. Things like CssResources and UiBinders are also very nice to work with, and do really help with keeping logic and presentation separate.

Some would claim that GWT is a bit of a crutch for enterprisey developers who "don't like working in the browser" but I'd say it's more for people who like working in the browser but don't much like Javascript. (FWIW I like Javascript, at least The Good Parts.) You do at the end of the day have to have a good understanding of how the browser works and what it is and is not good at to get the most out of it.

The biggest downsides for me are, in no particular order...

1) Very slow compiler when generating javascript. GWT compilation is the biggest chunk of our build time but not the majority of our code.

2) For a large application, load time in hosted mode is still pretty slow. Also hosted mode has some funky performance characteristics especially around serialization.

3) It kind of annoys me seeing lots of code working around a lack of reflection in GWT's version of Java, when the underlying Javascript runtime is completely dynamic and reflective.

I do have a lingering concern that GWT might be exposed to similar patent risks as Android, since it subsets Java and could not be considered a "compliant" java implementation. Not the same patents as in the Android case, obviously - since they were mostly VM related - but who knows what else Sun had in their cupboard.

allertonm··on Dear Twitter: Stop screwing over your developers
The important point here is that your app is open-source and you chose to distribute the keys with the source code, rather than require each person who builds it from source to get their own API keys.

I think Twitter's position - that you should not have done this - is completely reasonable.

allertonm··on Dear Twitter: Stop screwing over your developers
If someone spoofs your user agent and sends a ton of traffic to Twitter, what would you rather they do?

It's like when someone spoofs your credit card - the bank blocks it, and sends you a new one. Inconvenient, yes - but better than the alternative.

allertonm··on Dear Twitter: Stop screwing over your developers
Surprised at the amount of agreement with this article, and the cries of "incompetence".

ISTM in a desktop app context, the consumer key/secret combination effectively becomes a complicated equivalent to your browser's "User Agent" string and yes, only slightly more difficult to spoof.

So what Twitter is asking for is that in order to authenticate a user (with additional credentials) you give them a valid "user agent" that was assigned by Twitter. This at least allows them to understand, when they get traffic, who wrote the app that's sending it. It's obviously not perfect in a desktop case but then neither is user agent - but there is no perfect solution for the desktop case, and Twitter's choice allows them use a consistent mechanism for client and server apps.

(Edit: the OA responds below and says I'm wrong about this part. I'll take his word for it.) I suspect the OA's problem is more with being a) asked to do this nasty complicated Oauth thing and b) with the idea of Twitter wanting to know who he is - and he'd rather they just let him keep on persisting user's twitter creds himself. Conflating this consumer key with DRM is a bit of a giveaway.

(Updated: The important point here is that the author's app is open-source and he chose to distribute the keys with the source code, rather than require each person who builds it from source to get their own API keys. I think Twitter's position - that the author should not have done this - is completely reasonable.)

allertonm··on Drinking the Node.js Kool-Aid
What on earth constitutes an "agile syntax"?

I thought there was fairly universal agreement that while javascript has many strengths, its syntax was not one of them.

allertonm··on Apple's ping is a big pile of steaming dung
"The first recommended follow for me was Alexandra Patsavas"

She's the first recommended follow for everyone.

Surprised how many people have failed to work this out - the "recommendations" are the same for everyone. There are basically 12 artist profiles in the whole system.

allertonm··on The shit finally hits the fan....(James Gosling on Oracle vs Google)
Having been acquired a couple of times, "integration meetings" normally occur after the deal is made public but before it closes. So the decision would already have been made.
allertonm··on Experimenting with Node.js
I simply do not see why your goals 1-4 require a) the same language on the server as the client and b) the use of a non-blocking I/O model at the server. It appears to be a leap of faith on your part.

While marshalling of model objects to JSON is obviously going to be easier to achieve if your model objects are Javascript objects, marshalling to JSON is trivially achieveable in almost all programming languages.

To suggest that developers should - to achieve this microscopic payoff - choose to build servers using a language with a crippled concurrency model (i.e none) is laughable.

allertonm··on Experimenting with Node.js
It can hardly be a "prerequisite" given that most web applications built to date have managed to do without it.

It's a convenience, at least intuitively, but in practice one has to wonder what parts of your code run in both browser and server and do async I/O.

allertonm··on Apple Obliterates Q3 Earnings Estimates: Best Mac Sales Ever, Huge iPad Numbers
You know, I can't remember the last time I bought a DRM track from iTunes, and trust me, I buy a lot of tracks on iTunes.
allertonm··on Fake - Mac OS X Web Browser Automation and Webapp Testing Made Simple.
See http://groups.google.com/group/fakeapp/browse_thread/thread/... for the workaround that got SSL working for me.

(Basically the app currently fails quietly if the SSL certificate doesn't validate, rather than prompting for action.)

allertonm··on Fake - Mac OS X Web Browser Automation and Webapp Testing Made Simple.
SSL appears to be broken, sadly.

Interesting app though - have been a heavy user of Selenium for testing but building the scripts has been time intensive and generally is done by the QA team rather than by devs. If the UI for building these tests gets better, then devs may end up building tests for themselves rather than expecting someone else to do it.

allertonm··on Erlang on the JVM
+1 on the Kilim comment, I hadn't seen this before either but it is well worth taking a look.
allertonm··on De Bono's Six Thinking Hats
At a former employer we all got trained on this and used it for a few weeks before reverting to our old bad habits :)

I generally approach these kinds of methods with some skepticism - it is a bit 7-habits-ish - but one thing I did like about this one was that you could look at it as "design patterns for productive meetings", in that you could ask yourself what the goal of the meeting was and work from there to identify the right way to structure it. However I definitely attended too many meetings where the goal ended up being following the 6TH plan to the death rather than reaching a real goal.

allertonm··on Apple releases newly designed Mac Mini
+1: I'm doing almost exactly this with an old Macbook, with a good quality outboard DAC to drive my amp/speakers.

So I appear to be target market for this product...

allertonm··on Cycling Cadence and Bicycle Gearing
In addition, Shimano has an 11-speed alfine hub coming that's getting close to Rohloff's versatility at a fraction of the price.
← PreviousPage 3 of 6Next →