skysight-inc/HackerNews huggingface dataset:
Personally my brain has an easier time grasping {TaskA(); TaskB(); TaskC();} rather than a 750loc block of code. Yes, multiple source files are annoying, but there's plenty of tools out there to help (ctags and vim is enough for me).

But the more important reasons to strive for high cohesion/low coupling are: Future changes are generally easier when you have well defined blocks instead of a birds nest of code, unit testing practically writes itself, and you have a better chance at isolating a problem to a module if it's responsibilities are few and well defined.
The question becomes: when does hiding complexity improve your ability to reason about the code?

When you trust the abstraction. For example, on the whole we trust the filesystem abstraction, we rarley try to inspect the phisical location of the bits on the disk - the filename is sufficient, we can treat the fielsystem as a black box.

On the other hand, if you don't trust the code, you're going to want to read every line, and that's easier to do if all the code is in one method. An abstraction is a liability if you can't trust it.

Re testing: it's easier to trust a well tested function, so splitting up code to make it easier to test, and then testing it, will allow you to ignore it's implementation. Suddenly it isn't logic spread across six classes, but one class using some utility methods.
So what ?

I'm perfectly happy to have a driver that works, I don't really see the community advantage of an opensource driver as compared to an opensource framework or application.

People are happy to use Intel cpus rather than opensparc!
What was the version of bzr and git? Was this windows or unix? I suspect its unix only. It would be good to see the numbers on both platforms. Is this a limited rev history or the entire history? You also don't mentioned the exact commands you run. Do you use n=0 or n=1 with bzr? I would normally use n=1 as n=1 is not of much interest. Such limited microbenchmarks merely spread FUD.

Also, while choosing a DVCS, the common operations have to be fast not all operations. So the interesting benchmark would provide numbers for all the common operation. Just running one operation can be misleading. I do much more with my DVCS than just run the log operation :-)

Also, I don't see myself doing a log of a full 20+ year history multiple times during the day (In fact I have never done that). The commands I use normally, are fast enough large repos with bzr (emacs included).
I guess. Sort of like...a network-computer appliance. \shrug\
I wholeheartedly agree with being exposed to people of different age groups and backgrounds, as often and as early as possible.

When I was in the 3rd grade, I got to join an experimental "multi-graded" program which had students from the 1st through 5th grades in a single classroom. It's not that uncommon really, just sadly uncommon in U.S. public schools at the time. Anyway, it gave the older kids an opportunity to take leadership roles in group projects, and it gave the younger kids the opportunity to quickly learn behavior and skills from the older kids. It was a great, successful program, by most metrics.
For Java I agree, more and shorter methods are better. But then I see Haskell programs with zillions of one-line functions and higher math to do trivial things, and then I can understand where he's coming from.
I want an iPad for browsing leisurely from my couch or bedroom. I don't want to see web advertisements though, and I won't be able to install Firefox + adblock or some kind of ad filtering proxy on the machine. I suppose I could configure a transparent proxy on my network, but that sounds like a pain. For me the closed nature of the device might be a deal breaker.
There's a spectrum with respect to abstraction. Too little, and you end up with a brittle blob of code where the multiplication of each axis of change and parameterization causes an explosion in state changes and maintenance costs. Too much, and you end up with too many indirections, lost performance, and an additive cost of change and parameterization in each axis that dwarfs the complexity of the underlying operation.

The happy middle is "just right", but it's hard to recognize or achieve without some experience of either extreme. And even then, the chosen point might be biased towards less abstraction for performance reasons or more abstraction for composability and reuse reasons. But really good use of abstractions (ideally including at the language level) ought to reduce the amount of compromise needed.
Dang - Mom was right.

I better call her and let her know.
From the first chapter of 'Refactoring':
"Was it worth it? The gain is that if I change of the price's behavior, add new pricess, or add extra price dependent behavior, the will be much easier to make."

Massive functions start out as small and then large ones. If a business logic function has to grow every time there's a new rule that could live behind an abstraction, it's on the path to becoming massive.
You mean ATI, surely?
I thought most of this already exists, just not on the free databases.

Having XML or JSON columns that can their interior fields indexed, would replicate what document databases do.

Also what having a master-master relational database with a bunch of materialized views replicate what people are using Cassandra for. Is it just because the free databases don't have materialized view support?
The second (in order) sentence is referring to finding flaws, not flaws existing (which the first sentence was referring to). The sword exists - being able to wield it and manipulate it freely is the treasure.

Also, the article does not explain the severity of the flaws - all 11 could have been simple bug fixes for all we know without research.
Kim Chiu Mega Magazine April 2010
Kim Chiu is a Chinese actress in Philippines as she was born and brought up there. She has added lot to her profile. With lot of Philippines movies and lots of award to her name she now the reputated celebrity. You can find more of here at Wiki http://en.wikipedia.org/wiki/Kim_Chiu and she is just 20 now.
Yes, but until now it was more things under the hood. It was mainly a breeze to install and to maintain.
Yeah I never really felt comfortable with this base 10 thing. Maybe because I believe base 2 representation is the way to express what it actually is.

