Is it possible to become 'excellent' at both design and coding? - <AUTHOR> Today I left my position at a tech startup (to join a different tech startup). My former boss and I have some differences of opinion, but I respect him a LOT, and he gave me some parting advice that really stuck with me.
He said, "You're going to be successful. You're very good at two things [design and front-end development]. You need to focus on ONE of them, and get from 'very good' to 'excellent'. Then build your career on that."
My career thus far (5-6 years) has been based on straddling the fence between the Photoshoppers and the code wranglers, and I'd like to think that I've gotten to where I am because of that mixed skill set. But my boss wasn't the first person to tell me this. I've had people from both camps suggest that I pick one discipline or the other and really become an expert.
A couple questions:
1) Am I selling myself short by trying to be good at multiple things, when I could be an expert at one? 2) Is it even possible to become truly excellent at more than one thing in one's career?
And a bonus question:
*) Are there any examples of 'generalists' who have built and/or led successful startups? <comment><USER3> The beauty of being both a coder and designer is that you can create a product completely on your own. This makes setting up your own start-up a lot simpler.

So, to your question of whether you should focus on one or continue to be generalist, it depends what you want to do with your life. If you want a career working for others, then it might be best to focus on one of the disciplines.

If, on the other hand, you aspire to create your own products, or run your own startup, then I would recommend you continue to work on both your skills.

Indeed, my advice for any developer who wants to do their own start-up is to - once you have reached a good standard - forget honing your development skills and start learning to design.

Learning another programming language or mastering another object orientated design pattern does not bring you any closer to being able create a product yourself. Learning an entirely new but relevant skill like design does.

For your information, I am a journalist who became a developer five years ago, and who very early on in my development career sought to improve my design skills.

I am the guy behind <http://www.gambolio.com>, <http://www.tiki-toki.com> and <http://www.peopleplotr.com>, for which I did all the design and a good chunk of the coding. Also responsible for <http://www.casualgirlgamer.com> and <http://musicgames.co>

<comment><USER4> Hi Alex, I am really impressed by your design skills. And having spent more than 5 years learning programming and doing programming, I agree with your point that learning designs brings an extra dimension to my work that another language will not.

Any advice for the design skills impaired developer like myself?

</comment></comment><comment><USER5> I had folk give me similar advice when I was young. It's dumb advice.

Imagine you go the coder route. When you going to specialise in there. Big data? Databases? Embedded coding? 3D graphics? Game coding? Web app coding? Front-end? Back-end? Testing? People can make careers out of any of them - <USER2> many more besides. It's pretty much impossible to be an expert in _everything_ on the coder side.

Imagine you go the designer route. What are you going to specialise in there? User testing? Icon design? Branding? Web design? Print design? Interaction design? Information Architecture? People can make careers out of any of them - and many more besides. It's pretty much impossible to be an expert in _everything_ on the design side.

I've had a pretty successful career with a bunch of things from the developer side and a bunch of things from the designer/UX side.... and some other bits and bobs from other things like project management and business folk.

I'm really good at interaction design. I'm really lousy at visual design. I'm really good at testing. I have no embedded coding skills. I'm great at... well... you get the idea...

Design and Development aren't "things". They're communities of practice. They're social constructs. New ones appear and disappear over time.

Pick "front-end developer" for example. Twenty years ago that role didn't exist. A bit of layout knowledge. I bit of a design eye. A bit of development. A bit of markup. And so on. Those skills existed - but there wasn't a 'role' where you needed to be expert in all of them.

In another ten or twenty years I'll be surprised if anything like "front end developer" exists in the same way (look at how folk using stuff like node.js blurs the coding side of front/back end development for example).

Figure out what you want to do. Then acquire the skills you need to do that - and be excellent at those. The choice isn't between being a design expert and a development expert. Instead make a choice to be excellent at the things you enjoy and are good at - and then go find career where you can use those skills.

</comment><comment><USER6> I consider myself both a designer and a developer, and wouldn't have it any other way. One day I will be pushing pixels, the next I will be writing an ad targeting algorithm in Clojure.

Do you think it's impossible to be good both at Graphic Design and playing the piano? No. Why should it be any different with development?

Your mixed skill-set makes you an easily differentiable and incredibly valuable personality. I would hire you in a heartbeat, if you're both great at coding and design.

As for your bonus question, here is some anecdotal evidence: I joined a startup as employee #1 started by a generalist friend (and a non-tech co- founder). For the better part of a year, we were the only two technical people, both generalists. We made some awesome stuff, and now we're making bajillions of dollars and have ~20 employees, 14 months after day one.

<comment><USER7> _> I consider myself both a designer and a developer_

But do you consider yourself 'excellent' at both?

<comment><USER5> _But do you consider yourself 'excellent' at both?_

Do you know anybody who is _expert_ in everything in design or development?

If not, why does it matter if somebody chooses to specialise in a subset of design and development - rather than a subset of design or development.

<comment><USER7> Read the OP title: _'Is it possible to become 'excellent' at both design and coding?'_

<comment><USER8> That seems like a very simplistic question, and adrian and seoxy are trying to explain why that is so. There are MANY facets within both coding and design. It would be simplistic to assume you could be excellent in all facets of either one (because they are so broad). So why can't it be possible to be excellent at certain aspects of both coding and design?

</comment></comment></comment></comment></comment><comment><USER9> Hybrid dev/designer here. My experience:

Being a hybrid is difficult because of these kinds of situations. Even if you get to be very good at one or the other (or both), you're still perceived as inferior by virtue of your supposed "lack of focus."

Bullshit.

I had a hard time with this until I realized that I bring something rare to the table. The ability to traverse these two worlds is an immensely valuable trait. People like you are often the glue that binds great teams together, because you know both professions from the inside, and you're able to communicate with each in their own terms. You can add value constructively ("Here's a possibility that either side isn't aware of because they don't know what the other half can do") and prophylactically ("That's a bad approach to the problem, because the other team will get stuck hard if you do it that way"). You are uniquely able to hash out ideas to the show-somebody phase quickly, because you know how to supply all the requisite ingredients.

At the end of the day, hybrids like you (and me, and lots of others out there) have a harder time demonstrating value because it's assumed we are simply shallow generalists. I'm sorry to say that the onus will always be on you to prove them wrong, and you have to market these rare aspects of yourself. The effects of your presence in a company are often diffuse and hard to measure, which makes your task doubly hard. Welcome to the club.

There are many companies which are desperate for talent like yours. If you are like me, you'll feel unfulfilled working exclusively on one side or the other. Don't settle for a job that only draws upon half your talents—you are more than the sum of your parts. Keep growing both sides of you, and make "marketing myself" a learning goal for this year. :)

<comment><AUTHOR> Great points. I think you're dead-on in your observation that the hybrid's biggest values often go unnoticed. Executives won't see or hear every little thing you do that adds value; interfacing between design and dev is the big one, I agree.

To be honest I've never given much though to marketing myself. Maybe I'll pick up a Seth Godin book or two this summer.

</comment></comment><comment><USER10> I don't think it's possible to become excellent at both being a designer and a developer but I do think it's possible to become an excellent designer/developer and the distinction is important.

First of all, I think there's been a devaluation in the term "excellent"; every startup is hiring "the best people" and all teams are "A+". Under the current, debased meaning of the word, it's trivial to be excellent at both.

But, to me, to achieve excellence requires becoming the embodiment of the craft. An excellent engineer, when they have a spare moment of the day, they're thinking about an engineering problem; when they encounter a problem, they analyze it like an engineer; when they cook dinner, they cook as an engineer would. They don't just merely work as an engineer, they live as an engineer.

And because of this, you cannot serve two masters. Once you become excellent at engineering, you can't become excellent at design because to get to an level of excellence would require doing things which your engineering brain is screaming at you are wrong to do.

What is possible, is to become excellent as a designer/developer which is, instead, to focus on the embodiment of the inter-relationship between the two. To look at all problems as a fundamental tension between the two world views and an appreciation of how to thread the middle path.

<comment><AUTHOR> It kills me that everything is "5 stars", "10/10", "#1" these days. When everything is special, nothing is special, right?

I like how you identify the designer/developer as a role in and of itself; embracing the tension instead of picking a side. I've never heard it phrased quite like that before, but I think it makes a lot of sense.

</comment></comment><comment><USER11> You are focus in the wrong question. His advice is like saying: you are good at tables and divs, pick one and be great. Design and front end goes hand in hand, is really hard to be excellent on one and sucky at the other. His advice refelects two things and neither are related to you:

1\. His view of the world is framed by specialization. You're a good pawn if i can easily put you in a box that I can understand, but is hard for me to imagine someone that s great at both things, hence you should pick one. The lack of understanding is a defect on him, not on you being too general. If you have both talents, great! Enjoy.

2\. He is a boss, and instinctivly will try to parent you because is a non aggresive way to manage your behavior, something that he is pay to do. The problem is that kind of relationshipss are hard to let go, so he has to give you something, and whatever he gives you comes out of his vision on how the world should work. This is not ill intended, his advice might be honest, but without realizing it, limiting.

I think you can safely ignore it and move on into your new workmwith an attitude of: do you want me to fix your front end? Because is not working properly and it looks like shit.

<comment><AUTHOR> Thanks for the comments, jorgeleo. I do believe my boss had my best interests in mind, but you're probably right that it's easier to put someone "in a box" than it is reconcile the nuances of someone who evades classification. And hey, I don't blame him; I like to organize, classify, and categorize stuff, too. Everyone does. I think it's just human nature.

But your overall point is well taken. I'll focus on doing good work and try not to worry about where I 'fit'.

