HNHacker News
TopNewBestAskShowJobs

smalley

339 karma · joined November 26, 2012

submissionscomments
smalley··on Why we should learn German
I believe the implication was most likely that German happens to sound very stern and commanding to many english speakers. Presumably the speaker would want to be speaking German because they believe it would intimidate the horse into performing very efficiently.
smalley··on Cold war bomb warmed by chickens
There's a great book all about the old decisions on these topics by Eric Schlosser called Command and Control (https://www.amazon.com/dp/B00C5R7F8G/) which is also available as a PBS documentary http://www.pbs.org/wgbh/americanexperience/films/command-and...

There's some pretty interesting rational behind the creation of those kinds of munition (including the "nuclear rifle") but their argument seems to boil down to 2 things: 1, at the time where the USSR and the Western European states were still living with a divided germany US assessments found that the number of troops we could collectively muster were vastly less than the current standing european force of the USSR. People were very worried there wouldn't be much we could do if a land invasion overran the troops other than immediately retaliate with a full nuclear strike against soviet cities. These were though of as a weird middle ground

2. The Army was getting worried it would be cut out of money and relevance as more and more focus was moved to the Air Force because most weapons at the time were delivered by planes under the control of the strategic air command. They became ever more worried later as submarine launched missiles gave more nuclear firepower to the navy. Afraid they'd be totally left out the Army started requesting hundreds of thousands of "tactical" weapons like nuclear landmines, nuclear man launched missiles, nuclear artillery shells etc.

