HNHacker News
TopNewBestAskShowJobs

kyzyl

457 karma · joined April 2, 2013

submissionscomments
kyzyl··on Fermat's Last Theorem Earns Andrew Wiles the Abel Prize
"It was so simple! Just add 3-gamma to the M-structure!" slaps forehead
kyzyl··on Polish codebreakers 'cracked Enigma before Alan Turing'
I'll second the recommendation. That's a really fantastic book.
kyzyl··on SoundCloud could be forced to close after $44m losses
Indeed. I, for one, am very grateful that most of my high school papers have since faded into the abyss ;-)

... or so I hope.

kyzyl··on Kill Your Dependencies
Deference to authority is a funny thing eh? I find that in life, and especially in running my business, I pretty frequently lock horns with people who disagree with me on account of a seemingly differing opinion of some other Experienced Person(R). It's like, such and such person has lots of experience in the industry, therefore they know the answer to this specific question better than you do, regardless of anything. When I hear these appeals to authority I always think that if I were actually sitting across the table from this Very Smart Person--as opposed to the person citing them--and they were willing to listen, we would probably end up in agreement. Like you say, the person might be WAY smarter than me in general, but... LOOK AT THE FUCKING DATA.

There's a reason smart people are good at solving problems, and it's not because they always defer to what other people 'know' to be true!

kyzyl··on Graphene optical lens 200 nm thick breaks the diffraction limit
The power coming from the sun is approximately constant. The power hitting any given spot on the planet is far from constant due to weather, day/night cycles and seasonal shifts. For a given solar installation, there might be a time where the ambient intensity (power per unit area) of the light has the cells biased just-so, converting energy at a near ideal efficiency. Of course then the conditions change and this isn't the case any more. When you run into that scenario, i.e. the sun has moved a bit, it becomes very useful to have some kind of mirror or lens to increase the intensity by collecting more of the light and concentrating it to a smaller area, thus bringing you closer to your ideal operating point.

You're correct that at some point you get undesirable transients, or you just melt your cell. I do that by accident more often than I'd like, by shining infrared lasers at a photo diodes while forgetting that I've left a microscope objective in front. Expensive mistakes.

Now re: the article, if you ask me the really interesting thing here isn't being able to focus light to really small areas per se, but that they've broken the diffraction limit. This means you can form an image of an object that is smaller than a half-wavelength of light. For e.g. red light, that means you can take a picture, an optical picture, of something like, say, a mosfet on a chip. Or a virus. That's quite something.

I'll note however that I could foresee (read: speculate) a scenario where having such a tiny focus, like the solar cell scenario, could invoke a quantum mechanical effect in some special material whereby the light coupling becomes much greater, thus increasing efficiency or something. But that's just science fiction as far as I know.

PS: Sorry if this is patronizing. I know nothing about my audience ;-)

kyzyl··on Python Serialization Performance
It might be that they consider it important to be able to interrogate the in-memory or on-disk representations without the help of a decoding step. Protobufs are great for getting objects into a nice compact format to throw on the wire, but god help you if you end up with multiple actors filling up a queue with inconsistently encoded objects.
kyzyl··on Python Serialization Performance
Is Shedskin still actively maintained? I haven't looked in a long time but last I saw it hadn't gotten any updates in a couple years (maybe I have corrupted memory though ;)

Anyhow, the relatively new Nuitka project seems to be aiming to tackle the python-to-c++ compiler problem, and seems to have a lot of promise. Really good compatibility, apparently decent speedups, and cross platform support. Works into Python3 too. I have a lot of hope!

kyzyl··on A Book about Qt5
Hey -- I've got a question about that use case. So I'm familiar with Nuitka (and all the rest... ugh) but in my brief tests using it I couldn't really get it to work with any of my python code that did anything real.

For example, if I had anything that used numpy (which is most of my code) or Qt, or a lib that uses opengl, it would either fail outright saying "can't find blarg" or it would spin forever. Now I understand that the process of transpiling something huge like numpy and then compiling it will be fairly demanding, but I've literally left this stuff running in a tmux session for a day or two and it showed now sign of ever finishing.

