Recover HD Using a Magnet - <AUTHOR> http://info.iet.unipi.it/~luigi/recover-hd/text.html <comment><USER2> My anecdote:

Around 1993 I had a Commodore Amiga with an A590 external hard drive. A big enclosure that could be connected to the expansion port on the left of an Amiga 500, containing a very precious 20MB hard disk.

One day, it stopped working. I tried everything but I couldn't get it to work. A friend offered to take a look at it so I put it in my backpack and took the train to my friend. When connected to his A500, the drive worked lime a charm.

When I drove back home in the train I wondered what would be the matter with my A500 since it apparently made my A590 hard drive fail.

However, once I got home and reconnected the drive, it worked. No problem whatsoever.

Until two days later. It failed. You know what's going to happen, right? Took it to my friend, it worked, took it back and it worked for two more days.

Turns out that disconnecting it, putting it in my bag, walking it around for a while worked just as well.

Turns out that disconnecting it, dropping it from 5cm / 2 inches and reconnecting it, worked just as well.

Which was what I did for the next four years or so. Whenever it stopped working, I disconnected it, dropped it and reconnected it.

Always loved the look on the face of people who witnessed me starting up my Amiga.

<comment><USER3> FWIW the failure mode (which was also common in drives for the SPARCStation at the time) was called "stiction." That occurred when the drive parked the heads, after power down, into the landing zone on the platter.

