Ask PG: Any plans on updating the RFS? - <AUTHOR>

The Request for Startups is now over two years old. The times were a bit different in the startup world then, and since then there was a large number of startups going through YC, probably some of them addressed the topics presented there. Do you think it might be necessary to update it? <comment><USER2> +1

<comment><USER2> But then I am sure they are getting enough without needing to make suggestions</comment></comment>


All top-selling cars break emissions limits in 'real world' tests - <AUTHOR> http://www.theguardian.com/business/2016/apr/21/all-top-selling-cars-break-emissions-limits-in-real-world-tests <comment><USER2> This HN headline should be changed to "All top-selling diesel cars break..." as it is misleading. The Guardian article and the testing results it reports on are specifically related to diesel cars only.

Combine these results with the VW scandal and it's hard to see how the production of diesel passenger vehicles will continue for much longer, even in Europe, if these are the best real-world results that car manufacturers can achieve. The average emissions of NOx from these diesel vehicles were over five times the new Euro 6 legal limit.

</comment><comment><USER3> Goodhart's law in action. Diesel engines get scored based on their performance in very specific circumstances, so they get built to score well in those specific circumstances.</comment>


Azure Stack – Azure On-Premises - <AUTHOR> https://azure.microsoft.com/en-us/overview/azure-stack/ <comment><USER3> This has been a recurring topic (with rebranding) for a while now. Has the pricing been released?

I heard that they moved from supporting any hardware to just a select few certified (expensive) vendors. Is that true?

<comment><USER4> In the whitepaper it references three vendors that will offer this- Dell EMC, HPE, and Lenovo.

</comment></comment><comment><USER5> I am using GCP and I am loving the ease of using GCP. I am wondering would Google consider to do something like this because some of my clients have 'hard' requirements such as they have to own/manage the data centre which stores their data.

<comment><USER6> GCP is such a dream. I love using it. Azure's a mess.

Here's a lovely thing that happened. I wanted to figure out how much space my containers take in Azure storage. Once a day, MS will calc the total for billing purposes, but at the storage account level. There's no documented way to do this for individual containers than to enumerate every single file and sum it up.

Well, in the Azure portal, if you hit properties on a container, hey, it shows you the count and filesize. Neato! Obviously MS is aware and slipped in this functionality into the UI at least. So I check a few containers, it works. I try it on another container and it takes a bit of time. I tab away and do some other stuff. Then I get a text about my mobile data usage limit.

Turns out the Azure client portal, when you click properties, with no indication it's doing this, will page through all your files and sum them. By making requests for 2.5MB of XML metadata at a time.

Everything is just so clunky with Azure. GCP is the opposite, and I'm no fan of Google.

<comment><USER7> I've had exactly the same experience with Azure and GCP. Started out with Azure and got so fed up with the crazy interface that I switched to GCP and have been consistently impressed with the attention to detail - <USER2> with the tools they provide in the browser.

<comment><USER8> google cloud astroturfing the worst part of hn imo.

<comment><USER9> I'm not so sure it's astroturfing in this case... I haven't done much with GCE, but the UX does seem to be better than AWS and Azure. AWS is just horrible, and some of the defaults while more secure make less sense often enough. Azure seems to have similar options, with a less horrible UX, but still not great.

Though if you're using Ansible or another management system that's scripted over the top, it makes less of a difference. I will say that some of the hosted services (data in particular), Azure is really nice... Azure Storage Queues/Tables are solid and Azure SQL is easiest to get a grasp on setup/cost of the three.

That said Google Cloud is better in terms of compute with docker containers.

</comment></comment></comment></comment></comment><comment><USER10> As I wrote a few months ago [1], I believe that the only way for "public cloud" companies to keep growing is to enter the "private" IT market with a "cloud in a box" appliance. Azure is well positioned to do this properly; AWS is of course still holding a leadership position.

