skysight-inc/HackerNews huggingface dataset:
Proper branching.

You check it into your branch, share it, code review it, fix it... Then squash the commits if you don't want all the 'mess' in the final repo. Then finally push it into the trunk.

Personally, I've never bothered squashing. The points that you deploy the code are important, but the visual aspect of the history is not so important. On the other hand, if you want to know when and why a change was done, having the FULL history is a lot more important suddenly.
They fixed it, apparently.
For a good resource on MIT hacks that you don't have to buy
http://hacks.mit.edu/

I'll resist the temptation to link to one in particular...
I think that one of the reasons that MongoDB is getting traction is that many people don't use relational databases in a relational way for many projects. Lots of data just isn't as relational as we hope it would be and also people are terrible at modeling data in a relational way.

Relational databases were designed around the idea of minimizing storage footprint, and we have nearly infinite storage capacity relative to many databases, so many devs don't care about only having one copy of a piece of data in the DB.

Also, SQL is great as a data retrieval language, but it is awful for inputting data. Yes, it works, but writing data to MongoDB in general has felt more natural than generating SQL to shotgun in data.

You could argue that ORM's solve a lot of the uglyness of inputting data into a DB and I agree with you, but you still have to deal with table migrations and being able to just add a field in your code and not have to go hold the database's hand or write a migration to make it work is incredibly convenient.

In the end, MongoDB solves a lot of convenience issues for programs that don't need relational data or programmers who don't want to use an ORM, create SQL strings, or write migrations to get their database to store their data.

It's not for everybody, but if it fits your needs, it solves some problems much more conveniently than MySQL.
Learning new languages will become easier over time. Lots of concepts are shared by many languages.

Only paradigm shifts are really difficult. From imperative to functional. From functional to reactive etc. But these are also the more worthwhile experiences, because they broaden your possibilities as programmer.
I love the comment at the end of this article by iangotts [Moderator]

"Normal
is getting dressed in clothes that you buy for work and driving through
traffic in a car that you are still paying for – in order to get to the
job you need to pay for the clothes and the car, and the house you
leave vacant all day so you can afford to live in it." Ellen DeGeneres

The world seems to be full of paradoxes. Entrepreneurship is my answer - I get to wear jeans.
I'm in High School right now (the Irish equivielent anyway).

Last year, I entered a Twitter-related project into a Science competition and I won my category. I've created software ranging from Copyright-protection to http://spreadapp.co.

My point is, there is no limitation to what you can do, the sky is the limit. Think of a cool project you'd like to work on, and make it to the best of your ability, and don't let anybody hold you back. You'll find at the end that you have a great piece of software (or a product) that you can have to show for your work, or sell!

Good luck in the future!
A Google+ extension that tags users mentioned on every page you visit.

https://chrome.google.com/webstore/detail/jdncfcpdfdhodkdlec...
Dont feel too bad. HN has become full of people who believe that the correct response to something they disagree with is to mod down, instead of to reply with a rebuttal. It sucks, but others will mod you up.
Microsoft Wants $15 For Every Android Device Produced By Samsung
I saw that and disagree with him. A lot of people involved in [tech] startups are interested in money. However most, including myself, simply have a passion for building or contributing to something new. It's about learning, exploring and discovering. It is apparent that this guy needed to spend a little more time browsing HN before making this comment.
> but doesn't that bring some logistical challenges? how does the reviewer look at your diffs and code if your changes haven't yet been committed?

The easiest method is just passing around diffs, though more sophisticated tools exist. Review Board is one I know of off-hand, though my experience with it was not overly great. I've personally just tossed together a decent diff-viewer with a couple different view modes to account for when, say, a quick patch is sufficient vs. when you really need to see the code in context.

But this is only one solution of many. I actually have seen solutions that involve source control systems, but I've always found them to be too hacky even for me.
Agreed that low salaries are a disincentive for good engineers to work in science. It's worth noting that even the scientists are paid far less than people with commensurate training and experience in industry.

As for why scientists are more highly valued: they bring in the grants that keep the wheels turning (in academic circles; industry & national labs obviously differ).
La Fuerza Del Destino Capitulo 79 | Ver Triunfo Del Amor Online
RSS Feed of #1 Items on HN
My girlfriend is a PhD student in a pharmacology lab. I'm a software engineer working for an industry leader.

Once, she and the lab tech were having issues with their analysis program for a set of data. It was producing errors randomly for certain inputs, and the data "looked wrong" when it didn't throw an error. I came with her to the lab on a Saturday and looked through the spaghetti code for about 20 minutes. Once I understood what they were trying to do, I noticed that they had forgotten to transpose a matrix at one spot. A simple call to a transposition function fixed everything.