At Sun we took apart a number of failed drives (which could also be recovered sometimes by giving them a sharp twist) and hunted for the root cause. The answer was that over some time the drive heads became smoother and the surface of the landing zone also became smoother. When the tiny edges of the head had been removed by this process, the surface of the head was pretty much optically smooth (very little variation) and when it landed in a part of the landing zone that was similarly smooth the surfaces would push out the air between them and become stuck just by air pressure and surface friction (stiction). The drive would not spin up until the head had lifted off the surface. The firmware issue was that head lift off was checked for so quickly that the power up of the spindle was aborted before anything happened (this was to prevent damage to the head by dragging it along the platter's landing zone). By jostling the drive you could manually cause the platters to rotate and if you found a spot that wasn't completely smooth (or if you managed to have the heads move out of the landing zone) the surface would be rough enough that the head wasn't being held down and it could lift off again.

Seagate gave us a firmware fix which basically waited longer for the heads to lift off allowing the spindle motor to move the platter a bit before giving up. Quantum (the other disk supplier) beefed up the retract solenoid and gave us firmware that would try 'regular' retract and then 'heavy' retract before giving up. For a pretty long time I had a Seagate drive that had been disassembled to the point of exposing the heads and platters so that the effect could be demonstrated to skeptical engineers.

<comment><USER4> An IBM tech told me how they sometimes resuscitated drives that wouldn't come up after power cycling. They would spin the drive on the floor for a few seconds and then quickly hooked it back up before the platters stopped moving.

</comment></comment></comment><comment><USER5> I have fixed a ton of drives, in general. Board replacements, swapping platters, head swaps, etc. Some takeaways: I started doing this under tupperware, and that worked. I built a "cleanroom" out of a new sandblasting cabinet, and that worked better. Later i built a laminar flow bench out of a cheap kobalt tool-box and some plexiglass, and that was better still.

Swapping the control boards works on some makes (wd), make certain it is exactly the same model and revision. exactly. "close enough" never worked for me, not even once.

By far just a slight "spin" by hand along the axis of travel of the disk, a quick gentile flicking motion, works to unfreeze the spindles of most stuck drives.

Some drives responded to a gentle heating of the spindle bearing with the hot air.

Use dd_rescue.

"Spinrite" is complete horse-shit, don't listen to anyone saying otherwise.

Most drives people brought in were just corruptions, photorec and it's associated programs (testdisk) are also invaluable..

<comment><USER6> Do you (or anyone else) have ideas for what to do with

\- a MyBook that isn't recognized anymore?

I've figured out there's probably some encryption in the casing because when I disassemble it and connect it directly it shows up as unformatted or something.

\- an ssd which seems even more dead.

Personally I've gotten back erased data (photorec) and data from at least 2 other disks (tilting the disk or freezing the disk), but these two have me stumped which is sad since they broke shortly after each other and one were supposed to be the backup ;-)

<comment><USER7> The drive itself is likely good - it's probably a software/config error with the casing. A drive recovery company will probably be able to recover it cheaply, or third party recovery software on the bare drive.

<comment><USER6> Ok, thanks!

Would you happen to know why they'd transform the data instead of just writing through?

Oh: and I also added detail about another drive to my question. I didn't think anyone would answer that fast :-)

<comment><USER7> Normally they shift all your data a few hundred megabytes later in the drive so they can use the area at the start to store their "drivers" (ie. The software they encourage you to install on your PC to offer backups, encryption, cloud storage, antivirus, and other crapware of dubious value). Sometimes the casing firmware emulates a CD-ROM device and offers this data because the OS will autorun software from a CD. Then when the software is installed, it switches to hard disk mode to present your actual data.

The external drives which offer 'encryption' nearly all do it through software on the host PC and sometimes the drives built in encryption (did you know all modern hard drives can encrypt data before writing it to the platters? - nobody uses it because you can't tell if the drive really is encrypting your data or just pretending to).

<comment><USER6> > Normally they shift all your data a few hundred megabytes later in the drive > so they can use the area at the start to store their "drivers"

So, if I'm really lucky I can use testdisk to find the partitions and just mount it read only from there without involving a recovery company?

<comment><USER7> Yep. As soon as you find the sector number of the start of your data, you can use "losetup --offset xxxxx" to use it like a regular disk again. I think there are even SCSI commands you could send to permanently shift the start of the disk. Or you could just dd all your data back to where it ought to be.

<comment><USER6> I read a bit more and it seems some models has encryption mode (by default using an empty string for a password it seems.) There exist at least two projects to get data from those MyBooks so I'll try those if the simple version doesn't work.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER8> My story:

In 1996 or 97, a friend brought me his Compaq Deskpro, the SCSI HDD had stopped working. No sound at all, dead. Tried everything, checked voltages, reconnected cables trying to clear any oxidation. Wouldn't spin at all. Well, called it a night.

Next day, decided to take it out of the chassis for a last test, connected outside. Not only it spun, it worked fine!!! WTH????

Well, into the chassis it went. Nothing. Dead. Whaa..??? Outside again, it worked. In the chassis, dead. Outside, worked. Scratched my head... With it working outside, just tried to place it on top of the chassis. It spun down and stopped. Took it away, it spun up. Got it close again to the chassis, it spun down again... Scratched my head again... Gave up, left it disconnected outside for the day.

Next day tried it again and this time it worked outside of and in the chassis... My thoughts? The chassis was magnetized or something...

Worked for a couple more years.

<comment><USER9> Perhaps a defect in a cable or connector such as a broken wire or a dry solder joint? These often cause problems that mysteriously appear or disappear as the cable is moved and the changing forces on the defect make and break the connection.

<comment><USER8> Nope, I tried everything, twisted the cables, etc. I even changed from power connector to another and changed SCSI cable. Outside it worked, inside didn't. Working perfectly outside, as soon it got close to the metal of the chassis it spun down, and as it got away from the metal it spun up.

</comment></comment></comment><comment><USER10> Don't use dd -- use ddrescue (reads all "working" sectors before retrying broken ones).

<comment><USER11> Does this mean it puts less strain on a potentially broken disk in an attempt to maximize how much can be rescued before it fails?

<comment><USER12> yep; it's quite clever about how it deals with broken sectors too; starts jumping over them in increasingly large amounts, and goes back later (in multi-pass) to get the missing bits.

</comment></comment></comment><comment><USER13> If you Google for the word "sticktion" or "stiction" you'll find other remedies. Like putting it in a ziplock bag and freezing it, or (youch) purposefully dropping it.

All approaches to release a head that's stuck to a platter.

</comment><comment><USER14> I've fixed this problem a few times (on different drives) by giving the drive a not so gentle thwack with a hammer. The trick is to hit it on the long side, which tends to dislodge the stuck heads/arm. If you hit it on the top or bottom, you're likely to break something, and hits on the short side aren't likely to achieve anything at all.

<comment><USER15> Many jobs ago we had an outage caused by 2 drive failures in a Raid 5 system, that was resolved by banging the drives on the ground a couple of times before putting them back in.

If I still worked with physical servers I'd be carrying around a rubber mallet to apply "percussive maintenance"

</comment></comment><comment><USER16> How did the data not get destroyed by the magnet?

<comment><USER17> the whole magnet and hard drives thing is a really old hoax. with normal household magnets or even strong neodym magnets nothing will happen to your data but if you have a really strong industrial electro magnet at hand you can wipe a drive with it...

here is an old national geographics video on the topic [https://www.youtube.com/watch?v=U8LWTe5CqQg](https://www.youtube.com/watch?v=U8LWTe5CqQg)

<comment><USER18> Here's my anecdote:

In 2006, while sitting at my desk playing a video on the Travelstar 40GB PATA drive in my Thinkpad T22, I held a single neodymium magnet (harvested from an old hard disk drive) about 6 inches from the left side of the unit (where the ~disk was located). The video froze, Windows XP blue-screened, and the hard disk drive started emitting a ~10Khz whine. I jerked my hand away from the PC immediately when the whine started

BIOS would no longer detect the disk on that machine, or any other I tried it on (on both USB-to-PATA and honest-to-goodness motherboard PATA controllers). The drive spun up but made a repeated ticking sound (I assume seeking back and forth looking for servo tracks).

I sent the drive to Kroll Ontrack (because, stupidly, I had billing data that wasn't backed-up on the drive). The report I received back indicated that 80% of the drive's sectors were unreadable.

As an aside: The data I was looking for was ASCII text and Kroll Ontrack was completely unhelpful in just sending me a bitstream image of the drive so I could grovel thru looking for data I needed. Being plain ASCII, their "file carving" tools didn't locate any of the data. (They sent me a "preview" of the data they'd located, and while it got lots of Microsoft Office-format files, it didn't have any ASCII text files). I offered them a 3x multiple of the rate they asked for file-level recovery to simply send me the bitstream image of the disk that they'd already made. They wouldn't do it, and wouldn't even let me pay to talk to somebody who understood what I was asking for. I ended up taking a major loss on the billing data I destroyed. I'll never recommend them to anybody.

I won't ever play with neodymium magnets around spinning rust media again either. I also had a major failure of my discipline re: backup at that time, too. The cobbler's children always go barefoot-- I was being too cavalier with my backup strategy (or lack thereof) and not treating my own data like I would a Customer's.

<comment><USER19> Sounds like a coincidence.

<comment><USER18> It does sound that way but, boy, it was eerily timed if it was.

<comment><USER20> Magnetic field falls off with inverse cube of distance once you're past the approximate size of the magnet. Not to mention that the drive itself is in a ferrous enclosure that provides a lot of shielding... the magnetic field you applied at 6 inches is approximately nothing.

<comment><USER21> Isn't it inverse square?

<comment><USER20> No. Magnetic fields fall off as 1/d when d is small compared to the size of the magnet, progressing to 1/d^3 when d is large compared to the magnet. (E.g. weird edge case-- it's inversely proportional to distance from an infinitely long wire).

Electromagnetic radiation from point sources falls off as 1/d^2.

<comment><USER21> Thanks a lot, both of you, learned something!

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER22> View page source. What a beauty .

<comment><USER23> Really? He doesn't close the <p> tags.

<comment><USER24> That's only a problem for XHTML. HTML5 implicitly closes the previous <p> tag when you open the next one; thus, a <p> inside a <p> is an implicit </p><p>, if you will.

<comment><USER25> Why does VS Code auto add the closing <p> tag when you open them then? It doesn't do it for, say, <img>. Bug?

<comment><USER24> Feature. <p> tags can function as containers for text and other elements, and VS Code can't distinguish between <p>, with the special handling, and <div>, without it.

Okay, to be fair, that _does_ sound like a bug.

</comment></comment></comment></comment></comment><comment><USER26> Clever! I'm stuck on a problem right now as well, I'm trying to boot an old server (Supermicro, dual CPU) to verify something and for the life of me I can't figure out what is wrong with it. It doesn't do _anything_ when you power it up, even the power led on the board doesn't light up. Forcing the powersupply to 'on' does light up the LED but the system still won't boot. Already put a fresh 3V cell in it, stripped it down to the bare minimum, all jumpers in default positions, no go. And it worked perfectly fine the last time it was shut down. Highly frustrating these gremlins.

<comment><USER27> Oh, did any caps blow? There were some counterfeit ones going around some time ago...

<comment><USER26> That's a good one, did not think to check that, I'll go over all the caps on the MB.

</comment></comment></comment><comment><USER28> The strangest HDD failure I ever dealt with was a Toshiba notebook drive where the centre bearing had become shot. The notebook would not boot and the HDD sounded like a coffee grinder.

By moving the notebook in the air and trying different positions the noise changed. I was able to get the machine to eventually boot by holding the notebook in my hands at an angle and spinning myself on the spot. At the time I guess the gyroscopic forces were enough to get the bearing to sit right and the HDD to be able to spin properly. Doing so caused the drive to work long enough to get the most important files off it.

Definitely the strangest thing I've ever done to "fix" a piece of computing equipment.

</comment><comment><USER29> I have successfully used the freezer trick a few times to recover a hard drive. It did work in those instances and I documented it here:

[https://battlepenguin.com/tech/freezing-a-hard- drive/](https://battlepenguin.com/tech/freezing-a-hard-drive/)

If you can, leave the hard drive in the freezer while you access it. Only works for old spinny hard drives of course.

</comment><comment><USER30> I had numerous HDs fail with the clicky noise when powered up. I was never able to recover any of them. Is it possible nowadays to fix these without replacing the drive controller? I remember this clicky problem forever destroyed my trust in harddrives. Are hard drives any better these days??

</comment><comment><USER31> instead of magnet, what i used to do with ticking / corrupted drives was write full of 0, then write full of 1, then full of 0, repeat a few times. it takes frigging agents, but it kind of gets out all of the bumps in the magnetic material and smoothens it out again. fixed many broken drives doing that. ticking is often the read head getting dumped too much due to magnetic substance on the disk being piled up too much giving too much of a push to it. then the ticking will cause similar piles to form and get worse and worse.

<comment><USER7> Alternative explanation: some sectors are unreadable due to checksum errors (caused by improper powerdown). Repeated read requests sounds like ticking because the head will be seeked every time.

Writing all 1's or 0's to the drive causes those sectors to either be rewritten or reallocated.

The fact it's 1's and 0's wouldn't have an impact anyway - all drives use data whitening techniques anyway.

</comment></comment><comment><USER32> Those $1.5 apparently came from a leprechaun, there is no other explanation :).

</comment><comment><USER33> This a fantastic webpage.

<comment><USER29> Simple and straight to the point ... although some navigation would be helpful to see, you know, the rest of the website.

<comment><USER34> TBF from the ~luigi part of the url you can tell that it's probably one of those "web sites" allotted to each user on a university server or something similar, eg. go to [http://info.iet.unipi.it/~luigi/](http://info.iet.unipi.it/~luigi/) for his homepage.</comment></comment></comment>


San Francisco Request for Information – New Voting System - <AUTHOR> http://sfgov2.org/index.aspx?page=4892

<comment><AUTHOR> Topic submitter here (and current President of the SF Elections Commission).

As a software developer and open source contributor myself, I'd really like to see open source happen. But if no vendors respond to the RFI / RFP with a credible open source proposal, it will make things a lot harder.

Basically, SF would have to contract to build its own system. I made this point at last week's Commission meeting here: [https://www.youtube.com/watch?v=SOOoXSOtR-s&t=1h04m55s](https://www.youtube.com/watch?v=SOOoXSOtR-s&t=1h04m55s)

<comment><USER2> Although I'm not a fan of it [0], there has been a commission to research the feasibility of electronic voting in the Netherlands. Outcome was it would not be cheaper than the current paper voting system and some fundamental parts still have to be on paper [1].

Currently they are researching the costs of implementing the proposed voting and counting machines (with human readable paper separating both machines). Also there was a preference for the software to be open source.

You could get in contact with some people of the commission:

[https://twitter.com/cryptoron](https://twitter.com/cryptoron) (part of the commission, now leads the costs investigation of the new proposed machines and software)

[https://twitter.com/ArjenKamphuis](https://twitter.com/ArjenKamphuis) (part of the commission and part of the hacker movement that got eVoting machines banned in the Netherlands in 2007 [2]).

[0] I don't think electronics outweigh the security of a paper based voting system anytime soon. Because of it's simplicity and transparency it's publicly verifiable in practice. Professor Halderman, who did a lot of research in electronic voting, won't expect secure electronic voting systems that can be used at large scale within the next 10 years, if ever: [https://www.youtube.com/watch?v=JY_pHvhE4os#t=58m55s](https://www.youtube.com/watch?v=JY_pHvhE4os#t=58m55s)

[1] Unofficial abstract of the commission: [https://www.kiesraad.nl/sites/default/files/every-vote- count...](https://www.kiesraad.nl/sites/default/files/every-vote-counts- conclusions-and-recommendations.pdf)

[2] [http://wijvertrouwenstemcomputersniet.nl/English](http://wijvertrouwenstemcomputersniet.nl/English)

</comment></comment><comment><USER2> Interesting. Good to see they seek information about systems that "are based on voters marking _paper_ ballots".

Contrary to popular belief, in state or nation-wide elections paper is a safer way to vote than electronics because the former is simpler and thus easier to verify by the general public.

Most people don't realize how hard it is to beat the transparency and simplicity of a physical ballot box. It can be inspected by the public at the start of the day so anyone interested can verify it's empty and people can keep an eye on it during the day and see if anyone tampers with it. Then at the end of the day it's important the votes are manually tallied right after the ballot box is opened. This makes the process transparent to most people in society and assures the highest level of scrutiny and confidence that the vote and vote count are legit.

It's hard to replace this with anything more complex i.e. electronics.

For a recent discussion see:

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

<comment><USER3> and the Candidates/parties can see and audit the process

</comment></comment><comment><USER4> Is this a chance for Score Voting or Approval Voting [1]?

Edit: It looks like they are going with instant-runoff, which is more complicated and has higher levels of regret. Does anyone know why they have selected this versus the easier Score Voting option?

[1] [http://www.electology.org/#!approval- voting/cc04](http://www.electology.org/#!approval-voting/cc04)

<comment><AUTHOR> > Does anyone know why they have selected this versus the easier Score Voting > option?

Instant-runoff voting (aka ranked-choice voting) is the law in San Francisco. It was passed by the voters back in 2002.

By the way, systems like approval and score voting suffer from the problem of voters having to vote against their favorite candidate to support a "lesser of two evils."

Think of an approval election with Donald Trump, Hillary Clinton, and Elizabeth Warren (where Warren is your favorite and Clinton is the lesser of two evils). Do you "approve" of Clinton, which would help defeat Warren? Or do you "approve" only Warren, at the risk of getting Trump?

</comment></comment><comment><USER5> Wow, great to hear and a great opportunity for improvement. If a sensible solution comes to light then hopefully it will have a domino effect on other states. Bonus points for wanting transparency and a system that's open source. Let's just see what actually happens though.

<comment><USER2> "Bonus points for wanting transparency and a system that's open source."

Transparency is not a bonus, publicly verifiable elections are a requirement for a healthy democracy to ensure power is legit. Open source does not really matter. Even if it's open source, it's hard to assure the public that "that open source software you downloaded from github" was actually running in a counting machine _and nothing else_ (i.e. a custom made virus) at the moment of counting.

</comment></comment><comment><USER6> BitCongress anyone?</comment>


Ask HN: Why is the software ecosystem of single-board computers so ugly? - <AUTHOR> e.g. Raspberry Pi or Cubieboard <comment><USER3> The answer is that the interests of the creators of the chips powering these boards generally aren't aligned with non-commercial developers. So if you're a "hobbyist" you are not relevant.

Interestingly from the Commercial side, it is very different. If you've got a single board computer as part of your product and you are a going concern with the necessary legal NDAs and what not in place, the manufacturer will send one of their engineers to sit in your cube an pair program with you until your system is running the way you want. They will create custom releases of their binary blobs that do the things you need them to do in order to make you successful. That is so that your product ships and you start ordering a million a month of their product.

On the flip side there aren't too many really "open" SoCs, not like the old days where the data sheets told you everything. So things are a bit more challenging. I had hopes for the Zync series from Xilinx as they had the potential to be the basis for a good "common processor" base, a dual ARM 9 enough FPGA fabric to make a classic frame buffer, etc. But the number of people who want that sort of system is measured in the thousands, not the millions. No way to make a living at it, no way to sell it for what it would cost to support.

Intel has been bending over a lot however in order to try to take share from ARM. So they will talk to hobbyists about their smallest computers. The Galileo, compute stick, what have you. So there is an opportunity there, for the moment they are aligned with anyone trying to give them exposure.

<comment><USER4> I agree though I would add that much of this is because android "won" linux on embedded. Today it (unfortunately IMO) seems far more likely that a hobby ecosystem is going to trickle down from android than the other way around.

</comment></comment><comment><USER5> I'm assuming you're talking about Platform / BSP side of the ugliness.

You have to look at the lineage of how things evolved to the current state - on the PC ecosystem, everything is already on enumerable buses (PCI, USB, etc) with standards (PCI, UEFI, etc) describing how it's all supposed to find what device is connected where and have it all work together. The incremental cost of opening that up to the public is thus fairly small since you need to build your platform to adhere to the standards that are already there anyway. That's how you get to being able to boot a kernel image on a random system or insmod a random driver you found and expect it to (mostly) work.

In the SBC/Embedded ecosystem, there really aren't any standards. Since internal topology of each SoC is different and the pace of new SoC releases is so high, there's no time for standardization - you throw in random IPs from bunch of different vendors, figure out how to connect it all together, and get it to the market. In this scenario, having something documented is actually a negative thing - once something is documented, people expect it to work the same way going forward. You can hide a lot of hardware deficiencies in binary blobs, something that's very difficult to give up. Thus, there's a huge disincentive to provide full hardware documentation. I'd imagine that in some cases, for licensed IPs, the SoC vendors may not even be allowed to do so even if they wanted to.

Things like DeviceTree is trying to nibble around the edges of this problem, but given the current state of things, it'll be a while yet as a lot of the building pieces doesn't even seem like it's in the picture yet.

<comment> TD-Linux The lineage is hardly an excuse - PC started out just like ARM is, with manual IRQ assignment, no hw detection, and the like. But this was solved in the mid-90s with plug and play standards. It's really sad that in 2015, embedded SoCs still don't have anything comparable.

<comment><USER6> Wouldn't that considerably increase bloat?

<comment> TD-Linux Dynamic module loading means that it would only increase disk usage. You could always package the modules separately if disk space comes at a premium.

<comment><USER7> > Dynamic module loading means that it would only increase disk usage.

Disk? You mean, mass storage?

Hardware detection is definitely bloat on this kind of system, because there isn't much variety to begin with.

PnP was created to let people less ans less RTFM-inclined to install new hardware on an platform that won its market share because of its extensibility.

SOCs and SBCs OTOH are generally used in closed embedded systems that are often not at all designed for evolution. Using auto-detection would be a waste of resources and potentially cause problems.

</comment></comment></comment></comment></comment><comment><USER8> Because people are trying to use a hammer on a part that needs a precision screwdriver. A generic OS with a monolithic, non-realtime kernel offers downright terrible support for the useful and interesting parts of embedded components -- the multitude of I/O components designed to keep things from needing the CPU, timers to trigger interrupts at regular intervals, so that it can spend most of its time in sleep, etc.

Generic OSes simply have the wrong sort of philosophy for this. Microcontrollers, like the AVR or ARM Cortex-Ms, tend to provide an environment that gives you more tools needed to take advantage of the processors in a reasonable manner. They provide the hooks for interrupts so that you can service IO when it comes in, they provide network stacks and filesystem libraries that you can use if your project calls for them, or ignore when it doesn't. Because of this, you end up in situations where programming for an ATTiny4313, with 256 bytes of RAM and 4 kilobytes of flash, is more enjoyable and rewarding than a system with a million times those resources.

A lot of this can be blamed on the documentation, or lack thereof. A lot of the higher end embedded devices -- like the broadcom chip in the pi -- don't have nearly the documentation available to the ordinary user as the smaller chips. As a consequence, users have to pore through the tiny amount of documentation that is available to guess their way to the answers, further ensuring that you'll only get a few ports of operating systems that really don't exploit the power of the chip they're running on. You just get a generic experience with a generic OS.

The solution is to hack. Go deeper than Debian, farther than FreeBSD. Bug manufacturers for the tools needed to expose the dark corners of the chip, to get register maps and interrupt handlers. We need good real-time solutions that the common person can count on. To get things not so ugly, we need the opposite of the tools we have now. We need to lay these chips bare, because the current path just isn't sustainable.

<comment><USER9> amen

</comment></comment><comment><USER10> I currently work at an embedded boards company as (technical) marketing, and using a lot of the boards outside of work too. I'm asking the same things myself too for a long time, and so far I figured about these comments to try to answer (at least in part).

Getting software right is bloody hard work! Especially with ARM where you need to redo a lot of things for every new piece of hardware.

Most companies (and most PMs/engineers) I think perceive boards as the end- products themselves, and any software development after the initial release (and maybe some bug fixes) is more of a burden than value add. This attitude needs to change, because it results in very-very few boards actually being used to their full potential. What good is a great hardware if nobody can make it work? Maybe this will change, but need good thought leaders inside companies to make that happen.

I see that upstreaming is often not considered, or couldn't be done. The quality of code is just awful, because that's not a design goal. Being part of an ecosystem, helping your future self doing a better job (not needing to start from scratch every time if things are upstreamed) is not part of the thinking for many. These things are (or thought to be) outside of the PMs responsibilities.

Resource constraints come in a lot, many companies try to support way too many products, and end up with a level of "barely" making it work, which is good enough for many traditional customers. Doing a good job needs a lot more resources. I remember reading that RPi spent about $5million worth of development on just the Linux support. Can't imagine lot of other companies putting that much into any single product.

And there's a lot of the traditional "trade secret" thinking. Lot of places are more afraid of losing sales doe to being copied than not selling boards because of lack of interest. The main goal is never really "enabling the customer/user" or giving options, but the first thing is protecting the IP because of the thinking stuck with the ways things use to work.

Also, the "software ecosystem" is highly fragmented, all projects rely a lot on volunteers, and require a lot of specialized knowledge. I don't know if it's even possible to bring people together, but whoever would achieve that would do a big service to both sides...

These are just some thoughts, I'm sure not the whole picture (and definitely, definitely do not reflect the opinion of my employer:)

<comment><USER11> I don't know how much pull you have within your company and with the SoC/etc suppliers that you use, but please please please preach the mainline mainline mainline, upstream upstream upstream mantra.

<comment><USER10> amen!

</comment></comment></comment><comment><USER12> Um, because hardware is _hard_. Let's go shopping.

Specifically: Because until the latest incarnation of both the BeagleBone and RasberryPi, everybody was running hacky kernels with bodge after bodge of garbage layered on to make things work.

In roughly the last year, both the Raspberry Pi and the BeagleBone black can run relatively clean versions derived from Linux mainline (Debian in my case).

Once the BeagleBone got off of the disaster that is Angstrom Linux, the number of BeagleBone's around me shot up like a rocket.

</comment><comment><USER13> I think something that's been overlooked is that no one really cares enough to get Linux kernel patches upstream-compatible.

Even if the sources are available it 'd take many man-months of engineering work to get those compatible with mainline HEAD and even more effort to get to the coding standards required by the kernel maintainers. Manufacturers/OEMs/ODMs don't care because it won't improve their bottom line to have a current kernel (at least not until a customer wants to run latest Debian with systemd and udev, which carry certain minimum requirements on the kernel). The Linux kernel community already has too much work on their hands and I don't see any major company sponsoring the couple millions of $$$ that 'd be required for integrating work.

Just look at the myriad of linux-2.6.24 forks. Android handsets, SOHO el- cheapo routers (people still ship 2.4.x kernels for these, LOL), gambling machines (no joke, I actually own a real, licensed slot machine running 2.6.24!)...

</comment><comment><USER14> What do you mean? They run Linux. How much more software could you possibly want? And, how could it be healthier? It is the largest free software ecosystem that has ever existed.

I'm not trying to be ornery, I just don't understand what is ugly about Linux, or what is specifically ugly about using Linux on these systems?

<comment><USER15> Perhaps the poster meant the numerous proprietary blobs and patches that can't be upstreamed for certain platforms.

The RasPi fixed those problems, though.

<comment><USER11> The RasPi still needs a GPU blob to boot right?

<comment><USER16> Yes, the equivalent of the BIOS on PCs.

</comment></comment></comment></comment><comment><USER17> Because they grew out of the microcontroller business, rather than the micro/personal computer business.

Thus most of the companies involved has a "ship it and forget it" attitude towards their products.

The PC is a very odd duck. IBM was a late comer to the micro/personal market, and they did so using off the shelf components (except for the chip handling the initial bootup, better known as the BIOS).

Thus it was possible for other companies to clone the PC using the same components, and at the time it was possible to do a clean room reimplementation of the BIOS to get around any copyright claims (back then there were no software/code patents).

So once those BIOS reimplementations started shipping, the PC market exploded with competition. This in turn drove prices down.

Another thing is that the IBM design was in a sense a throwback to a earlier "era". While most micro computers sold were pretty much single board computers (possibly with a few expansion ports and a single edge connector for ROM cartridges) the PC was more like the Altair 8800. Except for CPU and RAM, everything lived on ISA bus expansion boards.

Thus you had a initial flexibility that very much stayed with it to this day (and was massively improved when the ISA bus got replaced by the PCI bus).

</comment><comment><USER18> I see a lot of people having problems with the BSP. Excuse me for the shameless plug but I am developing an open source baremetal firmware for the Samsung SoC S3C2440 ( [https://github.com/mindentropy/s3c2440-mdk](https://github.com/mindentropy/s3c2440-mdk) ) and planning to port this to S3C2451. These are found in HP IPaq etc. It will be basically a tutorial for people trying to develop their own firmware or as reference code for bringing the SoC and the controller's up i.e. Drivers for the controllers and also the ARM board bring up code. It can also be used to test the board by testing individual IP's.

I am planning on supporting Samsung SoC's and will start of with TI AM335x Sitara series and FriendlyARM's NanoPi2 which contains the Samsung SoC S5P4418

I am running behind OEM/ODM's for funding me for development of their SoC's and nobody seems to be interested except FriendlyARM. What do you think I should be doing to get some funding for this?

<comment><USER19> Wow - keep publishing would be my advice. Build an audience - eventually that will drive a critical mass.

<comment><USER18> Thanks! I also have a blog ( [http://thesoulofamachine.blogspot.in/](http://thesoulofamachine.blogspot.in/) ) where I go in detail explaining parts of the code of the various subsystems to get things up and running. I have developed without any costly JTAG tools and the code is compiled using free GNU tools keeping learners in mind who cannot afford costly development tools although a good scope would be great to debug clocks.

</comment></comment></comment><comment><USER20> It's not just those boards. Embedded development is generally "ugly" across the board. :(

<comment><USER21> That was my thought. If anything the software ecosystem around Arduinos and Raspberry Pis is much improved compared to what came before (e.g. PICs).

Partially it comes down to the constraints you're working under. When everything, program, data, and all has to fit in a few K of RAM, you use "ugly" hacks to make sure that everything fits, while leaving you the maximum amount of space needed for your data. While modern embedded system' capabilities have grown to the point where those practices aren't needed any more, the software development practices for those systems are slower to change.

<comment><USER22> I think another big reason is that, compared to desktop and web based software, embedded applications are almost always completely custom. There are common hardware specs on every PC, and three big operating systems. So you end up having huge developer communities that build all kinds of utilities, tools, and other building blocks that you can easily reuse. Usually embedded systems have a fairly simple operating system, and custom hardware, which means there isn't much reusable code, and it's up to the developer to provide a much larger portion of the functionality.

</comment></comment></comment><comment><USER22> It's to the point that hardware features on their own aren't really selling points, at least in my opinion. You can have high speed, tons of ram, 10 different buses/ports, and sell it for $10. But if there isn't a healthy user community, and a good bsp, all of that hardware remains highly inaccessible.

It's kind of a roller coaster of emotions. You can go from feeling like a wizard because of all of the shoulders you stand on for very little effort, to feeling like a dunce, because some driver doesn't work, and you have no idea how to go about implementing a solution.

</comment><comment><USER23> Google wants to bring some sanity on the development side with Fletch ([https://github.com/dart-lang/fletch](https://github.com/dart-lang/fletch) , Dart for embedded devices), not sure if this is what you are looking for though.

[https://www.youtube.com/watch?v=Hx2iGEAvZRk](https://www.youtube.com/watch?v=Hx2iGEAvZRk)

</comment><comment><AUTHOR> At the latest DockerCon Solomon told about solution - <USER2> [https://youtu.be/at72dhg-SZY?t=1445](https://youtu.be/at72dhg-SZY?t=1445)

<comment><USER24> I'm having trouble finding the 'solution' you refer to in the video. Mention is made of working on an abstraction layer, but that does nothing to solve the mess that is embedded development.

Lipstick on a pig -- current embedded development ecosystems are fundamentally broken, and can't be fixed by just another abstraction.

</comment></comment><comment><USER25> The kernel space is ugly because of all those out-of-tree patches and binary blobs, but the user space is rather normal. I run a vanilla Gentoo ~arm on my Banana Pro and I have yet to encounter an issue.</comment>


Ask HN: Do you have a side project you want to sell? - <AUTHOR>

If you have any side projects that you would be interested in selling, list them here and let's see if anyone wants to buy it from you. <comment><USER2> I have some Java audio synthesis apps. They're GPL'd but I'd sell someone exclusive commercial rights to them so they could fork them for any purpose.

This one has a lot of interesting classes and a general unit generator synthesis pipeline: [http://sourceforge.net/projects/applpi/](http://sourceforge.net/projects/applpi/)

And this one is essentially a wavetable oscillator which lets users redraw the wavetable and sum different waves (and there's a piano-roll I started but isn't shown in the UI): [http://sourceforge.net/projects/originalsynth/](http://sourceforge.net/projects/originalsynth/)

</comment><comment><USER3> [http://go-here.nl/game/PlanetArray.html](http://go- here.nl/game/PlanetArray.html)

Forget about the CS degree. _This_ will teach you how incredibly slow a coder you really are and let you upgrade to Starcraft like apm. Additional version can be made in almost unlimited variation.

</comment><comment><USER4> Also see a recent discussion here: [https://news.ycombinator.com/item?id=7656154](https://news.ycombinator.com/item?id=7656154)

</comment><comment><USER5> There's a ton of services that do precisely this ([http://sideprojectors.com](http://sideprojectors.com)). Why here?

</comment><comment><USER6> Hi everyone.

Mine is Loviv.com a designer's showcase site (<1000) and Twitter account (@lovivteam)

Regards.</comment>


Ask HN: Is there any fan/body cooling hacks or gadgets you know? - <AUTHOR> Is there any body cooling/fan hacks or gadgets you know?
2016, 1:30 am, its like 85 degrees in my hotel room.
is there any way to cool off or any small portable fan i can buy for travel that will cool me somewhat better than a tiny portable fan? or a lifehack? or a way to build a sweet ass cooling system for cheap? <comment><USER2> Some folks at MIT developed a "body heatsink" a few years back. [http://www.wired.com/2013/10/an-ingenious-wristband-that- kee...](http://www.wired.com/2013/10/an-ingenious-wristband-that-keeps-your- body-at-the-perfect-temperature-no-ac-required/)</comment>


Why CSS Should Be Used for Layout - <AUTHOR> http://www.newmediacampaigns.com/page/why-css-should-be-used-for-layout <comment><USER2> The CSS/Table argument has been settled, and tables won (by absorption): <http://www.w3.org/TR/CSS21/tables.html>

The CSS standard has _already conceded_ the point that tables can do things that pre-table CSS couldn't do. It's over. The pro-CSS side, at least in the way it is being argued (as if the IE subset _is_ CSS, rather than the standard), is just wrong and totally out of date. They've been abandoned by CSS itself. Quite a long time ago, actually.

As for their assertions that this is for "tabular relationships between data" in the standard, who cares? Table support is implemented as certain boxes with certain behaviors. If you need those behaviors in your layout, use them. They are well defined. And since content and presentation are so darned separate, it's not like it actually hurts anything, right?

(That's a critical point. If you move all the table stuff into CSS, that's _fundamentally different_ than using the standard table tag. That's presentation in CSS and content in HTML, exactly as it "should" be!)

Getting all huffy about the fact that somebody declared that some behavior should "only be for tables" is really missing the point. The behavior simply exists, regardless of what it was "designed" for, and if you need it, use it. Besides, just _read_ about the table support... if you can't see how that stuff might be useful in a layout, I can't imagine how your mind works.

The CSS table support is actually pretty rich, better than the conventional table tag by a lot, or at least, more flexible.

<comment><USER3> There is this strange myth that "the pro-CSS side" is somehow against tabular or grid-based layouts, or believe that this kind of layout should only be used for "tabular data". That is a fundamental misunderstanding.

Note that CSS does not say that _disply:table_ is only for tabluar data. The whole point of CSS is that you can use it any way you like, since it doesn't change the semantics of the document. This is totally different from HTML which indeed states that HTML tables should only be used for tabular data.

CSS has not "conceded" anything by including display:table - rather this is the whole point of CSS: to allow you to use grid-like layouts for other things than just tabular data.

<comment><USER2> "There is this strange myth that "the pro-CSS side" is somehow against tabular or grid-based layouts, or believe that this kind of layout should only be used for "tabular data". That is a fundamental misunderstanding."

I agree with you... except it is _not_ a myth. There are tons of people walking around and spouting off who have come to believe that "Tables are evil!"

People with considered opinions like you are not in the majority of those speaking.

"Note that CSS does not say that disply:table is only for tabluar data."

It says "Table layout can be used to represent tabular relationships between data." Direct quote, and skimming that page, it's the only normative comment about what it is for. I again agree that CSS doesn't forbid the use in layout, but there definitely are people thinking tabular layouts are forbidden and that only the "IE subset" (again, my best guess at what incoherent thing these people are arguing for) is "pure".

You basically re-iterated my point, but I assure you that you are wrong about what other people think. Go check out the parallel /r/programming post.

<comment><USER3> I think when people say "tables are evil" they really mean "HTML-table markup used for purely presentational purposes are not ideal." But maybe you are right.

Anyway, I agree we are in agreement, except I don't think the quote from CSS2 you mention is normative. (It says _can_ be used, not _must_ be used or _should_ be used) It is just an example. There is nothing normative in CSS about when to use the different styles.

</comment></comment></comment></comment><comment><USER4> This whole argument seems to be spiraling out of control, and I doubt a single person will change their mind either way.

Things not to bother arguing about in public (since no one will change their mind):

Religion

Politics

CSS vs Tables for layout...?

<comment><USER5> True, it hasn't changed my mind away from being pro-CSS. It has however, made me realize how much of a learning curve CSS must be for many programmers compared to tables, much more than I thought, so I'm less likely to debate the finer points with coders that use tables and just stick to enjoying the benefits of stylesheets for myself.

<comment><USER6> It's not about the learning curve. In my view, it's about the productivity of competent web developers and designers. Referring to the learning curve is just repeating the disputed claim that people who deny the suitability of CSS for layout are just invariably incompetent. That's an excuse.

And I don't agree with ejs. I think it's an important debate because CSS layout problems are a major reason why so many people use Flash. My own opinion about this matter is not cast in stone. I may change my mind based on good examples of CSS layouts that don't break and actually make maintainance easier.

<comment><USER7> You could look at the html source of csszengarden. I'm guessing it uses a bit less markup and is a bit more readable than an equivalent table based layout.

CssZenGarden also shows that refactoring a CSS-driven site is easier since you can do it without changing your templates.

<comment><USER8> > CssZenGarden also shows that refactoring a CSS-driven site is easier since > you can do it without changing your templates.

In my experience, this just doesn't happen in the real world.

<comment><USER9> That's not true. One of the products my team has built is a "white-label" syndication system for our content. We built that driven by CSS because it's the only way to drastically change the look and feel without touching the JSPs. We currently have at least 30 or so different looks for the same outputted HTML. As long as you attach classes/IDs everywhere and do it intelligently you can do all sorts of funky overrides (learn selectors!) to change the way the pages render and seriously never touch the HTML.

You can't radically change the flow of the pages but that's not the point.

The other area where CSS driven design makes things easier is debugging or experimenting with the look and feel of the page using Firebug. It's alot easier if all of your positioning and layout is set via IDs and CSS classes because I can go in and modify properties, add properties, etc. without needing to change CSS files or edit the document inline (it's much easier to modify CSS than inline style settings). Tables make this harder to do because tables are a pain in CSS with regard to which elements take specific CSS elements.

I'm not a CSS zealot but once you learn CSS properly (and it seriously doesn't take much time if you just focus on it a bit and find someone good to mentor with a bit) it makes things so much easier, especially if you're using the same generated code across different sites requiring different look and feels.

<comment><USER8> > learn selectors!

The grand majority of those selectors are not available in IE6, which most of us still have to support, so this is a non-starter. Nobody is arguing that we wouldn't be much better off with better CSS support. The argument is that with CSS support as it is now, most non-trivial changes to a sites design are nigh on impossible without changing the markup.

> You can't radically change the flow of the pages but that's not the point.

You know, sometimes it is.

> once you learn CSS properly

Can we quit with the "you probably don't know CSS" schtick?

</comment></comment></comment></comment></comment></comment></comment><comment><USER7> Front-end/Web design has evolved into a discipline of its own.

If you come from a different field, say programming, I can see how CSS looks like a bad solution to an already solved problem. So you're incentive is to stick to what you know and use tables for everything.

However, there's much more to front-end design that just having text and images show up where you want: user-agent targeting, SEO, accessibility, typography, graphic design, etc... There's a lot to learn, and CSS is just a small part of it.

</comment><comment><USER10> Context-sensitive Presentation, Better Accessibility, and the most complex designs are easier with CSS. These seem to fall under the YAGNI rule. In particular, if it took me a couple of hours to build using tables versus a couple of weeks using CSS (see the Ron Garret post), the above listed benefits would be cold comfort for the wasted time.

The first rule should be to get something working quickly, even if it's suboptimal. And the jury seems to still be out on the suboptimal part.

<comment><USER11> The jury is not still out on whether tables are suboptimal. They're easier, that's their only advantage.

The rule of getting something working quickly should not increase the cost of doing it right in the future.

<comment><USER10> What's optimal depends on your objective function. For Ron Garret, it appears that his objective function was "most intuitive." When smart people are on both sides of an issue, I consider it undecided.

I personally prefer using CSS for layout, not because it is more intuitive than tables, but because I prefer to remove the table-cruft from my html. I think it makes php and rhtml files easier to read. However, in the limited freelance work that I've done, I've run into more than one client that preferred I use tables because they couldn't or didn't want to maintain their layout with CSS.

Anyway, that discussion is ancilliary to my point, which is that the benefits offered by the author aren't going to be convincing to someone who sees a 40-fold or so difference in time-to-production.

</comment></comment></comment><comment><USER12> It seems illogical to me that the most complex designs are easier with CSS alone and no tables. Pragmatically, there's no room for a multidisciplinary approach?

And I must vent about the you-poor-thing defense, which was only mildly present in the article but has popped up loads of times in the discussion of the past few days.

Hockey-stick learning curves are inherent, objective flaws for software interfaces, not subjective ones that don't matter once the cretin beginners have been sufficiently shamed to overcome them. Interfaces are for humans. They should make "easy things easy and hard things possible." When they don't, there is a general feeling of malaise. Steep learning curves actively foreclose productivity and decrease user enthusiasm. Let us not forget the lessons of Kathy Sierra:

[http://headrush.typepad.com/creating_passionate_users/2005/1...](http://headrush.typepad.com/creating_passionate_users/2005/10/getting_users_p.html)

Furthermore, defending steep learning curves in general puts one in poor company and makes people wary. We've all seen people defend their sunk investments in genuinely crummy systems with a zeal which, seen from the outside, is comparable only to Stockholm syndrome.

</comment><comment><USER13> I have to admit, I default to tables for layout (not a designer, obviously). Hopefully once all of the major browsers support CSS3 (and more specifically CSS tables), this argument will be moot. Of course, the only major browser that doesn't is IE (prior to 8), so we probably have quite a while before IE 6 & 7 disappear from general use.

</comment><comment><USER14> Jesus, what a boring topic. Making something is so much more important than how it is made.

</comment><comment><USER15> This article won't load on my Blackberry. All of the pro-tables articles looked fine... (To be fair, it's probably a .js issue)

I haven't read much of the what's so wrong with tables argument in this debate. A lot people saying x is possible with divs and css is different from saying it's faster, better, cheaper. The div approach is harder to debug, the tables approach fails to set you apart from the hoi polloi...end of story?

</comment><comment><USER16> This argument is why the entire css/html/javascript client paradigm is broken.

Someone fix it, please.

<comment><USER17> I have the feeling that if someone did come up with a better alternative it would fail due to the sheer inertia of the current system.

</comment></comment><comment><USER18> To me this argument itself is wrong; One of the reasons why using CSS is considered difficult by some developers is because of the different levels of support shown by different browsers.

The whole argument that CSS has a learning curve, or that we need hacks, etc - all point to the same problem. The reason it takes such a long time to get the layout just right is because there is some browser out there (typically IE6) that does not behave the way you want it to.

We would not even be having this "war" if all the browsers were standards compliant, so my gripe as a developer is - why are we not fighting the correct war? As a developer, I must be able to write code, whether using div tags or table tags, and expect that it works just as it is supposed to, and not have to waste hours trying to hack it to work with non-compliant browsers!!

<comment><USER19> how about, because the world is not perfect.

<comment><USER18> The world is never going to be perfect... the question is: are you trying to steer it towards perfection or are you content going with the flow and just doing what everyone else does?

<comment><USER19> Perfection. Of course. Its not a choice. Its a demand.

</comment></comment></comment></comment><comment><USER7> There's also quite a few css frameworks out there that take the hard part out of laying out a page: Blueprint, YUI grid. See also: <http://www.contentwithstyle.co.uk/content/a-css-framework>

<comment><USER20> CSS frameworks are great way to get the job done quickly, with no need to worry about the different browsers and their issues.

CSS extermists will tell you how using those frameworks is evil, lame, etc. I think the problem is that web developers feel threatened of loosing their jobs (gigs), since regular Joe Sixpack can now go and create a decent looking website in XHTML/CSS with minimal effort.

<comment><USER21> Any web designer who is worried that "regular Joe Sixpack can now go and create a decent looking webpage" which looks or functions better than something they would be willing to accept payment for, should probably not be trying to make it as a professional designer.

</comment></comment></comment><comment><USER22> Ironically Joel seems to be missing something that YUI Grids (<http://developer.yahoo.com/yui/grids>) and Blueprint (<http://code.google.com/p/blueprintcss>) both allow you to reorder the content of a page. Sure it's not totally arbitrary, but it gives you much more freedom than tables.

Or you could just make your CSS render out tables ([http://www.digital- web.com/articles/everything_you_know_abou...](http://www.digital- web.com/articles/everything_you_know_about_CSS_Is_wrong/)).

</comment><comment><USER23> It's funny that this issue will only come up with someone who doesn't have to code designs for living or at least regularly. No offense, but if you actually got out of your little shell people and worked on some real designs, created by great designers, you would understand why CSS is superior.

This isn't even an argument.

</comment><comment><USER24> Seriously? Are we still on this?</comment>


Rapid CNC Prototyping Process for Smartphones and Tablets - <AUTHOR> http://www.hatchmfg.com/android-smartphone-tablet-how-rapid-prototyping-process/ <comment><USER2> I am looking at options for building custom electric guitars. This is just for a hobby, so no mass production at the end.

Can anyone with experience in doing this tell me if it is feasible to get CNCed products made as one offs?

It seems likely that this step is part of a longer and highly involved process resulting in mass production, which wouldn't be appropriate for me.

Can anyone offer experience/tips for getting this kind of CNC work done as a one off. I live in Germany.

Thanks in advance.

<comment><USER3> I've worked successfully with Star Prototype[1] which is a company set up in China by an English gentleman, Gordon Styles - excellent turnaround time on some large CNC aluminium parts. We did a parallel job with a UK based company. Same part, same material. Even with shipping to the UK they took half the time and cost half as much.

I don't know what an electric guitar costs or what its made from (MDF?) but this would be a reasonable starting point. It depends if you just want bits or if you also want assembly and finishing.

[1] [http://www.star-prototype.com/](http://www.star-prototype.com/)

<comment><USER2> Thanks Tony, I'll look into that link.

</comment></comment></comment><comment><USER4> "The cost is much higher than a mass production case (likely 50-200+ times more expensive)"

Mass production case has two advantages. Big batch size and insignificant cost of design/product. For the CAD-work I would pick someone I can meet personally and often. After that, if you pick plastic, you have multitude of options how to produce the prototype. However it's "only" hundreds of dollars now. Casting, CNC and 3D printing are all competitive options for crude model.

For refined piece like the example, i'd seriously consider making aluminum permanent mold for a casting run. It's good for production run of few thousand products, while CNC milling aluminum mold is not very expensive. You have to spend bit more time in design phase, because now you have to think how the finished piece exits the mold, etc. But the good thing is that this is identical to the mass production tools you are eventually going to order. The only differences are the hardened tool steel as material and possibly Electric discharge machining replacing CNC.

</comment><comment><USER5> I wonder what the cost/turnaround time for a one-off prototype would be?

For these work piece sizes and materials, you can do it yourself for ~$3,000 USD one-time hardware cost:

* Sherline 3-Axis 5400 CNC-ready* [1] $1,300 USD

* Stepper Motors + Controller[2] $500

* PC + parallel port $500

* Measuring and holding tools $500

\+ Materials

\+ CAD/CAM software

\+ Several hours/days of time for setup and machining

The cost of these materials is low, so I guess you could make a prototype like this for maybe $50 in material costs? As an added benefit you could machine some or all parts in aluminum, if preferred.

[1] [http://www.sherline.com/](http://www.sherline.com/) [2] [http://www.omc- stepperonline.com/](http://www.omc-stepperonline.com/)

* I would recommend retro-fitting limit switches onto this mill, which is relatively cheap to do

</comment><comment><USER6> Somewhat related, I really like the NYCNC videos . [https://www.youtube.com/user/saunixcomp](https://www.youtube.com/user/saunixcomp), showing CNC machining, CAD work - you can learn a lot from those videos!</comment>


Silicon Valley Looks North as Tech Giants Expand in Toronto - <AUTHOR> https://www.wsj.com/articles/silicon-valley-looks-north-as-tech-giants-expand-in-toronto-11566054001?mod=rsswn <comment><USER2> > Though Toronto lost the bid, Amazon still opened a 113,000 square-foot > office in the downtown core in December and said it would hire 600 new > employees.

Wow, they really didn't do any research on this.

Amazon's first Toronto office opened almost 8 years ago. I moved to the office 7 years ago, when it was 25 people Growth has been constant or accelerating since then. We now have over 1000 full time employees- mostly devs, but also some AWS and Ads sales folks now too. Every department seems to have at least a couple teams here. There's two buildings, both running out of space.

And it's not like it's all "couldn't get a US visa, send them to Canada" either. Most of those folks, after a year with Amazon, could probably qualify for an L-1 and transfer to Seattle- but they don't. And a lot of the people being hired are local talent.

Like most of my coworkers, I could definitely get an increase in total comp if I moved to a US office. My wife and I don't want to live in America though- the culture isn't one we like, the politics are terrifying, the gun obsession and violence... Toronto's not perfect, but it's where we want to stay.

<comment><USER3> > the culture isn't one we like, the politics are terrifying, the gun > obsession and violence

Life in the US isn't like that for most people who live here. It's fine you don't want to live here, that's okay. But the idea that the majority or even many Americans are gun toting nutjobs is false. If you live in a major US city your life is almost exactly the same as any major Canadian city. Vancouver might as well be a larger Seattle. Having lived in both countries, your day to day differences are fairly minor.

There are outliers of course, Texas and Florida are very unique places. The South is generally higher crime. But living in Chicago, Seattle or NYC isn't that different from Toronto or Vancouver.

Toronto's murder rate is 3.11 per 100,000 people, which is higher than NYC and Seattle: [https://www.ctvnews.ca/canada/stats-show-sharp-uptick-in- tor...](https://www.ctvnews.ca/canada/stats-show-sharp-uptick-in-toronto- shootings-but-murder-rate-still-below-a-dozen-other-canadian-cities-1.4224142) Many Canadian cities are on par with their US cousins.

The major difference is actually healthcare.

<comment><USER4> Even relatively liberal Washington State, which is culturally similar to BC, is an open carry state. Many Canadians would be uncomfortable to find some random dude walking around the super market with a gun.

<comment><USER3> I've lived in Washington my entire life (except for a stint in Vancouver) and have never seen anyone walk around with open carry in public. Technically it's on the books but once again the average day to day experience isn't people walking around at Costco strapped up. This is what I'm talking about, everyone talks about how insane the US is, but our day to day life isn't that different.

I wonder how many have actually been?

edit: this is not to take away from the serious challenges that the US has when it comes to many issues. I am by no means excusing our income inequality or absurd healthcare system. Just trying to convey a perspective from someone who lives there. There's a lot we need to improve but this isn't the wild west either.

<comment><USER5> For what another anecdote is worth, I lived in Washington state for 3 months and have seen it twice. (Once in a Seattle food court). As a Canadian it was quite a culture shock.

</comment></comment></comment></comment></comment><comment><USER6> > We are squandering our future," said Jim Balsillie, former co-CEO of > BlackBerry Ltd., whose smartphones were once ubiquitous. Canada isn't > benefiting from recent innovations local researchers have made in artificial > intelligence, voice- and image-recognition and self-driving automobiles > because they are employed by foreign firms that own the intellectual > property, said Mr. Balsillie.

For many years, policy in Canada seems to have been to attract foreign companies to set up offices and factories here. The bold dream seems to be of being the foreign high-skill labour capital of the world. Instead of finding ways to promote local entrepreneurship, the government worries whether Canadian law will scare big tech from creating jobs for us.

At least we have Shopify. Apparently PlentyOfFish, Ashley Madison, and PornHub too :facepalm:

<comment><USER7> Canadian tech scene is not bad given the small population and relatively recent investments in this area. That is, compared to EU where there's pretty much no tech other than Spotify, and any promising upstarts are getting preemptively destroyed by EU and local governments.

It takes decades to build Silicon Valley, and Canada's focus on foreign talent, business friendly regulation, and general North American enterprising culture might get it there over time.

<comment><USER8> In the EU, London, Uk a nodejs developer earns around 800 cad per day as a consultant, and there so many jobs that usually you find a new one in 1-2 days max a week. Tho much lower, Germany is also a good tech market. I am not sure what your statement is based on. When i assessed moving to Canada from the uk, not only were there far less companies but tech was a bit out date as well and pay was way way lower. Care to support your statement with evidence?

Edit: you can find eu jobs on cwjobs.co.uk and stepstone.de to get an idea of how large the gap between canada and the eu is.

<comment><USER7> I'm not considering the UK a part of EU anymore.

</comment></comment></comment></comment><comment><USER9> Seems like the logical thing to do with a totally unpredictable president and a spineless republican party, especially if they get elected for another four years.

<comment><USER10> If you look at the points needed to get a Canadian work visa, it's shot up dramatically. Our company had to move some employees from the US to Canada (that's what not giving them the ability to work for 6 months, to still be resolved, will do...) and over that span of time the requirements have shot up. Which indicates there has been a significant increase in the number and quality of people moving there (and since they have some special tech program, it's tech people moving).

<comment><USER11> Whats the most recent cutoff?

</comment></comment></comment><comment><USER12> Natural thing to do given how hard it is to bring people into the US. All the tech giants have been quietly building up their presence outside the US.

<comment><USER13> R&D tax credits in Canada are also attractive.

<comment><USER6> Apparently SR&ED in specific is an amazing subsidy, it can fund almost half of your R&D labour spending IIRC?

<comment><USER14> They've gotten significantly more picky about what qualifies as R&D, however. Just building some software generally doesn't qualify, and they've had years of firms sending in R&D claims for their CRUD app that they've gotten incredibly dubious. It isn't pleasant when the CRA investigator calls (I've received one of those calls, being at a firm that decided to drink some of those delicious credits for our web app, imagining how every aspect was actually some new invention).

If you're legitimately doing bonafide R&D -- like a team doing serious AI work, etc -- it's glorious, but it is a false hope for a lot of copy/paste type shops.

</comment></comment></comment></comment><comment><USER15> I live in Toronto. I wish companies would choose cities other than Vancouver and Toronto. The housing/family costs in those two cites are pretty crazy. Pro-tip to any people looking to expand north: try Halifax on the east coast. NS is low cost and has a bunch of universities. Also, Calgary is nice too.

</comment><comment><USER16> Paywalled. Not sure how to feel about this. Toronto has changed substantially in the last decade and a half, going from a place where property was affordable and socialized resources like community centres and healthcare were accessible to a place that's overcrowded and worse in many ways if you were used to the high quality of life it used to offer. I don't see a silver lining in a potentially higher salary because it will just be captured by landlords / rising cost of living. I also don't think all these competing companies will cause salaries to rise that much since its much easier to bring immigrants over here and improve the pool of job candidates. My company in particular has doubled the people in our office with ex H1-Bs that have been converted to something like TFWs I imagine.

The only positive I see is the potential of working on something I like more from a subject matter point of view.

<comment><USER8> Former immigrant to the uk from the eu, manager, head of and consultant. I feel like your comment should not have been downvoted because it is and understandable worry.

Here is why.

In the uk immigrants from non eu countries, and thus on restrictive work visas (somewhat similar to h1b) usually earned way less than locals or eu citizens because they had no option but to take any offer only to be allowed to stay in the country. Example: ai engineers from south korea would earn 35k gbp a year, while their uk or eu counterparts could earn well above 70k gbp.

Restrictive visas and abusive employers are a wage depressing mix, unfair to both locals and new comers. My guess would be that if your employer underpays your former h1b colleagues then that is not an employer you want to work for because indeed your pay will stay low.

Eu citizens however were free to work without restriction and as such compete on equal terms as locals. Much like in Canada where immigrants under express entry are able to change jobs as they wish, eu citizens could change jobs as they wish. The result was that instead of outsourcing to india or other countries, uk companies suddenly started growing at home as they had plenty of resources. Thus job opportunities and pay went up both for locals and eu immigrants. As a hiring manager, demand was so high that either eu immigrants or locals had to be payed more and more each year.

Similarly, in Canada, the more resources companies will find, the less they will outsource and the more pay will go up over time.

As brexit is biting in and less devs are on the market, some of those companies are now either outsourcing or opening new branches in other eu countries to hire the same people as they would have in the uk, simply because there are not enough devs left. This means less opportunities for locals.

Another thing is that more devs, means more ideas floating around, and that means more skills you can get.

It can be frightening and if there are many abusive employers and restrictive visas wages can go down, but something tells me they will go up as indeed canada is a country with a north american business mindset. And if you mix tech and capital the result will be job and pay growth which i have seen in london/europe. You should embrace this if you want your pay to double in the next 5 years. Mine did in london as when i moved there the "revolution" was only starting and it was an awesome ride.

<comment><USER16> I am not an optimist. It doesn't matter to me if my salary doubles in the next five years unless it improves my quality of life living here. After seeing the major cities here change so much over the last 15 years, I am convinced that an expanded presence of large tech companies will make things worse in every metric I care about: housing; healthcare; affordable education; transportation; etc. Great, I can afford the latest iPhone! Who cares?

<comment><USER8> Come to think, what you describe are exactly the issues i had around london. Yay i could get a new iphone, but buying a property would mean an enormous loan and the size of that property would have been tiny. Overcrowding was another issue, trains were filled to the point where people would stick their noses in other peoples armpits, roads jammed, loads of small shops with low quality products, and ofc loads of crime. I ended up leaving, and one option was toronto, but gave up at the thought it might become another london. Left back for my home country, but my nature is to explore and experience new places, it's just that the thought of yet another london is unbearable. And most tech jobs are centred around such cities. I just dont want to be a part of the tech worker scene that "changes the world and are the best" but cant afford even basic things in life such as owning a decent property with plenty of room for kids to grow up happily. So i am working remote and working on a side project. Maybe once it takes off i will retire in a small city in a developed country and buy a big ass mansion and enjoy life as it should be.

</comment></comment></comment></comment><comment><USER17> Toronto isn't to the north.

<comment><USER9> Of course it is, relative to SF, LA and NY.

</comment></comment><comment><USER18> Salaries in Canada for tech pale in comparison to the United States.

</comment><comment><USER19> And we are also the NBA champions. So there is that as well.

</comment><comment><USER8> Curious if tech pay around canada is getting higher as a result of this, or if consulting is becoming more of a "thing".

<comment><USER20> The article indicates $74,000 is the average in Toronto, which is roughly _half_ of what it is in San Francisco. That's a shocking difference.

<comment><USER21> I advise anyone in Canadian tech to move to the states if they can. The rise in pay is so enormous it overcomes all objections. Move from Canada to Austin and you get higher pay, affordable housing because of zoning is not controlled by a rent-seeking gerontocracy, and far less taxes, too. Also, Canada has many indirect taxes in the form of crony capitalism. Grocery chains and phone providers have extremely cushy relationships with regulators there, increasing their ability to extract rents. Health insurance is not as big a deal as everyone says, at least for people making tech salaries.

<comment><USER22> Except you are now living in the States and all that comes with it. Gun violence + gun mentality, racism, ridiculous politics, and more. It's not enough of a pay raise to make me consider the move. I'd consider doing remote work with a US based company, taking the occasional trip down, but never moving there. If you make 6 figure in Canada, those extra "taxes" and "costs" aren't really an issue any more as they are only a few hundred bucks.

Maybe I'm just fed up with the US's bullshit to ever want to deal with them, but I know lots of people who feel the same. If you are a fresh grad, it's almost impossible to not go however, which sucks for us here, but that's just how it is. Not all decisions are based on big piles of money. I also live in Waterloo and have an awesome house, but if you are stuck in GTA or Vancouver, then good luck I guess no matter what you do if you want real housing. Prices here have also gone up a lot, but still affordable with a dev job.

<comment><USER14> I'm a Canadian in the GTA who turned down numerous offers to move to the US for jobs.

Because this is my home. It's where my family and friends are. I have a sometimes misled sense of pride, etc. The same sorts of reasons most Americans wouldn't want to move to Canada for a job. I mean, I'd be more likely to move to Japan or France or something for a job because it's different enough to make it novel.

But let's be real -- there are great areas all over the US. They have far more weather and geographical diversity. There are great cities like Portland, Austin, etc. It isn't all crime[1] or violence. And we're probably exposed to US politics more here than the average American (given Canada's inferiority complex and our profound focus on the US). And I've never had a problem with Canadian healthcare, but if you're taking a job in the US you'll probably be on a great plan that gets you great service there as well.

[1] - Especially given that property crime tends to be much worse in most areas of Canada, and gun crime in the major cities is as bad as many American cities.

<comment><USER23> > gun crime in the major cities is as bad as many American cities

Is it, though? I can't remember the last time I heard of a gun crime in Vancouver, but that's anecdotal, of course.</comment></comment></comment></comment></comment></comment>


Google Wave's Web of Protocols (diagram and commentary) - <AUTHOR> http://cubiclemuses.com/cm/articles/2009/08/09/waves-web-of-protocols/

<comment><USER2> As this blog post points out, unless the browser-server component gets opened up, and it doesn't look to me like it's going to, Wave is a big vendor lock-in project, with the Google interface the only one used by humans, and all the federations stuff designed only for "bots". "We're open" becomes just misdirection and fake hype.

But I think that's the least of Wave's problems at the moment. If they get the server bugs worked out, and figure out access control, then we can start talking about interoperability.

<comment><USER3> I've been watching this situation closely, and I too am concerned about how a client/server protocol specification isn't being prioritized higher.

That said, does the Google Talk client in the sidebar of my GMail client speak XMPP? Of course not...it's a web app, and it needs to talk to a web server as an intermediary to a jabber server somewhere. I can log in using a desktop GUI jabber client to an actual XMPP listener if I want to, and that is what is important. I don't care one whit about the protocol that GMail Chat uses to talk to its back end. That's a private matter between Google and Google.

It's not the browser-server protocol that needs to be specified, but rather some other client-server protocol, without any assumption that the client is a browser.

It seems to me that the relationship between "the web" and Wave is entirely incidental, stemming from the fact that their reference client runs in a browser. One might well write a client in Cocoa or GTK, in which case an open specification for how Google's Wave client, written in GWT, communicates with its back end does us no good at all.

However, I'm willing to give it time. It feels like they've got bigger fish to fry at the moment, based on this thread:

[http://groups.google.com/group/wave- protocol/browse_thread/t...](http://groups.google.com/group/wave- protocol/browse_thread/thread/a2de2480e4c3beeb#)

<comment><USER2> > _That said, does the Google Talk client in the sidebar of my GMail client > speak XMPP? Of course not...it's a web app,[...]_

It doesn't, but it should. This is something we've been trying to address with the Orbited and JS.IO projects (links below). Building in-browser clients on a JavaScript XMPP client saves developer effort and aids interop, because each web client isn't inventing its own ad-hoc buggy mutated version of the protocol, based essentially on the same semantics, but with arbitrary changes to syntax.

<http://orbited.org/>

<http://js.io/>

<comment><USER3> That's a nice idea. There are other ways to skin that cat: if you have a server-side library that speaks perfect jabber, your web client can invoke it from afar. The library's API should work the same either way. Heck, if it's a Java library use GWT RPC.

</comment></comment></comment></comment><comment><USER4> I've written about this before. Until Google releases both code and protocol for a client-server integration, Wave is too complicated for the web. I spent a whole week barely trying to emulate the same thing in Javascript and I couldn't do it.

<comment><USER5> I'm concerned about this too. The web client at the moment is brutally unresponsive and hemorrhages memory in Firefox. I know it's far from release, but I'm skeptical that these problems can ever be solved in a present day real world web app. If we had worker threads and some browser patches, maybe.

</comment></comment><comment><USER6> Every time I hear 'Wave' I think of 'Ripscript' - [http://www.bbsdocumentary.com/library/PROGRAMS/GRAPHICS/RIPS...](http://www.bbsdocumentary.com/library/PROGRAMS/GRAPHICS/RIPSCRIPT/)

</comment><comment><USER7> I'm surprised by the lack of scepticism of Google Wave. It seems quite dodgy for the next "killer app".

<comment><AUTHOR> Once I actually used it, even in its current buggy pre-alpha state, I realized that Wave is actually pretty cool and there are all sorts of ways in which I would prefer to use a tool like wave over a wiki, email or IM. I believe Wave has serious potential, but it's also got a long way to go.

</comment></comment><comment><USER8> I do like that everything runs over HTTP at its base...

<comment><USER5> The federation protocol (server to server) is over XMPP, not HTTP.</comment></comment>