I'm not convinced many software people have the right to get too righteous about this, and the fact is many of our systems that do work do so because someone at MS, Apple or in the open source community wasted some of their lives swearing at someone's drivers.
Frankly anything close to hardware, up to and through the driver layer, has a real tendency to barely perform as required. It really seems like if it works enough to show someone it looks like it's working they stop, but we've all seen this attitude applied to higher levels of the software stack, except there it's easier to deal with.
The single most telling gadget here is the Chromecast, which successfully nullifies most of the point of smart TVs for <$40, while providing a user experience none of the TV makers got close to.
My anecdotal experience is that companies that have grown large based on the sale of hardware are attempting to integrate new technical features into their hardware to remain competitive, but they are completely unwilling to pay for people with primarily software-writing experience.
The auto manufacturers, in particular, seem to expect that I should be paid about 2/3 my current salary to physically relocate and then work 45-hour weeks for them, if they even have any software jobs in the US at all.
To them, writing the software is like adding an extra cup holder.
You're always going to think "hardware companies can't do software" if your definition of a hardware company is "a company that makes hardware with bad software".
Last time I checked iphones and xboxes and tivos were hardware. If every hardware maker with good software is a software company, and only the hardware makers with bad software count as hardware companies, it's by definition true that hardware companies can't make good software.
The prime example of software made by a hardware company might be OS X. It's a damn good piece of software. It's half the reason people buy the hardware, actually.
Id classify them as a hardware company because their revenue comes from selling hardware. None of their software offerings are significant revenue sources by themselves, they're just there to complement the hardware making it attractive to buy. They've even made OSX upgrades free. They've been setting themselves apart from the competition for a long time by the quality of their software but that just makes them a better hardware company.
For years, John has made a compelling case that TiVo is pretty terrible at making software. In fact, the very first episode of his old 5by5 show was entirely about TiVo. Some of his criticism include slow interface, bad menu design, and still using SD for the UI, even on HD TiVo's
My particular axe to grind here: car manufacturers seem to be unable to create a usable random function on audio players. There's (almost literally) nothing worse than hearing Bohemian Rhapsody 6 times on a road trip (out of 2500 songs, with 200 played). "Random" (applied to audio playlists) doesn't really mean random (even assuming they're seeding their RNG properly) - it means shuffle, which requires maintaining a list somewhere in memory, which is probably why they don't bother doing it.
Random selection of track and random ordering of the playlist is not the same thing. People usually want the latter. They often get the former with a car audio player.
It's even worse when the random track is not even produced from a good pseudorandom number generator. In order to preserve the back/forward button functionality, the "random" selection may be seeded as a function of the current track number and the system clock date. So you end up with a choice between the native playlist and the player's playlist of the day.
The only reason I can think of for making your hardware do such things is that you don't care about the user experience as much as you care about the $0.15 cost per unit it would take to make the function work in even a 3/4-assed way.
Software companies can't do software either. It's draconian masters that force usability on programmers that would be happy if the world ran on CLI. You know its the truth, or you haven't really worked with programmers before.
Software companies can't do software either. It's draconian masters that force usability on programmers that would be happy if the world ran on CLI. You know its the truth, or you haven't really worked with programmers before.
We have one guy on our software team that this describes. The rest of your post is condescending assumption that ALL of us have the unix beard and vim editor of that one dude. Paradoxically he is one of the iPhone owners in our Android heavy group. In conclusion, I guess I've never really worked with programmers before.
And also because if you start with a CLI, you don't end up with a GUI where the functional code is embedded in the button event handlers.
The CLI makes it easier to force developers to separate the functionality from the user interface. You still might have the guy that puts all the code inside Main( string[] args ), obviously, but at least that code is easier to test.
Just like removing the presence of alcohol from the alcoholic may allow him to resist temptation and become a better person, removing the GUI from people with bad GUI coding habits may allow them to resist temptation and write better code. But maybe not.
It also helps you discover who actually knows how to write software, and who is dependent on the development environment to erect all the scaffolding for them.
The worst CLI apps are terse, require too much domain knowledge to configure, and lack sensible (or any) defaults. The worst GUIs are like the baby that would result if Dali and Duchamp copulated in a live action Candyland game.
I've worked with programmers for ~25 years at this point (side note: I'm old), and this describes a kind of personality type that's out there, to be sure, and a type that's perhaps disproportionately represented on HN and, back when people used it, Slashdot. But that's not all programmers. A lot of the people I've met -- or just know of -- who are terrific at user experience design are people who have an engineering or development background of some kind.
The software companies that produce the best UX don't do so because there's a "draconian master" forcing the programmers not to just have Macs boot directly into Emacs and give users electric shocks when they click the mouse button. They have teams that are actually interested in UX design. Everyone I've met doing engineering at Apple cares about this sort of stuff. And while I'm sure there are programmers out there disappointed that their Android phones don't boot into console mode, none of those programmers are people on the Android team who have only been held back from doing so by the Iron Fist of Sergey.
I haven't figured out why some chinese manufacturer doesn't make a TV with software that is hackable and replaceable by design.
I'm fairly confident that a hacker community would soon make it into a seriously desirable product. Look at XBMC, it's an amazing product. I would queue up to buy a TV set on which I could run something like that.
FYI, Xiaomi, a Beijing based company, has launched its TV with root-able Android based OS(, but with limited availability like other products from the company). Other competitors are also trying hard to catch up.
You know, something like the form factor of the new Raspberry Pi Compute module might be a neat way to go about this. If they could agree on the interface, it'd allow an otherwise "dumb" display to get easy, hackable upgrades over time.
The standard VESA mount + HDMI would probably be a better fit than having to cram everything into a SO-DIMM sized PCB. It should also work right now in most existing TVs.
True, but if they're going to insist on cramming things into the display itself it'd be an interesting way to leave them somewhat future-proofed. Personally, outside of mobile devices, I do like most others here seem to, ignore the display's capabilities and attach a computer/Roku/Apple TV/etc.
That's true, but what I'd really like is to be able to change the way the TV itself behaves. For instance, my Panasonic TV will automatically switch to the HDMI input if I turn on my Apple TV after turning on the TV. My Samsung TV won't - you always have to navigate the dumb "choose source" menu. That's the kind of thing I would want to be able to customise. A separate unit would be a good intermediate step (basically, something like AppleTV but with a tuner in it), but a truly hackable TV would be better.
I've had the same kind of doubt in the Android space. Don't really know why none of the Chinese manufacturers didn't just decide "we'll ship Cyanogenmod [or stock Android] by default". ZTE seems to come closest by shipping pretty stock Android but they don't seem to make it very easy to hack. Hopefully the new Cyanogenmod phones will be good.
At this point, the only thing keeping the hounds at bay is the reality that a TV with non-crappy software requires a much deeper cooperation with content providers.
I think there may be economic factors too. Isn't it true that TV replacement rates are low and they have low margins? Given the longevity of displays, why would anyone want to bundle in hardware/software with faster refresh rates?
Amen to this. I did quite a bit of digging last year to find a dumb TV that did the basics (high panel quality, input switching, HDMI-CEC) well and otherwise just stayed out of the way, and I gave up. A couple of companies have a 'commercial' line that gets close to this, but they were priced totally out of line with their consumer counterparts. Similarly, many TVs have a 'hotel mode' that comes close, but it's invariably undocumented and can easily lead to bricking your TV. It's a wasteland of a marketplace right now, and only getting worse.
This would be a good market for manufacturers like Amazon Basics or Monoprice. Make no-frills screens/TVs with good panels and good input selection. Monoprice has already moved into monitors[1].
Agreed. In many respects, what I really want is a 40"+ monitor. An effective power save mode could obviate the need for HDMI-CEC, and I'm sure I could solve the outboard OTA tuner problem easily enough.
Right. These days a lot of people have a cable box or a fancy receiver feeding their TV and then end up with a mess of remotes to manage this. Connecting a monitor to the cable box or receiver and having a single remote would actually be much cleaner. As you say, if the cable box shuts down the HDMI port when off the monitor should turn itself on and off nicely.
Speaking as a software guy at a hardware company for TVs, one of the challenges is that there isn't a cohesive conversation between the hardware designers and software engineers.
On more than 3 occasions I could name off-the-top of my head, we've had to write workarounds or re-architect entirely for missing or over-promised performance of the silicon.
Likewise, some very useful features have been scrapped because they would add $1.00 onto the cost of a unit. While I get that 1 million units x $1.00 adds-up, the conversation about how this could either make a better product or that subsequently spending 2 million in software maintenance, isn't cheaper---is missing entirely.
This is a familiar refrain from other jobs and other engineers throughout the custom hardware industry. This doesn't even scratch the surface of how software engineers are essentially held to hardware engineering deadlines regardless of the complexity of the software they're being asked to produce.
Personally I would not consider connecting a TV to the internet. Aside from usability factors, it's hard to assess security (therefore the TV-ware has to be assumed a hazard), there's little transparency into what it's doing, update mechanisms are sketchy at best.
Most new models, it seems, have the so-called "smart" features, but it's harmless if you don't connect it. I just use a TV as a big monitor - plug in a PC and use a wireless keyboard from the comfy sofa.
More curious is why the TV and monitor categories haven't converged. Eventually I predict, they will, when demand for OTA tuners fades and "cord cutting" (as the cable TV industry calls it) goes to higher percentages.
34 comments
[ 6.1 ms ] story [ 73.1 ms ] thread[1] https://news.ycombinator.com/item?id=7620828
[2] https://news.ycombinator.com/item?id=7619117
Frankly anything close to hardware, up to and through the driver layer, has a real tendency to barely perform as required. It really seems like if it works enough to show someone it looks like it's working they stop, but we've all seen this attitude applied to higher levels of the software stack, except there it's easier to deal with.
The single most telling gadget here is the Chromecast, which successfully nullifies most of the point of smart TVs for <$40, while providing a user experience none of the TV makers got close to.
The auto manufacturers, in particular, seem to expect that I should be paid about 2/3 my current salary to physically relocate and then work 45-hour weeks for them, if they even have any software jobs in the US at all.
To them, writing the software is like adding an extra cup holder.
Last time I checked iphones and xboxes and tivos were hardware. If every hardware maker with good software is a software company, and only the hardware makers with bad software count as hardware companies, it's by definition true that hardware companies can't make good software.
http://5by5.tv/hypercritical/1
It's even worse when the random track is not even produced from a good pseudorandom number generator. In order to preserve the back/forward button functionality, the "random" selection may be seeded as a function of the current track number and the system clock date. So you end up with a choice between the native playlist and the player's playlist of the day.
The only reason I can think of for making your hardware do such things is that you don't care about the user experience as much as you care about the $0.15 cost per unit it would take to make the function work in even a 3/4-assed way.
We have one guy on our software team that this describes. The rest of your post is condescending assumption that ALL of us have the unix beard and vim editor of that one dude. Paradoxically he is one of the iPhone owners in our Android heavy group. In conclusion, I guess I've never really worked with programmers before.
The CLI makes it easier to force developers to separate the functionality from the user interface. You still might have the guy that puts all the code inside Main( string[] args ), obviously, but at least that code is easier to test.
Just like removing the presence of alcohol from the alcoholic may allow him to resist temptation and become a better person, removing the GUI from people with bad GUI coding habits may allow them to resist temptation and write better code. But maybe not.
It also helps you discover who actually knows how to write software, and who is dependent on the development environment to erect all the scaffolding for them.
The software companies that produce the best UX don't do so because there's a "draconian master" forcing the programmers not to just have Macs boot directly into Emacs and give users electric shocks when they click the mouse button. They have teams that are actually interested in UX design. Everyone I've met doing engineering at Apple cares about this sort of stuff. And while I'm sure there are programmers out there disappointed that their Android phones don't boot into console mode, none of those programmers are people on the Android team who have only been held back from doing so by the Iron Fist of Sergey.
I think there may be economic factors too. Isn't it true that TV replacement rates are low and they have low margins? Given the longevity of displays, why would anyone want to bundle in hardware/software with faster refresh rates?
See here: http://5by5.tv/hypercritical/16
Also, see here for details about John's "Journey"[0] [high fives self] researching and purchasing a TV recently:
http://atp.fm/episodes/43-brilliance-enhancer
[0] - If you've listened to John discuss video games recently, you'd be high fiving me too :-)
[1] http://www.monoprice.com/Category?c_id=113&cp_id=11307&cs_id...
--Robert Metcalfe
Speaking as a software guy at a hardware company for TVs, one of the challenges is that there isn't a cohesive conversation between the hardware designers and software engineers.
On more than 3 occasions I could name off-the-top of my head, we've had to write workarounds or re-architect entirely for missing or over-promised performance of the silicon.
Likewise, some very useful features have been scrapped because they would add $1.00 onto the cost of a unit. While I get that 1 million units x $1.00 adds-up, the conversation about how this could either make a better product or that subsequently spending 2 million in software maintenance, isn't cheaper---is missing entirely.
This is a familiar refrain from other jobs and other engineers throughout the custom hardware industry. This doesn't even scratch the surface of how software engineers are essentially held to hardware engineering deadlines regardless of the complexity of the software they're being asked to produce.
Most new models, it seems, have the so-called "smart" features, but it's harmless if you don't connect it. I just use a TV as a big monitor - plug in a PC and use a wireless keyboard from the comfy sofa.
More curious is why the TV and monitor categories haven't converged. Eventually I predict, they will, when demand for OTA tuners fades and "cord cutting" (as the cable TV industry calls it) goes to higher percentages.