[1]: [https://medium.com/simone-brunozzi/the-cloud-wars- of-2017-ac...](https://medium.com/simone-brunozzi/the-cloud-wars- of-2017-ac9f352911a2)

</comment><comment><USER4> So many enterprises are going to go after this because of pre-existing relationships with Microsoft... not realizing how badly Microsoft is going to have them over a barrel when all of their software (on-prem and cloud) is built and automated to only work with Azure.

Edit: Not sure why the downvotes, would love to hear other perspectives about why I'm off-base. Thanks!

<comment><USER11> Microsoft's social voting brigade is out in force today because of Microsoft's annual convention thing.

Today HN is a safe space for Microsoft supporters.

<comment><USER12> Many of us do not hide our identities the way you feel compelled to, and do not dismiss Microsoft out of hand because it was cool to do so when we were in our teens.

You–on the other hand–are so confident in your opinion that you have made an incendiary shell of an account to troll people.

If anyone's on the take, it's you.

</comment></comment></comment><comment><USER11> Regardless of my username, I really like this product. Microsoft is the first to do it and (I assume) it works seamlessly with Azure.

Microsoft is certainly ahead of the pack with this product.</comment>


Harvard: The Class of 2013 Senior Survey - <AUTHOR> http://www.thecrimson.com/article/2013/5/28/senior-survey-2013/?page=1

<comment><USER2> I was going to comment on how only 5% of the class sees a permanent future in the finance industry while 20% of the class sees a long term career in health/medicine, and how it reflects the perceived attractiveness of the various industries as our population ages and finance is increasingly bound up by legislation.

But then I saw this:

 _39 percent of respondents said they sought some form of mental health care during their time at Harvard._

A culture and society that coerces its most potent individuals to develop depression and other mental issues is one that we cannot by any means be proud of. While I technically didn't seek mental health care during my college years, I should have by all means. During those four years, one friend visibly broke down and took a leave of absence for a year. Another committed suicide using cyanide from her lab. I can't imagine things are any better at my alma mater both compared to my years of attendance and compared to Harvard today.

I really wish I could even have _hope_ that things are getting better.

<comment><USER3> > finance is increasingly bound up by legislation.

The health care industry is also bound up by legislation. The difference is that the legislation is in the favor of those who pursue a career in the industry.

</comment></comment><comment><USER4> I find it really interesting that 11.1% of men identify as gay coming out of college, yet only 1.7% of women do. Those numbers are respectively higher and lower than I would expect. It really speaks to the differences between male and female sexuality, even outside of "normal" heterosexual identity. Any thoughts as to why these numbers are so different? Is our conception of sexual orientation fundamental or just a social construction? I'm endlessly fascinated by these questions. There's so much we don't understand, complicated by politics of heteronormativity and equality. Wikipedia has an interesting article here: [http://en.wikipedia.org/wiki/Demographics_of_sexual_orientat...](http://en.wikipedia.org/wiki/Demographics_of_sexual_orientation)

</comment><comment><USER5> Ivy league students, on average, come from wealthier families than those attending other universities. Even ivy league students from poor backgrounds are likely under higher pressure to succeed than similar students going to other universities. The result is a stronger than average motivation to cheat and a stronger ability to cheat (e.g. Ghost writers do cost money). Couple this with a higher probability of litigation when students are punished/expelled, which causes Harvard to typically go easy on cheaters, and it's no surprise that cheating is more common at Harvard.

The question for HN employers is whether or not this should impact the value of an Ivy League degree.

</comment><comment><USER6> The cheating statistics really don't surprise me. In fact, I think they are underestimated, understandable considering some students may fear that their answers could be held against them despite being assured it won't.

"Why is this on HN?" Well I think the cheating part has a some transferrable takeaways, the main one being online education. Online education is much like Harvard's honor system in that every assignment, quiz, and test can be completed on your own time (at least that's what I hear Harvard's policies are) and just have to be turned in by a certain date. But what you do to finish in that time is totally unknown to the administrators. Personally, I think it is the biggest obstacle for online education and this so-called Honor system. When there are people who want to succeed, and in class succeeding is generally represented by high grades, they will do whatever it takes and if using external resources is the way, why wouldn't they if no one is going to stop them? Not saying this is everyones mentality, but it obviously exists in many intelligent brains.

The problem is outlined and has been for a while...the solution will have to be amazing.

</comment><comment><USER7> These are the people being groomed to make decisions that affect our world? Terrifying.

</comment><comment><USER8> Why is this on HN? I'm not seeing it.

<comment><USER9> Admittedly, it might not coincide with the ostensible subject matter of HN (other than it being tangentially related to statistical analysis and the technology sector), but evidently, a nontrivial number of people see value in reading it. The entire point of HN is that is to organically select superior content. Differentiation and evaluation shouldn't happen before posting, it should happen afterwards and be conducted by the community.

The whole point of HN is that nothing has to be strictly topical. Everyone is free to throw whatever the fuck they want into it, and the readership will identify and promote the best content.

<comment><USER8> ...or to put it another way: "Lets see if this shit sticks"</comment></comment></comment>


7 Tips for Amateur Type Designers - <AUTHOR> http://sethgodin.typepad.com/seths_blog/2008/06/7-tips-for-amat.html

<comment><USER2> As a designer, I take issue with a couple of these , but all in all a good read.</comment>


Show HN: Coffee Meets Bagel for Recruiting - <AUTHOR> http://www.overcoffee.co

<comment><USER2> I just signed up.

Initial thoughts: good name, "over coffee" strikes the right no-nonsense note of simplicity. But after signing up and seeing the confirmation "We are brewing up an opportunity for you right now", I still don't know what this does. Oh, I can guess what it does, but you need to let people know what they're signing up for on the landing page.

EDIT: The confirmation email reads as follows:

 _Welcome to Over Coffee!

We are percolating your profile through our filters. We will contact you with a slow drip of job listings once we have the grounds.

Thanks for signing up!

Ran, Darren & Doug

Your Over Coffee Jobristas_

Better, but still doesn't tell me what I'm getting.

</comment><comment><USER3> Looks like an interesting service. The space could definitely use some help.

But I was a bit put off by the notion of meeting a recruiter over coffee (or lunch based on the photos?). The only person I'd meet for coffee would be a founder or employee.

I might not be the target demographic here but it just felt a bit invasive...which is part of the problem with recruiting to begin with.

<comment><USER4> I think "Over Coffee" is just the name. Idea would be that if there's mutual interest you start talking over email, then can go further or not as you'd like

</comment></comment><comment><USER5> Uh, dammit.

I signed up and then realized I hadn't updated my LinkedIn profile in a long, long time. How much will this affect the results?

To be honest, I am quite a lowly foot-soldier in terms of work-experience and, therefore, not expecting too much. Just curious to see how this space develops.

<comment><AUTHOR> Not a problem, just make sure to update your skills and you'll be good.

<comment><USER5> Ah, okay. Thanks for the prompt response. Good luck!

</comment></comment></comment><comment><USER6> Getting a 502 "Bad Gateway" when I click the "LinkedIn" link!

Curious: is there a fee? I don't see any pricing!

<comment><AUTHOR> Try again, hopefully I fixed it. There is no fee.

</comment></comment><comment><USER7> Why restrict to developers only?

<comment><AUTHOR> We're just targeting that market to start.

</comment></comment><comment><USER8> how do we signup to be a company looking to recruit?

<comment><AUTHOR> We will eventually have a signup page, but for now you can send me an email. firstname.lastname@example.com</comment></comment>


Ask HN: Are top developers just guessing? - <AUTHOR> Ask HN: I graduated with my undergraduate CS degree about a year ago and landed a job with a mid-sized company that provides engineering services.  While attending school I came to believe that top developers are people interested in learning everything they can about development - and I liked the idea of working with such people.  However, the reality that I've experienced is that the developers most willing to guess about how code works, copy and paste googled code, and push others to feed them answers instead of doing research on their own are considered to be the top developers because they 'get things done'.  Has anyone else experienced this?  If I want to succeed, do I need to stop caring about solving problems and start caring about getting as many lines of code out the door as I can?  Is it like this everywhere?  I've hit some real lows during the last year because of this attitude so any feedback is be appreciated. <comment><USER3> It sounds like you're posting here in hopes that someone will affirm your suspicions and tell you that top devs are just luckier or play looser with the rules and overstate what they can do.

I'm not sure whom you've seen that you're referring to, but the top devs that I know are nothing like what you describe. To me, the defining characteristic of a top dev (though I will not go off on a tirade here, and so I will keep this short and sweet) is that they understand the systems they are building on and the problems that they are trying to solve.

Being a developer is NOT about the code, it's about how you come up with what you come up with and the strategy and approach you take to solve a problem. Computer Science is about algorithms, but software development is about coming up with solutions to the problems presented. You can't solve a problem - <USER2> matter how well you can "code" \- if you don't understand the problem. And the better you understand the problem, the better of a solution you'll be able to come up with.

I've seen top devs that copy and paste code from StackOverflow and they get the accolades and the resounding praise. And they earned every bit of it. Why? Because it's not about the code snippet they copied from SO to convert a byte array to hex representation or to neatly serialize an object and transmit it, encrypted, over the wire to a remote server. It's about knowing what the code should do in the first place.

It's not about lines of code, it's about what that code does. A CS degree does not teach you to engineer software, it teaches you to write algorithms.

</comment><comment><USER4> > they 'get things done

Yes, that's the trick.

> guess about how code works

That's not a bad thing per se. Time spent vs. accuracy is a compromise. You need to figure out what is the optimal depth of understanding you need to achieve to get the task done.

> copy and paste googled code

Sure, funderstanding code is usually much easier than writing it, so if you find something on SO that does exactly what you need then yes, just paste it.

> If I want to succeed, do I need to stop caring about solving problems and > start caring about getting as many lines of code out the door as I can?

No, not at all. You should care about solving problems, but the problems you're trying to solve should more or less overlap with your employer's problems. If you are developing a trading system where the expected throughput is 10 trades/sec, then designing something that can cope with 1000 trades/sec might be interesting but it is not your job. If you need to fix some bug in 20 minutes because many things (money, reputation, etc.) depend on it, then yes, it might be just fine to guess, hack together something and fix it later properly instead of spending a couple of days on the 'correct' solution meanwhile the company is collapsing around you.

In short: what you do is part of a larger context, you need to align your priorities with that.

<comment><USER5> > if you find something on SO that does exactly what you need then yes, just > paste it.

I think you should be very careful about doing this without an explicitly stated license with reasonable proof of author copyright for the code snippet. It's one of the things that can easily compromise the legal security of a codebase.

<comment><USER6> Is there not a blanket/implicit release of claim that goes along with posting code on SO?

When I copy code verbatim from SO or another "help" site, I generally put a comment right above that chunk of code, something like:

      /* See: http://stackoverflow.com/a/xxxxxxxxxxx */

Don't know if that's enough to protect against any ownership claims though.

<comment><USER7> I think this is helpful more in helping future developers reading the code have more context about what the code is, why it's there, and where it came from, rather than anything to do with ownership claims.

Often times code taken from SO solves the problem but noticeably is structured differently from the rest of the codebase--often with good reason--and this helps the new dev go look back at the SO conversation and see what problems this is solving / if it can be removed.

</comment></comment></comment></comment><comment><USER8> The word you're looking for is 'resourceful' and, yes, the top developers are resourceful.

No one knows everything. Not even close. If that is what you are looking for, some Godlike mastery of the esoteric, you are in the wrong field.

If you are willing to be resourceful which means dealing with the inherently messy business of solving Real Problems blinds and dead ends the occasional short cut and all, well, welcome! This is chaotic, but we love it!

Writing beautiful code is important mostly because, in the long run, it saves time and effort. But the perfect is often the enemy of the good. All of the beautiful code in the world is worth nothing if it doesn't solve somebody's problem and, usually, sooner is far better than later. If that bothers you, there is always academia.

What separates the masters from the cut-and-paste programmers churning out garbage is knowing when it is ok to take shortcuts and when it pays to take due care.

<comment><USER9> academia is extremely prototype oriented so it might even be worse than industry in this regard, fyi.

<comment><USER6> I have some experience in academia and I mostly see the extremes: either blatant wholesale copy/paste as much as possible, or an extreme "not invented here" attitude, refusal to use existing solutions, a sentiment that everyone else's code is useless crap, and a lot of reinvented wheels.

</comment></comment></comment><comment><USER10> It sounds like you only have a sample set of developers at one company, perhaps being evaluated through the lens of some personal bitterness. It's possible that you may be simply experiencing a case of an organization that uses bad metrics to reward developers: measuring productivity by LoC is basically an industry joke, but still occurs. Other nearly-as-bad metrics like "tickets closed" are common. It may also be a cultural thing at your particular organization, or a reflection on the particular task. What's the use for this code? What is its expected time-in-service? Is this experimental or production code? Is this boilerplate code for an uninteresting problem long solved? Sometimes a mark of a good developer is to know what to spend valuable time on and what not to (as in the problem of premature optimization.) Finally, it's not necessarily a bad habit to ask someone you know has the answer rather than research it yourself, especially if the problem is unimportant/uninteresting/not your area of expertise.

</comment><comment><USER11> There is some truth in there... Too many cargo cult devs out there: [http://en.wikipedia.org/wiki/Cargo_cult_programming](http://en.wikipedia.org/wiki/Cargo_cult_programming)

But to answer your question: It depends on the business you're in and the dev culture your company established.

In the most consulting shops or early stage startups I've seen the situation that you're describing. Cranking out code because visible features / products is the only thing a customer cares about.

But in companies that build a sustainable product that needs to scale things are different. They embrace good architecture TDD/BDD. They embrace time for refactoring. Maybe you should switch your job :-)

</comment><comment><USER12> You're asking a community full of people who consider themselves to be "top" developers whether there's room for criticism of top developers. Even if your observations were right (and I have no idea if they are or not), that's not likely to be a very productive conversation.

Don't focus so much on competing with other people. If you want to succeed, then keep improving your own skills and approach. It doesn't necessarily need to be the same skills and approach as other people, it just needs to work for you. If taking the time to study or read books and develop sharp expertise in particular technologies is important to you, then keep doing that. Someone, somewhere, will need your skills, and then you'll be the guy that knows X better than anybody else.

Think of it like dating, yeah? You look around and think, "wow, everyone likes guys with hair gel, I guess I need to use hair gel too", but it's a big world, and there are lots of people that think hair gel is gross. Maybe instead you practice having a great smile or being friendly, and that gets you happiness instead of hair gel.

Maybe you've hit real lows because you've been comparing what you do to what other people do and then deciding that what you do sucks because they get attention and you don't, so to defend what you want to do you're trying to convince yourself that what they do actually sucks.

But none of that actually matters. It doesn't get you any closer to happiness. Just do your thing and do it well.

<comment><USER13> Think there's a massive population of people on HN who either aren't developers at all or who are aspiring developers looking to get better. There's a lot of top devs on here to be sure but I would handily bet you the ratio is at _least_ 2:1 (not top):(top).

</comment></comment><comment><USER14> As others have indicated, you're presenting a false choice. Surely, "solving problems" and "getting..code out the door" are the same thing.

Top developers are identified as such because they are getting results, by which we mean "decent or better, properly working software".

That's it. No conspiracy, just results.

</comment><comment><USER15> Two options. 1) My guess is these people care as much about problem solving as yourself, but their problem is bigger than the code they are copying and pasting. So it appears as if they don't care, but they just care about something else. Lazy makers/coders often worry about the final solution and reflection time rather than how every line of code works. 2) they suck. which happens, fuck 'em they'll be gone eventually when they can't cut it.

