You are not a software engineer (2011) - <AUTHOR> http://www.chrisaitchison.com/2011/05/03/you-are-not-a-software-engineer/ <comment><USER2> > If you were building a bridge or a skyscraper and you told me, before you > began, that you knew exactly how it would look when it was finished – I > would believe you. If you told me that you knew to some insane degree of > accuracy how long it would take to get to 'finished' – I would believe you > again. That's how Engineers roll

Oh neat, maybe he can explain why the new Bay Bridge was practically a decade over schedule and billions over budget.

Or the Burj Khalifa was about 2 years overdue?

Or the California High Speed rail is projected to be twice the budget they thought, and they've barely broken ground on it?

So the idea that "Real Engineers" building bridges and railroads and skyscrapers get it right in plans and schedule is total bullshit. We've seen larger software projects, with more people working on them than these examples, hit their deadlines (Windows comes to mind -- except Vista).

And by the way, those "Engineering" disciplines have only been around for, what, hundreds, if not thousands of years. What they do for a living is mostly explored territory. Software, at least at a scale to be considered engineering at all, has been around for about 3-4 decades... maybe. And we're still hitting up against major unknowns all the time at every level of the practice, big and small.

edit: grammar

<comment><USER3> _" And we're still hitting up against major unknowns all the time at every level of the practice, big and small."_

I was with you until you got to this line. Let's be brutally honest: the limiting factor for most of today's software projects (i.e. CRUD websites and iPhone apps) is not technology. It's developer competency, experience and self-discipline. I'd go so far to say that most working software developers don't even _understand_ the fundamentals of the technologies they're using -- it's why you see people replacing their relational databases for key-value stores, then trying to re-invent database join algorithms from scratch in the application layer. Or why every new generation of "engineers" re-discovers asynchronous programming in a new language (then promptly writes a framework in Blub...because Blub is _so much better_ than last year's Blub.)

Truthfully, it's pretty damned hard to find gigs working on the frontier of technology. Most projects are predictable, tedious slogs to fit together well- understood technologies without shooting yourself in the foot. And yes, requirements shift and clients get fussy, but that's true of any engineering discipline. You learn to pad the schedule to compensate for the shifts. It's part of being a professional.

As far as I can see, commercial software isn't limited by "major unknowns", so much as an industry-wide unwillingness to learn from experience. But hey...that tends to happen in industries when you're considered "old" at 30....

<comment><USER4> Ah man, this hit slightly hard as someone who just moved from Postgres to MongoDB to avoid database migrations only to realize that I've now lost the power of a many to many relationship.

<comment><USER5> How would one avoid database migrations by switching databases?

<comment><USER4> MongoDB is schemaless, so you don't have to do traditional migrations. Unless you're making a joke about me migrating to a different database to avoid migrations, in which case, good joke.

<comment><USER6> An undocumented and unvalidated schema, you mean. A database without a schema is a contradiction in terms.

<comment><USER4> My apologies, the official documentation referred to MongoDB as "schemaless" so I figured it was a real thing.

<comment><USER5> You aren't wrong, MongoDB _is_ schemaless in the sense that you don't need to define a schema to use Mongo. But to use any datastore, you'll be defining a schema somewhere - generally, in your app itself.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER7> It's a slightly flowery (haha) way of putting it, but I agree whole-heartedly. I recently held a talk at a Python conference and I asked the question: degrees and job titles aside, are we scientists, engineers, artists or a combination of all of these. The overwhelming response was "all of the above".

My preferred term is "artisan". A software developer is applying techniques acquired primarily through experience, supplemented by training and outside knowledge. The artisan has a clear vision of the end result in high-level strokes, but the actual process and implementation is strongly dictated by experience and intuition.

Obviously there are different branches of software developer that have more characteristics of engineering, others of science, but I would hazard to guess that 80% of software development is essentially a guided artistic process.

<comment><USER8> You should have said to them: 'you're only f* programmers'. Just as a joke. As a software engineer (?), I am quite fed up with people in their early 20s calling themselves 'architects', 'artist', etc.

You're not a scientist, and not an artist. Being a scientist and a programmer is extremely different because of a simple, seemingly minor thing: the lenght of the feedback loop. As a programmer, your feedback loop is sometimes an hour, sometimes a few minutes, sometimes a second (IntelliSense/other IDE help), sometimes weeks. But for scientist, it's sometimes forever. So it's for very different personalities.

<comment><USER7> Heh, well I _actually_ say "developer", because "artisan" sounds douchey, "engineer" is (imo) incorrect and "programmer" tends to be a very narrowly defined role. Design and operational sides of a "developer" are not really adequately covered by "programmer".

But that's semantics really. We're talking about what _sort_ of techniques do you employ. It doesn't really help to say that programmers use "programming" techniques because it says nothing about the common attributes with other industries / professions.

Which is where "artisan" comes in. A good developer is, IMO, more like an great chef - excellent technique, a wealth of experience across many disciplines and the best tools are the (ahem) recipe for success, not "good process".

<comment><USER9> I think "Process Implementer" is best. I can see both a mathematics and engineering of processes. Processes instead of computer, because it is more general and applicable to fields like biology.

Also computer science might be the worst -- there is zero science in CS. Science has to do with nature![0]

