HNHacker News
TopNewBestAskShowJobs

gordianknot

86 karma · joined March 22, 2008

submissionscomments
gordianknot··on Gunsmith Uses 3D Printer To Make A Rifle
And authoritarians, believing in criminalization of both.

Gun laws reflect a society's general property rights, and drug laws their intellectual freedom.

gordianknot··on Avoiding Depression While Not Running a $1B Company
No, but it is a Brave New World. We're the ones out on that island with the artists and scientists. We make tools of change, but sell them off so that we can go on bike rides. It's hedonism; this is the New Gilded Age.
gordianknot··on Avoiding Depression While Not Running a $1B Company
Humans are social animals, and awareness of a negative state of our community makes us sad or mad, which seems meant to drive us to action. Evolution appears to be mostly about the code (genes), not the client (mind) or machine (body). From pre-history to present, communities've been composed of genetically-similar members. Over time this has been less and less true, corresponding with the accelerating decrease of travel costs. Now data (memes) have emerged as another evolutionary layer, at a higher level of abstraction.

Contemporary "political news" is propaganda carefully crafted by concerned corporations to misinform the viewer, both targeted "reverse lobbying" on specific issues and general-purpose anti-participation tactics. The idea seems to be to get voters to act against their economic and/or ethical interests either by convincing them to mis-vote (compared to how they would if they were more informed) or not vote, via manufactured dissent, character assassination, blurring of issues and facts, and irrelevant/impossible campaign promises (e.g. archaic issues like gender and reproductive rights and "border control" that's thinly veiled racism (and won't happen because companies want the illegals and they pay better)).

Call it reverse advertising. We've gotten so good at PR techniques that they've become invisible. Everything stays the same, but we rebrand it and view the world through the lens of the internet, detached from empathy with the bitter natural world, in a cocoon suckling the nectar of porn-- over-processed information.

This is why startups have only yet caused negligible political change. Software, and by extension most programmers, are effectively "brains in a vat." Shows how machines have already "taken over" the world, and haven't displaced us in the process. The singularity already happened, but we're still large, hairless bipedal rodents-- and computers are not. Human bodies need different stuff than machines, so we don't have to be competitive.

Likewise, hackers just want to have fun, and -- as this comment bears witness -- we just talk about it online instead of doing anything about it. Hackers aren't competitive with suits any more than computers are to biology. Suits want software, so nerds get paid, but then turn around and re-invest their money, move to Singapore and live it up, go on perma-vacation, etc. There are many brilliant hackers, many of them also more than charismatic and wealthy enough to get into national office. Instead they build the programming language they've always wanted, or take up cycling, or reconnect with nature.

When we do look beyond the bubble of hedonism, we're comparable to people who pray for things out of their control, i.e. asking for something, instead of either making adjustments to gain control or accepting that control is ultimately undesirable or impossible. Self-directed prayer (meditation), where one looks inward and develops a dialog with 'eir layers of consciousness, is something different, but other-directed prayer is the single-player version of "happy news" (porn), be it cat pictures or startup drama or gadget announcements or sports or esoteric programming language design.

gordianknot··on Why we moved from NodeJS to Ruby on Rails
I hear you, and can relate to the romance and frustration! I was in grade school when JS was released... but've been writing it for over 10 years now. I tried "everything" else, and it's made be a better JS hacker, but I feel like I'm doing it wrong when I use anything else.

I didn't mean to suggest riding the wave of new, distinct, non-progressive technologies. Their is a progression; it seems clear to me that PG was right, that we (as an industry) are slowly moving toward Lisp. He also said that he felt Lisp and C represent the two "clean, consistent" programming models, and I agree. And that's the reason that JS isn't just another passing wave (although my previous comment did seem to make that suggestion).

JS is something different; it's (1) a good-enough balance of C and Lisp and (2) available on every platform. To me, the situation is clearly that JS will form a solid, durable layer over C. Then the language designers and industry hype machine will shift to langs that compile to JS. This is already happening, naturally, it's just not evenly distributed.

> Like what?

We're still in the early days of compiling to JS, and being able to use it as a modern server-side environment. I don't know what the results will be, but I think the difference will stem mostly from development time. Even though it could be done, in practice you don't end up with the same app if using Fortran, Java, and CoffeeScript, because doing so would take a month versus a week versus a day. To paraphrase Linus from his Tech Talk on Git, speed doesn't mean you do the same thing faster, it changes behavior.