The ultimate answer to your question is to stop looking at the people you don't like wondering why they are the way they are. Find the inspiring people, even if they are few and far between, and latch on to them.

</comment><comment><USER16> Your looking at to low a level. Nobody can google how to solve the problems people actually care about. What people find online is basically just the manual that nobody writes anymore.

I suggest you pick a relevant book to read every month on your own time. But, while your working is generally not the time to be doing that kind of learning.

</comment><comment><USER17> I used to work at Google, with some of whom many here would consider the "top developers". I can assure you that they didn't copy and paste googled code. ;-) You haven't worked the best developers yet. If doing so is important to you, focus on improving your skills and find a better job.

<comment><USER18> Wow its really nice to hear from google level developers. Could you please tell what would they do as opposed to copying some function which is readily available from SO. May be google engineers never use SO except for Jon Skeet :)

</comment></comment><comment><USER19> I'm a "Senior Architect" at my company which involves various daily responsibilities (sometimes coding, sometimes scrum master, sometimes client meetings) but ultimately I'm accountable for delivering the final product. The ultimate driver is always to finish the project moreso than to do something cool and find the ultimate gleaming elegant solution. It's almost always best to choose a approach quickly rather than spend weeks and weeks evaluating. Secondly, choosing a cutting edge technology or really anything you're unfamiliar with is a major risk that your timeline probably can't absorb. I don't have all the answers. In fact, I'm probably pretty behind at this point because I'm lucky to spend half my time looking at code. If the youngsters on my team have some new approach that they think will work and can convince me, I will definitely accept it. In fact, there are devs on my team successfully executing with a framework I still haven't bothered to learn. They're cranking it out with excellent results so I'm happy to leave them to it.

</comment><comment><USER20> It doesn't sound like you're describing top developers. Instead, you're describing really good script kiddies. The top developers are great problem solvers and, in my experience, are really good at remembering details and knowing when to apply those details.

Getting things done is huge, but grace takes a little more than the "get things done" mindset. Being a top developer is being a really good painter. Anyone can paint by numbers or look at a painting of a rainbow and take lots of time to copy it. But, not just anyone can paint the same rainbow without any such guidance. Both types of painters come out with the same result, but one did it employing techniques that may have been hard to come by and can't be taught. The painter who doesn't need said guidance is probably more valuable than their counterpart because the painter needs the least resources.

</comment><comment><USER21> I have found that the best developers try to understand the code they write, even if it is only after writing a guess at the solution after Googling for the answer or a hint of one. I have found it supremely important to understand what you are modifying because otherwise you are throwing darts at the wall blindfolded.

You absolutely can care exclusively about getting out as much LOC as possible, but it is the wrong thing to care about if you want to improve as a developer & be more efficient in the future. If you are able to generally solve problems well, what happens is that as you work at them more, you become more efficient at solving them quickly and you write more valuable, difficult code quickly.

If I had to recommend courses of action to improve, it would be to work on solving difficult problems, and to keep practicing your craft. Don't worry about what others around you are doing.

</comment><comment><USER22> > developers most willing to guess about how code works, copy and paste > googled code, and push others to feed them answers instead of doing research > on their own are considered to be the top developers because they 'get > things done'.

My guess would be that they're able to abstract out and isolate functionality they don't need to fully understand to work on the core code they need to write to get the job done.

In modern systems there are so many frameworks, libraries, platforms etc. that if you try to gain a detailed understanding of them all you don't get anything done.

The core skill in modern engineering is knowing how to proceed with incomplete knowledge.

</comment><comment><USER23> There's a balance here. On the one hand, you have to have the ability to figure things out on your own when nobody knows the answer; sometimes you _do_ need to read through a pile of undocumented "legacy" code and puzzle out what it does. On the other hand, no one person can know every last detail of a twenty-million-line codebase; you're going to have to be willing to work on codebases you don't fully understand, and do the best you can with what you know. That doesn't mean people working on such a codebase are not "interested in learning everything they can about development", or not "caring about solving problems". However, there's a balance; you can't be so busy learning that you never take the time to apply what you've learned; knowledge.

You _definitely_ shouldn't be focused on "getting as many lines of code out the door as [you] can"; if you think that's what your employer and co-workers expect, then either you aren't interpreting it correctly, or you need a new employer and co-workers. However, you _should_ be focused on being as productive as you can. Develop a reputation as being the developer who almost always knows the answer to whatever crazy question their co-workers have, or who knows a little something about almost everything; those people are invaluable in an organization. And in the meantime, don't forget to actually write code.

</comment><comment><USER24> There is nothing wrong with you. You are working with the wrong people.

</comment><comment><USER25> I came to think that many, many times deep understanding an elegant, well crafted solution are just an exercise of style, not really needed, and not actually needed (often a waste of time).

And __DON'T__ get me wrong on this: I _love_ understanding how things work and write beautiful code.

The thing is: you're working for a company, and let's say you're using $language and $framework. You have the deadline in a month (or two months, or n months).

You come across a problem. And here the kind of company you're working for makes the difference.

If you're working for a small or medium sized company, maybe it's just better to google an answer and do some copy-paste from stack overflow. Small-sized companies have more interest in getting things done than anything else. Typically.

If otherwise you're working for a big company, you're developing code which will be used by thousands (millions?) of users and your company has (or wants to establish) a role in the open source industry, then you sit down and examine the bug, you examine the stack traces, you fix it, and maybe submit a patch. Not only that, you also want to make your code as fast as it can possibly be. Because saving 2% execution time on two servers may not be that interesting if you have to spend three weeks, but saving execution time on 300 or 400 servers (or more)... Well, that matters.

As many other said, it's all about compromise.

You may want to consider applying for a position to $big_company.

</comment><comment><USER26> It depends a lot on management and culture.

One of the best developers we had at my first company was a guy who could literally "fix" almost anything. If the dam was leaking and the village was threatened he could come over and stick his fingers in the holes and save the village in no time.

But someone had to come by afterwords and fix the dam properly.

Was he awesome? No question! Were we all glad and grateful that he was part of the team? Yep, everybody loved him (well, he was an awesome guy as a person too). He saved projects in trouble, solved customer emergency bugs etc. But we had a bunch of developers who kept up with the literature, could conceptualize solutions to complex problems, work together to get crazy-hard problems done, and they were clearly the "top developers".

Some management only appreciates the short term, and for them the "copy and paste googled code" guys are the best.

BTW there's nothing wrong with looking up a solution in Google. But consider it like the kitchen: when I am making a dish I often look up several recipes or techniques, then use the tools and materials I have at hand to make a meal. The more understanding and experience you have, the more value you get out of looking things up (and the less often you end up doing it).

</comment><comment><USER27> I had an interesting conversation with a developer on another team a while back.

The team had a client that wanted them all to cross-train to do both web and droid development. The developer thought this was horrible. We have developers here that have decided they want to become an expert in Java. So why should they be asked to do web development? Or droid? Shouldn't the client just add to the team?

As sz4kerto points out in another comment, the problem here is that people tend to define the problem in their own personal terms instead of the larger context. The larger context here was: The client has money. They are willing to train you to learn all kinds of cool stuff. In return, they want to share with you the larger business problem in hopes you can help them solve it.

Thinking in terms of the technology (or solving some technical problem) really misses the boat with what goes on in a lot of development teams. The "people part" of development is far more important than anything else. Find out what sort of people problems you are being paid to solve. Focus on that (while doing a good job technically, of course).

</comment><comment><USER28> Giving you advice about being a programmer is like giving career advice to an actor, musician, writer or other creative person.

That is, there are many ways you can be successful as a programmer and that different workplaces have different attitudes about what a good programmer is.

For instance, sometimes the best way to learn something, be you working on Greenfield or legacy code is to think about it a bit, make an informed guess about what to do next and do it.