On the other hand base 2 should've been confusing average Joe for a long time now and the operating systems that want themselves to be average Joe understandable.
I'd love to see a comparison between using these XML engines for queries and NoSQL, then. I'm betting they'd be competitive at least to the point that, if you already had one of the supporting DBMSes set up, there would be little point in training your DBA on NoSQL as well.
According to the article, yes.
my school has a 24 hour computer lab, but due to the budget cuts in CA, the library is closed twice a month, so the computer lab is always packed. I know (hope) that this wont last long, but it has been a problem this whole school year for me.
> In contrast restarting a service is no big deal.

Yikes, restarting a service that's so essential to everything else in web infrastructure is certainly a big deal. Where I work (large 30+ million users/month site), we have batches that do all sorts of processing and DB crashes (basically equivalent to a restart) can be a major pain because it can be difficult to figure out exactly what failed and when and how to best recover. You might say, "oh just re-schedule all the batches to allow downtime", but once you have 30 developers with a hundred or so batches, that can be damn near impossible to orchestrate.

A simple stateless web-app can probably tolerate a DB restart, but Cassandra was built to scale - not to host a to-do app.

ALTER takes ages to do because of the ACID constraints of MySQL. If you want, you can sacrifice the ACID constraints by just cloning the table with the proper modifications and then dropping the table, but I'm venturing into DBA-land for which I am in no way qualified to profess knowledge.
Hey, how do you estimate the acquisition price?
Nice. But I have a difficult time seeing how storing "malleable" data like that, opaque to the storage engine, is going to be performant for querying.

Must be nice to have requirements that never change once you've decided on a data representation...
Fowler's book is about simplifying mainentance and testability, not (necessarily) simplifying the actual code. He doesn't even claim his techniques are the best way to start programs, hence the "Refactoring to" portion of the title.
Also, it's specifically about object oriented design patterns so the examples aren't intended to apply to other paradigms.
Not something I will miss. I don't even see why companies make this half baked attempts at open sourcing code. If they are going to open source something they should put real effort in their endeavor. We don't even need hardware companies to open source anything. What we need is good enough documentation so that interested developers can make open source drivers with out having to reverse engineer the hell out of the hardware.
Hey! I enjoyed your post. #4 seems especially important to me. People expect to reimplement things in school - you're working problem sets over and over which have been worked by generations of students - but so often when people get out of school they act as if learning stops. Rewriting and trying to improve on existing code is a good way to keep the brain fresh.

Also I liked your post because you took a position contrary to a lot of conventional wisdom (don't reimplement...) and made a good case for it. At least, you defined some boundaries to conventions.
"Off-Topic: Most stories about politics, or crime, or sports, unless they're evidence of some interesting new phenomenon. Videos of pratfalls or disasters, or cute animal pictures. If they'd cover it on TV news, it's probably off-topic."

http://ycombinator.com/newsguidelines.html
I got an email on March 11'th saying that they were shipping out the first ones in March. I haven't heard anything since.

Sorry for the radio silence ? we have some good news: the first run of units will go out in March! We do not know how large the run will be right now, but it will not fulfill all of the pre-orders. We'll let you know if you're in the first batch as soon as we can. Thanks for your continued patience and interest in WakeMate; we can't wait to show you what we've made!
The value of incorrect response in challenge-response style authentication.
...and just a few points-of-sale.

The Wal-Mart data warehouse operation is legendary in the industry. As of 2008, they were running Teradata, w/ 2.5 PB of data:

http://www.dbms2.com/2008/10/15/teradatas-petabyte-power-pla...

By comparison, Facebook had ~2.5 PB in Hadoop/Hive in early 2009:

http://www.dbms2.com/2009/05/11/facebook-hadoop-and-hive/
Skiena on Computational Finance
A gearbox with sufficient volume, but whose design prevents the gears from meshing as intended?
In Ubuntu it wouldn't make sense because they're taking most of the code from upstream anyway and it changes slowly; I was just using it to give a sense of scale.

The scenario where a single repository becomes handy is when you want to change a method in a shared library fix all the callers in the same commit, and you can do that because the code isn't public and you know all the callers. (It's much the same reason Linux prefers drivers to be in-tree.)

But I'm not sure I entirely want to defend this model; just pointing out that it exists, and the people who like it aren't going to change how the whole company works just to adopt git.
Is the goal to hide complexity? Any non-trivial program is going to be complex no matter how you refactor it.
I got some of these [1]. They look nice and can be stuck anywhere, not just the edge. The price seems a little high until you start using them and realize they are worth every penny. You can also find them a bit cheaper if you look around.