Apps will get written that wouldn't've. I'd argue that Facebook succeeded mostly because of PHP, and in turn, that they'll eventually fail because of it, too. They beat MySpace because MySpace used the MSFT stack; it's like England's victory over Spain due to more nimble war ships. Same thing'll happen to FB unless they evolve when necessary.

This is what Yegge was getting at back in '06 [Dreaming in a Browser Swamp]. He mentioned "Scheme on Skis" and "JavaScript on Jets", which might turn out to be ClojureScript and Express or Railway. Well on our way, and he was entirely right in retrospect (even though a shocking number of smart hackers don't want to accept it and keep on with archaic tech that's becoming rapidly endangered, but that's life).

Light Table is an early example of an app that's happening because of ClojureScript. And many exiting CoffeeScript apps are quite impressive: https://github.com/jashkenas/coffee-script/wiki/In-The-Wild

I think it comes down to being able to focus on design and make fast changes, without needing to worrying as much about the lower layers of abstraction.

gordianknot··on Python is a voluntary language
I use Python at work because I have to, but I'd rather be writing JavaScript.
gordianknot··on Why we moved from NodeJS to Ruby on Rails
To me that's the value proposition actually. Invest in learning and collaborating now, then be ahead of the curve in a few years (if interested in getting hired) or be ready to capitalize and know how to hire and make software that only could've been made with it when it eventually reaches some level of maturity. I mean, those that grow it reap the best rewards.

Software is a product of the platform(s) it was built with, in the same way a novel is a reflection of the writer's language more-so than the writer. Microsoft's software is what happens when you use C and .NET; Google with C++, Java, and Python; Facebook with PHP; 37signals with Rails; etc. There are apps that will be built because they could only be built with a unified JS platform. There will be new kinds of software that directly result from the new possibilities of Node, CoffeeScript, Meteor, Firebase, Parse, etc.

Different tools yield fundamentally different results. Once a platform is "mainstream", it's to late, the big opportunities have already passed and the innovation is elsewhere. There's still a chance to be the "DHH of Node"; that spot's obviously already been taken in the Ruby world.

gordianknot··on GitLaw: GitHub For Laws And Legal Documents - A Tourniquet For American Liberty
Adoption isn't the problem. We don't need Congress to use such a system initially; we need bills, the US Code, etc. mirrored on Github. When it's there, people will get it. The information is out there, it just needs to be processed into a usable form so that it works with Git. And it'd take millions of dollars, and have no conventional ROI, so no one's going to do it.
gordianknot··on With New Comforts, Growing Complacent
"Consider the source" is always relevant, and always a weak argument. Regardless of who wrote it, the main point of the article seems to be that hackers working in essentially utopian communities risk being out of touch with their users. It's basically Gibbons' thesis on Roman decline.

Becoming complacent is a risk. OTOH, most people are alienated, synchronous workers. They don't have control over the means of production, don't have equity or profit-sharing, and earn a wage for their time itself rather than their products. Many HN'ers are post-capitalists, and are naturally becoming more and more distant from that world. I know I am. I visit family, or go see old non-technical friends, and fuck, so much complaining about things they wish they could control, lusting for things they wish they could afford, and hyper-attachment to their existing life and possessions. I remember the onset of that feeling, when I had stayed to long at a non-software job after college.

I don't think working remotely and earning a decent salary makes me out of touch, just ahead of the curve. Same for Google and Facebook. We don't need to "get in touch with the common man"; it's like suggesting Rome should've reverted to a violent warrior culture to combat the tribes.

What Rome actually did is what Google is doing. Rome didn't fall; as they had gone from Kingdom to Republic to Empire, they continued evolving, into Church. The Roman Church was able to achieve way more than the Empire, since they got an information advantage over the tribes and could conduct invasions non-violently (and way more successfully) as "missionaries" instead of military. Christianity proved to be a cultural advantage over paganism.

In turn, Google is making self-driving cars. Your own traveling mini-Googleplex. They'll buy an airline in the next few years. Facebook will start building places for more people to get online, to breed new hackers. They're starting a HS internship program in Menlo Park. They'll realize, if they haven't already, that it's cheaper to make smart kids into engineers than hire them out of college. And so on.

