skysight-inc/HackerNews huggingface dataset:
Sharing Your Cap Table With A VC
A "cap table" or capitalization table details the equity ownership and debt obligations of the company. When a VC gives you a term sheet it will include cap table that reflects the post-investment ownership levels of key parties.

In order to prepare the term sheet you will need to provide the VC with your pre-investment (aka pre-money) cap table. This will enable them to make a proposal that balances all of the key considerations: their ownership and the ownership of the entrepreneurs.
How do you define credibility online?
As NewsCred begins to take shape, one of the most frequent questions I get is "How will you define credibility?" My answer is usually the same: "I will not be the one who defines what is credible or not. I will entrust that enormous responsibility in the capable hands of the NewsCred community."
Great article that completely blows the conclusion.

Small teams are great for any-sized project with concrete, defined goals -- even if those goals are changing. Problem: any software project that's been around in a large company longer than a year has multiple, conflicting goals. No amount of software productivity is going to enable business clarity. So in the natural course of business growth the business will generate software groups that focus on creating repeatable software projects. That's because the only rational response to the accusation of "you software people can't develop code" is to show how you are able to create any kind of solution the business guys want. It simply becomes a different set of goals. When you're small and hungry, you have clarity of mind -- you can't afford otherwise. When you're big and busy, software becomes part of a more political corporate culture.

I'd love to work on a small startup and make wonderful programs that change to world too. That's why I'm here. But I'm not naive enough to think that there aren't good reasons why large-scale software is in the state it is. It's not something some kind of simple slogan can describe or fix.
happy late thanksgiving
there have been so many times when microsoft could have easily wound up like lotus and ibm, i.e., unable to embrace change and suddenly irrelevant. but bill was always there to see the problem and point the company in the right direction. classic example: the rise of the internet in 1994. what happens when the next big inflection point comes and bill isn't there to turn the ship? personally i don't think ballmer can possibly fill that role.
It is obsessing if it detracts from the end product. I'm not saying DRY isn't good practice or that chunks of code duplication are just fine and dandy. However, bits of code duplication are hardly a viable litmus test for judging quality of a programmer. When an actor screws up a line in a performance, he can't afford to stop and correct it. In fact, if he stops to correct a meaningless line he'll cause far more damage than if he'd just kept going. Programming is not always so time-and-performance-sensitive, but it's not time-insensitive either.

Perfect programmers may manage to avoid duplicating code on the first try. But unless we have dozens of Mozarts posting here I'd guess that no one qualifies. That means we make mistakes, and the question of whether correcting those mistakes is good practice or obsession depends on the circumstances.
The employer treated me alright, good benefits, nice working environments. I value trust and connection.
I'm trying to find some point of agreement with you.

I think from your comment, we can agree that there are two scenarios to consider: when the programmer is in control of the product and when the schedule is in control of the product. "Programming is not always so time-and-performance-sensitive, but it's not time-insensitive either."

Here's the deal: when you stop your design process and kick the compiler up and start coding, you haven't stopped your design work at all, you've simply switched from top-down to bottom-up design. Every line of code you write is a validation/denial of the assumptions and planning you're supposed to do before you start. If you're not refactoring aggressively as you go along, you're not taking the chance to see where your code is supposed to be going: you're simply trying as hard as you can to get to point B from point A. It's like driving a car from one side of the field to the other by letting go of the steering wheel and hoping it gets there okay. Most of the time you make it to the other side just fine, but you have zero control over where on the other side you're going to end up.

To me, that's hacking, and I mean in a bad way. I've been known to hack like a freaking electric weed-eater, trust me! But that's when something else is out of whack on the project. It's a sign that there are serious problems. When you're doing it right, your code is constantly evolving as you refactor to the point where changes become less and less of an issue. So good programming means you spend all the time necessary to refactor with the knowledge that you'll going to make it back in spades later on.

It's like when playing rummy, and you decide to pick up a huge stack of cards. At first, it seems like a crazy move, but if you know how to play the game, you realize that the only way to win is to constantly redefine the problem domain of what you have in your hand. Hacking doesn't get you that -- it just gets you to point B no matter what. It may not be the sign of poor programmer, but it's definitely a red light that something is out of whack somewhere.

My opinion only. Your mileage may vary. Do not attempt to drive heavy machinery after reading my comments. Consult a physician before beginning a regimen of refactoring. Etc.
hardware/bandwidth % of revenue
What percentage of revenue are your startup's servers/bandwidth cost?

What is a good percentage range to aim if any if you're in the black?
lol - I've often wondered about that. I once remarked to a partner, "Why do we see so much crap?" He responded, "Cause the people who know what they're doing have no reason to call us."
Mark Cuban made his money on a content distribution network - no wonder he hates p2p.
A few years ago my friend wrote up a few recursive functions in C and they were slower than using a for loop. Since then I haven't used any sort of recursion in C or C++. Maybe my fears are unfounded but I try and avoid those two languages in any case.