I'm not asking you to debug my stuff or anything, but have you had a different experience? Is there a trick to getting Nuitka to build code that leverages the python ecosystem? I would really like to figure this out, because the alternatives are really quite terrible, IMO. If Nuitka can be made to work with build times less that a week, I think he's really on to something.

kyzyl··on Rocket Fiber Launches 100GB/s Internet Service in Downtown Detroit
He signed up for their 'Blast' plan ;-)
kyzyl··on Improving your code readability with namedtuples
Well, aside from being a different data structure with different characteristics that will be more or less suitable for a given computation, they share the same primary trait with vanilla tuples: they are immutable.

They also let you improve readability (as the article states), while being full compatible with the ordinary tuple api. In other words, I can make a named tuple where I think it will improve my own code, and then pass it into someone else's code that is expecting a tuple and it will work. If you had used a dict or somesuch in this scenario, you would have to do something to marshall the state back into a tuple before you could pass the data into some library that expects tuples, e.g. numpy or something.

kyzyl··on New technique can weld “un-weldable” metals
Stronger than wood, in fact. A properly assembled glue joint will be the last thing to break on a wooden part. That reminds me that I should really get back to working on that desk I was building... months ago.
kyzyl··on YouTube Red is live
Well it seems reasonable that they might have chosen to launch in the US only. I think even Google might be leery of launching services to more than 300e6 people at the same time. ;-)

Anyhow, my snarky comment was more related to the fact that this is yet another streaming media service (Netflix, Hulu, HBO, Amazon, Pandora, half of youtube, ...) that isn't available in Canada. Maybe Google will surprise me and offer it to us eventually /s

kyzyl··on YouTube Red is live
Well, if we're going to get our music via 'alternative' methods, I'd just cut to the chase and use What.Cd (or another tracker).
kyzyl··on YouTube Red is live
Flac? Let's not get our hopes up too high before it's even available in our country ;-)
kyzyl··on YouTube Red is live
"YouTube Red is not currently available in Canada."

And they still wonder why people pirate things...

kyzyl··on Laser Razor suspended by Kickstarter
While I'm not making any statement about the feasibility of the Skarp, I think you might be exaggerating the size of a moderately powerful modern lasers. At my company's R&D lab I have some 1W CO2 lasers that, similar to what what you describe, are about the size of loaf of bread. They run on three phase power, have inch-thick cables and required hilariously large cooling shrouds. Two facts about those types of lasers: They are cavity lasers designed to have very good beam quality, and they are OLD.

I have a cabinet full of other types of newer, moderately powerful laser modules which vary from pin diodes to modules the size of a AA battery, to things the size of cigars. Some of them are pretty darned powerful. Any laser modules that are water cooled would DEFINITELY not be something you would want to hold up to your face, but I also don't think that's the kind of power required for cutting hair. I'm not saying that any laser running on a AAA battery at a useful power could last a useful amount of time, if you could figure out some secret sauce method for very quickly coupling a high intensity pulse (hairs have a very small area, after all) onto some hairs at a wavelength that they like to soak up then it seems.... possible. In theory the laser wavelength and power could even be tuned dynamically to match the hairs, that is if they had somehow figured out a way to fit a Mach-Zender modulator, an electro-optical modulator and a frequency comb into a razor handle--ha!

Anyhow, I might be wrong in all this, but my point is mostly that it wouldn't take a water cooled laser to burn some hair. Come visit me in Vancouver and we can test it out (on your beard).

kyzyl··on DARPA helicopter can feel for the ground below to ensure a safe landing
I'm immediately reminded of the landing gear on the ornithopters from Dune. Hopefully hunter-seekers are a little further off...
kyzyl··on Vanishing Point: How to disappear in America without a trace (2012)
My company is developing sensors that implement these sorts of coherent interferometric ranging techniques, and I can say that it's pretty unlikely that it works from space or from a drone. There are a lot of non-obvious factors that make performing those kind of measurements from orbit a bit of a nightmare.

As far as I understand space comms--which isn't that far--the 'pilot beam' technique used by satellite links is more or less a way to get a phase lock on the signal beam, which will accurately determine the exact target location, at which point the space transmitter can use a beam-forming antenna to to jack up the power to that locale specifically, giving better SNR/bandwidth/whatever. The key bit here is that (a) the method requires that the target--i.e. your bedroom window--transmits the pilot beam up, and (b) only 'solves' the atmospheric interference issue by pointing a powerful beam accurately.