1. http://www.bluelounge.com/cabledrop.php
This is not a tabloid you know.
I have two iPhones, a [Google] Nexus One, a [Motorola] Droid, plus a Garmin [GPS] and TomTom [GPS]. I turn them all on at the same time, plus the navigation system in my Prius.

I find that .. sad.
Caveat: I've used Puppet in production (and been very happy with the results), but only looked at Chef.

From a quick survey of the article, it missed the #1 advantage of Puppet, though the comments hit it: Puppet is declarative, which is fundamentally the right answer for this kind of problem space.

The flip side though, is that Chef (being mostly imperative) is easier for many people to get started with. I think this will help it gain share, in spite of the above. I might even pick it up myself, depending on the problems at hand.
Speaking of which, it would be neat if there were a way to play javascript generated MIDI without having to synthesize the instruments yourself.

Although I'm guessing that would be difficult to make portable, unless Firefox shipped with its own synthesizer (FluidSynth + basic soundfont). Which would add considerable bloat.
I'm not sure if you meant to say 'you turn left' or if you were just being funny. Coming from someone who just completed 10 hours of driving (and has another 6 tomorrow) while using GPS systems, I'm inclined to think you meant what you said. :P
I like it how Henry Baker just put a massive dent in the literature.
Think Really Different
No kidding, came here to say the same thing. ALTER TABLE operations in MySQL essentially copy the entire table, even if you're changing something trivial like a table comment. It's a huge pain in the ass. Restarting the service is a freakin' cakewalk in comparison.
That's why I found it more fruitful to study entire compilers/projects, instead of hunting down papers on memory management, code generation, optimization, evaluation models, etc.

If you get into the "mind" of the project, you will be able to trace the progression of ideas and see why things were done the way they were. I often read peripheral papers on a given project because I tend to get the big picture from those filler papers, usually written by the lead, and/or coauthored with the entire team. The highly technical papers reserved for the best and most specialized conferences usually skim the details and present the most novel idea in its purest crystal form .. usually under length restrictions and addressing a well prepared audience.

I recommend a beginner to memory management start with Wilson's Uniprocessor Garbage Collection Techniques

ftp://ftp.cs.utexas.edu/pub/garbage/bigsurv.ps

Abstract:

