HNHacker News
TopNewBestAskShowJobs

skimbrel

949 karma · joined March 25, 2011

submissionscomments
skimbrel··on Special collection of freeware tools for system administration
> bottom This is the opposite of top, it displays processes that are using the least CPU.

This is exactly what I need! I've been planning an awards ceremony for the developers of the most efficient software running on my systems (measured in CPU cycles, obviously). This will make selecting candidates so much easier.

skimbrel··on F.B.I. Seizes Web Servers, Knocking Sites Offline
> The network infrastructure to do that is just about there.

There's a long way to go from having enough bandwidth to serve your personal blog or small-time web app out of your {apartment, house, office} to getting what you'd need for a large-scale web app (at a minimum, redundant 100 Mbps fiber connections with five-nines SLAs) routed there. That and getting a nominal 100 Mbps connection from your friendly neighborhood telco is a lot different from getting a 100 Mbps connection you're expecting to saturate 24/7. The telco won't put up with that for very long, because they overcommit their subscriber bandwidth in the (correct) expectation that most of their customers will not use all of it.

skimbrel··on [dead]
Agreed.

Your users should not find out about these things via HN (or any other news site).

At this point, I don't think I can trust Dropbox with anything remotely valuable or private, and I bet I'm not the only person who feels this way.

skimbrel··on Why perl has separate arrays and hashes: It's as if they thought it through
This was a fun post, but I found the other post on this blog more interesting:

http://altreus.blogspot.com/2011/06/anatomy-of-types.html

Not terribly useful to anyone who's been around the block in Perl at least once, but it's a great explanation of the three Perl variable types. Saving it for the next time I need to teach someone Perl.

skimbrel··on The (Programming Language) Hat
There's a comment on the article complaining about the hate for Perl -- I agree with its sentiment but not the way it characterizes so-called "brain damaged" people.

Modern Perl is really a very different language than what people tend to think of when they hear the word "Perl". It has a real OO layer (Moose), a mature set of web frameworks (Plack), and generally-accepted best practices that ensure code is just as readable and maintainable as Python or Ruby.

If all you know of Perl is hacky one-liners for munging logfiles, skim a copy of the book Modern Perl: http://onyxneon.com/books/modern_perl/index.html . You might just learn something.

skimbrel··on Sleep Sort
I was working from this definition of "almost surely": http://en.wikipedia.org/wiki/Almost_surely

If I understand that correctly, we're dealing with a case analogous to the coin-flipping scenario.

And since, as you admit, there are infinitely many scenarios where a bogosort never completes, we cannot place a finite upper bound on its running time for all cases, which is what complexity theory's big-O notation is all about. As I stated, the average-case complexity for bogosort is in O(n!), but the worst-case complexity isn't bound by any function.

skimbrel··on Sleep Sort
Not true at all.

Given a uniform distribution over k discrete values (in this case permutations of the list), the expected probability of the next permutation is 1/k. This is not the same as saying that if you take k samples from the distribution, you are guaranteed to receive exactly one of each value. For any finite number n of samples, no matter how large, the probability of getting a given value tends towards 1 as n grows, but it only approaches it asymptotically. While the probability of not seeing any one value from the domain grows vanishingly small as n gets much larger than the number of possible values, it never hits zero. So even with a stochastically random source of list permutations, we cannot place a finite upper bound on a time in which bogosort is guaranteed to terminate.

It gets even worse with pseudorandom number generators — these display cyclical behavior over time (any good one will take quite a while to show it, but they all will), and you might have picked a seed for your PRNG that generates a cycle that never includes the sorted permutation.

So no, bogosort is not guaranteed to terminate. In practice, it has a reasonable chance of terminating for most inputs, and it will do so with an expected (not guaranteed!) runtime in O(n!) for a list of length n.

skimbrel··on Why you see the Ads you see
It's good to see transparency in the targeting process. There definitely seems to be an industry move towards this -- I'm seeing those little triangle-i AdChoices icons everywhere, including on the internal beta release of my own company's ad products.

Hopefully if people can understand how targeted advertising works and what its limitations are (both in what it's allowed to do and what it's capable of) they'll be less fearful of it.