edit: I just realized what I actually mean. Some programming languages, or the culture/community around them, do not seem to encourage certain things that can be done with the language. In the case of C/C++, while/do/for loops are used before recursion. In the case of Scheme, you try a recursive solution first and then go for a do-loop if you really need to...or something like that.
Mark Cuban made his money on irrational exuberance. I wish I could have got in on that.
http://www.blogmaverick.com/2007/11/23/p2p-part-3/
I once got in an email argument with Mark...the guy is crazy. He is the most opinionated, brash, and arrogant person I have ever dealt with.

It worked very well for him though.
From my experience, I would recommend finding someone with whom you are friendly, but not friends.

The pressure of the startup will polarize your relationship, so you'll either end up pretty solid friends or pretty solid enemies. Someone whom you already dislike somewhat probably won't become any more palatable. Someone with whom you've already established a friendship leaves you in the position of risking the friendship and/or not having the luxury of candor when they screw up.
Emacs. :)

The Yahoo/Viaweb story is correct, according to usually reliable sources. Their fatal shoal was the RTML parser.

MySQL's parser and query planner are pretty suspicious, too.
Boy, that sure sounds nice! Wish I could have applied some of those laws to my last employer...
Job Description: "The Smartest Guy/Gal In The Room"
Skype encryption stumps German police
Maybe the police can't, but I bet the German intelligence services can.
Sweden Turns to a Promising Power Source, With Flaws
Forget about learning to code, there are experts out there that will do it better than you ever could. And they don't have to cost much money by the way. The problem is how you decide who to go with. I still recommend personal contact rather than long distance Internet...

At FairSoftware.net, we are working on a solution for your problem. Just hold your breath for a few more months, thanks :-)
Why is BBC's iPlayer a multi million pound disaster...
geez i really want to know what company that is.
I was just trying to wish everyone a Happy Thanksgiving in an unoffensive manner as possible. I thought if I just said Happy Thanksgiving somebody might say "yes, but (insert reason for life sucking here)" so I added some extra text. Apologies if my not trying to offend people, offended people. Geesh.

I don't understand the sock puppet comment. If somebody could translate, that would be great.
Following marcus's lead on this one, I don't presume to know what elegant code is. For me its like watching your favourite athlete in action and striving emulate that in your self. So I find rather then reading books on how to write great code, reading the code of people who have made great programs (when you have the opportunity) is an invaluable way to learn. And alot of fun too!
Five Computer Clouds Are All We Need
jwz - PSA: de-lameify your dock and menubar
Every time I pick a programming language to write contests in, I work on extending the language more and more until, eventually, I hit a wall. C++ didn't allow closures, C# does have even simple macro-expansions, and then I literally start writing an interpreter for Lisp.
ActiveRecord Race Condition
Favorite comment:

The Rails validations (especially the ensure_uniqueness_of) in my mind are purely for nice error messages 99% of the time. As well as race conditions like you discovered, they are inefficient - if you have a heavily inserted table, then Rails has to select to ensure uniqueness, and then insert - if you just put a unique constrain on the table and do the insert, you save on the select. This would only ever be an issue in a very heavily inserted table that has a unique column, which is probably rare!

-----

I love when something being "probably rare" is justification for it being significantly broken.
Favorite comment:

The Rails validations (especially the ensure_uniqueness_of) in my mind are purely for nice error messages 99% of the time. As well as race conditions like you discovered, they are inefficient - if you have a heavily inserted table, then Rails has to select to ensure uniqueness, and then insert - if you just put a unique constrain on the table and do the insert, you save on the select. This would only ever be an issue in a very heavily inserted table that has a unique column, which is probably rare!

-----

I love when something being "probably rare" is justification for it being significantly broken.
My impression is that what you say about firing someone is true for employees of the government or very large companies. But not really for medium or small companies. And certainly not for startups. And I suspect the U.S. government has similar policies and legislation in place for federal government workers.
This is a link to the blog. Link to the post was already here: http://news.ycombinator.com/item?id=82647
Idiot Mark Cuban to ISPs: block all P2P traffic; Ars to Cuban: um, no
"Oh and where is the tower that comes with desktops? That's right. The Mac contains the whole computer in the monitor. You mean no wires? No pop-ups? No viruses? No freezing? I am pleased to say, No Sir, none of that. Life is great!!!!"

I laughed for a couple minutes. I'm sure this guy is probably middle-aged, still doesn't really have a clue how to use a computer (depsite thinking changing a few settings in the almighty Control Panel is serious hacking) and found the retardedly simple Mac interface a breath of fresh air.