http://www.memorymanagement.org/bib/wil94.html
Not particularly, JIT is based on proper forecasting, something difficult to do with new products (especially form Apple's standpoint). It is more appropriate with established products, which may have spikes in their demand (iPods get bought more during Christmas).
Even if I am not a very avid gamer I am definitely a fan of Nintendo. Super Mario World was one of the first video games I played and the Super Mario video games are some of the best games ever released.
"there is 0 new interesting factual information in that article."

I didn't submit it because it had new interesting factual information, but because of the new interesting analysis of the factual information.

"it's just usual pro-market anti-government"

It is anti-government in the same sense as exposing police corruption is anti-government. This article would be more accurately described as anti-government-stepping-outside-of-its-proper-bounds. You'll notice that the article states that the judgment of Toyota should be "left to the objective assessment of the police and courts." The police and courts are government entities.

Yaron Brook and Don Watkins, the authors of the article, are not a Libertarians. They work for the Ayn Rand Institute, which advocates Ayn Rand's ideas. She had this to say about Libertarians:

"Libertarians are a monstrous, disgusting bunch of people: they plagiarize my ideas when that fits their purpose, and they denounce me in a more vicious manner than any communist publication, when that fits their purpose. They are lower than any pragmatists, and what they hold against Objectivism is morality. They’d like to have an amoral political program."

You can read more here: http://www.aynrand.org/site/PageServer?pagename=education_ca...
My first choice is to find an expert and pick their brain to find the stuff I need to read. I hang out in various irc chatrooms. There are usually one or two experts I can bug for references.

Alternatively, a good way to find authoritative works in a list like this is to read the references at the back of each book. If most of them refer to the same three or four books you'll want to read those first.

You can try looking up the books on wikipedia and seeing what is sad about them.
Given the limits of the iPad (it running a stripped OS), are you at all nervous about the worth of the purchase. I really love the idea, and the OS will make it lightning fast vs a typical computer that you wait for programs to load, but 750 can buy you a great lightweight 13inch laptop, or 2 netbooks with 3g. (I hope this is not insulting at all, I am just interested about the hype)
We are far too willing to dismiss things as mere "personal preference" in this industry. There may be competing theories all supported by some empirical evidence and sound logic, but some claims are directly contradicted by hard data. Those claims are not just a personal preference for the best way to do things. They are measurably, objectively wrong, and failing to say so is just being nice because we don't want to criticise someone.

On the evidence I have found to date, I am coming around to the view that the style of writing many very short functions (say up to 5-6 lines) with little complexity in the logic (say just a single level of nesting) is one approach whose claimed superiority is directly contradicted by empirical data. For example, McConnell discussed the number-of-lines issue in Code Complete years ago, citing multiple studies. Anyone can find still more by investing a few minutes in Google Scholar searches.

Alas, that does not stop bloggers, consultants, trainers and book authors from advocating this programming style, even though it invariably results in the kind of incohesive "spread" that the article mentioned.
What's needed to learn Javascript?
I want to learn Javascript, for standalone purposes, mostly (I'll also be learning PHP/MySQL) -- Is it essential to learn HTML/XHTML etc for this?

If so, does anyone recommend a book that teaches these things, it doesn't have to be a singular book, but perhaps, a number of books that are at the top of your list?

Thanks.

This question is a bit n00bish, so disregard any it if you want.
Here's the TC article from that January delay: http://techcrunch.com/2010/01/23/wakemate-delay/

Have you emailed them? preorder@wakemate.com
JavaScript: The Good Parts
http://oreilly.com/catalog/9780596517748
> The question becomes: when does hiding complexity improve your ability to reason about the code?

How about this: "when the degree of complexity hidden is greater than the extra complexity introduced by the abstraction mechanism"?

Edit: Here's an example to show what I mean. Suppose we have a 2D array representing a matrix of values and we want to print it. We could write an algorithm like this:

function print_matrix =
for each row i
for each column j
print_element i j

Or we could write something like this:

function print_matrix =
for each row i
print_row i

function print_row i =
for each column j
print_element i j

In the second version, we might have shorter functions and less nesting, but we haven't significantly lowered the level of abstraction between one function and the other, so there is little real benefit. On the other hand, we have reduced the cohesion because now the reader must follow the logic through two functions instead of one, and this is bad. There is too much extra complexity created by introducing the second function and not enough hidden complexity because the levels of abstraction aren't much different, so breaking out the inner loop is a bad trade-off that makes it harder to reason about the code.
That's nothing, I understand that a paragliding philosopher has proven that both the original theory and the refutation are immaterial contributions to knowledge under his own theory of scientific progress, to be published soon.
Thanks for the list. Saves me from cluttering HN with a another similar thread. :)
Be sure to read the response from the lead dev of Chef here: http://bitfieldconsulting.com/puppet-vs-chef#comment-19
I'll check it out (note that I know no HTML/CSS) but I do know some C, and a tinsy bit of x86 asm.
I'm reminded of a remark in the book Persian Puzzle:

> We English have had hundreds of years of experience on how to treat the Natives. Socialism is all right back home, but out here, you have to be the master.

http://www.amazon.com/gp/product/0812973364/
I visited their HQ and while it's true that they're not run of the mill office spaces, it's not that big of a deal either. It's old news by now that they have gyms on campus, CS problems in the bathroom stalls, and bright colors everywhere so there's really nothing to be surprised or impressed about. In fact I thought the Yahoo! campus was actually much nicer and better maintained.

The one thing that was awesome at G was the food (free), so if you do manage to get in make sure you eat all you can!
Evernote shares the insider secrets of free apps
I don't know - I love PHP classes but I'd love to see PHP with prototype-style inheritance (if PHP had classes for strings, etc. in respect to basic variable types). I think the "everything is an object" route is great and coupling that with prototypes exemplifies that decision's greatness.

However, I really do think that JavaScript needs all of the great things ECMA 5 displays first and foremost (such as strict mode, getters/setters/enumerable/configurable/writable for property descriptors).

John Resig does an excellent job of summing up ECMA 5 pragmatically (it truly must be great to work on JavaScript stuff as a day job): http://ejohn.org/blog/ecmascript-5-objects-and-properties/
>Huh? If indicators are used to prove life is worse off now in Africa say, then of course indicators can be used to prove life is better now in India.

But technology in general has been improving, so things should be better, all other things being equal. Things may even be better if government is somewhat worse.

But if things have gotten worse, you're really screwing up, so much that technology can't make up for it.

I have no idea how this applies to India, just making a general point.
The Ten Commandments of User Experience (SXSW '10)
If it is then it'd only be a matter of time before someone who had one too many coffees before getting on board sued them for breaching their human rights by not letting them go to the toilet!

You could avoid that by making it a rebate - pay the usual price for the flight, then if you don't use the toilet at all you can claim x back afterwards.
Out of curiosity, do you have another distro that you feel does a better job of this, or do you feel this is simply true for most distros?
Which would have all come to naught if a particle physicist stunt driver crack shot brain surgeon rockstar hadn't saved the world from alien annihilation in the early 80's.

http://www.youtube.com/watch?v=0gNJ1z-ulB4
I think the point is avoiding complexity until absolutely necessary. Splitting code and creating abstractions "because it will make doing X easier in the future" is often the wrong thing to do. The right thing imho is to split it when you need X now, not the future.