Don't get me wrong, it could probably be done with enough money, and if anybody could do it would would be the US intelligence machine. Same goes for a drone, to a lesser extent. With anything flying in the atmosphere you'll have to do deal with local vibrations on the same order as the measurement deltas you care about, but there are ways to do that too. It's interesting, thinking about it now, that a lot of what we're developing could actually be directly applied to such an endeavor, even though we're not related to such industries at all. Fun.

kyzyl··on The bachelor’s to Ph.D. STEM pipeline no longer leaks more women than men
I mostly agree, but I interpret kelukelugames's comment as saying that it's one thing to do your homework and be aware of what you're getting yourself into, but it's quite another thing to actually be living on ramen in your mid- to late-twenties. That is to say, people--especially your typical 22 y.o. undergrad--probably often overestimate their willingness to fully live the life of a PhD/postdoc, regardless of how much they "aren't in it for the money".
kyzyl··on The bachelor’s to Ph.D. STEM pipeline no longer leaks more women than men
Maybe both men and women irrationally pursued more PhDs than made sense, but the men were historically more likely granted the opportunity to find out for themselves why it was a bad idea ;-)

(I get your point though. "Just sayin'", as the phrase goes)

kyzyl··on Why Learn Basic Electronics? [video]
If what you're interested in doing is analog/digital synth stuff, the AoE has the information you need. It leaves some gaps and presents it in a way that I am not fond of, but that's just me and I'm far from your typical learner. That said, be prepared for a long, dark rabbit hole ;-)

Depending on the level of "off the shelf" you're looking to deal with, a MIDI controller can be as simple as a USB controlled MIDI chip hooked up to some switches, or as complicated as a manually implemented digital synthesizer that talks to a USB bridge (don't try to implement a USB controller as your first, or tenth project).

Regarding kit/components, the key is trying to strike a balance between knowing what you want before you buy anything, and not waiting too long to start experimenting with real components. You can save yourself a lot of time by simulating the basic circuits in your project using a software like LTSpice[0] or TINATI[1]. They're both free and easy to use. However, simulations are never good enough, and often you don't have a model to simulate some important piece of your circuit, so the picture isn't complete. A good approach is to sketch out the circuits you want, do a quick sim or two to see if the basics like your power supply or oscillator or digital logic are going to basically do what you think, then order all the components you need from digikey. Shipping under $200 costs $8 from digikey, so it pays not to make too many orders. The bonus is that they are extremely timely with their orders (in US and Canada anyhow). Sometimes unbelievably so.

A note when ordering things from Digikey: First, make sure all the parts a in stock (check "in stock" in the search params). Back ordered parts take a long time, and for almost any part you can imagine there is a comparable replacement in stock. Second, when you want low volume stuff you'll be wanting the "cut tape", "bulk", "tube", or "tray" packaging options. "Tape and reel" or "Digi-reel" are for big rolls of one component and this the minimum order is 1000+ units. Almost everything is available in one of the low-volume options.

Regarding kits, take a look at sparkfun[2] for a wide range of boards, kits, etc. They have some good stuff and are targetted at hobbyists. A lot of their products come with not only a datasheet, but also a simplified "hookup diagram" that tells you how to wire everything up for a typical application. You can get some kits of basic components like resistors and caps, but they tend to get pricey and I always found that I would use one or two of the components up and never touch the rest, i.e. use all of the 10k resistors and the 1uF caps and nothing else. If there's a kit specifically for the project you want go for it though.

[0] http://www.linear.com/designtools/software/#LTspice

[1] http://www.ti.com/tool/tina-ti

[2] https://www.sparkfun.com/categories/157

kyzyl··on Why Learn Basic Electronics? [video]
If my opinion on the matter is welcome here, I would recommend against AoE. It is, indeed, the 'bible' of electronics, but it's also huge, expensive, and not terribly helpful for someone who isn't in school for electronics. Great once you know a little more, though.
kyzyl··on Why Learn Basic Electronics? [video]
It really depends on where you want to go with it. I found early on that I learned most by figuring out how to achieve self contained blocks of functionality to accomplish a more elaborate task. For example, to build a tape following robot you need to run the motors, read some IR sensors, implement some kind of PID control, build some kind of regulated power supply, etc. (I learned least from solving circuit problems out of a textbook).