skimbrel··on PDF Reader in JavaScript
Yeah. If this gets more robust and productized, it just might eat Scribd's lunch.
skimbrel··on Duke Nukem's PR threatens to punish sites that run negative reviews
Oops. Well, another reason for me not to buy the game. Thanks to everyone who wrote honest reviews, because audience goodwill is far more important than pleasing one game publisher.
skimbrel··on Sleep Sort
This is more commonly known as bogosort (http://en.wikipedia.org/wiki/Bogosort), and it's a good start for running time but isn't guaranteed to terminate. See my other comment for a link to something that goes one better than bogosort on running time.
skimbrel··on Sleep Sort
Bogobogosort (http://www.dangermouse.net/esoteric/bogobogosort.html) would be a good candidate except that it uses random permutation and therefore might not terminate. Maybe if you replaced the random step with a deterministic one that always yielded a not-yet-seen permutation...
skimbrel··on Apple R&D (1989): Mousing is faster than keyboarding, but users don't believe it
(USS Saratoga was our code name during development of the extended keyboard because of its eerie resemblance to the popular aircraft carrier. Not so much the shape as the size.)

Nice bit of trivia there. I remember the Apple Extended Keyboard being big, but not that big. IBM Model Ms are pretty much the biggest keyboard I can think of.

skimbrel··on A pulse no longer necessary for life
Dammit, that was the joke I came here to make!
skimbrel··on Judge to copyright troll: your lawsuits are shams, give it up
Good. We need more smart judges and good decisions like this.
skimbrel··on Laser-made bike lane could save lives
This is a great idea. If I biked more regularly I'd want one of these.
skimbrel··on Google Search By Image
Check out SoundHound: http://www.soundhound.com/

It does exactly what you ask for.

skimbrel··on The changing face of Computer Science education
Agreed -- there are still lots of hard theory problems waiting to be solved, and we also still need people to write operating systems and design strong cryptographic protocols. Not everything is as flashy or "cool" as iPhone games, but it's still interesting to some, and those people need to be exposed to these topics so they can find their niches.

(Also, it really bugs me the way he slams his own field -- discrete math is not exactly "arcane".)

skimbrel··on Python idioms
Ah! I didn't know about that. It'd be nice to have the syntactic sugar à la Haskell, but oh well. Close enough.
skimbrel··on Python idioms
Use function factories to create utility functions. Often, especially if you're using map and filter a lot, you need utility functions that convert other functions or methods to taking a single parameter. In particular, you often want to bind some data to the function once, and then apply it repeatedly to different objects. In the above example, we needed a function that multiplied a particular field of an object by 3, but what we really want is a factory that's able to return for any field name and amount a multiplier function in that family:

  def multiply_by_field(fieldname, multiplier):
    """Returns function that multiplies field "fieldname" by multiplier."""
    def multiplier(x):
        return getattr(x, fieldname) * multiplier
    return multiplier

  triple = multiply_by_field('Count', 3)
  quadruple = multiply_by_field('Count', 4)
  halve_sum = multiply_by_field('Sum', 0.5)
Other languages (most prominently Haskell, though you can convince most Lisps to do it through the clever use of macros) have built-in support for doing this with whatever function you want, and it's called partial function application. It's a rather useful technique and it saddens me that it's not supported as such in more languages claiming to support functional programming.
skimbrel··on Quick thoughts on concurrent JavaScript execution
Interesting read. When it comes down to it the answer seems to be that JavaScript needs to have support added for explicit parallelism. But isn't this what we're supposed to get with HTML5 web workers? It shouldn't be hard to write a utility library to implement parallel map, reduce, and so on in terms of spawning workers, falling back to serial execution if the worker API isn't available.

In either case, this will require a rewrite of every piece of code that needs it.

Speeding up/backgrounding the JIT compilation phase is a transparent optimization that I'm sure some smart people at Apple, Google, and Mozilla are already working on.

skimbrel··on Google Acquires AdMeld For $400 Million
There are definitely some exceptions -- it's what I do for a living.

And yeah, this is big news in the space. Google is clearly making a move into online display advertising, having all but conquered direct-response. It'll be interesting to see how they do. Display advertising has a vastly different set of challenges associated with it -- brands care first and foremost about the safety of the pages they run on, which means Google will need to be a lot more selective about the publishers they partner with for display, and brand lift through display advertising is a lot harder to measure than direct-response conversions.

(Obligatory plug if you're also one of the exceptions (or interested in being one): SAY Media, my employer, is hiring engineers! Check us out at http://www.saymedia.com/.)

skimbrel··on The New Early-Adopter Addiction: Turntable
The app and this writeup of it are both awesome.

A friend pointed me at Turntable today and I hung out there all afternoon at work -- it's a great replacement for Pandora for coding music. The human factor keeps it unpredictable and you can jump between rooms to get a different genre or mood when you feel like it.

I'm hooked already, and I'm rather pleased to read that they've already ironed out most of the licensing issue.

skimbrel··on Git Tutorials for Beginners
To find the one that helps them the most? Not everyone learns in the same way, and not everyone teaches in the same way. The more choices you have, the more likely you are to hit on the one that lets you really grok something.
skimbrel··on The US IPO cartel
Yeah, it took me two minutes to figure that out. And then it really sank in.
skimbrel··on IPv6 Day Has Started
My HE tunnel is working great! Looks like my latency to Google is the same as it is on IPv4.
skimbrel··on RSA finally comes clean: SecurID is compromised
This is nitpicky, but shouldn't the title (on Ars I guess, since it was used verbatim) be "was compromised" since this was a one-time data theft that rendered all currently-live SecurID tokens useless?
skimbrel··on Competing with Apple - or "Never mess with your Landlord"
Care to explain that a bit? I fail to see a direct parallel between farmland tenancy arrangements and Apple's relationship to iOS developers.

Also, that's a mighty powerful rhetorical weapon (going all the way back to African-American slavery) to be dropping in a discussion about some ticked-off software developers.

skimbrel··on Competing with Apple - or "Never mess with your Landlord"
It's been pointed out on the other thread, but this tends to happen when iOS had the functionality first, not the other way round. Apple allows plenty of camera apps and other such "duplicated functionality" to remain in the app store.
skimbrel··on Google paper comparing performance of C++, Java, Scala, and Go [PDF]
Wow.

Looks like C++ is still one of the performance kings among current programming languages. Can't say I enjoy using it though.

It also looks like Go and Scala have a long way to go on compiler optimization. Not surprising, since they're young languages compared to C++ and Java, and it's a decent amount of work to optimize the higher-order constructs they provide.

← PreviousPage 3 of 4Next →