If this had been an issue that wasn't throwing errors, I don't know whether they would have even found the bug. I've been trying to teach my gf a basic understanding of software development from the ground up, and she's getting a lot better. But this does appear to be a systemic problem within the scientific community. As the article notes, more and more complicated programs are needed to perform more detailed analysis than ever before. This problem isn't going to go away, so it's important that scientists realize the shortcoming and take steps to curb it.
> I do not see a wave of Facebook users moving to G+. It just isn't gonna happen.

“We’ve learned and struggled for a few years here figuring out how to make a decent phone,” he said. “PC guys are not going to just figure this out. They’re not going to just walk in.” [1] - Palm CEO Ed Colligan, 2006

[1] http://daringfireball.net/2006/11/colligan_head_stuck
>At Google, no code, for any product, for any project, gets checked in until it gets a positive review.

I can't believe that's true as stated.

I am guessing "No code is put to a branch which is used by others without review or "No code is put into production without review". I can't imagine "You aren't allowed to check in things without getting signoff of others" working period.
Should I actually try this Minecraft thing?

I don't know anything about it, only that it sounds like something that absorbs an unlimited amount of your free time and allows you to implement CPUs, programmable logic, and now 3D printer models.
I'm not sure why it'd be a goal to find a way to do code reviews that doesn't involve version control. We review everything everything before it gets merged into our mainline branch, and the process is pretty much what you described. Every bug/feature gets a branch, and when it's finished whoever's working on it takes a diff and attaches it to the issue in our bug tracker. The reviewers look at the diff (or, if they want more detail, pull the branch in question and look at the commit history with more context) and then pull the author in to discuss it. Every once in a while we consider either some more clever process or some sort of integrated tool to automate more of the process, but we always conclude that what we have works well enough that it's not that big a deal.

If your source control makes branching/merging painful enough that it's going to get in your way to do it on a regular basis you might want something different, but that seems like an argument for better source control rather than a need for clever reviewing strategies.
Scientists drag light by slowing it to speed of sound
Okay, that's more reasonable than "nothing is checked in without a review".
Thanks. Best of luck to you as well!
Build something that makes money from other businesses to get filthy rich.
Tend to disagree - comments are on that topic because of the content of the post.

I'd think the relevance of the venue is determined by the level of comments and votes from the audience, the beauty of social sites. While I agree it doesn't follow the typical content of HN, if the audience up-votes then so be it.
Well… One can look at it this way, but this is mostly Google vs. Facebook. While FB + Skype is important I don't think Apple is really trying to get into social networks with Twitter integration. Honestly, I have no idea why they did it. Google and Facebook make money from advertising, Apple makes money from selling hardware (and a bit from selling content).
Android takes huge lead in US Smartphone market
Always On: Brian X. Chen gives us a glimpse of who we are… | Where Am I?
This is a difficult situation. Is it easier to train the domain experts to be competent programmers or train the competent programmers to be domain experts? In a research environment, I worry there's little time or interest in developing specs that can change in an instant or can't be written until the physics is understood.

We find it quite difficult trying to get programming out of people who don't know why Carbon has 4 bonds while Nitrogen has 3, for example.
For what projects (besides enterprise -> Oracle, embedded -> SQLite and Windows -> SQL server) would you consider MySQL inappropriate? What would you use instead?

I see people angry about not using the "right tool for the job" all the time with regard to web applications. What other tools do you feel aren't used when they should be?
I loved that special HBO special!
Except that Page has been CEO for what, a few months now? I recall reading that Google has been working on Plus for a year.
http://i.imgur.com/HALV8.png
Googlebot evaluates Javascript.
No Problem, thanks :)
I know Apple doesn't publicly like the jailbreak community, but I can't seem to think they don't really mind it (well other than the security egg-on-face).

From a product standpoint, apps are features/content (specifically, multiple thousands of little features) for Apple's devices.

The App Store is the default, curated way to get apps for iOS. However, having Cydia around hardly devalues the App Store or it's apps.

Kind of like Microsoft's (and Adobe's) views on piracy for the expansion and domination of Windows (and Photoshop/CS)...
This happens already with mechanical and electrical engineers in my field (space physics). There are challenges, though: the engineers are paid less than they would earn in industry, and long-term employment is contingent on scientists winning new grants which call for their skills. So, the low value for expertise (in academia) is largely driven by the grant funding system.