smalley··on Memristor – The missing circuit element (1971) [pdf]
They 100% exist. We had a wafer worth of cutup die of the TiO_2-x type devices all the way back in 2007. HP officially published results of a physical device as well (http://www.hpl.hp.com/news/2008/apr-jun/memristor.html)
smalley··on Memristor – The missing circuit element (1971) [pdf]
In the enterprise storage market I think they're probably quite close to being a volume product. The versions I was working with were a few years back and admittedly a different chemistry than is used these days. The issue I think they'll have in the short run is that these will be quite expensive relative to NAND. I don't think you're going to have a memristor based disk in your home PC for quite a while. I do know that there are already some space systems that utilize memristors and reram already. The really novel applications (as in not just big hunks of fast memory) are probably much further out if they even go anywhere.
smalley··on Memristor – The missing circuit element (1971) [pdf]
Oh man, if you like that paper do I have the list for you. We used this list while doing some literature review when we were doing research on HPs memristors http://webee.technion.ac.il/people/skva/new_full_reference_l.... That covers a pretty wide range of topics related to memristors
smalley··on 6.S094: Deep Learning for Self-Driving Cars
Introduction to Statistical Learning? It's free and has an available MOOC http://www-bcf.usc.edu/~gareth/ISL/
smalley··on Gr-satellites – A collection of GNUradio decoders for satellite telemetry
One example of this class of network is the NASA TDRS network (http://tdrs.gsfc.nasa.gov/ or https://en.wikipedia.org/wiki/Tracking_and_data_relay_satell...) that they use for everything from relaying data from the science stations in Antarctica to supporting old shuttle launches. They launch a updated satellite every now and then. It's a pretty cool network if you ask me :)
smalley··on How Modern Video Players Work
Not that its particularly casually browsable but there are some details in the programmer reference manuals for the Intel integrated graphics encode/decode hardware. If you head to volume 8 the MFx introduction section has some sample flows before it starts getting into command packet details: https://01.org/sites/default/files/documentation/intel-gfx-p...
smalley··on Defense Claims Courthouse Was Illegally Bugged
Probably due to the inequality of enforcement. If everybody agrees something should be a crime but offender group A gets a 5 year sentence and group B gets 10 years or one gets community service and the other gets jail there's some kind of problem.

Study controlling for type of crime and circumstances finds ~10% more severe punishment for crimes black to white: http://papers.ssrn.com/sol3/papers.cfm?abstract_id=1985377

Evidence that despite approximately equal occurrences of consumption of narcotics black citizens are arrested much more frequently than white citizens: https://www.washingtonpost.com/news/wonk/wp/2013/06/04/the-b...

smalley··on Defense Claims Courthouse Was Illegally Bugged
I don't think I agree with the extreme nature of the premise a number of comments up the thread, that said my favorite example of this:

http://www.vaildaily.com/article/20101104/NEWS/101109939 A hedge fund manager had his criminal charges substantially reduced over the victim's objections because having a felony would mean the hedge fund manager would have to admit what he did to his clients. The defendant in question struck a bicyclist in a hit and run, drove far away and called for roadside assistance for his car never mentioning anything about the bicyclist he left with lifelong injuries. Of course the excuse is that after he was caught he agree to pay some restitution to the victim...

Anyway, just a crazy story that I figured I'd share so not really a study of real national trends or anything.

smalley··on The likely end of DownThemAll
I think that's what the Pale Moon (https://www.palemoon.org/) folks were doing some time ago. I'm pretty sure they support most of the original firefox extensions without the signing etc.
smalley··on Designing a CPU in VHDL, Part 6: Program Counter, Instruction Fetch, Branching
The closest thing I can think of as far as communities would be the http://www.edaboard.com/ folks (although that's a lot of students) or opencores.org (which is more just general projects).

There are a lot more "news" esk hardware design places as well but I'm assuming you're looking closer to stack overflow/github of HDL rather than the slashdot/reddit of HDL?

If you want HDL best practices any of the resources you can get your hands on from http://www.sutherland-hdl.com/papers.html <-- those folks are excellent

and I would highly recommend this book: http://www.amazon.com/SystemVerilog-Verification-Learning-Te...

smalley··on Homemade Memristor (2011)
The family of these materials are often referred to as chalcogenides (although strictly speaking they don't always include only metals from that periodic group). They've been investigated quite a bit for use in phase change memory if you have access to academic journals (I could probably root around later and see what's not behind a paywall).

The strange looking curve is really kind of two parts forward biasing/reverse biasing. Assuming you're starting from a virgin device you move along the curve where you're sweeping the voltage upwards but not really getting much increase in current (since there's no real channel yet). In these materials the mechanism is the establishment of little "fingers" of metal migrating and completing the circuit. As the "fingers" move forward you suddenly start seeing more and more current without increasing voltage (your effective resistance is dropping) and then jumps up as the connection is made. Eventually you sweep the voltage backwards. Something similar happens in the part of the AC curve in reverse.

There is a really good diagram in this paper: "Mechanism for resistive switching in chalcogenide-based electrochemical metallization memory cells" from Zhuge et al http://scitation.aip.org/content/aip/journal/adva/5/5/10.106...

smalley··on Lucid, a New Hardware Description Language
This language looks like it attempted to solve a number of issues from the old verilog days, but wound up reinventing a very very small subset of system verilog instead of inventing something new.

  arrays in lucid = system verilog arrays
  "fsm" = basically system verilog enums and a little  helper logic
  "connectors" = system verilog interfaces
etc etc.

Its definitely better to go where the tool support is. With system verilog you get a lot of nice verification: constrained randomization, built in process synchronization, support for differentiated test bench vs dut, assertions, complex coverage metrics.

smalley··on Early 80386 CPUs and their errata
I'm not entirely sure if it was quite so heavily software synthesized at that point. I think a lot of the logic and datapath was still done by hand.

The grad student I think you're talking about is (now) Dr. Carl Sechen who developed an Auto Place and Route tool he named Timberwolf. Those tools don't synthesize logic so much as they choose optimal locations and orientations for the standard cells on the wafer and then attempt to route the metal interconnects (all with respect to timing). I think it wound up being rather buggy (to the point they had to keep calling him back from school work to patch some things up) and a fair number of things had to be corrected by hand.

I did hear that some of the units on the 386 were written in some Stanford devised programming language from the pre Verilog/VHDL toolstack days and that a few engineers in design automate hacked up a tool flow to turn that programming language into something synthesizable.

That said I wasn't there and so I can't claim to know for sure. I would wager there are some good interviews and documents either with the Intel Museum folks or the Computer History Museum in Mountain View (which seems to always have both contacts from the day and documents for all the old fun computing hardware).

smalley··on How does a computer chip work?
There is a substantial amount of detail to be added, but if you just want to skim through some industry documentation the International Semiconductor Roadmap for Semiconductors describes a lot of the challenges involved in producing leading edge process products. This is from the working group that a lot of our companies participate in to coordinate what everybody will need from tool vendors and by when (e.g. when everybody wants to start pushing for 450mm wafers all the tools need to already be able to accommodate a larger wafer).

http://www.itrs.net/Links/2013ITRS/Summary2013.htm

The papers themselves as well as the models are all very interesting if a bit occasionally dry.

smalley··on Notes on Intel Microcode Updates
Yup, a lot of folks at the office enjoy skimming hacker news, ars technica etc. The number of people capable of actually signing microcode even in a company of 100,000+ is pretty darn small though.

You'd actually be surprised about how much effort goes into hardening things against attacks like those these days (timing attacks, differential power analysis etc). There's a lot of interesting work around on the best ways of mitigating those risks.

smalley··on Ativ Book 9 Plus, 3200x1800, Haswell, "12 hours" battery
I believe the marketing guidelines only require the touch screen if your design uses 4th generation core processors. You can still market new designs for Ultrabooks using 3rd generation parts if you really want
smalley··on Intel announces next-gen Thunderbolt with 20 Gbps throughput, 4K support
The more complicated reasons aside for the moment, thunderbolt is more or less like an external PCI express connector (with some added goodness). As a result you can access a lot of things via thunderbolt you probably wouldn't want outwardly accessible (imagine a network where anybody could do a DMA on demand). Then there are a number of other things, for example the protocol and phy not being designed for 100 meter cable runs like Ethernet, no low level networking support, the fact we have a reasonable and ubiquitous interconnect for networks already.

There are alternatives for super high speed interconnects within a data center though (think infiniband and cousins) or high bandwidth options for longer distances (like fiber) etc.

smalley··on The Minecraft Creator Markus Persson Faces Life After Fame
I suppose I can't really speak for everybody but as a 20-something the story a lot of my friends and I had in common was programming our TI calculators. The language was simple (some might say...basic ba dum chh), it was easy to share programs with friends as text or via link and you had a built in packed audience of folks in classes that thought the things you figured out how to do were really cool. We started with simple school problem based programs then went on to more complicated things and then some went on to learn some c or assembly etc.

I think perhaps we might not be starting programming with computers directly all the time, but perhaps there will always be some object that younger folks will learn to program. Heck maybe the next kids will decide to program phones or connected home appliances or something.

smalley··on How I hired a great web developer on oDesk for $12/hr
I think going with that nomenclature most of those countries (Ukraine, Hungry, etc) would be second world countries. If I remember correctly folks in the US coined those terms during the cold war. The first world countries were the US and allies, second the USSR and allies and third world the unaffiliated countries. Third world has come to be used as a term for impoverished countries as many of the unallied countries at that time were rather poor, but that wasn't the meaning. Somebody should definitely spot check me on this postulate before they accept it as fact.
smalley··on Resistor hack turns a Nvidia GTX690 into a Quadro K5000 or Tesla K10
If you own the hardware and you did not have to sign a contract to purchase it you're probably more than within your rights to modify the hardware to your liking (some exceptions to the rule do exist for things like circumventing copyright laws, modifying equipment to function in a manner harmful to others like operating a high energy transmitter in an emergency band etc).

What you're not getting when you hack your hardware to perform outside its bounds is the guarantee from the company. For example if you're sold a processor for $X dollars clocked at 2 GHz you're receiving an implicit guarantee that for Y years the product will be capable of performing every advertised combination of operations correctly. If you have a problem with this processor it is then reasonable for you to seek support for your problem/design etc. If you notice you can run this processor at 2.5GHz which would normally cost more money and for your application nothing appears to glitch you're welcome to do so. If you later encounter issues with occasional incorrect calculations you pretty much gave up the right to complain about that issue.

A similar example might be bolts for spacecraft. Many of the bolts for these spacecraft cost 100x more than the incredibly similar bolts one could obtain at a hardware store and often times may come from a very similar production line. The reason the spacecraft bolts cost more is because they've specified a very rigid set of minimum tolerances they require and stringent tracking requirements (if a bolt fails on one part of a spacecraft you may be able to get a list of every other bolt made in that lot, get the reference samples to test and find every individual location they were placed on that and other craft). It's not necessarily that the bolts cost substantially more to make but they do cost somewhat more to verify or select each piece from the line to meet the requirements. Even though hardware store customers might be able to buy bolts with spacecraft quality performance they just didn't pay to ALWAYS get bolts with spacecraft quality performance.

That said being a hardware person I'm not sure I feel the same way about software as many of the people here. It sort of feels like the primary argument is "hardware modification feels hard to me so its different". To me it seems like where it would be acceptable to modify a piece of hardware I own I should be able to open a debugger or disassembler and patch my software to enable any feature that's inherently part of the product (or new features if I wanted to add them). Now if that breaks updates, causes me to lose work or leads to problems I'd expect to be on my own like I would with hardware.

I'm sure my opinion isn't particularly popular, but changing a resistor and changing an if( premium ) to if( true ) just really don't seem all that different from where I am.

smalley··on How to "open" a microchip and what's inside?
It is pretty cool technique. There are a few things you can do via FIBs but what I'm thinking of here involves cutting a very fine hole through carefully targeted areas of the chip to expose the element in question (or its wires) so we can observe them. We actually have had to do this for debugging a couple of times on 32nm chips (cutting down in and pico probing ). we mostly only got away with it because we had all the floor plans, masks, RTL, documentation and very fancy equipment though, it would have been very difficult otherwise.
smalley··on How to "open" a microchip and what's inside?
Absolutely possible, people reverse engineer parts of our chips and I'm pretty sure a well supplied failure analysis lab could do some of the work as well.

It's certainly doable to reverse engineer out a cryptographic key from a chip, but most of the people who could afford to do this wouldn't really need to do so. Secure elements are typically substantially more protected than standard logic. The structures can be designed in a manner to be very difficult to access without damaging them rendering them unreadable.

Such a cryptographic key would likely be scattered in pieces around the chip, delivered through winding busses below enough critical logic connections and power rails so that the chip wouldn't be as vulnerable to a focused ion beam attack or infrared analysis. This makes it difficult to observe without destroying enough of the chip that live examination would not be possible. There are also tricks that would be used to mitigate the risk of differential power attacks etc.

The bigger threats to secure elements are sloppy design with DFT/DFM (Design For Test) features. Most complex chips have at a minimum a mechanism of connecting a large number of the designs flops to what's like a huge shift register. If you knew enough of the design you could try to locate the output of a block which has access to the secure value, scan in a vector that makes it easy to recover the value (e.g. an XOR element you can force to XOR with 0's) and scan it out.

There are also other DFT feature like on-die logic analyzers, micro-breakpoint engines, code signing overrides etc. Virtually all of these features are physically disabled prior to volume manufacturing. If a company was sloppy this could expose things that shouldn't be exposed.

There are other attacks as well though. If you could compromise the signing keys for the microcode delivered to a processor like a modern x86 processor you could change the behavior of instructions. With custom microcode you could catch and override basically any instruction (for example you could change where a LOAD instruction stores data or make ADD do jmp etc). You could definitely use something like that in a malicious manner.

smalley··on How to "open" a microchip and what's inside?
There are actually substantially more steps involved in reverse engineering more modern SOCs. After depackaging the chips you have to strip the metal layers, special protective layers etc to get to the base layers. Modern processes can have upwards of 8 metal layers along with a top layer composed of filled metal (there are issues with processing if a relatively uniform amount of metal isn't on each layer).

After you get the images of the metal layers (you likely can't do this optically for things down near Metal1) you can image the poly and diffusions. You can probably guess which transistors are which based on which power rails they would have been connected to.

Things might be easier if you know what standard cell library the designers used when laying out the chip, as then you'd more easily be able to identify the base logical functions faster.

If you're being thorough you'd also have to make sure you obtain measurements of the widths of each of the transistors (so you can later figure out the relative drive strength which matters for things like identifying keeper circuits or more precision analog elements etc).

Determining some transistor behavior make require even more complicated tests to identify doping levels and if you were trying to duplicate the process you'd have to identify a large number of other materials (for example if they use copper you'd want to find what chemical they used to control the diffusion etc).

It's pretty interesting stuff though.

smalley··on FPGA x86 Processor
So in my day to day job I'm actually a component design engineer working mostly on design validation at a company that's "involved" in x86 development. I'm sort of curious, what debugging features are you hoping for or what's missing that's negatively impacting your workflow?

Honestly, when I'm debugging hardware where I have the high level specifications, the microarchitecture spec and the system verilog files that implemented the design it's still kind of a pain to trace things.

The other downside of having all the signals is that little things can be unintentionally misleading. As an example I was working with coworker trying to trace a memory transaction through some complicated logic blocks and there was a point we originally missed where the bottom few bits of an address aren't necessary for the hardware. Later after this point the bottom bits were reused to communicate transaction properties along with the significant address bits. There was a bit of confusion about why we were reading a "bad address" before we realized what happened.

smalley··on Mathematica 9 Is Released Today
As someone who I assume has a deep understanding of Mathematica, any chance you can recommend the best tutorial/resource to get going with effective Mathematica use?

I've been trying to plug Mathematica into my workflow in place of a number of tools I'm more familiar with and I keep running into issues where I either try to do things in a very un-Mathematica way or the default behaviors I assume of the program are wildly incorrect (e.g. Thread operates in the reverse order I would expect, importing an extracting a column from a csv file seems clunky, wrote up a worksheet with a number of E variables with subscripts only to find out its treated like Exp[], etc.)

There seems to be a wonderfully large amount of available training and tutorials all over the web but I don't know where to start to most effectively acclimate to Mathematica.

smalley··on Ask HN: Favorite algorithms book
I would recommend "The Algorithm Design Manual" by Skiena.

What I believe this book provides that CLRS does not is a series of succinct descriptions of common algorithms AND brief explanations of where you would most likely find those algorithms to be near optimal solutions.

Skiena's book does not provide a detailed theoretical analysis of each algorithm like CLRS does, nor does it include particularly exotic data structures and algorithms you'd find in journal papers. What Skiena does provide along with each algorithm is a series of references which do provide a lot of this additional background information that you could independently find if you need a more detailed look at a topic.

As a bonus the book also includes a series of "War Stories" describing how some of the algorithms solved specific real world problems. They're an amusing break from the rest of the book if you're trying to read it cover to cover rather than just as a reference.

← PreviousPage 2 of 2