You can answer surprisingly many questions in a technical job interview with "look it up in a hash table" and "look it up in the literature." Any research project starts with a literature review, so there is no problem at looking at what other people of done. In fact, sometimes I hit a StackOverflow page where I get to choose between 10 or 20 options, some with a good explanation of the theory.

Similarly there is nothing wrong with getting help from other programmers. If somebody can tell you in five minutes what would take you five hours to do on your own, you vastly increase your value and productivity by reaching out.

</comment><comment><USER29> You're looking at the top of the bottom -- at the people who excel at programming tasks so undemanding that they can be solved largely by copying code from the internet and modifying it slightly.

Now imagine one of these "top programmers" trying to write something like -- and I'm pulling this out of a hat -- Redis. It's a database that stores the entire dataset in memory, has a handful of useful data structures (e.g. lists, sets), and lets you do a bunch of operations on them via a network. It supports master-slave replication. It can persist to disk either by periodically flushing the current state or by writing a log of all commands. It can handle very large numbers of open connections. It's extremely fast, and widely used. Can you imagine the looks of frustration on your colleagues' faces when they try to google how to make something like that, and their searches fail to produce usable code? Not all problems are like this, but many are.

Real top programmers tend to wind up with tasks that they can't just google. Don't lose hope!

</comment><comment><USER30> Programming isn't computer science, so that can be misleading coming from that into programming/software engineering.

Also, programmers may write a blog article that represents a perfectly crafted solution and present it as the norm even though they really have to settle for hacks in their day job.

And people will often present themselves as being experts in a subject when in reality they just found out the technology existed two days ago. No one can be an expert on every new system or even most of them. The most relevant technology is often something new to learn.

Also, different jobs vary wildly in terms of schedule, how much time there is to experiment with solutions, how much actual factoring/testing/engineering is expected, etc. Most project phases or jobs in general fall short of the ideal in this regard.

Also, people may have just plain misrepresented to you what effective engineering actually is.

I think to be effective at solving tech problems you _have_ to guess and then see what happens and then adjust. That's what engineering is. Its based on the scientific method.

Physics is complex, especially information technology. And you can't develop everything from scratch. You have to take advantage of other people's work, guess how it will fit together best. But it is always a guess because the laws of physics make it impossible or impractical to figure out what the system is going to do without running it first. So you try out different ideas or designs and adjust. In a feedback loop.

As far as getting lines of code out the door, you want the fewest lines of code that are practical given time constraints on factoring. The ideal might be no lines of code sometimes when you can use an existing solution.

Anyway, yes, they are guessing, because of the laws of physics.

</comment><comment><USER31> Top developers do not guess at what code does, they step through it, or add logging, or sit there and step through it mentally until they understand what it is doing.

Top developers do not copy/paste code snippets off the web, they use googled code as examples to write their own code that works with the code they are working on.

Solving problems based on guesses takes more time than understanding the code. It looks and feels more productive than sitting and thinking.

There is nothing wrong with somebody providing an answer, as long as they can explain the logic or lack of logic behind it. Why have multiple people go and figure something out? Post it on a FAQ on the intranet so everybody understands. If they can't explain the answer, ask to see the data and go through it together. Maybe everybody will learn something.

There is nothing wrong with getting things done, as long as they are done in a way that won't get in the way of getting things done in the future.

</comment><comment><USER32> > If I want to succeed, do I need to stop caring about solving problems and > start caring about getting as many lines of code out the door as I can?

You need to _start_ caring about solving problems. If the way to get a problem solved is to Google something and copy and paste a few lines, _solve the problem_. If you want to spend years letting things into your brain but not out, there are plenty of useless corners in academia.

That said, if the top developers you see are uninterested in learning more, you're working at a bad company. Which is not particularly uncommon: good developers go work where other good developers and good management are, and at the places with bad developers and bad management, there are still people who are at the top of that company. Top developers _are_ good at finding answers by Googling, but that's a way for them to learn, not a way for them to avoid learning.

</comment><comment><USER33> "However, the reality that I've experienced is that the developers most willing to guess about how code works, copy and paste googled code, and push others to feed them answers instead of doing research on their own are considered to be the top developers because they 'get things done"

There are some Nobel prize math winners who can't do simple arithmetic. Why would they? They have access to computers and calculators. Do you honestly need to know how quick sort works? Do you honestly need to know how to do a binary search?

More than likely, the answer is no, the runtime you're working in has those operations implemented, and they're more robust than anything you can do. You need to know WHEN to use them, but outside of college, knowing the specifics is pointless, except for coding interviews.

You have bigger problems to solve.

</comment><comment><USER34> Not as many lines of code as possible - less is more - but as many issues closed as possible. Good developers are focused on the goal. The developers that I've admired the most over time just had a knack for thinking clearly and addressing problems in ways so that future code paths align well, too.

</comment><comment><USER35> If you're really successful at bullshitting, it means you're not hanging around enough people smarter than you.

</comment><comment><USER36> A year in most industries doesn't really provide the death of experience necessary to make informed judgements. My advice is that when something doesn't quite add up is to presume that I don't have the big picture. If I were in your shoes, I'd wonder about how the business model drives behavior. Consulting is different from product development. Operations in a cost center are different than in a core revenue unit. Companies that compete on price are different than those that compete on specialized expertise and different from those who operate on socializing in the good old boy network.

This is the time to learn. It may be that you are working in a soul sucking workplace. But still reach for a deeper understanding not easy assumptions.

Good luck.

</comment><comment><USER37> There are employers that what you to think the way you're thinking.

There are other employers that want you to copy the other guy before spending time in the details.

Adapt to the situation, find what you like in your off time or find a new job.

Learn how to talk to people and people will protect you. If you keep telling everyone else they're doing it wrong, no one will think you're helping them because you're being negative. Point out something you like.

I write circles around some of my coworkers, but they talk-circles around me in social dynamics. Everyone is good at something. Talk about what they like.

Find a reason to like the person you're working with. Don't be combative, this won't be the first time someone 'thinks' you're doing it wrong. Humility is key.

</comment><comment><USER38> Depends on how you define 'top'. If you mean the ones who rise quickest through the ranks of a company that's not technology-focused, then maybe you're right. In the long run, however, the cream rises to the top. People who genuinely don't know what they're doing are uncovered.

'Guessing' isn't always a bad thing, either - providing it's an educated guess. Of course, there's an argument to be made for understanding every last line of code, every component and module in a behemothic application, but in the real world, it's just not the case.

</comment><comment><USER39> > considered to be the top developers

The important point here, considered by whom? My guess would be the management who in this case cares about "getting things done" without much consideration for technical debt, which usually ends up biting them back.

So, you've learned that this one company has different criteria for success than what was true in school, but there are many companies, with different cultures and different criteria. Don't get discouraged -- instead, actively seek good quality developers, go to meetups and other events, and even change companies if necessary.

</comment><comment><USER40> Seriously, I copy/paste code all the time. If I'm writing a complex newsfeed algo and I need to write a sorting function. 9 times out of 10 the sorting function I need is easily googleable for my language. As much as I love to code, why would I waste my time writing it again? Yes, I wrote it in college, I loved it very much. But I won't deviate my focus from my newsfeed that I'm building.

It's not much different from using a library. Understanding is fun, but reinventing a wheel can be a serious violation of prioritization.

Put in other words -- you must choose your battles.

</comment><comment><USER41> I think prioritizing and focusing on the right thing is one of the skills senior developers have. You don't normally have one isolated problem to solve. You have a problem and it branches out into multiple other problems. Over time you just learn to estimate the importance and the time you can spend on each problem to get things going. So you do have to have a deep understanding of the important part, but you cannot go into too much detail for every single sub-problem you have, otherwise the productivity will be very low.

</comment><comment><USER42> I am sure someone famous once said: it's not about knowing something, it's about knowing where and how to find.

Typical scenario. \- Product owner: can we compress images before upload? (I have not done it before but after a quick analysis I know we can) \- Me: sure

Two hours later we had a new feature. I am not a top developer b/c I am not sure if my copy/pasted lego pieces have some serious security issue or will fail a test I did not see (I do read ALL comments and answers on SO to avoid obvious holes). But the problem was solved.

You judge.

</comment><comment><USER43> I think the answer to your question is that there is not one type of 'top developer'. Some people are good at implementing features fast, some at designing scalable architectures, some are experts at designing algorithms, some people know every detail about how a given system works (an api, database, operating system, cpu) and some can find bugs very quickly in code they've never seen before.

All these require a different mindset and different approach. There is not one way to become successful.

</comment><comment><USER44> There are two kinds of problems.

The first is "I need to sort this list in Python". The second is the broader application that list is relevant to.

When I'm coding, the first problem is uninteresting. Sorting lists is a solved problem. I just google it and paste in code that does it, and it's done and off my mind. The architecture of the broader application this fits into, though, merits a lot more thought and the broader problems it solves again are worth much more investment.

</comment><comment><USER45> Show them that you can get things done faster in the long run by slowing down.

The emphasis on speed (getting things done) is always short sighted, and they know that. Help them see it.