</comment></comment><comment><USER12> Unfortunately, there will always be a multi-classing penalty of sort. (I'm one of those people who code and design for web development, but masters neither.) For design, I've learned that the essential trait is to set one's mindset and philosophy on problem solving (as well as have an intrinsic taste for art). For code, I believe it is quite similar. Except that standards and practices constantly change. As a designer, it is your goal to meet and deliver these standards. Personally, I find it hard to be extremely good at both although I still consider myself competent.

My personal answer your question:

1\. Some companies/start-ups value designers who have penchants for design while still being technically competent. e.g. someone who is familiar with grids, typography, art movements. While at the same time is familiar to version control, knows the basic structure of an app and the ability to build it single-handedly. Although I think that they serve a better role as project managers.

2\. I have yet to witness one. If ever I meet one, I'd like to know how they were able to balance their daily information consumption.

edit: spacing

<comment><USER13> Multi-classing penalty, of course, applies. BUT there are classes that are multi-skillful by itself. And you can be excellent in those, even if they fall behind in any particular skill behind the more focused ones. That being said, I've always played rogue or bard. :{-

<comment><USER14> Bot of these comments are excellent, I love the comparison to multi-classing. I think it really hits the point.

<comment><USER13> Yes, it's been well discussed in long sleepless nights, as any D&D subject. :D

</comment></comment></comment></comment><comment><USER15> Is not that you can not be an expert on both things. It is that you can not "execute" on both at the same time because you don't have time.

Time is your main resource and nobody can do it all at the same time. Some things take a lot of time just starting to work and if you change from one thing to another during the day you don't do anything.

But don't believe me. Test it yourself. Measure your time, take your smartphone timer and monitor yourself along the day, write it down how you spend your time, not as you should, but as it really is.

If you are as good as you said you can pick one as your main area and them choose someone who knows how to do the other. Having "taste" and knowing who to choose is not as easy as it sounds.

(*) Yes, there are examples of generalist who have led successful startups, most of them are done by generalists, if for generalists you mean someone who is able to trust others doing the specifics because they know they can't do it all. With a startup you have to be accountant, tax payer, product evangelist, sales manager, marketing head, engineering head all yourself...

</comment><comment><USER16> One thing to note - there's value in people who can be "bridges."

It might make some specialists angry, but there's value in people who can take a meaning in one realm of people and translate it to something meaningful in another.

Designers and engineers tend to speak different languages, so being a person who can communicate the differences and take what a code wrangler means and turn it into a design (and vice versa) is valuable.

I think what you want to stay away from is being the "I know everything about everything" guy - that sets you up for failure.

<comment><AUTHOR> Acting as a liaison between teams -- and even between members of the same team -- is something I find myself doing often. Unfortunately, as @idan pointed out, these kinds of things often go unnoticed by management; and even if they are noticed, they're hard to quantify.

</comment></comment><comment><USER17> If he was talking about '[visual/user-interface] design' and '[algorithmically/architecturally-scalable] development', I could see there being a tangible tradeoff in acquiring expertise. Effort spent on one may offer little spillover benefit for the other, meaning larger returns to specialization.

But '[visual/UI] design' and 'front-end development'? I'm perplexed that so much of a culture of splitting these roles has arisen. In my mind they overlap so much that enforcing a formal division, in either process or the recognition of 'expertise', introduces wasteful mismatches of expectations and cost/value estimates. That is, the dividing "fence" you say your career has been straddling shouldn't even exist.

The cynic in me thinks the advice you've received, from the boss and 'people from both _camps_ ', has been more about them defending their traditional turf and comfortable silos than what you should do to be 'excellent'.

<comment><AUTHOR> To be fair, I do feel that the people who've suggested I make a choice are looking out for my best interests. I would consider each of these people to be a friend (including my former boss). But I do think you're right that people like to classify things and put them in boxes. I don't fall into either box and that may cause dissonance for some.

</comment></comment><comment><USER18> Right now, the field has decided that the coder-designers are worth their weight in gold. As such, at this moment and for the foreseeable future, you are in a great position to pretty much write your own ticket wherever you want to go in the startup world. This will occur even if you don't ever progress your craft beyond being 'very good' at both design and front-end development. For this reason, you now have a good opportunity to decide for yourself what you will enjoy doing most without having to worry about pigeonholing yourself into some particular job description.

Also, consider this: if you have become 'very good' at design and 'very good' at coding in 5-6 years of applied practice, then how much further will you push your skill with another 5 years of dedicated effort?

<comment><AUTHOR> Thanks Kaizyn, this is very encouraging. :) I consider myself very fortunate to have a broad range of options.

</comment></comment><comment><USER19> Check out page 46 of the Valve handbook, I think their take offers some insight: [http://www.valvesoftware.com/company/Valve_Handbook_LowRes.p...](http://www.valvesoftware.com/company/Valve_Handbook_LowRes.pdf)

On the other hand, there's an argument to be made to the tune of: "Try to sit in two chairs and you'll fall between them."

My opinion is that anyone who builds and/or leads a successful startup will tend to wear many hats during the process, especially in the beginning, so if you're goal is to found a startup, having a diverse skill set can't hurt. Even if the founding team consists of individuals with their own unique skills, the cycle of design, production, and deployment is one that requires a collaboration between stages to be functional. Design leads to production, production to deployment, and deployment to re-assessment and design once again, etc. Stagnation in any of those areas is dangerous for the success of a startup, and can come from a missing or weak link, and just as easily due to poor transitions between phases. Being able support this cycle by tapping into both skills is a great asset to a team, and a early hire or a founder, and I believe that creates a strong argument for maintaining each skill set.

<comment><AUTHOR> I LOVE the idea of the T-shaped person -- that's a fantastic concept, and seems like a great target for my own skill development. Plus, it makes me an even bigger Valve fan than I am already. :)

There are certainly many, many skills that go into building and running a tech startup, but I think the technical skill continuum looks (broadly) like this:

systems > back end > front end > design

The best teams I've been on have included members from each discipline with overlap into their neighboring areas. When transitioning from phase to phase (or, in the sort of rapid development that we're seeing more often today, where several tasks are occurring in parallel) it's super important to not have any gaps between segments.

</comment></comment><comment><USER20> Oh god. I'm doing the job search song-and-dance right now and you wouldn't believe how many interviewers have asked me "So..... you do design, and you also code. Which do you like more?" Which to me is a completely nonsensical question. It's like asking if I prefer spreading peanut butter or spreading jam. No, I like making PB&Js (or web apps). Why is that hard to understand?

Well, some of these interviewers are recruiters, and they have to put me in a well-defined box in order to match me to a position. I have some sympathy there. But the others... are more disappointing.

But: I've found that the people and companies that "get it", really get it, and will reward you for it. Instead of asking about the "design" and "code" boxes, we can have actually useful conversations about subsets of skills within them (user experience research! graphics! Javascript! Python! databases!) What with my technical inferiority complex and such, such people value me even more than I value myself.

And for those that don't, well, when you create your own company down the road, it will build things that are neither vaporware mockups nor asstastic apps, and have a culture of "getting it" from the start, so you can eat their lunch. :)

</comment><comment><USER21> Yes, it's possible. I don't suggest it.

The upside: you will develop the ability to create things that the communication barrier between excellent developers and excellent designers make very difficult.

The downside: You will have to be an expert in both to keep up with the expert designers and expert developers you will work with later in your career... and every company you work for will try to pigeon-hole you (as design and dev are generally different teams with different management).

Your standard added value to the company will be in your efficiency. You will work at 1.5x the rate of your coworkers (as you will design with development in mind, and develop with design in mind). You will be golden every once in a while when a project comes up that requires novel design AND novel development (you will save the company a ton of man-hours in meetings).

Having both will generally move you to the top of the resume pile when you go job searching, but they will hire you as one or the other (and you have to be sure they will let you do both).

If you don't want to devote your life to it, I suggest you specialize in one.

<comment><USER17> Isn't this only a problem at some organizations, for example over a certain size/age?

And if you're a true 'double threat', stuck in an organization that doesn't let your synergy be 1.5x+ more productive than others in specialized cages, wouldn't that be a signal to move on?

</comment></comment><comment><USER22> Being reasonably good at more than one thing always landed me interesting and rewarding jobs.

I find that this is helpful to bootstrap a product, because it allows to remain in low expenses mode while getting started.

But then you need to understand what to delegate at the beginning, and what to delegate later on (even if you are reasonably good at it).

</comment><comment><USER23> I've been curating a list of people who balance both skills exceedingly well for quite a while on here: <https://twitter.com/#!/micrypt/devigners/members>. Suggestions are very much welcome.

<comment><USER24> Great starting point, I'd love to see females on there. Not sure what it takes to meet the developer status, but you might have good luck with lovely ladies like @divya, @leaverou, @Sunfeet22, @stephaniehobson, @zahnster, @denisejacobs. To toot my own horn, I'm @_mandynicole - a front-end designer - even though I'm not a big Twitterer.

</comment></comment><comment><USER25> I have done a lot of design/coding work for <http://muziboo.com> and <http://supportbee.com>

While it may not be possible for you to be the best designer and programmer for your company, you can learn enough to be able to start from an idea and build a MVP and get some customer traction. At that point, you can start hiring experts. No point hiring experts during the validation phase. As long as you can code and make acceptable (read contemporary) designs, you should be able to validate your ideas and bring in some traction on your own.

Even when I am hiring for my early stage startup, I would prefer people who can do a little bit of both.

</comment><comment><USER26> I think there is simply too much stuff to know about in both coding and design. There is simply not enough not time to become really knowledgable in both.

However, I am not sure if you really need to be super knowledgeable to benefit from knowing both sides of the fence. I'm sure it's possible to become really good at a subset of coding and design.