edit: I have owned both a Powerbook and currently a Dell XPS-M1330. Both had their pros/cons, but neither really stood above the other. (Note: Have not tried Leopard yet)
I like Yahoo! a lot but I absolutely can't forgive them for paying so much cash for Cuban's garbage and making him a billionaire in the process.
We always hear about this so-called classic example of how Microsoft made a huge change and embraced the internet back in 1994, but did they really? What did they do? They created Internet Explorer, destroyed Netscape, and that's about it. And Internet Explorer is really just another desktop application.

In fact, Microsoft let IE languish for years precisely because they explicitly do NOT embrace the internet. They know that the internet is a platform in direct competition with Windows. They saw that. They "embraced and extended and extinguished" the web browser in order to prevent it from becoming a new platform.

Microsoft did not change direction for the internet, they are the same company pre and post internet and this example should stricken from the literature once and for all.
"retardedly simple Mac interface"

Bold statement. But let's not start a mac/pc flame war. I think if we took a poll, you'd be surprised how many people on this board are using a mac (and would disagree).
I am defining "take care" as "subsidize". No, capitalism doesn't "take care" of anybody, and if it did, it wouldn't work.
in an [in]offensive manner as possible

Don't play stupid. Here is an example of an inoffensive comment, for those of us unfamiliar with the nuances of the English language:

"Happy Thanksgiving everyone. Have a safe trip home."

Here is a bitter one:

"Happy Thanksgiving. Good luck putting up with your miserable relatives. Oh, yes [sarcasm]you're supposed to be thankful[/sarcasm] [sneer][/sneer]

I didn't quite understand why anyone would go out of his way to post such a comment on a public board. It should have been instantly buried, but since it got upmodded I called it out.
"You are adamantly opposed to function/methods over 20 lines of code."

There are (at least) 2 problems with long funtions/methods:
1) They typically lead to more duplicated (and less reusable) code, e.g. repeated blocks of code between functions that could have been replaced with to-the-point short functions. A typical sign of where to extract a function is when you see a long block with a comment above it inside an even longer function, then replace the block with a function with a name inspired by the comment.

2) The methods becomes harder to test, and possibly even more important, the test code becomes harder to maintain (and untested code of some complexity usually doesn't work), e.g. what happens to your existing tests if you add some new conditions at the top of a long method?
Microsoft, Google and Yahoo Acquisitions Compared
If it were really true that "effective established principles" save time on both the front and the back end, then everyone would be doing them.

The fact is, there's almost always a trade-off between "quick" and "right". That's why so many people choose the former, to the detriment of the latter.
When I'd stopped independent work on it, and brought it to Songkick, it was coded entirely in Javascript, with a reimplementation in Ruby (to check work). Email me (leebutterman/gmail) if you're interested.
You have not described what was wrong with the original comment.

I'll stop wasting everybody else's bandwidth. Either you can explain what you didn't like or you cannot. The only reason I replied to you was that pg made an attempt to reason with you (which he deleted). I still have no idea what crawled into your maw. I'm honestly not playing stupid -- I just wanted people to have a happy holiday. So go have one already. You can trash me on another topic if you like. But if you do you'd better be more descriptive than this if you'd like me to reply.

Perhaps you're implying that I didn't want people to be thankful? Gosh -- not at all. I simply meant that being thankful seems to be the last thing we think of, instead of the first, even though it is the most important part of the day. If I failed to communicate I'm sorry, but I gotta say your comments seemed cryptic as heck to me. I didn't even know what you were talking about. Humor is very tough to do, folks. Please do not try this at home (as I did)
I operate at a lower dB level when I use a Mac. Windows brings out my best impersonation of an extra from 28 Days Later.
If somebody could translate

I think I know someone who can help you out on that:

http://en.wikipedia.org/wiki/Internet_sock_puppet

Getting dowmodded for calling a jerk a jerk was shocking enough for me to assume that the same person was doing it. I'm probably wrong: A lot of people are too dense to have spotted the sneer in the original post.
You have not described what was wrong with the original comment.

LOL. You're just egging me on now. It doesn't really matter, obviously. When I read your comment I just heard pure snark coming through it. Maybe you thought you were being clever. In that case, it's best to attach a wink at the end:

;)

I think I'll just unilaterlly apologize and move on with my life...
I think the problem is we have two very different solutions to two different problems. Parenscript seems great for the things you're describing, but those are the things I happen to not be interested in.

I'll be sure to let you know when we have something more to show, I'd be interested to hear your opinions of it.
Sneer? WTF?

It was a way of saying that although we think of giving thanks last, it's really the most important part of the day. There was no sneer.

I didn't down-mod you. Although after you kept ranting I decided to down-mod you on subsequent posts as simply a way of asking you to do a better job of explaining yourself. I don't care if you don't like me or my comments -- you just need to learn to explain yourself better.

If I want to offend you I don't think it will be a mystery to anybody -- I'm usually pretty good at it. But sneering and making fun of traditional holidays is not something that I usually do.
Computer science and creativity
Let's review -- did I get this right?