[https://ventrellathing.wordpress.com/2013/06/18/the-case- for...](https://ventrellathing.wordpress.com/2013/06/18/the-case-for-slow- programming/)

</comment><comment><USER46> Understanding just enough to get things done, copying and pasting, and building thoroughly planned and well designed fundamental libraries are all just tools in a toolbox. Sometimes one or the other is the best tool for the job. For best results, learn to use the right tool at the right time.

</comment><comment><USER47> He's on to us.

</comment><comment><USER48> You need to to start caring about solving the right problems and not any problem that has already been solved.

The best way to get things done is to re-use code. The best code to re-use is something that hides lots of complexity yet has a simple interface.

</comment><comment><USER49> You're experiencing what basically every smart computer science graduate does when going off into the world and encountering codebases that serve customers. They're huge and messy.

I had this same rude awakening at 22. You're used to dealing with 500 lines of code; now you have to deal with 200,000 lines of code. Even 10,000 was too much for me at that age.

Computer science is about being smart and understanding things. Software engineering is about realizing how dumb you are compared to the task, and developing strategies to control that complexity and manage your time.

The best programmers I've seen have these qualities:

1) They have simply exercised their brains enough to wrap their heads around 50,000+ lines of code. They know how to read code.

2) On top of that, they know how structure their code to avoid having to understand all of it line by line. They write their code to facilitate "chunking"', the same skill that a chess player uses to assess a board position quickly.

3) They trade off time vs quality by sweating the details WHEN IT MATTERS. For core parts of the program, it absolutely pays off to do original research. For example, writing data structures for search algorithms or graphics engines.

But the data structures are less than 10% of the code in an information retrieval system; the graphics engine is is probably 10% of the code in a real game.

For the rest of the system, you need to plow through it quickly, perhaps copying and pasting code from older systems.

Usually you have different developers working on these parts -- some people are good at plowing through tasks; some people are good at working on well crafted code solving a difficult problem. But the latter are usually experienced developers in their 30's, not fresh grads at 22. At 22 you'll be tasked with plowing through code.

After 13 years of professional programming, I think that "taste" is basically learning what matters. Lots of things I obsessed over when I was 22 didn't end up mattering. When you can only work on 1,000 lines of code at a time, you're simply missing the big picture. So basically that's a thing you have to work on to succeed as a developer.

With that said, there's also the fact that most software is shit :) Software is shitty and in particular insecure due to its sheer size.

[http://steve-yegge.blogspot.com/2007/12/codes-worst- enemy.ht...](http://steve-yegge.blogspot.com/2007/12/codes-worst-enemy.html)

So I described the status quo in the industry... but if you can somehow move beyond that, that's very valuable territory.

</comment><comment><USER50> That doesn't fit any of the best developers I've seen.

Perhaps the people you've seen are not, in fact, very good?

</comment><comment><USER51> no. top developers care about only themselves, that means they won't copy and paste others' code, they make algorithm their own! However they enjoy being inspired from the code and try to optimize the code.

</comment><comment><USER52> Copy and paste is the most basic form of reuse. Don't underestimate it.

</comment><comment><USER53> If you're not getting things done, then what problems are you solving?

<comment><USER54> ^THIS^

<comment><USER53> Its sounds good, but people like you end up over-engineering the solution. AKA making it generic, extendable, etc.. It's pre-mature optimization, i see it from a mile away.</comment></comment></comment>


Thunderbolt in current and future laptops - <AUTHOR> http://www.marco.org/2011/05/08/thunderbolt <comment><USER2> In addition to being able to reduce the size of laptops, I hope Thunderbolt will enable the next generation Cinema display to feature gigabit ethernet and firewire connectors, making it possible to connect a single cable (two, if you count the MagSafe) to seamlessly transform a laptop into an iMac.

<comment><USER3> I was actually hoping that they would build a small, low-power GPU into the Cinema Display so that I can daisy chain five off them off a Macbook Air and have each provide its own "graphics card" over Thunderbolt.

<comment><USER4> There's an interesting idea... though I have no idea how well it would work. The bandwidth is still massively below what graphics cards typically need. With some OS changes and essentially half-remote-desktopping to a dumb terminal display, it could work, though...

You have given me thoughts. Thanks :D

</comment></comment></comment><comment><USER5> I'm excited to see what devices are created for Thunderbolt. It seems to me to be like the LED was: a solution in search of a problem and history seems to indicate that exciting things come from solutions in search of problems. For example, imagine being able to connect to FIOS directly through Thunderbolt for 10GB/s bidirectional speeds. You could livestream 4K video with bandwidth to spare. Welcome to the future, gentleman.

</comment><comment><USER6> From a security perspective Thunderbolt is one of the worst things that can happen.

Imagine being a speaker at a conference where you use your own laptop for a presentation and where (at some point in the future) the projector only has a Thunderbolt interface. Are you going to connect your laptop? If you do the projector has basically full access to your laptops memory - and therefore full control over your laptop. Even if you use disk encryption this does not help, as the key is still stored somewhere in memory.

I think that if there's one thing that we've learned in the past two decades it's that physical interfaces should try to provide a little bit of security. With Thunderbolt, all security is traded for a little bit of additional performance.

<comment><USER4> Don't USB and Firewire both have DMA as well? This sort of attack has been possible for a long time: [http://replay.web.archive.org/20090402130220/http://storm.ne...](http://replay.web.archive.org/20090402130220/http://storm.net.nz/projects/16)

<comment><USER6> Yes, Firewire also uses DMA, but hardly anyone uses Firewire anymore :) And even the people who still use Firewire typically don't use it to connect to third-party devices (such as projectors).

With USB I must to admit that I'm not 100% sure. I've always assumed that USB does not use DMA, but after googling it it seems that there's some DMA support in USB. Would be interesting to know if there's some kind of fallback mode - e.g., in order to use a less efficient (but more secure) protocol if the computer does not support (or enable) DMA.

<comment><USER7> Turning on the firmware password on a Mac blocks Firewire DMA access to main memory, if you're concerned about that.

</comment></comment></comment></comment><comment><USER8> I hope somebody is planning an external graphics card.

<comment><USER9> Would be very slow, considering a thunderbolt channel is roughly similar to 1x PCI-E v3.

I would also expect greater latencies than on internal PCI-E.

While it would probably be nice for GPGPU cases where not (if mot all) the working set stays on-board, that's far from the general usage case for GPUs right now.

Even for multiple-screen it would not be that useful: DisplayPort 1.2 handles chaining, and where you have two Thunderbolt ports you have two DisplayPort ports.

<comment><USER9> Oh god, how did I manager to submit a comment containing "where not (if mot all)"?

I, of course, meant "where most (if not all)". Sorry about that.

</comment></comment></comment><comment><USER10> To be clear, is Thunderbolt the remains of LightPeak? Or is that still happening...

<comment><USER11> Thunderbolt is LightPeak.

<comment><USER12> sans Light, though

<comment><USER13> But when it moves from copper-->optical then it can become "lightning bolt"

</comment></comment></comment></comment><comment><USER14> When exactly are we expecting new line of MacBook Pro's?

<comment><USER15> <http://guides.macrumors.com/Mac_Pro_Buyer%27s_Guide> is a reasonable resource (not sure if you're already aware of it?)

