HNHacker News
TopNewBestAskShowJobs

10ren

4,550 karma · joined January 27, 2009

submissionscomments
10ren··on Ask HN: Why are there so few apps being built with JSP?
XSDs provide type-checking.
10ren··on The Trouble with Multicore
1. Perhaps we need to actually have the hardware before we can start playing with it, and come up with solutions. That's how it usually goes.

2. Maybe they are jumping ahead to "many-core". Instead ask: what can we do with this extra silicon? In the past this lead to cache; pipelining; a faster multiplication technique; on-board maths "co"-processor. Today, it gives us systems-on-a-chip; hardware video-decoding; absurd GPUs; and even physics PUs.

I spoke to the person who developed that multiplication technique, and he said that it was due to extra silicon being available - it was inconceivable before then, in that people did not conceive of it because they could not conceive of something so wasteful of silicon.

10ren··on Ask HN: Why are there so few apps being built with JSP?
My opinion. It's partly because teams who do webapps tend to be small, young and agile. First, prejudices: they prefer new things (Java is old); they dislike the environment that is Java's home (big enterprise) and the practices and personalities types that go with it (perfectionistic, professional, conservative).

Second, real reasons: Java is verbose and statically typed, and therefore it takes more work to make changes - it is slower to develop in and less flexible/agile. These things really count when you want to try out an idea; and when you need to adapt it. There's also a community effect, where all those early adopters are working with Ruby/Python, that's the platform cool stuff gets developed for (eg. sinatra, github, haml).

Technically, it's possible to write a sinatra in Java (I have; using annotations for urls); but who would use it? I actually love Java myself, including its static typing, and use it in my startup. But when I've played with Ruby - even as a novice without knowing the tricks - I found it much quicker to develop in, and the code easier to understand because less cluttered. It's probably not as reliable; and the code doesn't run as fast; but these things just don't matter for prototypes and early versions.

10ren··on Valuable to others, or only you?
painting by numbers (art by demographic statistics): http://www.amazon.com/Painting-Numbers-Komar-Melamids-Scient...

When I was 10, The Flintstones had an episode about this. Fred and Barney gathered statistics about what people wanted in a song, and then composed it. They catered to all subjects, and a punchline was that one of them was "mothers-in-law". The song was terrible; the main message seemed to be that such art lacks integrity (not in an ethical sense, but in a sense of fitting together, being whole, being one thing). Of course, such lack isn't necessary (eg. the Monkees had some great songs), but it is much harder than speaking out of a deeper truth. Perhaps it's like the flow of writing off the top of your head vs. over-editing and getting a patchwork of concepts and mismatched conjugations.

I've always liked the idea of a work being both popular and critically acclaimed (who doesn't?). I do think there's a thrill in doing something that is very cool to yourself; but there is also a thrill in doing something that is truly valuable to people. Both can be aspects of the heroic journey, of serving something greater than oneself: serving an idea, or serving a community.