By the way: these are just my musings. I'm very early in my career myself. Personally I'm aiming to become effective at programming relating to the user interface of things, and design wise I focus my efforts on interaction design, information architecture and visual design. I want to learn more than what I just mentioned, but this I what I aim to be my core.

<comment><USER27> > _There is simply not enough not time to become really knowledgable in both._

Please elaborate. Humans live a very long time.

Are you suggesting that design and code evolves so quickly that it is impossible to keep up?

<comment><USER26> Upon further reflection I don't think it's impossible, but I still think it's probably very difficult.

Both design and coding are both huge fields. I am not merely talking about becoming a good designer and developer at once, but becoming one with a lot of knowledge in both.

Just take the long lists of things that that relate to each field: Design: interaction design, information architecture, illustration, visual design, interface design, user testing, typography, color theory, composition, accessibility, different design processes, brainstorming techniques, using grid systems, cognitive psychology, sketching Coding: HTML/CSS, various programming languages ranging from low level to highly abstracted, various libraries, understanding of good software architecture, algorithms, maths, understanding how computers work, understanding data structures

There is probably more stuff I forgot to mention. As I wrote in my previous post: I think the key is to choose a subset of both sides.

<comment><USER18> Do you suppose that medieval master craftsmen had to pick and choose between being very good at using specialized tools to make things and being very good at knowing about the 'human factors' that go into making an object appropriate and desirable to people?

How is this any different? On one hand, you have a set of tools along with a craft of making things with those tools. On the other, you have a set of skills that help you determine the necessary characteristics of the crafted artifact so that it is pleasing to its end user.

</comment></comment></comment></comment><comment><USER13> My design skills are on par with most of the designers I've worked with, and pretty much same goes for coding. I'm not excellent in any, ignoring few bright moments. I've also done game music, play few instruments, and the list goes on. I DO NOT EXCEL in any of those, but that might just be my high standards. However, in the companies I've worked I've always been THE most useful person.

Earlier this year, I've started my own company and ran it sucessfully basically by myself.

The point being - you probably cannot be excellent at both design and coding but being very good at more than one skill makes you excellent in itself.

Exceptions to the rule always apply.

</comment><comment><USER28> It's great to have multiple talents, but people will almost always try to pigeon-hole you, as a way to simplify the world around them. You may get further by presenting yourself as 1-dimensional in different contexts, which is a shame but that's life.

The real concern is that your colleague who is also a "good" programmer currently and focuses on that one task will be a able to present himself as an "expert" programmer in 10 years time (or at least as someone with considerable experience, for what it's worth) whether or not his actual skill set has improved much.

There's also Economics at work: companies tend to adopt a division of labour between specialised roles as it is far more difficult to hire someone with multiple skill sets. One person with two (relevant) skills usually costs more than two people with one skill. This means that a companies' money goes much further when they hire single-skill workers and scale the company to the point where each worker has a full-time job.

This rule doesn't it apply when dealing with small companies (especially startups) which may require individual employees to adopt multiple roles, perhaps informally. Nor does it apply when multi-skill workers are essential or significantly higher-performing: e.g. presenters of physics tv programmes tend to be both good physicists and good public speakers.

In summary: 1) mostly 2) no, but people will pigeon-hole you anyway *) yes, you have to be - this is where multiple skills may really give you an edge.

</comment><comment><USER29> What you should do is what you want to do, and if you enjoy both topics, there is no reason to pigeonhole yourself into one of them. It is possible to be successful by focusing on breadth as well as depth, although the challenges are different. You are the only one who can decide what is right for yourself and for the kinds of jobs you want to pursue.

As far as whether it's possible to be excellent at both design and development, the answer is clearly Yes -- if you have 10,000 hours to put into each of them. It's pretty hard to find a role where you can focus on two distinct areas for 10 years, but it's possible (though often when this happens, one is professional and the other is a hobby).

However, you should recognize that both design and development are very fast- moving areas right now, and so being an "expert" in one of them usually means you are good at problem-solving and you can search online competently. So there may be a lot more overlap than some people think, which would make it easier to be an expert in both.

If you are interested in management theory, the traditional view is that there is a tradeoff between specialization and productivity (think Scientific Management, Division of Labour, etc.). A more modern perspective is that jobs that require creativity benefit from job variety and task identity (basically the ability to work on more aspects of the problem rather than just being one small cog in a large machine).

</comment><comment><USER30> If you want to build a successful startup, your ability to wear many hats and push more than one aspect of the product forward in the early days is super valuable. If that's your goal, continue to straddle the fence.

If you're thinking about this inside of an organization, you have to decide what kind of person you want to be: the nail or the glue.

It's possible to not specialize and to be super valuable. You can even lead teams with this approach - as long as you're very cognizant of where your people are better at one specialty than you (i.e. your designer gets to make the tough calls, not you). When you straddle the lines, you're able to translate between experts and to make sure all of the little details are covered. Often, you are the reason that things stay together instead of splintering apart: the glue.

But if you really want to be able to call the shots and be the expert in an area, to lead the team and to be ultimately responsible for "X" - you need to be focused on it. You need to have the most clear understanding of the problems you're dealing with and the person who spends the most time working on and thinking about it. Your value comes from having a sharp and accurate point of view - the nail.

To those who say that you can be expert in both, the answer is that you're fooling yourself. The world that we live in is such that it's impossible to truly be an "expert" in anything. The best we can be is to be constantly learning through practice, education and discussion.

It's impossible to constantly be on top of code and expert in design at the same time because there's so much to learn about each area that splitting your time leaves you behind the truly focused individuals.

</comment><comment><AUTHOR> Having read everyone's responses, I think followup question #1 was the most important one: Am I selling myself short by trying to be good at multiple things, when I could be an expert at one? Simply being 'very good' at two or more things is extremely valuable, even if means not being 'excellent' or 'an expert' at either.

I think for now I'll continue down my current path. I like to code, and I like to design, and I happen to be decent at both, and I think I would be disappointed if I was somehow forced to give up either. So why not continue? It's served me well so far.

I may never be able to hang with the hardcore code slingers or the hardcore designers, but there's a ton of spectrum between the two extremes that is largely ignored, and there's value to be had there. As @idan pointed out, it might take some self-promotion and/or time to prove yourself (assuming you're aiming for work at an agency or other established company), but once you carve out your spot it will be clear how much value you provide.

And of course if your plan (like mine) is to strike off on your own, then who cares -- you'll get a ton of mileage out of a mixed skill set. You can always hire 'experts' down the road.

</comment><comment><USER31> I'm a generalist, have built the frontend, backend and designed Review19 <http://review19.com> .. i've authored a book and managed product dev team

i hate the idea of restricting myself. However i concede that people who specialists are in general better at what they do than generalists.

However as a generalist, i gain understanding from a broader perspective, which is invaluable.

Bottom follow your passion, whatever that may be.

</comment><comment><USER32> Front-end and design _is_ one thing. Get better at them, and build your career on that. On the other hand, companies will usually try to box you in to one of those disciplines. Don't underestimate how insane they will get as they try to do it. If they succeed, then either way you should always find time to pursue other interests, and to develop other skills, and to grow in your main field, or else one day you'll be left ass out with nowhere to go. What you know now can become old news _very_ quickly.

For your future to be bright, you should retain this "duality." And branch off on your own one day (before the ship sails).

Specifically about the front-end vs. design question, what I've seen is that most design+front-end folks reach a maturation point with the front-end technologies (and it becomes mostly about keeping up), then spend the rest of their time further developing their design skills.

I'll say it. I think that the best or most successful future tech entrepreneurs will be the Front-end Engineers and the Marketers. They are sitting there on the edge everyday with the users, and (overtime) they intuitively learn exactly what matters.

Most of the others fail.

</comment><comment><USER33> your problem is that you use the word "excellent" but don't bother to define what exactly that means.

for example: how about in terms of being an "excellent designer" we say that means something like being a winner in the annual AIGA design competition. and how about as an "excellent coder" we don't mean someone who is just good, or even great -- but someone who has actually contributed something to the field. this could be a new language or crafting the next twitter.

so by really embracing what "excellent" means the chances are you won't be in the top 1% of two somewhat different fields. if you want a good example of this from another world think how many rock stars can go on to become oscar winning actors? now can a rock star be an actor -- of course! but it would be a real rare bird for someone to be brilliant at both. so yeah we all LOVE elvis, and his movies were all enjoyable -- but he just wasn't an excellent actor.

side note: i'd also dare say that if you're looking at design as being "photoshopping" and at code as being a "code wrangler" you're looking at the production end of each process rather than the planning and/or architecting.

</comment><comment><USER34> Can you really split it? I mean, when you think about HTML 5 you have something in between. It has so many ways to connect data/functionality with design. With HTML 4 it was like backend, HTML, CSS, JavaScript. All separated. But now you have HTML 5, you have data in code (data-attributes), lots of semantic web features, tons of JS APIs, Canvas (2D, 3D), asynchronous connections, do stuff like templates and while you can split all of this you need to know about everything. Actually it's different. You need to learn everything. If you read the HTML5 and related specs you see exactly that.

Of course, if it only comes to design in the pure CSS or graphics way that works, but everything that gets to HTML is different.

It's really hard to consider HTML(5) (that one spec, as compared to other modules) a pure markup language any longer. Of course you can use it like that, but than you won't use a lot of features.

So in other words. You have to become both or else you will end up very far from being excellent.

I also think that's even a bit of a problem. I always thought it was good to look at web design and development in separate ways, but in many cases you will end up using the tools that would fit. On the other hand that thing is also kinda true for being an administrator or developer in a way. You can get out much more if you have experience in both fields.

But hey, that's what happens when you work on computer stuff (or computer science if you want, but it often isn't). You have lots of pieces and levels of abstraction working together.