Each of those tasks can pretty well be accomplished by building standalone circuits, none of which are particularly complicated. In the process of building and debugging each one, you'll find you need to figure out how some of the more basic building blocks of electronics work, for example, capacitors, LEDs, opamps, transistors. There are a huge amount of resources out there to learn from. For anything related to arduinos or microcontrollers, just google it. I don't mean to sound condescending, it really is something that can be googled very easily with relatively high quality results (unlike some other areas of electronics, such as analog amplifier design). For some more theoretical stuff, I suggest you check out MIT OpenCourseware as well as video lectures from Standford on youtube. I blundered my way through a physics degree and an electrical engineering degree using those sites. For a more gentle introduction to some electronics concepts and applications, maybe check out this: http://electronics.wisc-online.com/Category.aspx?ID=3

Now the bad news. You can do a lot of futzing around with arduinos and leds, and that's great, but you'll soon find out that it's interaction with sensors and actuators that makes electronics interesting. To do that you will find that you need to build/use external 'hard' circuits, and to do that you will eventually need an oscilloscope. You really can't get too far in the field without one, even if it's just a hacked sound card and audio cable. I say 'bad news' because a new benchtop scope is pretty expensive. A breadboard, some wires and a soldering iron don't hurt either ;-) For components and data sheets, digikey.com and octopart.com are your friends. For breakout boards and other hobbyist accessories, sparkfun.org and adafruit.com are your friends. There's also a arduino plugin for sublimetext, in case you're like me and can't stand using that atrocious java UI.

kyzyl··on Why we have chins
I know nothing about biology, but how about this:

The evolutionary path was influenced via selection. Those who made and used tools were more likely to survive/mate successfully, and those who made and used tools also tended to use them as eating utensils, which mechanically leads to an overbite. So eating with a fork doesn't directly lead to being selected for survival, but it's likely if you eat with utensils you also use other tools for things like hunting, defence, etc. and that does lead to increased survival.

kyzyl··on A Full Hardware Guide to Deep Learning
Overall a good article with some insightful points. One thing strikes me as a bit off, though. The recommendation for one or two cores per GPU seems not quite right. Examining only the CPU<->GPU performance, this might be reasonable. Like the author mentions, you can use the other core to prep the next mini-batch and all those sorts of tasks. However, training the model is only one part of the system, and I tend to value the overall performance of the system more than any one facet.

For example, despite training on GPUs being very computationally intensive, I find one of the most onerous tasks to be the custom data prep/transformation/augmentation pipeline. Because these types of things are usually pretty application specific, there often isn't a ready-made toolkit that does all the heavy lifting for you (unlike the GPU training, which has Torch, Caffe, pylearn, cuda-convnet, lasagne, cxxnet...), so you end up having to roll it yourself. Often you have to run this code often, and with large data that isn't trivial. Usually you won't invest--at least, I don't--in doing custom CUDA code for this type of thing, if it's even possible, so having lots of fast CPU cores is a win. I usually write multi-threaded routines for my processing steps and run them on 8-32 cores for huge gains. So my point is that "one or two cores per GPU" is a bit of a narrow recommendation.

The same applies if you want to do 'real time' data augmentation (this is hinted at later in the article) and/or if you want to deploy with CPU only. Sure you need the GPU to do the training in a reasonable amount of time, but once you've fit your model, it might not be worth it to deploy to GPU-enabled computers if all you're doing is forward passes.

PS: This is also a place where running on EC2 can be a win. Maybe it's more economical to build a workstation, but once you're in the cloud you can spin up a few 32 core boxes to run your preprocessing really quickly, shut them down and spin up some GPU instances for training, then shut those down and spin up some mid-tier boxes to run the models through a bunch of data without breaking the bank. All in 'one place'.

kyzyl··on A Full Hardware Guide to Deep Learning
Putting aside the question of hardware+electricity vs. g2.2xlarge service charges, I think it's worth mentioning that there's a lot more to putting these models together than just getting the hardware and paying to operate it. I tend to spend quite a while mucking with configurations, writing data preprocessing/formatting code, and doing component-wise checking of each piece of the giant ball of software it inevitably becomes. For these tasks, it can be a LOT more convenient to be running locally.