I could see a role for staff computer scientists in areas of research where computation plays a particularly large role, but for typical grad-student data munging, the cost/benefit ratio is likely far too high.
I think its important focus on the development of your soft/social skills in addition to your technical skills. The combination of both will help you get far in interviews. Otherwise, if you go the entrepreneurial route, they will help you understand your customer. At the end of the day, we all need to communicate, and ideas tend to be only as valuable as we can communicate them. (this isn't a criticism, you seem to write well!)

Also, have fun with your programming and experiment. Getting experience in fields and languages that you enjoy will enhance your likelihood of finding a job in those areas. The sooner you find your passion, the more experience you can build up before you look for full-time income.
I agree with your first comment: a lot of people suck at creating models that are relational. It's also difficult to use relational data outside of a relational system: when you retrieve it from your RDBMS and get it as, say, a Python dictionary. This is the big problem with using SQL for the web.

However, I disagree with your other statements:

(1) we do not have infinite storage. Most data stores keep everything in RAM, and that is pretty limited.

(2) It's really easy to input data into SQL. There are in fact a bunch of methods to do so (almost all still rely on SQL).

(3) (more of a comment, than disagreement) ORM's don't solve much. They just remove the need for engineering a data access API and trade it for performance and cleanliness of code.
the black hole entropy

http://en.wikipedia.org/wiki/Black_hole_thermodynamics#Black...

clearly points to some factorization of physically possible 3d volume structures to closed 2d boundary of it. The reverse relation isn't even proven to be 1:1, thus it can't even remotely be called a projection. Ok, lets suppose it is 1:1 and call the reverse a "projection". Still, any narrow/specific interpretation of that factorization relationship and its reverse, like for example the Holographic Universe's projection in any geometrical/group theory quasi-straightforward sense, just doesn't have any basis for it (ie. there is no any known reason to favor any given interpretation over any other yet). Thus it is no surprise that the experimental data doesn't support and contradict that given interpretation.
The first company I worked for had mandatory code reviews, I was on a team of about 20 other programmers and I thought it was a great system.

Then I went and worked for a startup video game company, the programming team was myself and one of my friends from college. We decided not to do code reviews because we were building a game engine from scratch and the churn was going to be way too high to keep up with.

You can claim that code reviews are fast, but when you're generating a couple hundred new lines of code a day that really builds up. Especially when each person is committing 5-10 times a day.

What we decided to do instead is go down to the coffee shop below our office every day and just talk about what we were working on, the problems we had run into, and what should be worked on next. As a result, we still had a lot of knowledge sharing going on without having to look at every single line of code going into the codebase.

Having a general idea of how the systems are being built and put together is _much much_ more important than going over every line of code looking for bugs.

My point, is that the knowledge sharing is what's important. We could have done code reviews, but it was actually a lot easier to just talk to each other for an hour or so a day away from the computers about the state of the project. As a hidden bonus, we also got fresh perspective on implementation ideas before any work was done, which I imagine saved countless hours.

This sort of thing is probably less feasible at larger companies, so maybe code reviews are the best way to share knowledge there, but if you're under 3-4 people I'd definitely try this approach instead.
The conclusion is that there is no overlap? To paraphrase "A Princess Bride":

You keep saying "It's No Contest." I don't think it means what you think it means.
That's a part of the beauty of GitHub: pull requests.
I didn't particulary get into any of the two, but if you like algorithmics you should check out Topcoder and http://ioinformatics.org.

Topcoder is full of highschoolers or young undergraduates. IOI is specially targeted towards them, though I think you need sponsorship from your educational institution to participate.

Faring well in any of the two is something cool to add to your CV, and is highly valued by many firms in Silicon Valley.
I have a client synchronization utility that uses MongoDB instead of SQLite because it's lightweight but I have all ease of use of MongoDB. Install it as a windows service with our installer and we are good to go.

And in this context, MySql would be way to heavy.
Playing chess on a microcontroller
This is why I think, rather than every data analysis/visualization program being written from scratch with it's own custom UI and I/O, formatting etc, these programs should be written as modules to a data workflow program like RapidMiner that handles all that for you.
My feeling is that a one-semester required course for students in "software carpentry" [1] (as developed by Greg Wilson and discussed in the article) would cure many of the most serious ills in scientific software development. Students can't know they should be using version control, debuggers, and testing if they don't even know such things exist.

[1] http://software-carpentry.org/
You can always commit it to your home share but no, at Google all code that is checked in to version control must be reviewed, period.
Integrate An Ubuntu 10.04 Server Into A Windows 2008 Active Directory Domain
Very interesting to see the detailed stats on the impact this had.

I'm hopeful we get to see the follow-up post soon: "Being frontpaged on Hacker News"
That's possible. I have a friend who works in the university aerospace lab that can read and write C and Matlab. His major contribution is being able to both understand the engineering and write code to manipulate it, and it's basically guaranteed himself a position there. He may not be valued quite as much as the PI or one of the other professors, but he's pretty solid.

I'd also cite myself, but I don't count since I'm in a robotics lab.
Wait, does Frommer have actual tech skills to build an app? Or this mysterious cooking project...
When will Skype&rsquo;s Users Stop Being Skype&rsquo;s Customers?
This article smells strongly of ad hominem attack. The professor who "hasn’t walked in the shoes of application programmers" is, of course, Doug Lea, the driving force behind the current java.util.concurrent package. The performance comparison smells of cherry-picking: parallel add over a Long array, really? The complexity criticism sounds a bit like "I don't understand this code! It must be bad!" He accuses the code of bit-twiddling. Oh my.
I did this recently. I ended up using lesscss for the gory details:

@space: 10px;
@block: 60px;
.block-width ( @blocks ) { width: (@block * @blocks) + ((@blocks - 1) * (@space * 2) ); }

I consider this to be the canonical piece on grid-based design:

http://www.slideshare.net/riomusi/grids-are-good-2593754
Unfortunately, coming from Google he had some very neat tools to help do this that (as far as I know) don't have equivalent counterparts outside Google. It would be harder to do, but distributed version control could help considerably. One possibility would be to make everyone commit to their own local repos and then force a pull request every time they want to commit something to the main repo.
you should be branching for every bugfix, then when you have fixed the bug and the code passes all known tests + the one for the bug, you should merge it back squashing the branch commit history with a single merge (where you add your own comments instead of just using 'merged in blah blah'.
If that's a criteria for you when looking for an employer, then that's your choice, but I personally would never expect such a thing.

The last time I had to interview (being an engineer), I was sent 7 resumes on a Monday for interviews being conducted on a Wednesday. I checked out any links they put on their resume, apps in the appstore, etc. If they did not feel they could be bothered to tell me about something, then it will remain a mystery to me.
Incorporate the ability and require the usage of units! Problem partially solved :-)
MySpace, Skype announce partnership (2007)
Rather than building these data analysis/visualization programs from scratch each time, my thought is that scientists should instead be writing them as modules for a data workflow application like RapidMiner.

If you haven't heard of RapidMiner, you basically edit a flowchart where each step takes inputs and outputs, eg take some data and make a histogram, or perform a clustering analysis.

Video of someone demoing it:
http://www.youtube.com/watch?v=TNESlvXp47E

This way, the scientists can focus on the algorithms and not have to worry about all the other details of creating useable, maintainable software.
The trouble with this strategy is that it's really just cronyism - employing your friends and relations - rather than trying to do a less heavily biased search for the best candidate. Resumes/CVs, imperfect though they are, at least represent a sort of level playing field, whereas employing your friends via opaque methods is blatantly cronyistic.
The inverse can be seen with Kinect: http://www.youtube.com/watch?v=x2mCDkqXki0

You can have your own cat walking through your minecraft world.
This is fascinating. The properties of light are proven to be either a particle or a wave. It is a particle only when it is observed. There is also reason to believe that light exists in multiple dimensions at the same time. Example: If Person A is stationary, holding a flash light down a road And person B is in a car traveling down the road in the same direction at 100 mph, also holding a flash light straight ahead. Which beam of light is moving faster?

One would figure that the light coming from the flashlight in the car would be 100 mph more than that speed of light coming from the stationary flash light. But the light from both flashlights will be calculated to be exactly the same. How does one explain that?
What is Rack? An Introduction in Code
Microsoft To Pay The University Of Nebraska To Switch To Office 365
No, I didn't quite understand that model. So if there is any large-scale physical production, say printing books or burning CD's, that will be handled by third parties and the artist won't have anything to do with it? And people who want the physical form will have to pay two parties?

Whats wrong about paying two parties? Actually, most people would never pay the first party, because the work is already released. And the profit margin for the second party (publisher) would be small at best. First, because there will be a lot of competition and second because information delivery is almost free today.

Why burn CD's in 2011? Download the mp3's and play them wherever you want. Since I have a Kindle, I don't really want printed books anymore either. I also printed a lot of free books at the local copy shop in the past.

The problem with trust, I believe is not a bigger one than it is today. It should actually be smaller. Where is the problem if I paid someone over kickstarter.com to do XYZ and then XYZ gets published by some bad guy earlier than planed?
_If getting a site down-ranked was as easy as linking TO them from a bad neighborhood, black-hat SEO would be all over it_

it has happened and it can work (but not always)
there's not nearly enough open source academic projects, nor is there any sort of pervasive culture that encourages one.. besides the litany of examples that could be put together to show that open source + academia does exist and does work, I've read way too many computational physics or computational chemistry or computational anything academic papers that simply do not publish source code, and imo there's no good excuse for it, other than the usual, funding, or copyright / university IP
Look at the domain. If I'm downloading jQuery, it should be jquery.com. If I'm not sure what the domain should be, try to get it from someone I do trust, like the Google-hosted libraries[1]. If it's from GitHub or BitBucket, try to make sure the person who owns the repo is actually the one maintaining it (so I don't get a broken copy or one with something "extra"). It's all mostly just common sense and a little bit of extra scrutiny.

[1] http://code.google.com/apis/libraries/devguide.html