Also isn't it the best to not focus on what you learn, but just have a look what you find interesting? If it's interesting you will focus on it, learn and work quicker and you'll know what to look out for when you need a job.

Oh and people often switch to other languages and learn completely new things, doing completely different things and become excellent. It's not like these things are too distant from each other. So I guess it will work.

Okay, now instead of philosophy an answer to your question.

> Are there any examples of 'generalists' who have built and/or led successful > startups?

DuckDuckGo I think. Administrator (FreeBSD and various servers), developer (Perl) and of course the website, which I as a user actually love a lot, even if someone who actually knows about design maybe would disagree.

<comment><AUTHOR> Ah, good call on Gabriel Weinberg of DuckDuckGo. He is obviously very talented in many areas.

</comment></comment><comment><USER35> Everyone wants to compartmentalize you. Many cannot interpolate the steps required to go from being very good to being excellent, so they scoff, and they try to impart advice. How are "very good" and "excellent" even quantifiable? Let them say what they will. Nod, respectfully. Then carry on. You belong in another crowd--a rarer crowd. You absolutely may be a designer and front-ender. I'd even speculate that these two crafts complement each other in making you better at both. You won't mindlessly design something that is artistic, yet up in the clouds (because you have a foundation in usability and functionality). Similarly, you won't create an unappealing and thoughtless front-end, because you have an affinity towards--and respect for--beauty. Your boss meant well, I'm sure, and in most respects, it certainly is a good idea to narrow in on your expertise, but these two trades, particularly, do not conflict. Whenever faced with two choices, those who truly distinguish themselves are the ones who say, Fuck it. I'm doing both.

</comment><comment><USER36> First, know thyself. If you don't have talent, or you do but can't stand hunting that race condition for days, or can't obsess on the tone of green that will convey that company's corporate identity better, you will fight an uphill battle for skills that others master much more easily.

That said, I'd say that the general advice goes like this: If you want to work in a corporate environment with lots of managers to report to, specialize as much as you possibly can. That's "knowing everything about nothing" as my adviser in grad school used to say. Companies with a high number of employees tend to prefer specialists. They of course need people with a high range of skills in upper layers of management, but you won't get there first thing you set your foot through the door, it'll take you years.

But if you'd rather work in a start-up environment, or just be your own boss, you need to know everything from the tradeoffs of apache vs nginx to which css tags render differently in Firefox and Webkit.

That's more a lifestyle choice, in my opinion. You can get successful both ways.

</comment><comment><USER37> 1) There's a reason the word polymath exists.