Time since last update aside, I reckon a June release timed to coincide with that of the new version of Final Cut Pro ( [http://www.appleinsider.com/articles/11/04/12/apple_unveils_...](http://www.appleinsider.com/articles/11/04/12/apple_unveils_new_64_bit_final_cut_pro_x.html) ) would make a lot of sense.

<comment><USER16> Seems reasonable for the Mac Pros. But for MacBook Pros, they just updated the line, so the next revision is probably going to be a 2012 thing.</comment></comment></comment>


The Most Efficient Way to Type - <AUTHOR> http://flowingdata.com/2010/02/02/the-most-efficient-way-to-type/

<comment><USER2> Longer version of the same thing: <http://news.ycombinator.com/item?id=1094653>

That submission has lots of comments already, I'm pretty sure that was the original.</comment>


Extreme Negative Code Documentation - <AUTHOR> http://www.1729.com/blog/ExtremeNegativeCodeDocumentation.html <comment><USER2> Is there another posting for this?</comment>


Donors of bone marrow can now be paid - <AUTHOR> http://www.reuters.com/article/2011/12/02/us-donors-bone-marrow-idUSTRE7B11FR20111202 <comment><USER2> If people own their organs, then why can't they sell them? In any case, this seems to be a step in the right direction.

<comment><USER3> [http://www.bloomberg.com/news/2011-11-01/organ-gangs- force-p...](http://www.bloomberg.com/news/2011-11-01/organ-gangs-force-poor- to-sell-kidneys-for-desperate-israelis.html)

<comment><USER4> And in some countries people are constantly being kidnapped and held for ransom. We don't have that problem in the US and we probably wouldn't have a big organ gang problem either.

<comment><USER5> The difference is that currently the amount a kidnapper could extract from an average person is not very high. If selling organs is allowed, suddenly the body of every person walking in the street is a worth a lot of money. It will drastically increase the probability of getting kidnapped for one's organs.

<comment><USER6> But the whole purpose of having a government at all is to prevent people from murdering, defrauding, kidnapping (all of which involve force initiated against another).

Some might say that if someone buys an expensive life insurance policy, the probability that they will be murdered by the next of kin goes up. Or that if you buy a nice car, the probability that it will be stolen goes up. But that doesn't mean that anyone should be prevented from buying a nice car or a life insurance policy.

Issues of rights and justice need to be handled on an objective basis, and that requires an impartial arbiter to protect the rights of its citizen masters. That ideal arbiter and protector of rights (to life, liberty, and property) is the ideal government. Given the existence of even an imperfect government such as our own, the right solution to kidnapping is twofold: first, encourage the government do its job, which is to provide the conditions necessary to live your life without worrying about others initiating force against you; second, live your life as you see fit, without violating the rights of any other (because to do so would go deeply against your long-term self-interest - in the long run, lying/stealing/cheating/kidnapping etc. are all forms of cutting your own throat).

<comment><USER5> That is the purpose of the government but you do agree that certain policies can make accomplishing that purpose much much harder, maybe even impossible?

A nice car is not a good analogy since 1) buying one is a matter of choice and 2) kidnapping someone for a nice car is not likely to get someone seriously injured or killed (as long as one agrees to the kidnapper's demands) whereas kidnapping for organ donation is completely different.

<comment><USER6> You know, you only live so long. It's not as if you have an indefinite amount of time and money over the course of your life.

If you work for years and save to buy that nice car, and someone steals it from you, someone has taken part of your life away. Even if the blow is distributed across a lot of people via an insurance policy, this is still true.

</comment></comment></comment></comment></comment></comment></comment><comment><AUTHOR> This is interesting timing because of the Amit Gupta social media attempt to get a donor. Now, Amit is allowed to offer money for the bone marrow.

<comment><USER7> It's too late now, unfortunately.

<http://amitguptaneedsyou.com/>

<comment><USER8> What was the clock counting down to?

<comment><USER9> Artificial deadline to instill a sense of urgency leveraged by the call to action.

</comment></comment></comment></comment><comment><USER10> There is a massive profit made along the chain from selling donated blood in the USA to hospitals and patients - we're talking billion of dollars (the Red Cross is very guilty, so is Baxter and other corporations).

The plasma payment model works just fine, I say try it for other things that are renewable.

<comment><USER11> In a recent thread I argued that renewable is not a sufficient criterion (and perhaps not necessary, either). Risk to the donor is much more important. Money in medicine is coercive, but if you are coercing someone into doing something nearly never harmful (blood or sperm donation), it's not a problem. If you're coercing them into doing something with high risk, even if the tissue is renewable, then I believe we have a problem (liver donation).

Modern marrow collection techniques generally put the donor at low risk, and marrow is renewable, so it appears to be a clear win.

<comment><USER12> Risk matters, but the only impact is has on anything is on price. If something has a 0.1% chance of killing me, I'll expect far, far less money for it than something with a 5% chance of killing me. I might still do it, but the payoff has to be proportional to the risk I'm taking. I ride in cars knowing that I'm taking a risk, but I do it because I want the value that riding in a car gives me.

<comment><USER11> In the abstract, I agree. One could create a utility function expressing the necessary compensation (for them) in exchange for taking on a certain amount of risk. In the concrete, I'm not so comfortable with this on a population scale. People in general are not good at understanding risk, and they are not good at understanding medicine.

Procedure X has a 10% chance of killing you, a 1% chance of leading to necrotizing fasciitis that will not kill you but will require an amputation, a 3% chance of disfiguring scarring, a 4% chance of in-procedure myocardial infarction that will leave you alive but in heart failure ... etc. If we even had an exhaustive list of the actual risks of the actual procedures in the hands of the actual surgeon doing the procedure (we don't), it would still be impractical to get any particular person to understand the whole array of risks that they face, not just mortal risk.

We would need a much better way of measuring 'understanding' than I believe we have right now for me to get onboard with compensation for extremely high risk procedures for donation. And that's assuming a coldly rational populace.

</comment></comment></comment></comment><comment><USER13> Decision: [http://www.ij.org/images/pdf_folder/economic_liberty/NOTA/no...](http://www.ij.org/images/pdf_folder/economic_liberty/NOTA/no.).

</comment><comment><USER14> I probably just don't fully understand the situation, however this seems bad. I'm usually for capitalism and the concept of supply and demand, but not in this case.

What's my marrow worth to me? Probably not much; a bit of time and discomfort but overall not a huge deal. However, for the buyer, it's the matter of life or death. Seems like it would be easy to extort someone who _needs_ it.

This is one of the rare cases where I hope the market is very heavily regulated -- say, "Bone marrow is worth $1k. It's illegal to ask for more."

<comment><USER15> Having price ceilings would cause shortages in supply which would possibly lead to more deaths than cost increases. By meddling in the marketplace you are bound to create a lot of unintended consequences that will be detrimental to patients.

<comment><USER9> Death is not the only measure of quality of life. ER docs are not empowered to negotiate fees with their patients in the moments before service either.

</comment></comment></comment><comment><USER16> Oh no! Now there will be bone marrow thieves! </sarcasm></comment>


A look at an original iPhone prototype - <AUTHOR> https://www.theverge.com/2019/3/19/18263844/apple-iphone-prototype-m68-original-development-board-red <comment><USER2> Seeing what looks like a full iPhone attached to it (I know it's just the screen, but the inclusion of a taped-over home button is interesting) gives me kind of a "Thinking quickly, Dave constructed an iPhone using a circuit board, some tape, and an iPhone" vibe.

<comment><USER3> I was also curious about that. In other stories I've read, I've heard it referred to as a big ugly box with a touch screen embedded on top of it, which is what I imagined most people worked on. But this just looks like a normal iPhone with a large breadboard connected.

<comment><USER4> I always imagined that the iPad came about because some engineer had a Retina iPhone prototype on a standard 72dpi screen and figured it might work to replace a laptop.

Take the old eMac software, and bam, iPad.

(100% speculation)

<comment><USER5> I believe "iPad" was actually being developed prior to iPhone and was put on pause while multitouch and other technology was lifted from the project to support iPhone.

<comment><USER6> That's how Steve Jobs tells it.

[https://www.youtube.com/watch?v=i5f8bqYYwps&t=2233](https://www.youtube.com/watch?v=i5f8bqYYwps&t=2233)

</comment></comment></comment></comment></comment><comment><USER7> If anything a big board like this is one way to ensure it's not easy to steal.

The on-board (pun intended) documentation - "Do not connect battery without removing J49", etc - is pretty neat too. Is this something that's fairly standard in the industry?

<comment><USER8> It's pretty common. If you have the time and space on a board, it's a good idea to fill the silkscreen with useful or important information.

<comment><USER9> I love when the info makes it to the shipped version. My bass amp has a miniature schematic drawing etched into itself, it's been incredibly useful. Here's my favorite PCB etching though: [http://i.imgur.com/28cYobo.jpg](http://i.imgur.com/28cYobo.jpg)

</comment></comment></comment><comment><USER10> The "M68" name is interesting, given that Apple has a long history with the M68K processor, which isn't involved here. I wonder if it's a nod to the first Mac or the Lisa.

<comment><USER11> Probably named that way to throw people off the scent if the project name got leaked

</comment></comment><comment><USER12> That's really interesting. Whose job is it to actually design and develop the prototype board? It seems like that team would have to know quite a bit, if not nearly everything, about the device.

<comment><USER13> Usually the design engineer that handles the production board goes through the EVT boards.

Basically the purpose of EVT to a) ensure all the _components_ identified in the initial survey/design review actually work together b) enable software development early in the process c) iron out any showstoppers and kinks that could jeopardize the project later on.

The next few design stages usually get rid of all the super-debug stuff (such as the ethernet port on the iphone; also maybe get the form factor down) while still retaining the regular debug stuff (JTAG etc). This usually when mechanical can jump in and preliminary compliance stuff can take place (EMC etc)

</comment></comment><comment><USER14> Why the anonymous source? 10 year old secrets in a rapid-development technology seem like non-secrets, so who's willing to "leak" but not be identifiable at this point?

Maybe Apple has strict secrecy rules that are only partially enforced? I don't quite get it.

<comment><USER15> Apple has an extreme focus on secrecy.

Apple probably considers this board their property.

<comment><USER16> It _is_ their property. They paid for it, and it was never sold or otherwise transferred.

<comment><USER15> Thanks for the helpful clarification. Clearly someone has this dev board or has access to it in such a way that they were able to share it. My point was simply that they might have something they shouldn't, and that fact helps explain some quirks of the article that seemed confusing to the GP.

I'm ex-Apple, BTW.

</comment></comment></comment></comment><comment><USER17> > "many of the engineers working on the original handset didn't even know what > it would eventually look like"

This is a stretch. Guaranteed that if you are working on just chips then you might be living in just your own silo.

</comment><comment><USER18> Is it me or does it look like the top layer has reaaaaally thick copper? Look at how it differs between areas with those squares contra area without. Looks like it's very very thick. Perhaps the solder mask.

<comment><USER19> Nothing out of the ordinary for prototypes. Much easier to solder fixes to without accidentally stripping a trace and better RF properties, which will help with an oversized board like this one.

</comment></comment><comment><USER20> Is the checkerboard pattern on the top layer for aesthetics, or is it functional for EMI reduction.

<comment><USER21> I suspect this is to avoid warping on a large board. They probably used hatching to match the amount of copper on the top and bottom of the board.

</comment></comment><comment><USER22> Does it connect to my airpods though? :)

<comment><USER5> The new AirPods supposedly require "an iCloud account and macOS 10.14.4, iOS 12.2, or watchOS 5.2", so it doesn't look like it :P

<comment><USER19> What a nonsense. As if earbuds would require the cloud to function somehow. This 'I'm forcing my cloud down your throat' stuff has to stop.

<comment><USER23> It would help if you actually looked at what it is before trashing it.</comment></comment></comment></comment>


Thoughts on Piracy and DRM from AI War Creator - <AUTHOR> http://christophermpark.blogspot.com/2009/07/thoughts-on-piracy-and-drm.html

<comment><USER2> He is close to arriving to the conclusion I generally have reached when thinking about piracy issues when he says this:

> People have been violating copyright and pirating and plagiarizing since > long before the modern era. There's just something, deep down, that makes > people believe that these sorts of ethereal products, or knowledge, can't or > shouldn't be protected.

To me, the real issue is this: No one spontaneously thinks that sharing something freely sharable with friends and family and fellow humans is inherently wrong. "Intellectual property" is an unnatural and learned concept. If I had an infinite supply of food, I would not think twice about handing it out to others. I didn't use to, but now I do think that the problem is largely one of future shock and legislation: we simply have to come to grips with the reality that digital information will be copied, and that someone possessing a piece of digital information will expect it to be copyable.

So where does that leave him? I don't know. Maybe there is no decent business model for selling games like AI War in this age. Just like other business models have disappeared or, for that matter, appeared with the digital age.

I don't think the problem is that people in general view piracy as a victimless crime. I think the "problem" is that, deep down, people don't think it's a crime at all.

<comment><USER3> Well, it's not _quite_ that black-and-white. DRM and copy protection has always been broken and copyright laws have always been hard to enforce, so people have always been able to get what they want for less than the asking price. Every IP-based enterprise's business model has been broken for years; Bill Gates' Open Letter to Hobbyists shows his company's model was broken even before it started.

If people had no internal motivation to pay for something freely sharable, all these companies should be begging on streetcorners. And yet Microsoft, Disney, and Warner Bros. are far from charity cases.

I think that while people are aware that copying is not the same as stealing a physical object, they are also somewhat aware that it deprives the creator. In this sense, it's not unlike how people guiltily shuffle off as a street performer passes the hat around: they are aware of the expectation of payment, of the social obligation to reciprocate when someone gives you something of value, even if that thing is intangible and cost little to produce. This social obligation is enough to cause some people to pay.

Software benefits from other unwritten social rules as well. For example, it is less socially acceptable to pirate software that you use to make money. Likewise, it's less acceptable to give pirated software as a gift. I think the strength of these social rules varies among cultures, which would explain why piracy is more popular in some countries than others, even when the goods are affordable.

And software further benefits from the unknowable costs associated with piracy. If a pirated product doesn't run, has a bug, or installs malware, you have no recompense. And, of course, there's the fact that piracy _is_ illegal... If someone can prove you pirated software, it will cost you (it's admittedly hard to prove for individuals, but easy for corporations with disgruntled employees).

So the software business model is tenuous in that it relies mostly on social norms, but it is viable.

<comment><USER2> I agree with your point, but let me clarify what I mean: I don't mean to say that people are averse to paying for content they want. On the contrary, I do think most people are happy to pay what they feel is a reasonable price for things.

The thing though, is this: Once I've bought something I wanted and I have it, and it's infinitely sharable - why not share it with my friends, or even just anyone who might want it? That's where I think the real issue lies. I don't think most people see anything wrong with sharing something when it costs them nothing to do it. To the contrary, I think people in general are social and caring, and even _desire_ sharing with others when possible.

Also, I think people are happy to pay someone for creating or providing goods they want. I don't think many people want to pay for copies of digital content, because single digital copies truly are worth nothing.

</comment></comment></comment><comment><USER4> Park mentions people might think piracy is "a victimless crime against rich fat cats and celebrities who don't really need the money". I wonder what would happen if instead of a fancy logo of the development company at the beginning of a game, there was an picture of the developer/development team with his/her/their names. With a picture, the faceless corporate entity becomes an actual person with a name. Has this ever been tried before? I suspect if it ever became too persuasive, then the crackers might just remove the picture, but it is a thought.

<comment><USER5> I think the WROX series of programming books (and nearly all tech blogs with thumbnail photos) make a compelling case against showing developer headshots. There's a reason we became computer nerds.

<comment><USER4> And I think you are making my point for me. Which would be a more personal website: a blog with some computer nerd's face on it, or a blog with a corporate logo on it?

If a person's profile picture on a blog doesn't reduce the readership, then why would it on the splash page of a game? If the looks of a person mattered, the only popular blogs with profile pictures would be hot girls.

<comment><USER6> You only talk to hot girls in person?

</comment></comment></comment></comment><comment> cunard-n This recalls to mind what I think is a very compelling argument found at the beginning of "Freakonomics." Namely that people are not stupid, and they know that if they stop paying for the bagels, the bagels will dissapper. In the book, they examine the pay-rates and stealing rates of a service operated by a guy who just left a can for people to put their payment in and collected it each day when he dropped off the fresh bagels. This was in an office environment. In the book it is very clear that most people, most of the time, will pay if you make it easy for them to. Essentially, isn't that the insight behind I-Tunes? Just enable people to pay, and voila! They pay. I suggest (to the OP) that maybe a better way of thinking of the way forward is to see people as people and make paying you as easy as possible. I definitely applaud your principled stand on DRM and open standards. Bravo.

<comment><USER7> I could not agree more. Now that iTunes has dropped DRM, I have paid for all my music since then. The last time I copied something, there were no non-DRM version on iTunes and Amazon was not selling the non-DRM version in Canada. So as a last resort I took a Torrent. Give me an easy way to pay you for what I want and you'll get my money.

<comment> cunard-n It's such a tiny country. We must know each other!

</comment></comment></comment><comment><USER8> Long-term piracy concerns aside, the author can take that listing on NowTorrents with a pinch of salt.

If you try entering any garbage text in the 'search' you'll see auto-generated results (soon to be search-engine indexed) which claim to have that item available for download. All you need to do is sign up for an account to see 'em! Yeah... It's an old scam and probably ropes in more worried developers than it does pirates.

Keep an eye open for pirated copies and adapt as you can, but don't freak about every piracy notice you receive on Google Alerts.

</comment><comment><USER7> Interesting and I'm happy he doesn't see adding DRM as a solution. I wonder if he thought about long term effects of this piracy.

In the context of one game you can see piracy as lost sales, but in the long term those are people that were exposed to your product and that you may convert later. I know that I did copy a lot of games before working, but then for a couple of years I bought a lot. Now I play rarely, but most of the games I bought were from developers I had previously copied.

</comment><comment><USER9> I feel like, fundamentally, the problem of piracy with digital goods is something like this:

I'm a wheat merchant. My store is located 10 minutes outside of town and I give people a fixed amount wheat in exchange for money. But one day there's a huge pile of relatively undefended wheat that people can just take for free (even if illegally) in the middle of town. Suddenly my wheat is no longer worth as much.

Seems pretty simple to me.

<comment><USER6> I think a better analogy is:

You're an apple merchant. You sell apples, which are generally better quality apples than the ones people can get elsewhere. However, some of those people have now begun planting apple trees from your apples' seeds, and thereby getting more of your apples without paying you for them. These apples still aren't quite as good on average as your apples, since sometimes they come with worms.

This situation wasn't terrible until recently, when someone invented a way to make apple trees grow faster, and now the time to grow an apple tree in someone's backyard from one of your seeds is halving every few years.

<comment><USER9> I like that analogy.

It's interesting that we focused on different aspects of the quality of pirated goods. You assumed illegal copies are of worse quality than the original - and this can be true: that copy of Photoshop you grabbed illegally may well be carrying a Trojan.

But I don't think it's always that simple: A person can watch new TV episodes faster off of torrent sites than he/she can see them on Hulu, and without ads. I'm pretty sure the faster, ad-less version is more valuable than the original. Likewise, DRM-less MP3s are probably more valuable than locked ones from the original CD, etc.

<comment><USER6> I only added that in to be a bit more accurate; in general, I only think illegal copies are worse _on average_ (meaning more of them have problems than "approved" copies have problems). I could continue quibbling by talking about movies copied via camera in the theater, but I won't bother; I actually do agree that in many areas the pirated copies are better all around than non- pirated copies.

The reason I felt compelled to give another analogy, though, was a another difference: the ease of making more apples / wheat / copies, in one's own backyard (or computer, as the case is). I felt that that was an essential part of the picture, missing from the wheat scenario. :)

</comment></comment></comment></comment><comment><USER10> Thoughtful, fair, interesting discussion. I'd love to see Park hang out here and comment (does he?). I personally agree with everything he wrote, but I imagine there are positions out here he didn't consider.

</comment><comment><USER11> What keeps piracy alive is the fact that it's almost impossible to get caught. If people could shoplift in physical stores and there would be no consequences associated with it, I imagine that there would be more shoplifters.

I think it's essential for the future of digital products to come up with a viable ID system for the whole web, so people are more responsible. In this regard Facebook seems promising...</comment>


Ask HN: How would you set up your own home email server? - <AUTHOR>

What equipment would you buy? Would you buy 1U rack servers and put them in a rack case? Perhaps place a case itself in a large safe to protect from fire and intruders?
What distro would you use?
What sort of disks would you select?
And how about the in/out email stack itself? What's the most performant/consistent/private way to run your own SMTP and IMAP servers? <comment> mike-cardwell My mail server is a 4 inch square box sat next to the TV in my living room (1)

It runs Postfix, Dovecot, Amavis/SpamAssassin and OpenDKIM on top of Debian Jessie.

The mail is stored on a single internal M.2 SATA SSD. It is encrypted using LUKS. (I have backups of course). Also, all of my incoming mail is encrypted with GnuPG on the way in (2)

My backup MX is a Digital Ocean box in a different country. Because my primary MX is on the end of a residential ISP IP address, it does not have good reputation (even though it is static). So for outgoing mail, I route over a VPN and out via my backup MX. _Unless_ it is over IPv6, in which case it is routed via my free Hurricane Electric IPv6 tunnel (3)

(1) [http://www.intel.nl/content/dam/www/public/us/en/documents/p...](http://www.intel.nl/content/dam/www/public/us/en/documents/product- briefs/nuc-kit-nuc5i5ryk-brief.pdf)

(2) [https://grepular.com/Automatically_Encrypting_all_Incoming_E...](https://grepular.com/Automatically_Encrypting_all_Incoming_Email)

(3) [https://tunnelbroker.net/](https://tunnelbroker.net/)

<comment><USER2> Where do you actually buy an intel NUC? I always just see people linking to the PDF.

<comment><USER3> Amazon.com is the quick solution.

<comment><USER4> very nice. $275 seems to be a decent price. I already have an hd and ram sitting around...

</comment></comment></comment></comment><comment><USER5> I know this really isn't answering the question, but most consumer-grade Internet connections aren't ideal for running a server of the email variety. Assuming you have a static IP, your ISP will likely block the standard SMTP/IMAP ports, requiring you to do additional configuration that may or may not work with different clients. Aside from the technical workarounds, your ISP may actually forbid you from doing this in their TOS. I agree with a3n that a VPS is the way to go.

</comment><comment><USER6> Another VPS user here. Linode and Digital Ocean offer great guides to get started. I've basically moved two domains off of the formerly free Google Apps accounts onto my own servers. Overall things have gone well. I like being able to set my own file attachment size limits.

As others have said, a 'clean' IP seems quite important. I've had emails disappear into Google's spam filters despite working previously, as reported by many here[0].

Was tempted by Virtualmin but went with the manual config in the end. Am receiving multiple domains on one server, so it has been a learning curve. Not convinced I've 'learned' a great deal particularly. At least a slightly clearer understanding of the moving parts involved. That's Postfix, Dovecot and Spamassassin, btw. All served over SSL/TLS _only_ , i.e. only IMAPS is enabled in Dovecot.

Tempted to start encrypting all mail as it arrives on the server with GPG, as per Mike Cardwell's advice[1], although I'd have to use mailgate[2,3] with Postfix instead of Mike's Perl script for Exim. I'm also not sure how that would work with search, spam and such. Perhaps it's better to delete mail regularly, saving any files and details needed locally.

Had a slight edge-case issue arise recently - my phone battery died and I didn't have my machine so my mail was inaccessible until home. I've refrained from enabling webmail and think I'll keep it that way for now. Just make sure I have 'a device' with the credentials saved on it on my person when required.

\--

[0] [https://news.ycombinator.com/item?id=9150927](https://news.ycombinator.com/item?id=9150927)

[1] [https://grepular.com/Automatically_Encrypting_all_Incoming_E...](https://grepular.com/Automatically_Encrypting_all_Incoming_Email)

[2] [http://andsk.se/tag/gpg-mailgate/](http://andsk.se/tag/gpg-mailgate/)

[3] [https://github.com/uakfdotb/gpg- mailgate](https://github.com/uakfdotb/gpg-mailgate)

<comment> mike-cardwell FWIW, I am currently using gpgit.pl with Postfix+Dovecot rather than with Exim.

I turned on "sieve_extprograms" inside Dovecot, dropped gpgit.pl into the correct directory, and now I just add stuff like this to my .sieve file:

filter "gpgit" ["\--encrypt-mode", "prefer-inline", "email@example.com"];

</comment></comment><comment><USER7> 1U server or HP microserver. Good connection (not typical US cable) with a static IP.

I'd probably use CentOS 6 (avoiding systemd) with full disk encryption, and either a RAID10 of some good-performing normal disks, or RAID1 of SSDs.

I'd put a backup MX on a VPS somewhere, preferably in a different location to act as a store-and-forward to my main MX. This one will need to have a copy of the user map to avoid the "accept any" backscatter problem backup MXes have.

Postfix as the mail server; Dovecot for IMAP. Make sure it uses Maildir for storage (unless you're going SQL) as mbox is a horrible format that needs to die. Use SpamAssassin, and reject any mail from IPs listed on Spamhaus.

Truthfully though, I use a server in a datacentre for a reason - because home connections just aren't reliable enough and the ISPs can't be trusted (I can make sure I only _send_ mail over TLS, but not that other people will only send their inbound mail into my server over TLS), and I wouldn't trust a consumer ISP not to suddenly try some kind of fuckery like blocking SMTP ports. Linode would get my recommendation, they are great value, have good performance for a cheapish VPS, and great uptime.

</comment><comment><USER8> Check out iRedmail [http://www.iredmail.org/](http://www.iredmail.org/)

I don't have the necessary background to set up a mail server and all the attendant pieces all by myself but I've set up a perfectly acceptable mail server (with spam filter, AV etc) numerous times using iRedmail.

Did it on Ubuntu 12.4 (which was the stable release at the time) in a Xen server VM, because why tie up a whole physical server just for email? But now I'm a big fan of ZFS for RAID implementation so if I was doing it again I'd go that way instead (because I never could get ZFS to work under Zen)

It was a just to see if I could do it thing. I don't handle nearly enough email to justify the effort to maintain a mail server. Besides, gmail is amazing at filtering spam.

</comment><comment><USER9> For the software side, I would most likely use mailinabox [1] or sovereign [2]. They both setup mail servers for you with reasonable defaults using Ubuntu and Debian respectively.

Ars Technica has a great 4-part guide [3] on setting up a mailserver yourself.

[1] [https://mailinabox.email/](https://mailinabox.email/)

[2] [https://github.com/al3x/sovereign](https://github.com/al3x/sovereign)

[3] [http://arstechnica.com/information-technology/2014/02/how- to...](http://arstechnica.com/information-technology/2014/02/how-to-run-your- own-e-mail-server-with-your-own-domain-part-1/)

</comment><comment><USER10> I run my own mail server on Linode. Dovecot+Postfix+Spamassassin. It works really well and you can enable TLS/SSL encryption on all protocols.

<comment><USER11> I use Dovecot for local IMAP storage on my laptop. I have minimal needs, so there was minimal setup. I never notice it.

I like to decouple email storage from my email client, so I can switch clients at will as long as they support IMAP.

</comment></comment><comment><USER11> I wouldn't want to depend on Comcast for my email to be delivered to its final server. So if you _have_ to roll your own, I'd do it out on a VPS.

Linode, for example, has upgraded me in memory, space and bandwidth at least twice, and recently did a hardware upgrade. Not that you have to go with Linode specifically, just, when will you ever give yourself a free upgrade on your home hardware?

</comment><comment><USER12> I wouldn't recommend setting up your own mail server, it is really a pain in the *ss to set up and maintain. But if you really want to, this is a great in- depth guide to get you started: [https://workaround.org/ispmail/wheezy](https://workaround.org/ispmail/wheezy)

</comment><comment><USER13> if its "home", and you really must run your own, axigen has a free version for up to 100 users. hmail would work if you're on windows but it doesnt come with webmail. or just install virtualmin and use virtualmin to add whatever domain you need...and setup roundcube/squirrel from virtualmin too... all easier than rolling your own postfix+dovecot..despite linode writing excellent guides for that..

finally, rack mounted stuff would be too noisy to be let into a home.. since its a 'home' mail server, there'd be barely any load.. you can probably add it to your existing htpc or something without issue...

</comment><comment><USER14> i have a fixed ip and business internet to my house. $120/mo run my own email on an old mac mini. its great because i was able to set up spam folders in all accounts. they drop in the spam and it goes to a folder in my account. the subject gets the source ip and domain added to it. any server i don't recognize gets dragged to another folder and bam! that ip is blocked. love it!</comment>