[0] R. Feyman: [http://www.youtube.com/watch?v=lL4wg6ZAFIM](http://www.youtube.com/watch?v=lL4wg6ZAFIM)

<comment><USER10> There is a lot of overlap between CS and Physics. For one example: [http://en.wikipedia.org/wiki/Digital_physics](http://en.wikipedia.org/wiki/Digital_physics)

</comment></comment></comment></comment></comment><comment><USER11> I disagree for two reasons:

First, software engineers exist in a broader culture. The connotations of the various words in our respective languages are not in our control. "Engineer" and "gardener" have very different connotations. In a profession that sometimes struggles to gain respect, it would not behoove us to use a term that (wrongly in my opinion) is associated with lower social and professional status. If we could rewrite the English language and define "gardener" as a person with rare, hard-to-learn, and highly valuable skills, then perhaps we would do well to embrace the term "software gardener." But we can't.[1]

Second, software _is_ engineering. This article seems to define engineering as Big Design Up Front. While that may describe _part_ of what engineering _can_ entail, it's not a complete or general description. If I had to describe engineering generally, I'd say it has to do with understanding and manipulating complex systems, analyzing and fulfilling requirements, distilling vague notions to concrete implementations, and building things that work. Software fits all of that.

[1] As I hinted above, I don't think it's fair, right, or accurate to denigrate actual gardeners as compared to software engineers. I'm stating the way most people perceive social status, not the way I'd _like_ them to.

</comment><comment><USER12> In August 1991 during the S&L recession and fresh out of Vocational School, I landed my first CAD jockey job drawing fabrication plans for a precast prestressed concrete manufacturer. The first task, after running Diazos and learning that neckties would become caught in the feed and where the reverse button was by feel as my face was pressed to the top of the machine and my air supply was rapidly constricting was drawing plans for a series of double tee members [TT]. It took a couple of weeks to generate the 100 odd variations and get them through the QA process, but then I moved on to other things.

But come October, they started to roll off the line...20+ kips of concrete a pop and then stacked three high. To this day, the sensation is fresh; "So that's what the fuck it really looks like."

The reason it's fresh is because it returns every time I am in the presence of some lines I put on paper manifested.

The picture of the bridge is not the bridge. The engineer, like the hacker, has better intuitions regarding the way in which the picture will correspond to its instantiation - but it is still no more than a [hopefully] informed intuition.[1]

[1] The idea that there is an Engineer rather than a thousand authors of a successful bridge tends to be a bit absurd in modern construction practice. Such heroics are still far more likely in software development.

</comment><comment><USER13> I was hoping that a more substantial point was going to be made than this piece of fluff. Here is the substantial point.

If you're building a skyscraper or a bridge, an engineer has to sign off on the design. If the design subsequently proves to be defective, said engineer is personally liable. In many places, calling yourself an engineer when you are not licensed to sign off on designs and be liable in this way is against the law.

We can debate whether or not extending this principle to software development is a good idea. What we can't debate is that software development does not currently work this way. You, the software developer, are not an engineer. If you think a design is bad, you do not have both the legal authority and responsibility to stand up, declare it so, and force the design to be changed to something saner.

But saying you're not an engineer because software projects don't succeed like projects done by real engineers - that's both silly and wrong.

<comment><USER14> It has already been extended into software development. Plenty of software projects have to be signed off in aerospace, automotive, telecoms, energy and defense. In fact I'd be amazed if it did not extend into consumer electronics in large companies, e.g. Apple et al cannot risk bricking millions of phones with a bad update. The point might be that there are thousands of badly run projects, just as there are in construction.

</comment></comment><comment><USER15> Ugh.

I wish we took the engineering metaphor more seriously. In particular, I'd like to see some real consequences for malpractice on the part of practitioners -- this would help us in our struggles with management to get projects done successfully.

I've seen so many cases, for instance, where people screw up simple things, such as generating primary keys, and keep making the same mistakes over and over again. This has got to stop.

<comment><USER16> > In particular, I'd like to see some real consequences for malpractice on the > part of practitioners

I agree as long as we also see some of the benefits - required registration with a professional body - along with a requirement that certain projects cannot use uncertified practitioners (in other words, better pay for Software Engineers).

<comment><USER17> And worse pay for people who can't get certified for some reason.

</comment></comment></comment><comment><USER18> As someone who lives in the mecca of the oil and gas industry and is thus around a lot of engineers--chemical engineers, civil engineers, mechanical engineers, and more--I can tell you that trying to argue too passionately about what constitutes an "engineer" is futile at this point. Engineers do everything from physically working on an oil rig to somewhat abstract economic analysis at a desk all day.

The only legitimate argument I can find regarding the use of the word "engineer" is that there are actual engineering licenses that can be obtained. But if we said that you had to have such a license to be called an engineer, that would screw up the naming conventions in a ton of industries.

</comment><comment><USER19> The fact that the feedback loop of a software engineering process is much tighter and cheaper than that of civil engineering does not mean that it is not engineering - that's a fallacy.

Perhaps it's less applicable to civil engineers, because of the scale and safety requirements of their profession, but let's look at electrical engineering. An electrical engineer will build prototypes; they will build models; they will use computer simulations to predict how systems will behave; they will build testing and QA infrastructure. It's definitely harder to iterate—once you've built a million widgets, shifting circuits around is going to be expensive—but it's not qualitatively different to developing a software product.

As in any engineering discipline, software engineers must optimise for a system's required qualities. In some cases, reliability might not be that high up the list. In others—let's say medical systems, or those used in space travel—software engineers have rigorous systems in place to ensure quality, and in many cases substantial up-front planning and certification will be involved.

Ultimately this seems to say that software engineering is different from (specifically) civil engineering. I think that's broadly rather true – the nature of civil is such that generally there are stringent safety requirements, and indeed massive costs involved in making subsequent changes. The majority of software does not have the same requirements, and so it's no surprise that the process is somewhat different. And I agree that not all development is engineering, of course, but to dismiss the entire field is a bit of a shallow argument.

</comment><comment><USER20> I disagree. When I code for my own amusement I might see myself as an artist but when I do professional work I definitely want to see myself as an engineer as well as a craftsman.

To me it feels as if we are just at a very early stage. It takes huge amounts of time to learn software engineering, putting aside mastering it and humans haven't been practicing for very long. So I'd guess that we're just clueless enough to not be able to feel like engineers yet. We learn most of our practical abilities from experience so thats an argument for craft, but once we get a better understanding of what we are actually doing, and formalize it, our job will probably be very engineery. There is just millions of problem domains and no formal education on the domain of writing software yet (no a CS degree is not it). And I think there is a class of applications that are already so well understood that they do get developed in an engineering fashion already.

</comment><comment><USER21> I grow tired of the endless comparisons of software development with some other practice, profession, or physical process.

All analogies eventually break down if you take them too far. (If they didn't then you wouldn't be comparing something to something else; you'd be comparing something with itself.) But software development is so different from so many other practices and processes that most comparisons to gardening, building, finances, etc. don't provide much real value.

Its especially tiresome when it's claimed that "sofware isn't like that, it's like THIS". In the article, I find that neither gardening nor engineering is an especially enlightning analogy to software development.

</comment><comment><USER22> I just checked my diploma, it says my title is 'Engineer' (studied computer science).

<comment><USER23> I have to agree strongly with this. It's like a professional trainer calling themselves a professor just because they teach. You are an engineer if your diploma says so. It is an earned title, not a job description. I say this as a CS dropout that never calls myself an engineer.

<comment><USER24> Engineering is about process, not about degrees. My CS degree did not at ALL prepare me to be a software engineer. It taught be to be a programmer. Engineering is more about the process than the technology. CS teaches theory and technology.

<comment><USER23> 100% agrees, I didn't say I didn't do engineering, I just don't call myself an engineer. Ironically, I do call myself a programmer though, and I don't need a degree to do that. The state of CS degrees is a whole other topic, which from the sound of it we agree upon so far. Maybe I just can't call myself a scientist ;)

</comment></comment></comment></comment><comment><USER25> Engineering is a philosophy. First principles applied to real-world problems.

I'm not a Civil Engineer. So what? What does a Civil Engineer have in common with an Electrical Engineer or a Chemical Engineer? Very little day-to-day.

Or an Engineer on an oil rig? They'd laugh that Engineering means getting it right every time.

I can also tell you a Civil Engineer has very different problems if you're building a skyscraper in Asia, somewhere waterlogged, as opposed to somewhere geotechnically active. If you picked up your average skyscraper and dropped it in New Zealand, you'll have problems. Saying the techniques are the same is a gross generalisation.

</comment><comment><USER26> I would like to see him "growing" a database or a compiler, perhaps a firmware for a car or the CAD software used by the architect to design a skyscraper.

</comment><comment><USER27> This is basically wrong, because it compares designing software with constructing skyscrapers. But engineers don't construct skyscrapers, they design them. And designing software shares many, many similarities with designing skyscrapers.

I agree with the author though, that part of the problem is using engineering as a metaphor (at least, I agree up to the point where he just replaces it with his own, equally bad, metaphor). Software development is not _like_ engineering, it _is_ engineering, and the actual practice of it is as different from civil engineering, mechanical engineering, electrical engineering, chemical engineering or any other branch of engineering as those fields are from each other. None of those, by the way, bear even a passing resemblance to the description of 'engineering' contained in the post.

So yes, let's quit with the metaphors. Instead, let's talk about what engineers actually do, which is design: [http://www.zerobanana.com/essays/reclaiming-software- enginee...](http://www.zerobanana.com/essays/reclaiming-software-engineering/)

<comment><USER28> That is actually also wrong.

Its rather a case of each engineering profession is a regulated industry with an accreditation body, that certifies you as an engineer. Mechanical, electrical, electronic, chemical, industrial, civil, all have standards organisations, usually different ones in each country.

See IEEE for instance...

Also the engineer term is a protected designation in many countries, just as doctor and laywer is...

So no. engineers aren't guys that design stuff, and until the software industry is as regulated as the rest of the engineering industries are, software engineer is the wrong term. The only people who can call themselves software engineers perhaps is working in the medical device, avionics software etc. industries.

<comment><USER29> At least in the US (which has the largest software industry of anywhere in the world), the title of engineer is not regulated. Only the title "Professional Engineer" is regulated. Accreditation for engineers only applies to areas that have an impact on public safety. This means that civil engineers usually are accredited, but mechanical and electrical engineers usually aren't. So for people located in the US, it is perfectly appropriate to refer to someone as a software engineer.

<comment><USER28> Please don't find this reply condescending :D But Americans also call their train operators "engineers"...

<comment><USER29> I don't find that condescending. What I do find condescending is attempting to apply the laws of certain countries to the world as a whole. There are, in fact, many jurisdictions where being an engineer does not require any form of accreditation. The fact that some jurisdictions do require accreditation does not give engineers in other jurisdictions any less claim to the title.

<comment><USER28> Where did I do that? You were the one highlighting America as having the biggest software industry...

<comment><USER29> The part where you claimed that only people who are officially accredited are engineers. People who live and work somewhere without such accreditation are completely justified in calling themselves engineers without being accredited.

<comment><USER28> My apologies then, I was not trying to force my viewpoint, I only shared it. Just as I don't believe anyone who's read Gray's anatomy (the book) can or should call themselves a doctor, just the same I don't believe anyone writing code should call themselves an engineer...

<comment><USER29> So, according to your viewpoint, there were no doctor's in the US until the late 1800's?

<comment><USER28> You'll have to provide a bit more context for me.

But again comparing modern day professions to the 19th century equivalent does not bode well for your argument. If you'd prefer the medical industry return to its standards and practices of the 19th century, your welcome to visit such a doctor.

I prefer my modern day certified medical professional.

<comment><USER29> The late 1800's is when doctors were first licensed in the US. Before that doctors practiced medicine but were not licensed, yet they were still doctors. Official licensing undoubtedly raises the quality of doctor's practicing medicine, but it is not an inherent quality of being a doctor. In most places, someone is not allowed to practice medicine without a license, but in places without medical licensing, someone who practices medicine without a license is still a doctor.

Engineering is the same. Licensing most likely raises the quality of engineers, but that does not mean an unlicensed person who does the job of an engineer is not an engineer.

<comment><USER28> Pray do tell where in the world is an unlicensed medical practitioner called a docter?

My point being, in this day and age, to call yourself a docter, you must be licensed. Bringing up history does nothing to change that fact. I would state that should also apply for engineers, and already does in most countries.

Merely the fact that train drivers are called engineers in the US proves my point. It dilutes the term to be basically meaningless.

<comment><USER29> Train drivers being called engineers has nothing to do with this. It is simply a coincidence that they happen to have the same name. They are sometimes called "engineers" but what they do is never called "engineering". No one thinks that the two jobs are the same thing any more than they think that an academic doctor is the same thing as a medical doctor. With software engineers, that is not the case. There is a great deal of academic study in the field of "software engineering".

There are, in fact, many places where engineer is not a protected title and to claim otherwise is just wrong. Many large countries like the US, UK and France do not restrict the use of the title engineer. They only restrict something like "Professional Engineer" or "Chartered Engineer".

<comment><USER28> It has everything to do with it. Just as much as you are saying what train drivers does has nothing to do with engineering, just the same I am saying writing javascript also has nothing to do with engineering...

There is a great deal of academic study in the field of "software engineering". That I agree with, but that academic research is being done by degree'd people, either with computer science or computer engineering degrees. Even still they don't practice engineering, they are researchers or scientist. Much like in the other engineering professions, scientists study and advance the engineering fields.

They only restrict something like "Professional Engineer" or "Chartered Engineer". Ok that I agree with, but I restate, writing code does not make you an engineer, anymore than performing an operation makes me a doctor. Being board certified, makes you a docter. Same with engineering.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER17> I admit that I like the cachet that goes with the title "Engineer".

I have no interest in worshiping the "real" engineers with their protocols and whatever. An engineer is qualified to build a bridge because they know how to build a bridge. Their professional ethics and protocols are secondary. And we certainly have ethics of our own, even if it isn't codified and we don't wear special rings.

</comment><comment><USER30> Bleh... Can we just stop with the metaphors already? Maybe I'm not an engineer or a gardner or a scientist but maybe I am. I can be all of those things or none of them. I know how to make software of varying types and that's enough, how I apply those skills is a completely different thing. Maybe I'm a biologist using python to help see the migration patterns of fish better. Maybe I'm a web developer building highly scalable web systems in java. Maybe I'm writing drivers at a kernel level. It doesn't matter, programming is a skill set not a job definition. Engineers aren't just Engineers. They are Mechanical Engineers, Electrical Engineers, etc.. Scientists are just Scientists, they are Biologists, Chemists, and Computer Scientists. When we want programming/software development to have that same level of social standing we will use programming as a skill set not a job title.

</comment><comment><USER31> Changing requirements and development landscape do not an analogy to a gardener make.

I do not 'grow' nor 'tend' code, trusting some unknown universal force to keep me on the right path.

I engineer buildings, bridges, roads, tunnels - all sorts. Sometimes they're very small and sometimes they're very large but they're all subject to the forces pushing and pulling on them - my job is to build them and keep them upright as well as I can subject to the laws and constraints of the environment.

I am not a gardener. I am an engineer building, modifying, and destroying complex structures daily in a controlled dance so as to keep their superstructure useful and safe.

Only to the naive eye could such complexity be reduced to such apparent simplicity.

</comment><comment><USER32> To me, engineering is about solving problems, it's about taking systematic analytical approach to whatever problem arise. It is a state of mind, and that is why engineering now covers everything from software to biochemistry.

</comment><comment><USER33> The part of this metaphor that I really like is how a garden is always changing. Unlike a bridge or a building, software doesn't stand in isolation; it's always relying on other software for something. These other pieces of the system are in constant churn, and your software must change with it. This is even disregarding other factors like changing customer demands. You have to continuously prune and maintain your garden, or the weeds (continuously changing software/hardware/services/etc. environments) will choke out your plants. Software is never "done".

</comment><comment><USER34> I think the largest error in this analogy is that coding is closer to what the engineer does when designing something - not when building something. I guess construction in software is more like compilation.

Can a civil engineer say exactly how long it will take to design a bridge? No. Might putting more engineers on that project speed it up? Perhaps!

Coding is not so much constructing a program, but more creating detailed descriptions of every aspect of the system's operation for someone else (an interpreter, compiler etc.) to follow, and that is very similar to engineering design.

</comment><comment><USER35> "Real" projects also know what they want in a year and don't expect the engineer to double the lanes on the bridge because the bridge went viral on social media and now needs to handle twice the traffic.

I'm not going to get into a who has bigger stones pissing contest, but lets just say the expectations and requirements for skyscapers are different than software.

You'd do just as well to call engineers "traffic gardners" who don't know how to make a bridge scale.

<comment><USER36> Software is more malleable than concrete though.

</comment></comment><comment><USER37> Engineering is about following best practices based on empirical data/knowledge as much as possible and "winging it" when faced with the unforeseen. Although "winging it" is a bit of a loose statement because generally unforeseen challenges are usually solved based on past experience and quite a bit of lateral thinking.

Therefor in my opinion software development "done properly" has more in common with engineering than gardening. :-)

</comment><comment><USER38> My take on this. Not to say some people don't 'do' software engineering....but it is still nascent. [http://jcooney.net/post/2012/02/27/What-Other- Engineering-Di...](http://jcooney.net/post/2012/02/27/What-Other-Engineering- Disciplines-can-Learn-from-Software-Development.aspx)

</comment><comment><USER39> Quite a few people really are software engineers, by qualification and by profession.

[https://en.wikipedia.org/wiki/Software_engineer](https://en.wikipedia.org/wiki/Software_engineer)

That said, Chris has a good point that calling what you do engineering doesn't make you an engineer.

</comment><comment><USER40> Dismissing all other organizations as worse at "gardening" than Google was a bit offensive.

And the lowest bidder for contracted work often sucks, or finds ways to bill more than the original bid. :)

<comment><USER41> I said they didn't have the same soil. That would include the multitude of internal tools they use to facilitate their software development, most of which are not publicly available, their culture, and the aptitude of their people.

</comment></comment><comment><USER42> I personally prefer the term programmer. What I do is program machines to do as I wish.

Gardener fits, but we design the plants in essence....

To me Programmer, developer, even software architect seems closer than gardener.

</comment><comment><USER43> Op clearly doesn't understand software engineering and automation. Op may be a "software gardener" but some of us build proverbial skyscrapers.

</comment><comment><USER44> A friend's mother once gave him a handwoven little sign that said "Engineer: faultless, accurate". As programmers we thought it was funny.

</comment><comment><USER45> So what exactly is the take-away of this piece?

<comment><USER8> That you should not believe that classic engineering techniques work in software. Also, do not believe that you, as a software developer, know how engineering works in real world. You don't.

<comment><USER46> 1\. We don't need to know how engineering works in real world. You need to be in a domain and work in that domain to acquire that knowledge. Knowing how to calculate stress in civil/structural engineering doesn't mean you are an engineer. You need a job. You need an internship if you were a student.

2\. It is quite dumb to assume we build software in the same way that bridge is built. That's essentially what Water Fall method would do. You build the blueprint precisely, build a prototype and then build the actual bridge. I don't see why the author would assume we think we were classical engineer. I never assumed we would be using the same technique all the time.

<comment><USER8> 1\. Well, you don't need to, but it's certainly interesting. 2\. People assume all the time that software development is engineering. That's what leads to clashes between management and developers; clients not understanding why you can't estimate precisely; neverending projects; etc.

It's a very important thing to understand and explain that software development is _not_ an engineering discipline -- at least not yet. We strive to make it another branch of engineering, that's why we have design patters, methodologies, etc. Engineering is usually boring, but predictable, and that's a very important property software lacks at the moment.

</comment></comment></comment></comment><comment><USER47> Software Engineering is an oxymoron.

</comment><comment><USER48> This is why I became an attorney.

</comment><comment><USER49> I'm a software hacker that gets paid an engineer's salary.

I use old tools (vim, terminals), like engineers use old tools (protractor, pencil), to make comparatively much larger artifacts (search products, management tools), like engineers (buildings, bridges).

You're not judiciously applying the metaphor. You've only rephrased what it means to be "self-taught"; it goes without saying that we don't allow unlicensed people to engineer things. It also goes without saying that no one lives or dies by a faulty HTTP request header.

</comment><comment><USER50> I think this [silly] argument is nothing more than a special case of the argument over whether words have inherent meaning, or derive meaning from usage. I don't think 'software engineer' was ever meant to denote a new subtype of engineer. I think 'software engineer' is a compound word that means whatever it is we do. At work, whenever someone says 'get an engineer to look at that', absolutely nobody thinks that means to call one of the 'real' kinds of engineers on the phone. They know it means to get a software developer/programmer/code monkey/dev or whatever you want to call people who make software out of computer code.

<comment><USER24> It is far more than semantics, the term engineering denotes a rigid adherence to processes and protocols, whereas 90% of people that call themselves "software engineers" are just developers at best - they write code to do what they are told it should do with very little concern for the overall processes involved in an engineering discipline.

<comment><USER51> It's closer to the British use of the word engineer, which can mean anything from the civil engineer who designed the Channel Tunnel, to the mechanic who repairs the trains. I think I prefer the prescriptive definition, though, it's useful to have a word for someone expected to work with that level of planning and rigour.

</comment></comment></comment><comment><USER52> I enjoyed the fresh perspective :-) Thanks for sharing

<comment><USER41> You're welcome. Thanks!

<comment><USER53> I for one really like the article. Yes it's true engineering projects aren't anywhere near as perfect or on-time as people often given them credit for, but that's exactly the point. People often expect engineering project to fit a agh exile exactly. The article is about changing that perception and dealing with the reality that as an industry we don't estimate very well at all. So we need to change the metaphors to get people to understand more clearly what is I we are doing. And the Gardner metaphors is apt. Great Article!</comment></comment></comment>


iPhone unlocked: AT&T loses iPhone exclusivity - <AUTHOR> http://www.engadget.com/2007/08/24/iphone-unlocked-atandt-loses-iphone-exclusivity-august-24-2007/ <comment><USER2> I wonder if Apple will sue. A new exception was added to the DMCA last year specifically to address things like this:

"Computer programs in the form of firmware that enable wireless telephone handsets to connect to a wireless telephone communication network, when circumvention is accomplished for the sole purpose of lawfully connecting to a wireless telephone communication network."

So it looks like this new law specifically allows you to hack your phone if all you want to do is unlock it. I'm actually kind of hoping that Apple sues the guys who did the unlocking, just to set a precedent when Apple loses.

</comment><comment><USER3> Phone manufacturers and wireless providers still do not get it. Real coders will do anything in their collective power to provide users with what they are being robbed off everyday. Instead of investing in locking software, they should be open from the start.

<comment><USER4> oh... I'm sure they got it long time ago. But your "real coders" make up less than 0.1% of their customer base, while 99.9% of market will look for something that's cheap, cool, and EASY...

</comment></comment><comment><USER5> What about visual voicemail and push email? You can't legally clone those without Apple/AT&T blessing. Also, you are limited by the carrier signal since iPhone only works with the EDGE/GPRS.

</comment><comment><USER6> Next: Linux on the IPhone please.

Are there any Linux phones besides OpenMoko yet?

<comment><USER7> Sure, quite a few actually. The next big one is the new Motorola RAZR2 which is Linux powered.

Here is an older list of some other phones: <http://www.linuxdevices.com/articles/AT9423084269.html>

<comment><USER6> Wow, some of the (the ones with large displays) look really interesting. What a pitty there are no stores where I can go and try these out.

I wonder if you have bash and stuff, so you can simply run shellscripts and any software you like.

<comment><USER7> Yeah, it just shows how far behind the US wireless industry still is compared to the rest of the world. If the US telcos would allow any device on their networks (like in other parts of the world), more cool devices like these would be available to consumers. Its a shame.

<comment><USER6> I'm in Europe...

</comment></comment></comment></comment></comment><comment><USER8> Is this going to be like Bootcamp? In that case, Apple waited to release their own tool so they'd get two Intel Mac news cycles instead of one.

</comment><comment><USER9> It's good news. This was pathetic from the beginning. They didn't even care to disguise their hunger for power and control. I liked Apple for Mac. I don't any more for iPhone.

</comment><comment><USER10> Isn't AT&T the only carrier with the necessary infrastructure to support some of the cooler phone features like visual voicemail, etc.?

<comment><USER9> I'm not sure, but a part of me doubts it. I think it's all about a very narrow group of people getting even richer.

</comment></comment><comment><USER11> About bloody time.

</comment><comment><USER12> about time</comment>


Show HN: Beamsplitter – a new possibly universal hash - <AUTHOR> https://github.com/cris691/beamsplitter.git <comment><USER2> > The default S-box

> This was obtained from random.org by requesting 8,192 random bytes, as were > all S-boxes tested so far.

[https://en.wikipedia.org/wiki/Nothing-up-my- sleeve_number](https://en.wikipedia.org/wiki/Nothing-up-my-sleeve_number)

<comment><USER3> It would have been far better to select numbers generated by the NIST Randomness Beacon [https://beacon.nist.gov/home](https://beacon.nist.gov/home)

And whilst you can sort of selectively choose which values to take from the beacon, it should reduce the ability to add a backdoor.

<comment><USER2> There are plenty of digits in pi.

If the hash is secure independent of s-box selection, I'd _much rather_ bet on pi being normal than "the NIST beacon values aren't generated by AES in CTR mode" ;-)

<comment><USER4> > There are plenty of digits in pi.

Yes, but

"These fears can be allayed by using numbers created in a way that leaves little room for adjustment. An example would be the use of initial digits from the number π as the constants. Using digits of π millions of places after the decimal point would not be considered trustworthy because the algorithm designer might have selected that starting point because it created a secret weakness the designer could later exploit."

<comment><USER5> So why not just use the first 8192 bytes of Pi?

<comment><USER6> Because they are known in advance and you could design to exploit their structure.

<comment><AUTHOR> this was not meant to create some mystery around the included s-box, though I get that it does do that.

the funny thing is the very fears that are being promoted about this are in a way, sort of exactly the weaknesses that this parameterisible family of hash function was designed to secure against.

I mean people are afraid that there's somehow malevolent design floor but that could be true in any hash function with this you can use the structure to create your own hash function but bringing your nest box which to me at least greatly reduces the idear that there's some sort of exploit that could be persisting.

anyway, that unintended mystery is not bad at all in I'm my opinion. it's fun to watch people suspect byes I got from random.

it's also flattering because I think the skill required to create some sort of crazy exploitable sbox is way above me and way above the level of skill required to create a very good hash function.

people thinking that was my plan, hear this, it does not sound like a very smart plan to spend all that effort creating one amazing exploitable sbox that looks random but then at the same time say and even encourage people to use their own sbox.

I don't feel the suspicion of the sbox being bad actually requires any defense of it, because it seems just ridiculous to me, but I do think it's interesting to point out, like, that sort of a plan suspected doesn't really make sense.

I'm not saying the people who have such suspicions are ridiculous at all. they just haven't thought it through, I think and I understand the instinct to paranoia especially directed at works in this space. I think it's a fairly appropriate instinct. you just need to think things through.

the point was by using an s-box, you can bring your own s-box, to allay (or I guess create) such fears about exploitable designs, and create your own hash function.

some thoughts about how to do that I invite in the readme. I'm not prescribing rules. pick your own, pick whatever you like. The point is you can make your own hash function that will probably be a good hash function. I definitely think you should test it with smasher, or whatever, to make sure it doesn't have any kind of flaws. I'm fairly convinced, after testing a few random boxes, you'll be highly likely to make your own good hashes with this.

<comment><USER2> > I'm fairly convinced, after testing a few random boxes, you'll be highly > likely to make your own good hashes with this.

[https://www.schneier.com/crypto- gram/archives/1998/1015.html...](https://www.schneier.com/crypto- gram/archives/1998/1015.html#cipherdesign)

Read and internalize this.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER7> I'm confused. Supercop is a benchmark for cryptographic hash functions, but SMHasher is a test for non-cryptographic hash functions. The use cases list cryptography, but also universal hash functions which are generally not crypto-grade. It compares itself to the SHA hashes, but only has 64 bit output.

Is Beamsplitter supposed to be cryptography grade or not?

<comment><USER8> It's not, at least not now it seems. It's just seeing if you can use an S-box design to create a "universal" hash.

</comment></comment><comment><USER9> I should warn any reader not to use this or any other novel cryptographic algorithm in production. Don't use anything crypto in production until it has been very heavily analyzed for years by professional cryptographers.

<comment><USER10> This.

If you want me to use your hash function, show me 2-3 independent analyses from independent researchers.

</comment></comment><comment><USER11> This hash is only 64 bits, so if you have more than ~10^9 or ~2^30 elements being hashed, collisions will become an issue.

Granted, most people don't have this problem, but it's not nobody.

</comment><comment><USER12> The source is using `.cpp`, though it does not appear to be using any C++ features.

Would it be reasonable to move to `.c` so that it can be integrated in all sorts of things?

Aside, when something is Apache licensed, and someone wants to make, say an Erlang NIF with something, what effects does that embedding have on the NIF library and users of the NIF library?

<comment><AUTHOR> what would be a better license to use to encourage people to use it?

also good point about CPP I will change that.

<comment><USER12> MIT and BSD licenses are very embeddable, but I am not familiar enough with Apache licensing when it comes to embedding. This is why I ask.

<comment><AUTHOR> Switched to MIT now

</comment></comment></comment></comment><comment><USER13> can someone ELI5 why this is useful over existing hash functions?

<comment><USER14> This is how I feel when people start talking about cryptography. Definitely feel my university underprepared me on this topic. :(

<comment><USER15> That's the wrong attitude. Universities are a place where you should be much of the learning yourself. There is not enough time in a class for a lecturer to recite every word or idea that is present in a large textbook but there is definitely enough time outside of class to read it.

<comment><USER16> > Universities are a place where you should be much of the learning yourself.

The professors in the first three years of my schooling definitely did everything wrong, then. Passing and failing classes had next to nothing to do with independent learning.

<comment><USER15> Passing classes is just a small part of what it means to attend a university.

</comment></comment></comment></comment></comment><comment><USER17> _I see that you ran out of particle names for your projects. May I introduce you to super-symmetry, then?_

What's the issue with picking names that do not exist already? It has got the upside that millions of webpages will _not_ appear in the results when people are searching for your project's name.

<comment><AUTHOR> Is this a reference to something?

I sort of get the feeling you're using voice, but you're the one speaking.

I don't get the italics section.

Also are you suggesting I pick another name? It sort of seems like you're replying to a comment, but this comment appears at top level.

If you can explain more I'll appreciate it. Thanks

Also, please suggest a name if that's your thing. I'm thinking 'metahadron' goes with the voice section.

<comment><USER17> No, there are no references in there.

The italis section is just a thing I add to comments sometimes: a few sentences that loosely relate to the thing I am talking about. It can be a quote, an imagined dialog, a flippant comment, ... other examples are at [0][1].

I was annoyed.

I'm physicist and computer projects have the annoying custom of picking names from physics, engineering or what else. Other people also come up with their own names, why should not computer tech people also do this?

Atom editor, Electron framework, Neutrino.js, Crankshaft, ...

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

[1] [https://news.ycombinator.com/item?id=23052357](https://news.ycombinator.com/item?id=23052357)

<comment><AUTHOR> Thanks for the explanation. I think the italis is cool and fresh.

hmmm, really interesting how you feel about the names. It sounds like that is super annoying.

I never thought about how naming would affect people invested in the names like this.

I don't think I need to defend it, so I'm not trying to here, just sharing that for me, beamsplitter sounds like such a cool word, as if a beam were a physical thing like a rock that could be split. Also something solid in itself, and connotes advanced, possibly war, tech. lasers. I'll going for that connotation. hash functions are usually very pathetically named.

also there's more to this name in this project because my initial design imagined the "beam" of the input, ricocheting around a network of s-boxes getting mixed. It seemed to me like the perfect hash, aesthetically and efficiently, and universal. but to my disappointment, I couldn't get a pure, s-box only design to work. I had to include some "traditional mixing function hacks" like multiplication, rotation and xor. But I wanted to keep the name because it was aspirational.

I can imagine that it must feel like all these annoying computer software people taking all these names that are not from their area, but from your area, and not leaving anything good for the rest. And when they have such high profile already! Like nobody will listen to the poor physicists, especially once all their names are taken, and then it will be more lonely. A nameless space, with nothing left. Sounds pretty sad.

Funny is for me, it seems physics stands above software, so using such names is a way to increase perceived value. But from your view, software has the higher profile.

Thanks for sharing.

<comment><USER17> Let me apologize for my complaints. It didn't occur to me that these names might be used out of admiration for a field.

I've also have to admit that physics needs relatively few new names in general which would make picking one a lot easier. There are also naming patterns as well, e.g. for superpartners (new articles in supersymmetry are either prefixed with S- or suffixed with -ion [0] in a predictable way).

[0] [https://en.wikipedia.org/wiki/Superpartner](https://en.wikipedia.org/wiki/Superpartner)

<comment><AUTHOR> That was cool to read your reply. actually looking back over my code, I see my achievement was better than I thought. I only used addition, and rotation. no mult, nor xor.

technically tho rotation can be thought of as including multiplication and xor. but also not. so I don't know.

</comment></comment></comment></comment></comment></comment><comment><USER18> I wish it had a more friendly name. I can't help but think of Room 641A.

[https://en.wikipedia.org/wiki/Room_641A](https://en.wikipedia.org/wiki/Room_641A)

</comment><comment><USER19> Looks interesting! What is meant by a "universal family"?

<comment><USER20> A universal set of hash functions is a set of hash functions such that randomly choosing any hash function from the set guarantees an upper bound on the number of collisions regardless of which keys from the universe are input to it (which are also random).

Basically it makes it more difficult for an adversary to exploit collisions from your hash function.

<comment> seph-reed I don't get how this could be used. I tried to imagine, and ended up with something wrong. This is what I imagined:

You have a list of hash functions, and choose one at random, then hash a password. Later a hacker gets these hashed passwords, and has an extra hard time? But this wouldn't work for checking passwords because you wouldn't know what hash.

What is a real use case?

<comment><USER21> I may be wrong, but after doing a bit of research, here's one example:

Alice is storing keys in a hash table. Since this is a hash-table, the hash (H) that Alice will choose must be fast. However, real-world hash-tables will use a relatively small number of bits from the output of H, because even if you have a table sized to 4 billion, that's only 32 bits.

Let's say that Alice does this by taking the lowest N bits of the output of H (this works in practice regardless of which bits Alice uses) where 2^N is the size of the table. N may change as elements are added

Eve wants to mess with Alice by sending a bunch of keys that all have the same bottom M bits, where M is the largest expected value for N. Since the hash H is very fast, this is very computationally cheap to brute-force, particularly if you have access to very parallel hardware like a GPU.

Now consider that instead of using hash H, Alice uses hash-family U. Whenever a hash table is created (or rehashed,) Alice selects a random hash from U. Eve can no longer easily generate keys that will collide in the hash table.

From what I can tell, for password hashing, this is not appreciably better than salting, if the size of the set of possible salts and the size of the set U are the same.

</comment></comment></comment></comment><comment><USER22> What's an S-box (substitution-box)?

<comment><USER10> An arbitrary function of X bits to Y bits. You generally want to pick these to be as non-linear as possible.</comment></comment>


Spanish militarized police at .cat operator's HQ - <AUTHOR> https://twitter.com/puntcat <comment><USER2> First they came for my right to vote, and we spoke out, but we were powerless.

Then they came for my internet, and I spoke out, but nobody could hear.</comment>


Amazon makes warehouse workers sign non-competes - <AUTHOR> https://www.theverge.com/2015/3/26/8280309/amazon-warehouse-jobs-exclusive-noncompete-contracts

<comment><USER2> Noncompetes should be banned at the federal level using California Law as a model.</comment>


Jailed Pirate Party member becomes Tunisian government minister - <AUTHOR> http://arstechnica.com/tech-policy/news/2011/01/jailed-pirate-party-member-becomes-tunisian-government-minister.ars

<comment><USER2> Is <http://news.ycombinator.com/user?id=slim> Hacker News' first high-level government official? :-)

The Guardian also covered this in [http://www.guardian.co.uk/world/2011/jan/18/tunisia- dissiden...](http://www.guardian.co.uk/world/2011/jan/18/tunisia-dissident- blogger-minister)

</comment><comment><USER3> > Several junior ministers have already walked out after it became clear that > key jobs, including interior and defense, won't be changing hands. For its > part, the new government has pledged to hold a full slate of elections > within the next few months, saying that current ministers were still needed > to maintain stability during the transition period.

You just had a revolution, guys.

<comment><USER4> Where was the mainstream media on that one? And thank you ArsTechnica!

<comment><USER5> Where was the social media?

Seriously: most mainstream outlets I follow have devoted a reasonable amount of space to Tunisia, albeit hampered by an obvious lack of experts on the situation there. Social media? very little. Pretty much the only stuff I've seen has come via the pirate parties or the far left.

Possibly it's just my friends and contacts being unusual -- but my hunch is that if you tried to quantify online attention to Tunisia, you'd find it lower than in the mainstream press.

<comment><USER6> > _Where was the social media?_

There's been quite a lot of coverage on Reddit, e.g.:

[http://www.reddit.com/r/worldnews/comments/f3zyh/new_governm...](http://www.reddit.com/r/worldnews/comments/f3zyh/new_government_formed_in_tunisia_list_of/)

[http://www.reddit.com/r/worldnews/comments/f42mk/arrested_pi...](http://www.reddit.com/r/worldnews/comments/f42mk/arrested_pirate_party_member_becomes_tunisian/)

[http://www.reddit.com/r/worldnews/comments/f4jdq/new_tunisia...](http://www.reddit.com/r/worldnews/comments/f4jdq/new_tunisian_government_declares_total_liberty_of/)

[http://www.reddit.com/r/worldnews/comments/f4nvx/israel_drea...](http://www.reddit.com/r/worldnews/comments/f4nvx/israel_dreading_a_democratic_arab_world_israeli/)

[http://www.reddit.com/r/worldnews/comments/f4lpn/juan_cole_t...](http://www.reddit.com/r/worldnews/comments/f4lpn/juan_cole_tunisia_uprising_spearheaded_by_labor/)

<comment><USER5> Note that 3 of those are links to mainstream media outlets. Of the other 2, one is torrentfreak talking about the pirate angle (which is the right angle for them, and fascinating as a reflection of the growing international seriousness of the pirate movement -- but is perhaps not the most important part of the revolution).

I kind of expect the online world to put the professionals to shame in depth and insight of coverage. Often that does happen -- here, not so much.

</comment></comment></comment></comment></comment><comment><USER7> I would be cautious about celebrating this. It might be a bit of a tokenism; the former runner ups are replacing Bin-Ali and his family, and they might be trying to hijack the revolution by placating the youth.

<comment><USER6> I'm reminded of the Romanian revolution in 1989, when some of the 2nd tier of Communist leaders started calling themselves the "National Salvation Front" and stayed in power.

</comment></comment><comment><USER8> It will be interesting to see just how much influence he's able to have. Even without being the leader of a major government, this could make a difference in how the party is perceived. Just having a Pirate Party member in government is pretty significant, IMO.

<comment><USER6> > _It will be interesting to see just how much influence he's able to have._

The giovernemtn have said there will be democratic elections within 60 days. If they renege on this, it would probably make sense for him to resign, lest he be seen as a collaborator with the old regime.

> _Just having a Pirate Party member in government is pretty significant, > IMO._

He's the first Pirate in government, as far as I know.

</comment></comment><comment><USER9> I read that he's the "State Secretary for Youth and Sports." Not quite a minister.

<comment><USER10> That's most likely a direct transposition from French "secretaire d'etat", which is just a junior minister.

</comment></comment><comment><USER11> Now the question is: Is diplomatic immunity retroactive?

</comment><comment><USER12> Oops - maybe the ruling class in Tunisia should have made the state their intellectual property.

</comment><comment><USER13> Pirates, pirates everywhere!

<comment><USER14> Apparently you can't have a party, even a political one, without "Arrrrrr."</comment></comment>


New Motion Capture Tech Makes Games Look Like Films - <AUTHOR> http://spectrum.ieee.org/tech-talk/consumer-electronics/gaming/amazing-new-motion-capture-tech-makes-games-look-like-films?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+IeeeSpectrum+%28IEEE+Spectrum%29&utm_content=Google+Reader

<comment><USER2> The game doesn't have a film "look" at all - at least in terms of light and texture it's like every other game out there - however the characters do have all the subtleties and nuances of the live actors.</comment>


How to self publish a best-seller - <AUTHOR> http://www.jamesaltucher.com/2013/07/how-to-self-publish-a-bestseller-publishing-3-0/

<comment><USER2> A few bits of good advice, but he demonstrates clearly why he needed to hire an editor.

Also he is wrong about the lack of serious editing by professional editors. I've always gotten great editing from my book publishers.

<comment><AUTHOR> Hiring a good editor on your own seems far more valuable than giving up control of pricing your own ebooks, and getting 17cents[1] on the dollar for digital royalties though.

[1] [http://jakonrath.blogspot.com/2010/09/acquisitions- editor.ht...](http://jakonrath.blogspot.com/2010/09/acquisitions-editor.html)</comment></comment>


Ask HN: Would a tool to show emails you sent that weren't replied to be useful? - <AUTHOR>

. <comment><USER2> It would be extremely easy to for anyone who wanted to, to write such a script using procmail, or maildrop.

<comment><AUTHOR> Interesting!

Let me refer you to the second highest comment on Dropbox's original HN posting:

> I have a few qualms with this app:

> 1\. For a Linux user, you can already build such a system yourself quite > trivially by getting an FTP account, mounting it locally with curlftpfs, and > then using SVN or CVS on the mounted filesystem. From Windows or Mac, this > FTP account could be accessed through built-in software.

<comment><USER2> Okay, I see your point. However, I've never used Dropbox, I use git-annex as a better solution to the problem. Likewise, I would still use procmail, or maildrop in this situation. This is mainly due to the fact that these solutions are _much more_ reliable than those offered. Unfortunately, this doesn't stop people from using them in mission critical situations, to their downfall.</comment></comment></comment>


Bacteria That Can Help Find Land Mines - <AUTHOR> https://www.wsj.com/articles/the-bacteria-that-can-help-find-land-mines-1492786346 <comment><USER2> The various compounds released by the (organic (containing carbon)) explosives can be metabolized by bacteria. And bacterial metabolism is often linked to sensors within the bacteria already - so that the machinery for metabolizing X isn't actually produced unless the bacteria can sense X in its environment. If we find a bacteria that already has this system, we can commandeer it so that upon sensing TNT/DNT/Nitrates it produces a reporter (color, it moves, another sense-able chemical) instead of or along with the enzymes used to metabolize those explosive materials.

A list of tested analytes and reporters: [https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4625088/table/T...](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4625088/table/T1/)

And a very basic diagram: [https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4625088/figure/...](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4625088/figure/F1/)

And images of what the bacteria look like when 'turned on' by TNT, DNT, or nitrates: [https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4625088/figure/...](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4625088/figure/F1/)

[From the paper: [https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4625088/](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4625088/) ]

</comment><comment><USER3> Article with no paywall

[http://facebook.com/l.php?u=https://www.wsj.com/articles/the...](http://facebook.com/l.php?u=https://www.wsj.com/articles/the- bacteria-that-can-help-find-land-mines-1492786346)</comment>


Is Nexus One a proof that the free model does not work for mobile applications? - <AUTHOR>

Does it mean Google recognizes the need to monetize Android development. And they do not see search/mobile advertising to be enough. Selling their own device is the only way they can justify their Android endeavor.<p>It would also mean chrome tablet is not far behind. There are rumors already: http://www.huffingtonpost.com/shelly-palmer/google-preparing-a-tablet_b_410287.html <comment><USER2> No, it means that if you give people items instead of a service that you will have to charge them for those items.

Free physical goods does not scale because you can't guarantee that a freely given physical good will not be put to uses that you did not envision.

The people that can do that are the mobile carriers which is why they will be able to offer you a 'subsidized' phone, they'll take it back over the time that you have the phone in your possession. It's the whole reason for all that sim-locking and jail-breaking that people do.

Offering a service and selling a piece of hardware are two fundamentally different things and have nothing to do with recouping development costs, it's just another way to make a profit and to ensure that it scales.

Have a look at the cuecat <http://en.wikipedia.org/wiki/CueCat> fiasco to see what could happen otherwise.</comment>


Tinkering: prototype your way out of uncertainty - <AUTHOR> http://juanreyero.com/article/technology/tinker.html

<comment><USER2> I can only strongly agree. Every time I get a block I just start (coding/designing/planning/climbing.) When I fall off I've got more experience than when I started and eventually I'll get there. I've spent far too long staring at a blank sheet not even knowing how I'm going to go wrong.</comment>


Forget Pinterest – Why You Need XeeMe - <AUTHOR> http://thetwohalves.com/2012/02/forget-pinterest-why-you-need-xeeme/

<comment><USER2> 'digital crack for women' is a pretty big, profitable market. I am glad you like other products, but as a fan of pinterest, I like what they are doing and the service they provide. I only have facebook, twitter, Linked and tumblr-- for the longest time I only had facebook, because keeping track of all my social presence is a nightmare. But the last thing I need is to aggregate all that presence is one place. I use each avenue for different things, and for a difference audience.</comment>


The Most Gangsta Yearbook Quote to Ever Exist - <AUTHOR> http://www.complex.com/music/2013/06/the-most-gangsta-yearbook-quote-to-ever-exist

<comment><USER2> ...I think I'm in love.</comment>