As the merchants overthrew the nobility, we're watching the hackers overthrow the capitalists.

gordianknot··on Let’s Build a Future Without Cars
Or we just migrate to self-driving electric cars, with the batteries serving as Intergrid energy storage.
gordianknot··on New Languages Considered Harmful: "Learning new languages is a waste of time."
You should write What Made Basic Different.
gordianknot··on Why Lisp Is Unpopular
I'd tend to agree on those who want to replace HTML/CSS/JS with some other abstraction. What I'm suggesting is that they're arbitrarily divided and should be unified under one syntax, which then compiles into the served "bytecode." JSON would probably make the most sense. But, as you suggest, it would take some time to get it right. So I'm sticking to doing it by hand, all divided up, for now. Maybe after our startup launches...
gordianknot··on Why Lisp Is Unpopular
Built-in data structures are a big point of categorization of langs on my end. To me, the defining feature of Java is its classical structure. If you got rid of classes, you'd have a different language (in the interface sense). And interface is really all I'm talking about.

I'm basically just asserting that objects (should) == hashtables. This is quite literal in JavaScript. Other languages bend the metaphor in different directions, and obscure it to that no one even knows what "object-oriented" really means beyond particular idiosyncratic syntax in this language or that.

PG of course talked about this before, in Why Arc Isn't Especially Object-Oriented:

> I've done a lot of things (e.g. making hash tables full of closures) that would have required object-oriented techniques to do in wimpier languages ...

I'd argue that he was employing genuine object-oriented techniques, but just didn't have classical syntax and didn't consider what he had an "object." Other languages make a point about it, and use special syntax, which fogs the whole thing. Perhaps some people in "OO" mindsets have the kind of naivete that C-only hackers I've met have about first-class functions.

Actually, I just realized the whole reason C++, Java, C#, and co. have "methods" in the first place is just compensation for not having first-class functions you can stick in a hashtable.

gordianknot··on Why Lisp Is Unpopular
Okay, and I would look to hashtables as the best way of describing these "sets."
gordianknot··on Why Lisp Is Unpopular
Maybe they have. What system are you using?
gordianknot··on Why Lisp Is Unpopular
I was only talking about the code itself, the primary metaphor of the programming language, not what the language actually represents. Most langs that I've encountered are structured as semi-formalized strings (i.e. C-derived langs), where as Lisp is structured in "physical" lists. I shouldn't have talked about "abstractions," because that wasn't what I meant. I was getting at the "concretions" of the actual lingual interface.
gordianknot··on Why Lisp Is Unpopular
I've never looked at CLOS. But, what I mean is the "dominant metaphor," which I suspect is still lists.

I'll just go through my probably plebeian understanding. Arrays are to lists as hashtables are to objects. An array, in my mind, is a list that only contains one type and is indexed with enumerated integers. On the other hand a list can contain any type, but is also indexed with enumerated integers.

In JavaScript:

  array = [1, 2, 3]
  list = ["one", [[array], 3]]
  array[0] == 1
  list[20] = 23 // list indices aren't necessarily a linear enumeration