Since I said something like "and oh yes, we should be thankful" you took that as meaning that I thought we shouldn't be thankful? That I was making fun of the holiday or something?

I'm serious -- I still have no idea what the heck your so pissed about.
I think there's some confusion as to what "creativity" might mean in computing. I suspect that for most people, creativity really just applies to the application idea.

Creativity at the implementation level is not so interesting because it does not manifest itself in obvious ways to the user.

Sure, creativity can result in faster more elegant code, but so what?

I would rather focus on creativity that results in new kinds of applications that users can immediately see as something novel and interesting.

Unless computer scientists understand that this kind of creativity is more rewarding for most people, I predict that CS enrollment will continue to decline.
I'd be very surprised if Bill was using the same definition.
It's usually not a good idea to mix different definitions of a word.
The hard truth is that most of us (genuinely, without any sarcasm allowed) have much to be thankful for. I spend a lot of time around people who are just me-me-me in their demands of the world--pure ungrateful selfishness--and the worst is that they have no idea how good they have it. No perspective on the world or on history or on the sacrifices or troubles of others.

I read that sort of attitude very clearly in your comment (viz, we're "supposed to be thankful", as if thankfulness was some sort of unpleasant duty), and it rubbed me wrong. ...however, I'll just take it on credit that my interpretation was incorrect. The end.
BS. How was this calculated?

I'm guessing they figured that if 1% of searches are "I'm Feeling Lucky" then Google loses 1% of it's search advertising revenue?

Presumably, people use I'm Feeling Lucky when they know exactly what they want. People who know exactly what they want are not as likely to click ads. I don't know by what factor this is true, but if they neglected this (as I suspect they did), the $110 million figure is meaningless.

Also, I'm guessing the 1% of all searches figure takes into account other sources, like when I type "amazon" in the Firefox location bar.
This is why, this is why, this is why it's hot:

For photo enthusiasts: I plugged my camera in, iPhoto opened, I pushed one button, and imported all of my pictures.

For hackers: system("say all done") if you want to hear when something's done, or system("say #{i}") if you want to hear each i in a loop.
The trouble is, no walled garden will be able to replace email. Email works because it's open -- anyone who can set up an MX record and an SMTP server can send and receive email. Social networks will succeed if someone can figure out how to make it open in the same way. I'd say that's probably the future of communication on the web... some amalgamation of email, IM, and social networks. Meebo gets close, but I think for IM to work, it has to be integrated with the desktop. Maybe an AIR version or something like that...?
A good argument might be chunking: the (average) human brain can keep only about six or seven chunks of information in short term memory.

A method with 20 lines of codes is roughly 20 chunks. Move some parts of those 20 lines into other functions, and you have created more effective chunks. Presumably, the brain has a much easier time understanding things it can actually keep in memory.

One idea is to create functions instead of comments, that is instead of writing "compute the rank" followed by some code, create and call a method computeRank().
Released out of prison, straight into hell.
n a perfect world avoiding code duplication would be a simple matter. Unfortunately people have to make decisions with what they've got and there isn't always a clear right answer.

A simple dilemma:

You have to perform an operation in C that accepts up to 5 parameters and will be executed when a given 50 input sets are found (out of thousands of possibilities).

You can write one function that accepts variable parameters and paste it into the code for each of those 50 conditions. (Assuming you know how to do that in C to begin with -- I don't, actually)

Or you can write 5 different functions for each possible number of parameters, with some duplication in each function. Or you can write one function with 5 parameters and just pass 'NULL' in the unused slots and test for it inside the function.

Or you can come up a few meaningful sub-categories and write 15 different functions that also handle some processing that would otherwise happen further down the road.

Or you can write 50 different functions that correspond to each input condition, that do mostly the same thing at this point, but in the future if you needed to change any particular input set side-effects will be limited.

How do you answer this question without being able to see the future? (And, is it even worth worrying about, when any of the answers will work?)
Provincial employment standards legislation, human rights codes and case law make what I am saying actual law, not just impressions, True for all employers, including startups.
> For these reasons many SV VCs, he says, will not fund startups unless at least 50% of their development work is done outside of California.

I don't buy that, at least for generous definitions of "many SV VCs". I don't think any intelligent VC would follow a blanket prohibition like that. And at least in my experience, most SV startups do the vast majority of their key engineering work in the Valley.
This `Microsoft experience = viruses + popups + hardware problems` complaint may have been true as little as 5 years ago, but it certainly is no longer the case with XP SP2 and Vista, the author is being a bit dishonest here.

Doesn't invalidate his claim that Apple makes nice machines, though.
I'm not disagreeing with the premise of the article, but I think the efficiency of a team has a lot more to do with its incentive structure, both social and financial, rather than its size.