As soon as you're dealing with EC2, you have to take on the mental overhead of making sure that all your configuration persists between restarts (especially if you're using spot instances!), running start up tasks, mounting EBS and paying for volumes, etc. and in my experience this all really adds up. That said, I still do use EC2 for some things. If I wave five similar models I want to run in parallel, it's as simple as spinning up five identical instances. Also, once I start training new models I can continue to use my workstation without any slowdowns.

kyzyl··on Harvard stores 700 terabytes of data into a single gram of DNA (2012)
A question that's somewhat akin to asking, 'How robust are humans to flying projectiles?' ;-)

Of course, it's all about the energy. I'm not a biologist, so I won't speak to the details of how resilient DNA is to specific types of exposure or why, but I am a physicist and I can tell you that if you blast DNA with high energy radiation, like gamma rays, it's gonna have a bad time. That said, if we want to talk about robustness in terms of what it's likely to be exposed to, then it's pretty darn robust. We are exposed to a wide band of EM radiation on a constant basis, and can even withstand exposures on the higher end without becoming 'corrupted'.

I'd also note that standard, non-specially designed electronics aren't very resilient to radiation either. Not to mention, if you could reliably read/write data using DNA, I'd expect that redundancy would become... easy. Security on the other hand...

kyzyl··on Gow – The lightweight alternative to Cygwin
Might take a look at Babun[1] as well. It's a fairly pretty emulator with a built-in cygwin tree, and integrated (default) zsh.

[1] https://github.com/babun/babun

kyzyl··on The desktop and the developer
FWIW, my brother uses* (and I have used, briefly) a non-thinkpad Yoga daily, and it's a very nice machine. He's had it since ~August 2013. Like any device I could come up with complaints about it, but nothing really springs to mind. It seemed to be responsive, light, mechanically well-designed, and sports one of Lenovo's awesome warranrties.

*based on the context of this thread, I should mention that while he is a technical person, he runs Windows and does not attempt to run linux or anything else natively.

kyzyl··on Why bad scientific code beats code following "best practices"
Okay, here's my attempt to distill things a bit. Now, I'm not very old, but my time putzing about this field has taught me that there are two components to carrying on successfully: experience, and communication.

Right now I run a company where we do science. To do our science, we have to write a ton of code. Web stuff, server deployments, numerical analysis, machine learning, hardware description, USB drivers, data visualization, you name it. Over the years I've gotten pretty good at picking the right level of abstraction for the job, and it's served me very well. The key is to have foresight about your situation, and foresight only gets better with experience. When I see one of the less experienced engineers at work doing something dubious, it's usually very easy to steer them away from danger. That's the experience bit; somebody has to know better, and has to act on it.

But knowing better isn't enough. If you want your academic lab to use better coding practices, you knowing better and flatly telling them to change their ways will never work. You have to convince them that they want to do it. If you can't come up with an argument for the use of your other language, or design paradigm, or SCM software that is both factually solid and contextually relevant enough, then 9 times out of 10 you are probably not hitting on the right solution. That doesn't meant that your lab director who is refusing to change is correct in his refusal, but I'll bet you if you pitched upon a solution that was right for the situation, and put some thought into your explanation, you would get a much better reception. The same principle applies when you're pitching a new methodology out in non-academic land, it's just that more often than not both parties' expectations are already closer to being in alignment.

Why does it work? Because most people in these types of environments, such as academic coding circles, are really quite smart. If something is sensible and sufficiently low friction, they will probably go for it. So, no, bad scientific code doesn't beat 'best practices'. But a good solution beats a bad solution every.fucking.time. If you can't show people that it's a good solution, it's probably not the right thing to do. Even if your idea is the better one, if you haven't convinced the people who are going to have to deal with it of this fact, they won't understand it, they will misuse it, mess it up, screw up their research and they will blame the software engineer. And they'd be at least partially correct in doing so, because you only painted half the house.

I'd end by saying 'It's really not rocket science', but... it really might be. ;-)

← PreviousPage 2 of 7Next →