Of course, arrays and lists are both technically Arrays in JavaScript (a bad naming choice; I'd have called them Lists). Now a hashtable is typically just a list that uses strings for indices instead of integers.

  hashtable = {
    "today":20080403,
    future:function(x) { return this.today + x }
  }
A "method" is just a value that happens to be a function. Usually hashtable-oriented languages choose to abstract away the string, and treat it as a variable.

  hashtable["today"] == hashtable.today
  hashtable.method(23)
Like with lists/arrays, JavaScript gets hashtables/objects almost exactly right, but again is subject to some questionable naming choices.

RE: trees and graphs -- I was getting at the relationships between nodes, not the actual computations, but I'm not comfortable enough with the terminology to explain exactly what I meant.

gordianknot··on Why Lisp Is Unpopular
Really what are classes other than sugary hashtables?
gordianknot··on Why Lisp Is Unpopular
Thanks for the tip. I've heard some good things about Lua, but never gone further than Wikipedia.
gordianknot··on Why Lisp Is Unpopular
I mean failure like the tyrannosaurus rex. That is, from an an evolutionary perspective. Not at the arbitrary present. And I'd wager that Perl is still actually more used than Python or Ruby, it just doesn't get the love on social news sites and elite blogs.
gordianknot··on Why Lisp Is Unpopular
Perl, PHP, Python, and Ruby are all interesting failures. They are important for their effect on languages that will last longer (Lisp, ECMAScript) though.

Edit: I don't mean these are "failures" now, just that they're doomed in the long run. Does anyone think they'll be able to stand any of these languages in 2018? I don't they'll have evolved much by that point either. The older a language gets, the harder it is for it to evolve. And if it tries to make too big a leap, people simply don't go for it (PHP5, Perl 6).

gordianknot··on Why Lisp Is Unpopular
The power of a programming language is proportional to its capability for innate abstraction. If that's true, it follows list-oriented languages are inherently inferior to their hashtable-oriented brethren. (These orientations are often misguidedly referred to as "functional" and "object-oriented" paradigms, which I find to be useless, over-overloaded terms.) Basically, with list-oriented langs the primary abstraction is a tree, whereas with hashtable-orientation, it's a graph. I'm talking about the -primary abstraction- (i.e. what you "think in" when hacking); obviously you can implement any structure in any powerful enough language. If others don't see it this way please, illuminate me.

Lists confine one to rigid hierarchies, which have to be compensated for with dirty (but sexy) hacks like in-language macros. Meanwhile the index of hashtables is arbitrary, which allows you to do naturally the things you have to patch in Lisp.

Though hashtables are more powerful and easier to grok, for one reason or another nearly all (popular) hashtable-oriented languages are total crap (C++, Java, C#), but in some regard a step up from deformed languages like C (in all seriousness, how does anybody get by without first-class functions and hashtables?). My tentacles have only found two decent hashtable-oriented languages: JavaScript >~1.5 and Io.

Anyway, why is Lisp unpopular? Because it's harder for most programmers to think in lists than hashtables. Then, why does the lang have a cult following? Because it's well crafted and consistent, which seems to cause some people to overlook its shortcomings, even to the extent of seeing design flaws as features.

But as far as I'm concerned the Language War is over anyway. JavaScript won.

gordianknot··on Why Lisp Is Unpopular
What makes Lisp a "smart" language?
gordianknot··on Why Lisp Is Unpopular
Noise != usage. Don't confuse attention with popularity. I think about the language and post comments about it on forums and read great Lisp code (e.g. Arc), but I'd never actually use it for anything non-trivial. Why? Because I write web apps and existing Lisps don't make that easier or more fun.

The only (!) thing Lisp has to do is efficiently and absolutely abstract away XML, CSS, and JavaScript. No Lisp is going to get any uptake otherwise. We could do this with Arc.

gordianknot··on Why Lisp Is Unpopular
What's the misunderstanding exactly?
gordianknot··on Why Lisp Is Unpopular
It's not "syntax," it's human parseability. Lisp is hard to parse because humans don't think in lists. Some people are smart enough or naturally able to overcome that obstacle, but most aren't.
gordianknot··on Chart: Seasonal search trends
Can't wait for the Google Trends API.

Holiday sex searches skyrocket, news stories plummet: http://www.google.com/trends?q=sex%2C+porn&ctab=0&ge...

Ramadan? http://www.google.com/trends?q=sex%2C+woman&ctab=0&g... (note the Saudi news correlation)

Edit: No coding over Christmas: http://www.google.com/trends?q=html%2C+php%2C+javascript%2C+...

gordianknot··on EBay Bans Auctions Of Digital Goods
Exchanges are much more primitive than search before Google. I'll hold you to that assertion... :)
gordianknot··on Firefox 3 beta 5 is out
Same here... Using Safari for the moment.
gordianknot··on EBay Bans Auctions Of Digital Goods
Great! It's never been a better time to start an eBay killer.
gordianknot··on Ask HN: Choosing a Python framework for web development?
Study the source of existing sites you like. Then start writing your own Python framework upward to recreate (and fast transcend) them. Extensively study the existing frameworks, especially when you hit a conceptual or implementational roadblock. Understand everything you have to work with at each step. Keep building up.
Page 1 of 2Next →