*) Sitting on the fence between design & development is hardly a generalist. Add philosophy, psychology, sociology, linguistics, anything really. And, yes, there are... [http://en.wikipedia.org/wiki/List_of_people_who_have_been_ca...](http://en.wikipedia.org/wiki/List_of_people_who_have_been_called_a_%22polymath%22)

</comment><comment><USER27> Only one way to find out - lets see your work.

More seriously though, I can relate. I'm in a pretty similar position as your own. The biggest advantage you have is that you can bring ideas to life, 100%, without ANYBODY else. And that is very, _very_ powerful. You are not limited by your skills or abilities, but only by your ideas and personal drive.

</comment><comment><USER38> I'm in the same boat. I've had many bosses give the same advice. It's bullshit. Bosses like to define you as one or the other. Companies that appreciate your mixed skills will appreciate you greatly and pay you a lot. If you start your own business you'll be in the perfect position.

</comment><comment><USER39> Yes and no. You can't be amazing at programming from the kernel up to the front-end and be amazing at designing from the front end all the way to marketing and UX. Reminds me of Forrst. About six of us had checked just "developer"; seemed like almost the entire population had checked both "designer" and "developer" and were proceeding to ask really basic programming questions.

On the other hand, there is seemingly limitless employment for people who can both design and implement a website. But that employment doesn't pay as well as just one or the other, even though it's easier to do just one or the other. The people who need these skills wrapped up in one person need it that way because they're too cheap to hire two people. The people who can afford someone special can afford two or three someone specials. In fact, the people who need you to be both probably would like you to write the backend as well, which you've sort of implied you don't do. So if you're in the market for employment with two decent skills, you stand good odds of being outcompeted by people with one excellent skill.

The problem with this line of reasoning is, where do you draw the line? I think the distinction between front-end developer and designer is pretty tenuous. If I show a developer a binary tree and ask them to calculate the height mathematically, I expect to hear the answer "log base two" without delay. Most of the front-end developers I've met have encyclopedic knowledge of Javascript, the DOM, several JS libraries and the various browser quirks, but could not solve a pure coding challenge offline with no time limit and their choice of printed technical literature. If you fit this front-end developer profile, but can also design, you belong to an interesting and fairly small class of people who really can do essentially the entire front- end themselves. I laud these people and I'm not at all convinced that to be effective at one you have to give up on the other. On the other hand, if you're a kernel hacker on the weekend and doing front-end development and design during the week, I think the advice is probably sound. You're not going to be able to be one of these front-end wizards while also doing totally unrelated stuff.

</comment><comment><USER40> Can one excel at both prongs? I don't know, but i do know that one person can (and has) created excellent Web Apps, entirely on their own. The fewer people involved in building something the lower the coordination costs (time spent communicating, noise introduced into the spec because the reader/listener never comprehends with 100% accuracy). This doesn't mean the smaller team wins, but it is a primary reason why the bigger team doesn't always win.

As an aside, while again i don't know if excellence in design and coding are achievable by the same person ,i suspect _parity_ probably is. For instance, i'm an average coder and a bad designer, but with enough practice mediocrity in the latter should be attainable.

</comment><comment><USER41> I assume that excellent probably means world's top 3% in both professions, so you want to be one of Apple's lead designers and one of Google's lead coders, which is pretty hard but still possible. I think the best route is to get immersed in each sequentially i.e. take a designer's job for a couple of years, then switch to programming and so on.

But I think there's even bigger advantage to your talent because:

\- you can create a good looking and working product from scratch and launch it all by yourself

\- when your product takes off and it's time to hire more programmers _and_ designers you will be able to pick good ones since you are both.

</comment><comment><USER42> Isn't this just a matter of perceived classification?

I mean, how can one be an "expert" in design, when design its self can be broken down further? Or go up a level and call yourself an expert in web sites? Higher still, IT, then electronic technology. And there are plenty of people who regard themselves as IT or technology experts, right? Then, if you subdivide it too far you become an expert in something so small its not worth it. Who wants an uber expert in
 for example!!!!

When it comes to getting a job, just focus your CV to what the job specs are. So, for example, have a "designer" CV for designer jobs.

</comment><comment><USER43> It sounds like your problem is less about what skills you have, and more about how you're positioning yourself.

Try billing yourself as an "X" who differentiates himself by being good at "Y". For example, my skills are psychology, math, data, and some programming. This sounds like a disparate skillset which could be completely useless. But I position myself as "An Analyst who understands the business from both the technical side and people side.", and follow it up with examples of how the synergy between my different skillsets has helped me contribute massive value to the companies I've worked for.

</comment><comment><USER44> Architects are expected to have both aesthetic and engineering skills, and the great ones (Shigeru Ban, for instance) are clearly excellent in both areas. Leonardo Da Vinci is probably the most famous generalist. Steve Woz said that if you want to be a true artist (and he believes that excellent engineers are really artists), than don't expect to find happiness working for other people. Bosses simply have their own agenda, and fitting you into a hole is probably easier/more convenient.

</comment><comment><USER45> I think you need to know enough of both to be excellent at one or the other. Design freedom and constraints in software come from what code allows. Code structure is all about the interaction design (and somewhat about visual design as well).

That said, if you want to do both you'll inevitably work on smaller projects, you won't have the time to do more and get to market in reasonable time. You'll also refine each skill at half speed — 10.000 hours each to become expert.

</comment><comment><USER46> Assuming you're competent in both, e.g. you are good enough to be professionally productive in either and can ramp/dial your skills to match, this is dumb advice.

Especially because good designers that understand how software works are freaking hard to find. Half the time I've spent with designers ends up in "yeah, good idea, but it doesn't work that way...".

In fact, for bootstrapped start ups, you're a gold mine whether you do the design or just own getting it done. Want a job?

</comment><comment><USER47> I know, and I guess many of you, few people who are good at both. And we know if from their works. To put a rest to people advising you to choose one - you've to show to them that you're good with both. Once you do that, no-one is going to ask you to pick one.

If your boss and/or friends advised you after seeing your work, I'm sure they've a reason.

Are you really that good with both or 'just' good doing both?

In any case, you'll be a good (co)founder for sure but you might not be a good employee.

</comment><comment><USER48> Do not EVER EVER give up your skill set. You can rule the world if you can code AND design. Quite your job. Be your own boss. Find one client that can meet your expenses and the sell like crazy to rest of the world.

If I was half as good at coding and competent at design I'd be making 3x more per year than I am and the start ups I've tried of the years would have had a fighting chance. If you're stuff looks like crap no one will give it a chance.

</comment><comment><USER49> I think one can be excellent at both design and front-end development. That's what _web design_ is all about anyway. It's made of CSS and Javascript and Canvas animations, not just Photoshop mock-ups.

Back-end development, however, is a full-time job. Not installing a CMS but making a new one. Doing two full-time jobs would require sacrifice of excellence or of one's private life. There are just too many things to learn in each activity.

</comment><comment><USER50> You bet there are. Unless you have funding for a big team, you'll need to wear a lot of hats to keep startup costs manageable.

Personally, I like that. And if someone needs a "heads down" whatever, one thing day in and day out, that's not a gig I'd enjoy anyway. I like to have several hats, and like to learn new things all the time to keep my brain active.

So, it's all really about you, what you enjoy, and how you market yourself.

Best of luck!

</comment><comment><USER51> Have I got a great advice for you: Go to under-developed countries! Those are filled with great designers/developed that have learned and mastered both crafts in order to hire less personnel and deliver quality service at a low- cost.

Coming from Latin America, I did so myself, know about many people that have done it and we constantly shuffle between tasks. This is really quite common in our region.

</comment><comment><USER52> For a successful startup best thing you need to have is not neither Designing skills or development but how you going to reach your customers and market your product.

But having a good discipline in both you've mentioned, you find it lot easy to do your business later on, because you know what to do and where you should go.

</comment><comment><USER53> This example sums it well: Steve Jobs.

Whichever one you pick, keep in mind that your long term goal is to go from micro to macro.

</comment><comment><USER54> I hate to be the one to tell this to you but what your ex boss probably tried to tell you is that you are not the kind of guy who can be excellent at both. He didn't meant that nobody could, if he has two cents of common sense. Whether he is right or not is for you, and time, to decide.

</comment><comment><USER55> OK, so this is one question that I have always wanted to ask, and now seems the right time to do so....does one need to study design in college? If not, how do you learn it? (This question might have been asked before; if so a link to it would be really helpful. I'm genuinely curious)

</comment><comment><USER56> You should feel lucky that you have this ability and keep doing what you are doing. You aren't selling yourself short in any way!

Why do they feel you can't become an expert in both? This specialization advise you are getting... is it coming from those who are only good at one thing?

</comment><comment><USER57> We only have one life and finite bandwidth but you one has to see the big picture to innovate. Keep seeing the big picture and try to draw the big picture. I tried the same it with great success until today: www.katsiafas.com/visualperception

</comment><comment><USER58> Why not become an expert at both? If you ever decide to have your own startup, being able to do the work yourself vs having to pay something else to do becomes your greatest asset in the initial stages.

<comment><USER59> Depends on what you're talking about. I can totally see a developer having the front-end design skills necessary to make a site functional yet decent looking, but I'd rather have a full time designer polishing the graphical elements or suggesting changes. The actual graphical design work that goes into most websites is not that high, and trying to do everything yourself is going to lead to stress and misery.

</comment></comment><comment><AUTHOR> Wow, I'm stunned by the response! I expected to get, at most, a handful of comments.

Apologies for the delay in responding -- I'll go through and add comments as appropriate.

Thanks everyone for the advice, suggestions, and anecdotes!

</comment><comment><USER7> When you're young you'll be able to do both well. As you get older I think you'll find yourself wanting to spend time on one more than the other.

Excellence in both is rare. Shaun Inman is a remarkable example.

</comment><comment><USER60> It comes down to task bandwidth and specialists are often dead weight and bottlenecks except when they're not, but that's not often. Stay diverse. Stay dangerous.

</comment><comment><USER61> Yes. Don't be excellent AT something. Just be excellent.

</comment><comment><USER62> It's really simple, no long answer or discussion is required - think of what prevents you to excel at both. Nothing.

<comment><USER60> Time and resources. If you have these, then no external issues should prevent you from excelling at both.

</comment></comment><comment><USER63> Become 'excellent' in one and good in other

</comment><comment><USER64> * Steve Jobs

</comment><comment><USER65> Just continue with passion whatever you want to do

</comment><comment> grey-area I consider myself a generalist, and have really enjoyed working across several domains (primarily design and programming) - it is quite possible to pursue a profitable career while not fitting entirely into the boxes that bosses and hr would like you to fit into. We've just launched a startup over at www.coolplaces.co.uk for which I did the design and programming, but I am not a reliable judge on whether it is excellent or not :) FYI I started in fine art, and have worked for a living in design and programming.

There are many advantages to being familiar with both programming and design, and many similarities between the disciplines at a deep level (thinking through a problem holistically, balancing constraints, incorporating and developing ideas from clients). I think those advantages more than pay for any disadvantages which come with not being a specialist in one subject. In fact knowing something about several disciplines will often help inform your work in both and allow you to bring ideas form one to another - that's why many education systems require students to pursue a broad coarse of studies alongside their more narrowly focussed specialism even in higher education.

As an example of cross-fertilisation helped by working on both, for design I use version control to store my work, which is a practice imported from programming which I think many designers would love to have. For most designers, the equivalent is to keep 50 files in a folder marked design-1, design-2, etc. There are also collaborative systems like ticketing systems broadly used in programming which apply very well to managing client expectations and letting clients track your work and prioritise certain bits of it.

Looking at present day startups, I think you could say that a startup like 37signals qualifies as having many generalists - whether you classify them as excellent or not is up to you, but they are certainly successful. For more examples, look at the banner on this website <http://designerfund.com/> \- I'm sure many of those companies contain many excellent generalists that you could take inspiration from.

Looking back to the past for examples, there are many many examples of polymaths who have excelled in several disciplines, like Leonardo da Vinci, who was both an excellent engineer (often overlooked), inventor, and hugely creative and influential in the art world (which he is of course famous for). Which I'd say is definitive proof that your boss's conclusion is wrong _in general_. It is still possible your boss is right about you and your future direction, it seems unlikely if you are passionate about both areas that you can't grow in both, however it is possible that you are far more suited to one than the other and would benefit from specialising. Without seeing your work, I don't think anyone here could say.

Personally, I would simply take note of what your ex-boss has said, and continue to do whatever interests you, and work in areas which you feel competent in, and enjoy. If you find that throughout your career, lots of people are advising you to choose one path over another, it should lead you to either try to improve your skills in the area they highlighted as less than stellar, or move toward specialisation if you don't feel any desire to improve in that area. If your clients continue to be happy with your work in both fields, why would you feel the need to specialise?

I don't think you can extrapolate from this particular bit of advice to you a general statement about the possibility of impossibility of generalism, and I think given the evidence from the past, the present, and other posts on this board, the answer to your central question above:

 _Is it possible to become 'excellent' at both design and coding_

Is a definite YES. Whether you will or not is up to you.

</comment><comment><USER66> 1) "Excellent" is a vague notion. Regarding coding for example, do you mean Knuth level excellent, Torvalds level excellent, Brad Fitzpatrick level excellent, some RoR "ninja" level excellent? All those (and more) are very different levels, still one can consider each as "excellent".

So, mainly what you want to ask, is: is it possible for one be competent in both design and coding. That is, produce good results.

Well, it is. There are people that are good at both, and have launched products with success.

I said good, not excellent, and here's why:

Nobody cares about actual "excellent" in a startup.

What you should care about is "good enough". Excellent is the enemy of shipping stuff. If Facebook tried for excellent, it wouldn't be built with messy PHP code and butt-ugly graphics when it was released. If Linus wanted to release something excellent, he wouldn't release a half-baked implementation with tons of problems, drivers missing etc in 1992. You get the point.

I also find advice like "You need to focus on ONE of them", "excellent" etc, non pragmatic. It's pop advice acquired by reading too many bullshit business self-help books. The reality is, especially in a startup, people have to wear many hats at one.

</comment><comment><USER67> Heinlein said it: Specialization is for Insects.</comment>


FAA tests spur a fundamental software redesign of Boeing 737 MAX flight controls - <AUTHOR> https://www.seattletimes.com/business/boeing-aerospace/newly-stringent-faa-tests-spur-a-fundamental-software-redesign-of-737-max-flight-controls/ <comment><USER2> As someone who works in this field I have to say this is a really well written article.

Discussing topics like Design Assurance Level and failure condition classification(major vs catastrophic), Single Event Upsets (bit flips), safety assessments in a really clear and well written way.

</comment><comment><USER3> "A neutron hitting a cell on a microprocessor can change the cell's electrical charge, flipping its binary state from 0 to 1 or from 1 to 0. The result is that although the software code is right and the inputs to the computer are correct, the output is corrupted by this one wrong bit."

<comment><USER2> Also known as a Single Event Upset in the industry.

[https://en.wikipedia.org/wiki/Single_event_upset](https://en.wikipedia.org/wiki/Single_event_upset)</comment></comment>


Flowchart: Navigating NPR's Top 100 Science Fiction and Fantasy Books  - <AUTHOR> http://www.sfsignal.com/archives/2011/09/flowchart-for-navigating-nprs-top-100-sff-books/

<comment><AUTHOR> Looking for an old-fashioned trilogy?

NO. In for a penny, in for a pound I always say.

So, five or six books good enough for you?

NO. I shall require at least ten.</comment>


At least 20 killed, 165 wounded after tsunami hits Indonesia - <AUTHOR> https://apnews.com/e91d55a6b39542c0896c5f31a0098870 <comment><USER2> The problem with the severe under reporting of the death toll is, in the current news cycles it'll be adjusted but people will have moved on by then.

We know it's more than 20. But the news is incapable of reporting that.

We need a Nate Silver or something working on the estimates.

<comment><USER3> Right now, it says "Tsunami triggered by volcano sweeps Indonesia beach; 62 dead", story age is "17 minutes ago", and it's on HN for over an hour, so I guess they updated it since.</comment></comment>


Show HN: Chalkbot - <AUTHOR> http://engineering.hipolabs.com/chalkbot/ <comment><USER2> I built a dual axis laser pointer setup to play with my cat but she looks at the servo's too often because they're so noisy. I was wondering if I could use memory wire to control the laser pointer since it would be quieter.

Now I'm wondering if these stepper motors might be a better alternative, maybe a third one against some sort of a spring loaded harness.

Either way very cool, would be interesting to see if a third motor might have helped rather than relying on gravity and good behavior of the chalk pen.

</comment><comment><USER3> I am doing similar drawings with Sandy Noble's Polargraph ([http://www.polargraph.co.uk](http://www.polargraph.co.uk)). How do you keep the liquid chalk flowing? Common liquid chalk pens need pumping over time.

art+com created a massive chalkbot at Jelling Museum in Denkmark: [https://artcom.de/en/project/experience-centre-royal- jelling...](https://artcom.de/en/project/experience-centre-royal-jelling-2/)

</comment><comment><USER4> And here I thought it was the Nike Chalkbot: [http://m.youtube.com/watch?v=HmW-eGCrSxs](http://m.youtube.com/watch?v=HmW- eGCrSxs)

Still cool though!

<comment><USER5> Nike Chalkbot was a project by Pittsburgh-based Deeplocal: [http://www.deeplocal.com/projects/chalkbot.html](http://www.deeplocal.com/projects/chalkbot.html)

<comment><USER6> Historical note on the evolution of drawbots: Nike's Chalkbot was a direct and uncredited steal of IAA's Graffiti Writer robot project/ Streetwriter truck: from political dissent to branded drivel in one smooth move.

The OP's Chalkbot however announces itself as being inspired by Jurg Lehni's HEKTOR (2002). Scholars (HT @Sandy Noble of Polargraph) will note HEKTOR's twin-cord design from 2.30m in this deeply awesome MIT MediaLab/ SIGGRAPH video from 1988. Made of Lego! Programmed in LOGO!

Presume there are antecedents (pendulographs, anyone?) for this too. AFAICS, Lehni does not acknowledge the MIT crew anywhere... tsk tsk.

ACM SIGGRAPH 1988 Issue 40 - Lego/Logo

[https://open-video.org/details.php?videoid=8213](https://open- video.org/details.php?videoid=8213)

Graffitiwriter vs Nike Chalkbot

[https://vimeo.com/6075609](https://vimeo.com/6075609)

[http://blog.nearfuturelaboratory.com/2009/07/07/chalkbot- ver...](http://blog.nearfuturelaboratory.com/2009/07/07/chalkbot-versus- graffitiwriter/)

Polargraph

[http://polargraph.co.uk](http://polargraph.co.uk)

Nice resource for drawing machines here:

[https://drawingmachines.org/index.php](https://drawingmachines.org/index.php)

</comment></comment></comment><comment><USER7> That's great! Thanks for detailing what went wrong, as well as what went right.

I've wanted to do a drawbot (paper and pen) for a while, and thought these pulleys[1] and belts[2] might be good.

1: [https://www.adafruit.com/products/1251](https://www.adafruit.com/products/1251) 2: [https://www.adafruit.com/products/1184](https://www.adafruit.com/products/1184)

</comment><comment><USER8> I wonder what this would look like if they could speed up the motors and smooth out the motion with some more taught string. Maybe they could recreate more hand-like motions.

<comment><USER9> If you're in San Francisco, at The Interval, they have a chalkboard drawing robot similar to Chalkbot: [http://blog.longnow.org/02014/03/13/interval- chalk-board-rob...](http://blog.longnow.org/02014/03/13/interval-chalk-board- robot/) Also, [https://www.youtube.com/watch?v=GpQzIaH90f8](https://www.youtube.com/watch?v=GpQzIaH90f8)

These projects are really cool.

<comment><USER10> There is also a very cool chalk drawing robot installed at the SF MOMA.

</comment></comment></comment><comment><USER11> Very nice! I made a similar ones with LEGO Mindstorms in three dimensions:

[https://youtube.com/watch?v=blYpo2qB_LI](https://youtube.com/watch?v=blYpo2qB_LI)</comment>


Show HN: How Well You Know Me? - <AUTHOR> http://howwelluknow.me

<comment><USER2> I can see this ruining a few relationships this Valentine's day. I love it!</comment>


IBM and Red Hat to Vote "No" on Java Modules (Jigsaw) - <AUTHOR> https://www.infoq.com/news/2017/05/no-jigsaw <comment><USER2> Jigsaw breaks far too much stuff to be useful in its present form. There are a _lot_ of cross-links between things you might expect to be separate; e.g. java.sql's date objects using java.util.Date.

Despite all the breakage, Jigsaw still totally punts on the problem of versioning. So, all it lets you do is declare that you need something (with a self-destructing opt-out); but it still doesn't solve the problem of two libraries requiring two distinct, mutually incompatible versions of the same library.

Producing clever vendoring tricks in build packages would solve actual problems that Jigsaw doesn't even begin to address. Until then, the added value seems pretty questionable.

There are a lot of nice things happening in JDK9 that just makes everything a little bit better as if by magic, and they're being held back by a standard that breaks stuff and ostensibly few people want. That doesn't mean the exercise was futile; the source code reorg is probably an improvement regardless.

<comment><USER3> I've never liked the hacks around loading multiple versions of the same library. To me, this seems fragile and bloated workaround, and it would be far better to encourage people to fix their dependencies. In other ecosystems where they can't abuse a classloader, this kind of multi-version dependency is discouraged, and at Google we completely ban it for Java.

<comment><USER4> > In other ecosystems where they can't abuse a classloader

That's not abusing the classloader; it's using the classloader.

> and at Google we completely ban it for Java

Yeah, I'll sure to listen to Java tips from the developers of the Android API.

<comment><USER3> Well, we also developed Guava, so karma balanced. :)

</comment></comment></comment></comment><comment><USER5> Awesome. I really like keeping two separate GUI toolkits in the docker container for my webservice. I don't print, like ever, but it's good to know i could hook up a lineprinter and do hard logs of every web request. Oh, and the CORBA and RMI registires. So comforting to know i have those options if i need them.

<comment><USER6> On the other hand, if porting our app to Java9+Jigsaw requires us to wait a year (because breakage with maven), costs like half a year to a year (I know our codebase), while upgrading our application servers (because classloading) and possibly re-doing a lot of the build process at the same time... I'll have to support Java8 for just about forever.

That upgrade wouldn't happen, or it would be really nasty. I'll rather tolerate a standard library with a lot of bollocks in there and provide security around it.

<comment><USER7> People have been waiting a decade now? I remember listening about Jigsaw on the Java Posse back in 2009:

[http://javaposse.com/java_posse_259_jigsaw_and_jsr_294_inter...](http://javaposse.com/java_posse_259_jigsaw_and_jsr_294_interview)

[https://jcp.org/en/jsr/detail?id=294](https://jcp.org/en/jsr/detail?id=294)

<comment><USER6> I didn't mean wait for Jigsaw. I meant: Assume jigsaw breaks maven, i.e. it's not compatible and there's no easy ugly workaround without runtime errors. That'd mean, my place - and pretty much every place - has to wait at least a year or more, until all dependencies are ported to jigsaw. If all dependencies get ported. This sounds way too similar to the whole Python2/Python3 mess to me to be a good idea.

</comment></comment></comment></comment><comment><USER8> Now _that_ is a trip down memory lane. Back in 1994 I was working on a strong capabilities security model for Java with a cryptographic signature based class loader. Amongst the challenges of doing such a system was having a strong versioning system, clear and enforced lines between public and private interfaces, and a dynamic bytecode editing system which would actually elide capabilities from the class being loaded that weren't authorized (system is no good if reflection can show you things you aren't supposed to see right?)

Reading that proposal I can see that Jigsaw has run up against and is trying to 'create' some (but not all of course) very similar features on which to host a module system. And some of the very same arguments come up against them.

In particular this statement from the recommendation[1]:

 _Jigsaw 's implementation will eventually require millions of users and authors in the Java ecosystem to face major changes to their applications and libraries, especially if they deal with services, class loading, or reflection in any way._

Is nearly a word for word echo on the reasons why my 'overly complicated and invasive' security requirements would all the people writing Java code that really didn't care all the much about such strong security guarantees.

I don't have a position one way or the other, I've been out of the Java world for a long time now, but it really struck me like Deja Vu to read that objection.

[1] [https://developer.jboss.org/blogs/scott.stark/2017/04/14/cri...](https://developer.jboss.org/blogs/scott.stark/2017/04/14/critical- deficiencies-in-jigsawjsr-376-java-platform-module-system-ec-member-concerns)

<comment><USER9> Java was not publicly released until 1996? That is when I first remember it. So does this mean you were working at Sun at the time with Mr. Gosling?

One of my clients is apparently friends with Mr. Gosling and was surprised when I recognized him from a photo at a Sharks game in the "oh wow! That's James Gosling". Never met, just from having read a wikipedia page.

<comment><USER8> Yes, technically Java was announced in March of 1995. I had joined the secret project known as 'Green' in 1992 to build an OS out of it and do networking and security work. (very old picture [https://stuff.mit.edu/afs/sipb/user/marc/hotjava/doc/people....](https://stuff.mit.edu/afs/sipb/user/marc/hotjava/doc/people.html))

<comment><USER9> Very cool. My very first exposure to programming Java was being given a copy of Visual J++ 1 by a neighbor along with a book. I quickly learned that real Java was better. From the time I was 14, I was in love with coding starting with GW Basic, QBasic, Turbo C++, etc.

</comment></comment></comment></comment><comment><USER10> Here is maybe some reasoning behind the no votes

Concerns Regarding Jigsaw(JSR-376, Java Platform Module System) [https://developer.jboss.org/blogs/scott.stark/2017/04/14/cri...](https://developer.jboss.org/blogs/scott.stark/2017/04/14/critical- deficiencies-in-jigsawjsr-376-java-platform-module-system-ec-member- concerns?_sscc=t)

<comment><USER11> A rebuttal: [https://blog.plan99.net/is-jigsaw-good-or-is-it-wack- ec634d3...](https://blog.plan99.net/is-jigsaw-good-or-is-it-wack-ec634d36dd6f)

<comment><USER12> A highlight:

" _Following links with enticing sounding names like "Where to start" simply gives you a bunch of links to off-site tutorials written by implementation vendors, none of which are any good._ There is also a list of _five_ different books on the topic. _This developer experience is not excellent. But mostly it's complicated because its design is genuinely enormous._ "

Five books? That's horrible.

(By way of introduction, I've spent a good deal of time with OSGi and none at all with JBoss or Jigsaw. I am more-or-less out of the Java environment at this point.)

Ok, here's the deal: OSGi looks big and complicated. Part of that is due to the fact that it's been around for like 20 years and part is due to people trying to do fancy things with it in the Java environment, where everyone else is trying to do fancy things with basically incompatible magic. (Virgo[1] waves desolately from off in the distance.)

[1] [http://www.eclipse.org/virgo/](http://www.eclipse.org/virgo/)

In reality, OSGi isn't that bad. I learned it mostly from reading (part of) the spec, which isn't the worst as far as specs go. OSGi is fundamentally a generic container; if you're familiar with servelet lifecycles and have used Tomcat to deploy and undeploy web apps, you're familiar with about 60% of OSGi, which is a subset of that. The other 40% of OSGi's fundamental complexity is built around the sole purpose of allowing an application to depend on a library A, which in turn depends on version X of library B, while at the same time the application depends on library C, which itself depends on version Y of library B. (The other 10% of OSGi's fundamental complexity is the "services", which are double-plus fun extra features that make life better in many ways. But we can ignore them here since we're talking about modularity.)

Doing that sort of thing is hard. Doing that in Java, where everything uses reflection, dynamic code generation, and classloader magic, is not so much hard as terminally bizarre.

Personally, I view a module system as an aid for the programmer: it prevents stuff that you shouldn't touch from leaking into stuff that you should touch. As a result, both OSGi (and, I think, Jigsaw) fail badly as module systems: If it waits until runtime to blow chunks, it's not helping the programmer. But, in the Java environment, modularity in my sense is impossible. (It's also unwanted, but that's a rant about Java developers for another day.)

Anyway, when you say, "oh, they're just whining that their system didn't win", you are right, sort of. But on the other hand, "their systems" have spent a long time dealing with the insane, Sorcerer's Apprentice-type nuttiness that is the rest of the Java ecosystem, and it appears that Jigsaw is just ignoring that nuttiness, that the majority of Java programmers use, and enjoy, every day. Which was the major worry from the OSGi community when the Jigsaw project was announced.

As an amusing aside: version numbers. OSGi has a moderately complicated semantic versioning [2:PDF] system to support that fundamental goal up there. OSGi version numbers look like major.minor.micro.stringy, with specific rules for bumping the major, minor, and micro numbers. Jigsaw originally started out with an incompatible version number format, apparently due to the fact that Java versions have a fixed constant major number of 1. The current [State of the module system] for Jigsaw says,

[2] [http://www.osgi.org/wp- content/uploads/SemanticVersioning1.p...](http://www.osgi.org/wp- content/uploads/SemanticVersioning1.pdf)

> A module's declaration does not include a version string, nor constraints > upon the version strings of the modules upon which it depends. This is > intentional: It is not a goal of the module system to solve the version- > selection problem, which is best left to build tools and container > applications.

The Jigsaw requirements[3] go further to say,

> Multiple versions — It is not necessary to support more than one version of > a module within a single configuration.

> Most applications are not containers and, since they currently rely upon the > class path, do not require the ability to load multiple versions of a > module. Container-type applications can achieve this, when needed, via > dynamic configuration, as outlined above.

> Version selection — The process of configuring a set of modules need not > consider more than one version of any particular module.

> In other words, this specification need not define yet another dependency- > management mechanism. Maven, Ivy, and Gradle have all tackled this difficult > problem. We should leave it to these and other build tools, and container > applications, to discover and select a set of candidate modules for a given > library or application. The module system need only validate that the set of > selected modules satisfies each module's dependences.

[4] [http://openjdk.java.net/projects/jigsaw/spec/reqs/02#non- req...](http://openjdk.java.net/projects/jigsaw/spec/reqs/02#non-requirements)

Therefore, Jigsaw is explicitly free to be incompatible with OSGi or any other existing container system. Yay.

TL;DR: It's not so much that someone else's system didn't win, but that Jigsaw doesn't care that Java is a big, giant, hairy bundle of nasty and that fact is likely to make everyone's life harder.

P.S. For OSGi information, I strongly recommend Neil Bartlett. His OSGi in Practice and blog posts are exceptionally good and he is very helpful and friendly in the OSGi community, as I recall. He's also on the Jigsaw experts group. And one of the Concerns regarding Jigsaw contributors.

[http://njbartlett.name/osgibook.html](http://njbartlett.name/osgibook.html)

<comment><USER13> I do not know of any big OSGi success apart from eclipse. At one point Spring put a lot of effort and then they dump all that at eclipse project after not seeing much traction. Apache has bunch of OSGi related projects and they do not seem very popular compared to straightforward Java/EE components.

For my applications I see some value in Jigsaw specially modular images. Despite being available for long time OSGi still is some esoteric technology without mass developer appeal whereas Jigsaw seems to have potential to be really useful to lots of developers.

It is rather sad that OSGi people keep piling on Oracle for not using their barely successful technology.

<comment><USER14> I worked a good deal with OSGi and think it is sad that it didn't get more traction in the server world. I once adapted a jetty container to use OSGi dependencies instead of packaging all dependencies into a single war file. I gained wonderfully light weight deployment units and the possibility to patch dependencies without touching downstream modules.

<comment><USER12> I used the SpringSource server (later known as Eclipse Virgo) as a sort of "platform as a service" for enterprise apps. It could deploy anything from plain war files up to OSGi-aware apps that could access custom services for configuration, db access, authentication/authorization, and so forth. Worked rather well, with decent uptime and no hair pulling on my part.

The down side was that OSGi requires modularization, which exactly no Java developers to my knowledge had any experience with. Plus OSGi modularity is entirely done at runtime and Spring's tooling to try to support it was incredibly flakey. Conversations went like:

"My app works fine on my dev box but blows chunks when I try to deploy it."

Me: "You have to be explicit about whay you are depending on in your app's manifest."

"I see your lips moving, but all i hear is barks, grunts, and squeals."

"Sigh. I'll fix it."

I can't really see jigsaw making the situation any better, especially since it explicitly ignores versioning and containers.

<comment><USER14> On the other hand you have the same kind of problems with Maven. You have to state your dependencies explicitly which can be a pain. And Maven does not support multiple versions when running tests. Everything is lumped into one classloader (afaik), where I sometimes wish Maven would make use of something OSGi like. With regards to dependency declaration both are pretty similar.

</comment></comment></comment></comment></comment></comment></comment><comment><USER15> Modularizing the JDK has been in progress for quite a long time -- getting "no" votes so close to the JDK 9 release date is pretty discouraging.

</comment><comment><USER16> So for someone who has tinkered on the periphery of Java development (but does not work with Java/JVM languages professionally), it isn't entirely clear to me what the purpose of modules is for developers, over the encapsulation already provided by packages. Is it to simplify deployment?

<comment><USER17> Java packages are a fine "module" system if you're designing a single large cohesive application that has no dependencies or trust boundaries. However, packages are inadequate by themselves to tackle the problems that arise when you assemble an application from many different components, each of which are independently produced and versioned, and have different trust boundaries.

Java has an _incredible_ open source community and there are amazing high- quality packages available to solve any problem under the sun; and so it is common for Java apps to have large dependency graphs. For example, take Google Guava, a popular and powerful Java library. It's so useful that other libraries depend on it. Let's say that our application uses two libraries called Component-A and Component-B, which both depend on Guava. However, Guava is constantly changing, and so it may arise that Component-A depends on Guava version 17 while Component-B depends on Guava version 20.

This is called a version conflict, and Java packages aren't enough to solve the problem well, though module systems can. For example, a module system allows you, as the application owner, to override the Guava version used by Component-A, replacing Guava-17 with Guava-20. If Component-A is compatible with Guava-20, then that resolves the problem. Another solution module systems provide is to allow both Guava-17 and Guava-20 to coexist in the same application, used separately by Component-A and Component-B. If those components are using Guava 'privately', as part of their implementation only, then this might also be an adequate resolution.

The default Java package system does not have a notion that there may be multiple implementations of a class like `com.google.common.base.Preconditions`, and that you may wish to select one version of it or another, or that you may want to use different versions in different parts of the application. It's not normally desirable to tamper with dependency versions or load multiple versions simultaneously, but version conflicts happen and module systems give you tools to deal with them when they occur. Fortunately, the behavior of Java packages is determined by Java ClassLoaders, and module systems can implement their own ClassLoaders to provide dynamic behaviors like these that go beyond vanilla Java's capabilities.

Since Java supports reflection, with regular Java packages, any class can access any other class and class member in the app, regardless of whether it's package private. These reflection capabilities are super useful; they're what enable frameworks like Spring, Guice, EasyMock, and Jackson. However, unrestricted reflective access is also a liability (viz. Ruby Monkey Patching), and it's something that you'd prefer to outright disable or at least sandbox in most components you depend on. But since these components might legitimately require reflection in their implementation, like using Guice for dependency injection or EasyMock for testing, you may not be able to disable reflection entirely; instead, module systems can help you sandbox reflection so that it operates within the confines of the module, to make the system simpler and more predictable.

Some module systems like OSGi also extend into the runtime behavior of your application, and help you manage complex applications. Certain very complex Java applications act a bit like an operating system: there are multiple services within the app that communicate with each other, and the module system isolates them for encapsulation reasons, loads them in the appropriate order, connects them together through exported interfaces, and provides management actions like reloading a module while the rest of the app keeps running. These module systems are for Java apps what systemd is for Linux (including the fact that some people love them while others think they're overly complex and should be avoided).

<comment><USER18> Thanks for the in-depth comment. Regarding version conflicts, we currently have a large enterprise system with lots of dependencies and manage this manually with Gradle's failOnVersionConflict() resolution strategy. We override the appropriate dependencies by forcing overrides when there are conflicts. Is Jigsaw supposed to make this easier or eliminate this problem entirely? Also, is Jigsaw supposed to replace Maven eventually?

Some of these purported issues with Jigsaw appear to be quite complex and a bit difficult for the layman Java user to understand.

<comment><USER2> > Is Jigsaw supposed to make this easier or eliminate this problem entirely?

Jigsaw totally punts on the problem of incompatible versions. In fact, it just doesn't do dependency versioning; only module versioning.

</comment></comment></comment></comment><comment><USER19> >Jigsaw does not provide a clean upgrade path for Maven-based projects to move from the packaging of code into JAR files to modules.

No upgrade path from JAR files, the most common packaging system for Java?!? That sounds like a good enough reason for me to dislike it.

</comment><comment><USER20> One good reason to refuse Jigsaw: it's far far too complex.

I watched a whole hour and a half presentation on it, and the time was well necessary to explain the way things work and outline a migration path for existing code.

The worst thing about it: I can't remember much about how it was supposed to work. I just remember that it was highly unintuitive, requiring both explicit imports and exports in specific files for each module.

The fact that it is so tightly coupled to JDK refactoring also gives me pause. Seems like a design overfit. Both concerns should be handled separately.

Sure a module system can help to separate out the JDK libraries, and that's certainly a nice way to check you've achieved your objectives with the design. But when this refactoring itself is one of the major justification for the design, something is __wrong __.

<comment><USER21> I'm not sure that IBM and Redhat voted against current Jigsaw implementation because it's complex. It seems that it's not complex enough for them. So if we won't get Jigsaw now, we will likely get more overengineering or not get anything at all.

<comment><USER20> You are right, I don't know IBM and Red Hat reasons, but I do not trust them very far on this.

Red Hat has a great Java alternative in Ceylon with a module system which seemed far more sensible when I read about it (you should take this observations with a grain of salt and check for yourself, I'm going on hazy memories).

</comment></comment></comment><comment><USER22> When you think that it's mainly Oracle that's hampering Java's progress, along come IBM and Red Hat...

<comment><USER23> IBM and Red Hat are on the side of sanity on this one: why would you support a change that breaks Maven? Such a change will split Java where 'legacy' Maven- using apps will forever remain on Java 8 because of it costs money to refactor around the breaking changes.

</comment></comment><comment><USER24> I love Kotlin! That is all.

</comment><comment><USER25> There are so many more alternatives for the JVM these days - languages like Scala, Kotlin and Clojure - I wonder why these companies do not invest in the future and still push the old Java around.

<comment><USER26> I too wonder why IBM would not invest in rewriting their millions of lines of code in some other language

<comment><USER27> Rewrite in Rust!

<comment><USER6> Seriously. Look at how google handles the Python2 to Python3 gap. They built a python2-go bridge and they are probably rewriting everything python2 in go. Make something expensive enough, and companies with resources will react.

<comment><USER28> The truly hilarious thing about the Python 3 switchover is that they didn't take the opportunity to remove the GIL at the same time they were making _all the other_ breaking changes.

I guess rewriting all your code is one thing but rewriting it _under the assumption of concurrency_ is just a bridge too far.

<comment><USER29> Removing the GIL has nothing to do with making breaking changes in the language. It's also an enormously more complicated task, one which hundreds (thousands?) of developers have spent time on over a decade (two?).

I think you might be thinking that the impediment to removing the GIL is user code. It is not. The impediment is that CPython - the standard Python runtime - was designed around using the GIL, and it's extraordinarily hard to remove it and still meet the existing single-thread performance goals. There are also ancillary issues surrounding user code - particularly modules written in C, I believe - but the runtime itself is the biggest issue.</comment></comment></comment></comment></comment></comment>


Firefox OS may live on in a TV stick and Pi-powered keyboard - <AUTHOR> http://www.engadget.com/2015/12/24/firefox-os-leaked-connected-devices/ <comment><USER2> What's sad about this, is that all those markets already exist and are partially taken. At least Mozilla is honest enough about this and say they target "late adopters".

What aspects here supports the free & open web? What part about providing a me too web-browsing experience to elderly and late adopters helps promote the free web?

What's worse is that some of their "me too" efforts are already compromised by Mozilla admitting they need to support DRM, so what new freedom do we gain? What's better or freer about their product?

Where is the effort to bring back the power-users which built Mozilla's original user-base? Are _pensionists_ more important to Mozilla than the people actually building the web? I just don't get it.

And the Firefox Hub seems to have nothing to do with any existing Mozilla- technology and only seems to be Firefox in name. That is: until proven otherwise (and the effort with Firefox OS makes this a reasonable position) this is 100% vapourware where the "Firefox"-name is used purely for branding and marketing.

I don't see how any of these would be successful, and if they were, how they would align with Mozilla's stated goals.

Poor Mozilla. They really seem to be struggling for a sense of direction and purpose these days. I wish they would just go back to making a kick-ass browser.

(Signed developer, Firefox user, desktop & mobile)

<comment><USER3> There is no shame for a FOSS platform in entering an existing market. Firefox was always an alternative to the incumbents, so debuting a Chromecast replacement sounds logical to me.

<comment><USER2> There's something about chicken and egg going on here too.

The Chromecast was wildly successful because it rode on the back of an already successful browser (50% market share) with support out of the box.

It also featured dedicated support for specifics apps and platforms, like YouTube and Android, both within Google's control.

Coupled with a low price, this was enough to make the stick sell on its own, and that again compelled developers to implement dedicated Chromecast support in their own apps.

In short: Google had both the chicken and the egg. Problem solved.

But if Firefox is to make their own free-er stick... They now have 15-16% browser market share which they can leverage and no on-line services which they can use to further increase the value of that stick.

If they can make it "Chromecast compatible" that's obviously a different story, but that means Chromecast apps now also need to be compatible with the Gecko rendering engine.

Looking at the sorry state of the mobile web in the end of 2015, we can already see a significant amount of developers whose only mobile test-target is Webkit. Some even skip testing Android completely, focusing only on Ios and Mobile Safari.

And do we expect developers to bother 1. getting and 2. testing for a Chromecast-compatible device with a sub 1% marketshare when there are already millions of chromecasts out there?

To me this just smells like Firefox OS all over. Maybe a good idea, but it's too late, and it probably wont win any developer mind share from the established platforms.

</comment></comment></comment><comment><USER4> These are not juicy "internal documents", these were freely circulated on public mailing lists. Mozilla is very open about product development and direction. I believe these were early concepts, but may actually see some additional prototyping since the change in direction.

<comment><USER5> Mozilla is not so open as you might think. They make many decisions behind closed doors, without even a hint of the discussion in any public forum. For example, the decision to bundle Pocket, which has been highly controversial and objectionable to many loyal users, came completely out-of-the-blue. There were no publicly visible internal musings, much less public discussion or RFC.

Mozilla has lost its way.

<comment><USER6> My favorite example is the bug report when they have decided to remove browser.newtab.url from their about:config window. In the bug report[0] they have basically decided to hide every single comment from powerusers that was against this change (including mine) and marked it as advocacy, off-topic or abusive.

0 - [https://bugzilla.mozilla.org/show_bug.cgi?id=1118285](https://bugzilla.mozilla.org/show_bug.cgi?id=1118285)

<comment><USER7> Bug trackers aren't a good place to express advocacy, because there are other forums for that. What's wrong with removing advocacy, off topic, and abusive comments?

There are comments in that bug that are clearly from people who were against the change that were not removed.

</comment></comment></comment></comment><comment><USER8> 'Firefox conceded that the device "must have DRM and content partnerships to be successful."'

No, it doesn't. Actually the failed Matchstick claimed to be DRM free initially/had DRM as an optional 'stretch goal' that was bolted on and lead to the poor excuses in the end. "We want to support Netflix etc. and failed, sorry people"

Plenty of backers asked for the device, sans DRM, because that's what they (and me) shelled out their money for.

I don't give a damn about DRM and content partners, I wanted a 'beam something to my TV' option. Sad to see that these plans were completely scrapped for another random Chromecast clone..

</comment><comment><USER9> I might be mistaken, but I think the FirefoxTV is a kill. Everything they describe about it sounds a lot like the Matchstick. After a strong financial backing, several months being overdue, the team reigned unsuccessful and had to refund backers.

[https://www.kickstarter.com/projects/matchstick/matchstick-t...](https://www.kickstarter.com/projects/matchstick/matchstick- the-streaming-stick-built-on-firefox-os).

<comment><USER3> Ideas usually fail the first N times. Execution &luck are deciding factors.</comment></comment>


The Inner JSON effect - <AUTHOR> http://thedailywtf.com/articles/the-inner-json-effect <comment><USER2> Would be interesting to hear the same story, but from Tom's point of view.</comment>


Show HN: Flat Icons Set - <AUTHOR> http://roundicons.com/

<comment><USER2> "Show HN" is for stuff you've made yourself.</comment>


Ask HN: Do you use git submodules? - <AUTHOR>

<comment><USER2> Yes.</comment>


The Best of What's New in Swift - <AUTHOR> https://www.mikeash.com/pyblog/friday-qa-2015-06-19-the-best-of-whats-new-in-swift.html

<comment><USER2> This is my favorite new Swift article by far. All the others are my favorite too.

<comment><USER3> When I first read your comment, I initially thought "What a strange thing to say."

Then I read the article. :)</comment></comment>