But I think this may be a little different for art (which Sivers is talking about) and software (which I'm (mainly) talking about).

10ren··on Ask HN: Loosing Faith - the startup killer
So it sounds like you're convinced you should aim lower, but are having trouble actually doing it.

Oh no, you don't ask for feedback from your colleagues - you get it from people with the problem you're solving. From users. Your fellow developers can't even know if you solved the user problem; the best they can do is point out things like grammatical errors which, as you say, is useless.

EDIT I guess your PHP friend wouldn't have been able to bring over users for his very his first app, and I bet he remembers it vividly. You could email him, or talk on the phone. He's not the only person in the world to have shipped, but you know him, so he's an excellent person to start with. You could visit him. Consider: 500 km vs. 4 weeks. Sounds ridiculous, but if you take this journey, you won't forget his point of view.

10ren··on Ask HN: Loosing Faith - the startup killer
You aim too high.

Is it because you are not convinced that aiming lower is the right thing to do; or do you believe it but you have trouble actually doing it?

Perfectionism is common in programmers (perhaps because imperfect syntax doesn't work). It means that you compare your product with "perfection", instead of comparing it with "nothing" (ie. it not existing at all.) If you tend to be critical, and quickly notice faults and omissions, then you may be a perfectionist. It seems to me that perfectionism is the number one reason why many programmers aren't successful in business. It's very difficult to overcome, but one way to begin is simply try to find what does exist in your product (and elsewhere), and just acknowledge that it does. You might not yet be convinced that it matters, but just being aware of it is a start.

For me, a crucially motivating thing was people actually being interested: feedback. When I launched that 2-hour product, I wouldn't have continued if there was no feedback. But there was (a single email!). Feedback can help survive the gap you mention, to paying customer. Before then, just getting something that does something can be very motivating (see my GP comment).

BTW: don't do tdd for a MVP! It takes too long. The advantages of tdd don't really make sense for prototype.

EDIT Ask yourself how you could cut corners, and yet still deliver some of the essence of the thing. Work out what your one essential idea is, and try asking of a particular line of code: is is absolutely necessary for that essence? Some other questions:

   - error checking? *cut*
   - corner cases? *cut*
   - "option to save your work"? *cut*
        (unless it's a DB etc, whose essence is storage)
   - cover the most common cases? *cut*
        (just cover *one* case)
   - documentation? *cut*
        (except: the essence + how to run)
   - debug? *cut*
        (provided it mostly runs)
   - integration test? *cut*
   - define formats/interfaces? *cut*
A more extreme cut is possible... No Code:

   - present slides of your product (Steve Blank)
   - pretend to have a product, but you just:
      post on HN
      one webpage (optional: a survey on it + Skype chat)
        (feels wrong to me, but can be done ethically)
   - adwords campaign + landing page
Consider your PHP friend... did he aim high? What specific actions did he do that were different from your other friends?

Here's some essays that might help: "Mediocrity is underrated (or better is the enemy of good enough)" http://nayna.org/blog/?p=11 "Getting Real" [6 very short excerpts, I suggest read all esp the footnote/quotes, in this order:] http://gettingreal.37signals.com/ch02_Whats_Your_Problem.php http://gettingreal.37signals.com/ch09_Epicenter_Design.php http://gettingreal.37signals.com/ch06_Race_to_Running_Softwa... http://gettingreal.37signals.com/ch06_Shrink_Your_Time.php http://gettingreal.37signals.com/ch06_Done.php http://gettingreal.37signals.com/ch10_Less_Software.php and pg's 2008 essay (on HN 2 days ago): http://news.ycombinator.com/item?id=1525068

disclaimer I find it hard to cut corners on my present project. My excuses (which I'd like to overcome) are due to it being based on a new mathematical model:

    - if the maths isn't realized correctly, it won't work perfectly
    - showing off all its benefits (eg error checking) requires more work
    - getting the foundation right will be easier to build on
    - patenting (can't be done after release)
10ren··on Ask HN: Loosing Faith - the startup killer
"finished" is a dangerous concept.

I'm not clear on what you mean by "losing faith in the product". Do you mean that you stopped believing that it had any value whatsoever; or that any/enough customers would ever like it; or that you lost faith in your own ability to accomplish it? Or do you just mean that... you ran out of motivation?

The key idea is not that "it takes time", but for it not to take time. In other words, to get something done ASAP. I'm talking like 2 hours, not 2 weeks or 2 months.

esr said to launch a product you need something that (a) runs; and (b) has a promise that it can be turned into something really cool in the near future. It's code + words. Note: this means that the thing that runs is not really cool. [many others also state this idea, but I really like esr's formulation]

For motivation in general (not just for launch), the same thing is true: you want to get something that works ASAP. Fred Brooks says of this style of incremental development: I was stunned by the electrifying effect on team morale of that first picture on the screen, that first running system.

I wrote the first version of my product in 2 hours (though I'd been thinking about it for a couple of weeks; and it took a 9 hour day to write the website). This isn't because I'm some great coder, but because the product was that simple. It wasn't "finished". It took a year before the first sale, and eventually I made enough to retire (for small values of retire).

tl;dr release before it's ready.

10ren··on I created a bookmarking service you can love.

   You found a great article yesterday - now you can't find it!
I think the above style of copy works far better for connecting with readers and calling out the problem you solve. It's shorter (always good) and assumes the reader agrees with you (the ones that don't agree aren't your target anyway - so why equivocate? Plus, in fact everyone has had this problem).
10ren··on Principles for Making New Things (2008)
This essay is mainly based on the common folk wisdom that you see everywhere, on iteration and solving the actual problem: 37signals. Steve Blank. Fred Brooks. esr. extreme programming. Moore. In Search of Excellence. Linus. [off the top of my head]

Reddit is successful, in that it's valued by many. It was successful for the founders [I'd dearly like to know how much they got, to an order of magnitude]. It's only 5 years old - it took Amazon 10 years to become profitable, google began in 1996 was incorporated in 1998, but didn't even start serving ads til 2000 - which accounts for almost all revenue today. So I think it's too early to call reddit "not very successful". [It would be interesting to have data on how long it typically takes for "successful" startups to become successful.]

I do disagree with pg that the essence of reddit was "to tell people what was new". Slashdot already did that and other news sites. Reddit's (and Digg's) innovation was that everyone could vote on comments. [But pg has far better information on reddit than me, so I'm left wondering why he thinks that...]

10ren··on Principles for Making New Things (2008)
I agree, it's not Arc, it's the webapp. And it does seem bizarrely unprofessional (I often consider my comments for a long time, so I almost always get the timeout - I'm being punished for thinking!). There also had to be a substantial outcry before we got a "search" link.

Yet... HN grows and grows... it is reported widely... luminaries routinely post here... and here are you and I.

pg has said he is careful to focus on what matters (eg. spam; ranking), not what seems to. It appears to be working. And it exactly supports this essay's thesis, of working on looking professional vs. what's important. Maybe it's a bit like undergraduates handing in essays in a fancy folder?

10ren··on CoffeeScript -- You Are Totally Gonna Hate It
The "try coffeescript" demo (http://jashkenas.github.com/coffee-script/) is really cool. It converts to javascript in realtime/as you type, including error checking on the fly.

I like the lambda syntax (I don't recall seeing exactly this syntax before):

    () -> alert("lambda")

    (() -> alert("lambda")) ()     # to call it
10ren··on How Will You Measure Your Life?
This is by Clayton M. Christensen (The Innovator's Dilemma)

single page: http://hbr.org/2010/07/how-will-you-measure-your-life/ar/pr

10ren··on Early adopters
Moore gives a case-study of how Quicken got started (in crossing the chasm, in ch 6 define the battle - p.139, rev. ed.). Sounds very relevant and useful, and I commend it to you, even though it's about a later stage (providing the whole product ie. to actually salve the pain; and positioning with respect to other ways/attempts to fix it).

Of the people who have the problem that WePay solves, there is a continuum of how bad the problem is, how important it is to them to fix it and so on. But there is also a continuum of those people's attitudes towards change. Psychologically, some people like change and some don't. It is these early adopter that you want - that are a subset of the people with the problem who are suffering acutely.

10ren··on What’s Really Going on in the VC Industry? What Does it Mean for Startups?
(naive) Question: What do web startups need $20mm for? (linked from the article: http://www.avc.com/a_vc/2010/07/some-thoughts-on-the-seed-fu...)

I mean, what can they spend it on? I can think of servers and bandwidth (but they're pretty cheap these days, except for youtube-content intensive), and staff (but what would they do?) and perhaps advertising and publicity in general can absorb as much money as you can throw. I guess a professional sales force would be expensive.

10ren··on Ask HN:Small ideas
Taking you literally. $1,000 pm is $12,000 pa. Let's assume passive income from an index fund of 12% pa (for simple maths, though it's also the long-term return of the Australian stockmarket; bumpy short-term). So you would need $100,000 invested.

To save that $100,000 in a year, working 6 hrs per weekday and 8 hrs per weekend day (impossible to keep up) is 6x5+8x2=46 hours pw = 2,392 pa. You'd need to take home $41.8 ph (after tax).

It's theoretically doable.

10ren··on Ask HN:Small ideas
Append #t=4m43s

http://www.youtube.com/watch?v=Pgy4PcSpUkI#t=4m43s

10ren··on The Feynman Algorithm
"Writing down the problem" sounds trivial, but it's often the hard part. Once you understand the question, the answer is obvious (as a commenter said).

I have to break down complex problems in order to come up with questions that I can understand. The really hard part is in finding the right way to break them down, because not all modularities and boundaries between them will help to solve the problem. But all of this properly forms part of Feynman's step one, of writing down the problem.

I also often get a sense of what the answer should be - but it's very difficult to even begin to describe it in words, let alone define it clearly, and even harder to prove it is correct. Yet... it almost always is correct. This is properly in Feynman's steps two and three.

Computers are useless. They can only give you answers - Picasso

It is by logic that we prove, but by intuition we discover - Poincaré

and so another, even bigger, computer had to be built to find out what the actual question was - Douglas Adams

10ren··on CouchDB 1.0
It seems very popular, so maybe it's just that I'm not cool enough (not in the target audience/mixing with the right crowd, virally speaking) - but being upfront about what something is and what's great about it, would seem to me to be an important for encouraging adoption. OTOH, I'm noticed many successful projects don't do this, so maybe it isn't important. :/

My history shows 5 pages from the landing page before I found one that said what CouchDB is (the faq), and I'm still not sure what distinguishes it.

btw: awesome logo and poster.

10ren··on Succeed by being an Incrementalist
I think this is related to pecking order, in that once someone is elevated to a dominant role in some sense, the tendency is to not question them, day-to-day. A challenge is a dramatic and unusual event. This tendency makes for a more stable society (or troop of chimps/flock of sheep).

There's a jurisprudential idea that people don't obey the law only out of the goodness of their heart, nor out of an economically assessed fear of sanctions, but of a "habit of obedience". This (to me) seems related to the pecking order instinct. http://en.wikipedia.org/wiki/Jurisprudence#Bentham_and_Austi...

Fairy tales (for young and therefore impressionable children) have a strong theme of people being born to a certain role. And the idea appeals to children.

The belief that you can improve is a revolutionary, subversive and dangerous idea.

10ren··on Ruby and .Net Developers solve two different kinds of problems
glad to hear it!

btw: keep the paragraph - pimp your stuff by all means - and (eg) a simple bar <hr> would separate it; that's how 37signals and Joel do it (of course, maybe it's just me who was distracted by it). While it is very effective advertising to integrate it into the story (a kind of product placement), it's harder to do both well than focus 100% on the content.

10ren··on Ruby and .Net Developers solve two different kinds of problems
Interesting having a sales pitch in the last paragraph.

I think it's a good idea to promote your product with interesting/educational content... though there is nothing to differentiate the pitch from the content here (it's heading towards "advertorial"); and 37signals do this all the time without needing to mix the two.

But it also makes me question the whole post - did it exist purely for the purpose of carrying a sales pitch? And on reflection, I do find the content a bit lacking: "perhaps the language is too verbose" was interesting; and it seems very true that Ruby is used for small projects, and .Net are used for enterprise-size projects; but his conclusion, that "the resulting code is going to be verbose" doesn't connect to the question, which was about the language being too verbose.

A way to connect them is that huge projects have more names, and so you need longer variable/method/class names to distinguish them (I'm including namespaces in name length here); and in huge projects, you need names that are more self-descriptive (because it is so important than someone else will be able to understand it, someone who might not ever get to meet you to ask you) - and self-descriptive names are long. You'd like to reuse this full information without the typing. Hence, intellisense.

10ren··on Great programming quotes
There need be no real danger of it ever becoming a drudge, for any processes that are quite mechanical may be turned over to the machine itself. - Alan Turing

Douglas Adams' version of Hoare's make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies.:

their fundamental design flaws are completely hidden by their superficial design flaws. http://www.otostopcu.org/yazi/h2g2/b4c36.php

10ren··on Great programming quotes
Linux: great for developing, terrible for consumption.
10ren··on No, that is not a competitive advantage
reality can be inconvenient. Why not accept the challenge of guessing what the author will say (eg. by researching on wikipedia or Porter's competitive advantage)? It's one of the most effective learning strategies - get it right or wrong, you won't forget.

One approach is to not expect to have customer-based competitive advantage at the start, but have a plan of how to get there. Eg. a product that has network effects + a plan for how to get there.

I think the idea of enduring or sustainable competitive advantage is a bit misleading, because things always change, so competitive advantage is dynamic. It can be more helpful to in terms of the duration of a competitive advantage. For example, when you start off with an easy-to-copy product that is in demand, you do have a competitive advantage - it's just that it doesn't last long. But you can use that brief period to build the next competitive advantage. (in rock climbing, a dynamic move is when you are not statically supported, but rely on your momentum to reach a stable point).

10ren··on No, that is not a competitive advantage
And eager to stay tuned for next week's exciting installment!
10ren··on No, that is not a competitive advantage
real competitive advantages:

(1). New technology that you have developed secretly and roadmapped into the future (so that as your previous release is copied, you are ready to release the next one). Of course, those developments must also be needed by customers (eg. enhance an attribute that they care about; meaning that the initial release was lacking in this aspect, yet it still had some core value that made it worth buying). It's a bit like having your own private giant upon whose shoulders to stand. Because you've done the experiments, you've seen more. You do more experiments, and see more again. This is keeping ahead of the engineering curve, and so it's a supply-side advantage.

(2). Customers that have developed a habit of using your product, especially if they have changed their behaviour in order to adopt it (they might have done so because you were the only one to offer the technology, and then being the one with the best technology - due to point 1). This is related to switching costs. Demand side.

(3). Related to point 2 is when you not just have customers, but you are recognized as the leader, because you have dominant market share (here's where it's an advantage to focus on a niche: it's easier to dominate a small pond that a big one). Psychologically, people like winners. It also means that you win all sorts of races, where people have to make a choice: third-parties choose to support you; big companies choose to standardize on you; users choose to train for your product. Demand side.

(4). Network effects! Again with the customers, but here, because of interaction between customers, the value of the product is proportional to the square of the number of customers. This makes it harder to stop you, but you first need to be ahead - so it's more of a multiplier than a CA in itself. Demand side.

(5). Feedback. Once you have customers, you get feedback from them, and you can improve. If you can get this feedback before your competitors (eg. by launching before them), it can help you keep ahead. It's a kind of secret information, as you learn about what the market really wants; and it's also specialized to your product. In these senses, it is proprietary (owned by you). Another private giant. Supply side.

(6). Revenue. Once you have money coming in, it's a kind of magic, because you can reinvest and grow. Smaller competitors can't match this (assuming you can spend the money in ways that make a difference - like advertising - but it can be surprisingly difficult to find such ways...) And even large companies don't want to bother competing with you, once you really get going (they might buy you though). Supply side.

(7). Although particular skills can help, there's always someone smarter, more experienced etc. However, I like to think that a particular combination of skills can approach a hard-to-replicate advantage (though of course it has to make a difference to the start up. It's no good being an art-expert + TCL programmer unless that's somehow needed).

(8). There are also milder ones like good PR (a kind of advertising), being attractive to talented workers (which in turn increase your success), being inspirational (more advertising).

I agree about patents. They're a good piece of paper as a bargaining chip in acquisitions.

Now, the difficult thing for me is to apply these abstract ideas to my own actual startup (it's easier to be wise when you're not involved). They all seem to point to agility and getting your product out there now. Scary.

10ren··on World War II was totally unrealistic
I had to check out that Hugo Boss one: they were one of thousands of manufacturers; they didn't appear to have "designed" the uniforms (they manufactured police and postal uniforms back then). They didn't do suits til the 50's http://www.nytimes.com/1997/08/15/business/hugo-boss-acknowl...

tschild's two comments here summarize my thinking: http://boards.straightdope.com/sdmb/showthread.php?t=257389#...

10ren··on How to avoid the assignment statement
The wording comes across as dogmatic; yet the article isn't actually dogmatic - it sincerely acknowledges cases where the functional approach isn't suitable (even including the really cool algorithm of quicksort - BTW you might mention games as another one where mutable state is convenient). Showing respect for alternatives (where due) makes an article seem objective, impartial, intellectual and truth-seeking (rather than pushing an agenda; or trying to sell something). It would probably be beneficial if the wording reflected your intent.

I did find it distracting, because (to be frank) people don't like to be told what they should be doing; laughter is a way to defuse the affront. Another approach is to appeal to those (few) people who are keen to learn about techniques that will help them. And I really think that that's what you were going for. Changing the wording would help achieve that aim, in my opinion.

So... yes.

btw: I really liked your explanation of linked lists being cheap to modify; and the article in general is very well done and communicates very effectively - I'd say it's of textbook standard.

10ren··on How to be a Programmer
If you upvote it, it appears on your "saved" list: http://news.ycombinator.com/saved?id=awa
10ren··on How to avoid the assignment statement
A useful summary (eg. I found my experimental code from last year a lot easier to understand when it used functions rather than procedures) - though I couldn't help laughing when he started saying "mistakes", "correct" and "incorrect".
← PreviousPage 8 of 34Next →