HNHacker News
TopNewBestAskShowJobs

cabacon

819 karma · joined July 16, 2009

submissionscomments
cabacon··on Julia and Python: a dynamic duo for scientific computing [video]
Not really - the discussion on the thread makes it sound like the kind of thing that comes up from time to time anyway. If I had to guess, I'd expect that it happened based on the mission of making something that was good enough to replace matlab, and going from the matlab interface people were used to and working backwards, rather than starting from a concept of what a language ought to be like and working forwards. Given my understanding of their aim and the kinds of things I have read about Matlab at http://abandonmatlab.wordpress.com/, I suspect that "close enough to matlab to have people jump ship" and "first-principles CompSci" language aren't really going to intersect very hard. Given the low popularity of some of the first-principles programming languages, that may be okay?

That said, I'm encouraged to see so many people interested in it and contributing to it. My perspective, though, is that of a C/Fortran HPC person who is cheering for things that will help people move to a more scalable coding environment. I was looking at Julia to see if it was an alternative to Octave for university users; the impression I got was that it was still too subject to change to recommend at this point.

cabacon··on Julia and Python: a dynamic duo for scientific computing [video]
To be fair, I haven't used Julia, but I have heard it suggested as an open-source replacement for Matlab/Octave. To that end, I hope it turns out well. When I was looking to see where the project was at, I got nervous when I read a recent thread on the -dev mailing list: https://groups.google.com/d/msg/julia-dev/2JcZdFKisis/Ag9rBJ...

In particular, the line "[...] I suspect that isequal should be transitive (it has to be for hashing to work), while == will not be transitive. We still need some coherent theory of what == means." made me wince. If one of the benefits that the video makes for Julia over Python is a type system, then there ought to be a pretty well-developed sense of how promotion and equality between types is going to work. That seems like a piece of the language whose theoretical underpinnings should have been nailed down already.

cabacon··on Ruins of forgotten empires: APL languages
I have had a huge amount of fun lately going through the J labs. Start at jsoftware.com to download the interpreter, then the labs are all built into the interpreter. You can also run it on iOS. The terse code actually means you can type in real programs even on an iPod keyboard.

When I taught people to play frisbee, I used to throw with my off-hand when teaching, because it made me pay attention to the fundamentals I was trying to teach. Learning J had some of that same feel. I felt like a newbie, but when I saw the kinds of audacious programs you could write, I was hooked. Highly recommended for a bit of fun in your spare time.

cabacon··on Vagrant: Create and configure portable development environments
I learned about vagrant from this old HN post: https://news.ycombinator.com/item?id=2714149

I wanted to call out the advice from that article to use fabric (if you use python) to control the vagrant+VM instances. You use chef/puppet to configure the VM, and then use fabric to, for instance, switch between virtualenvs for different apps within the virtual host. I used it that summer to work on a web app while I took my daughter to swim lessons, and it was well worth my while.

cabacon··on Vim hall of honour
I think the efficiency of markets is based around marginal costs and benefits, not absolute costs and benefits. The cost of goods are set by looking at the intersection of the people willing and able to supply the good, and the set of people willing to pay for the good. See, for example, http://en.wikipedia.org/wiki/Supply_and_demand

But the point is that you've found an equilibrium in the system with the current price, current suppliers, and current customers. There are customers would would have happily paid more. There are people who WOULD have bought the good if it cost less, but it doesn't so they didn't. There are people who are happily supplying it and making mad bank. There are people who are supplying it and making a razor-thin margin. There are people who WOULD supply it if the available price were higher, so they're not supplying it right now. The price is an efficient equilibrium point, but it's not the global arbiter of value.

cabacon··on Vim hall of honour
Look into producer and consumer surplus. In any exchange, you'll tend to find that the value of the items exchanged are worth more to the receiving party than the giving party. It's practically essential to agreeing to a trade.

The consumer surplus is the excess value the buyer receives. Think "I would have paid €5 for that drink right now, but they only charged me €2!"

The producer surplus is how much more someone paid than the producer was willing to sell it for.

The same thing can be worth different amounts to different people. Airlines in particular are good at price discrimination: trying to extract as high a price as possible, capturing the possible consumer surplus. Universities too.

Lots of things get no-haggle prices that ignore this difference between price and value.

cabacon··on Bunny.py: A WiFi darknet that hides its traffic in the noise of 802.11
You're sending the IV as part of the data, and the IV is not encrypted. The message being sent is time.time(), which is hugely predictable. The padding is easy to attack, and the inclusion of the IV means you'll get the first data block too.
cabacon··on Etckeeper lets you store changes in /etc to git
You could setup splunk free (or one of the OSS clones like logstache or greylog2) on the Linux host and use that web interface for visualizing and searching the logs.
cabacon··on The underappreciated power of common courtesy
The "I was going to say X but I didn't" joke seems common in the CS/computer community. I find it vaguely irritating, because you're saying something you know you shouldn't be saying, as evidenced by distancing yourself from the statement. I was going to downvote, but maybe I can add to the discussion instead.

This technique has a name, either paralepsis (http://grammar.about.com/od/pq/g/paralepsisterm.htm) or preterition (http://en.wiktionary.org/wiki/preterition). I mention this, because I feel like having a name for it helps point it out, and perhaps can convince people that they aren't as clever as they think they are when they employ it.

Please don't bring down the level of discussion here by making the joke you are pretending not to make. Thanks.

cabacon··on Triple rainbow near Seatle: How was it formed?
This also made the Old New Thing: http://blogs.msdn.com/b/oldnewthing/archive/2012/11/26/10371...
cabacon··on How Much Is a Fun Job Worth?
Yes, yes they do. After you get to deduct your 401(k) contributions, your FSA, your mortgage interest, get deductions for having kids, you don't pay nearly 20-30% of your gross salary in taxes. It's probably closer to 10% when you're at the 100K level, which means you're only nibbling off $3-4,000 of that difference. That leaves about $25K difference per year, or $2K/mo. That's certainly noticeable.
cabacon··on How Much Is a Fun Job Worth?
That will be nice, but it's still not a sufficient trade-off for duration in your day, unless your time spent in the autonomous car counts as part of your work day. I liked the idea of taking the train into the city instead of driving to my current job, partially because I had this fantasy about how I would be able to use my time on the train productively, as opposed to just driving.

But, the thing is, the train trip into the city is 1 hour, and the drive is 30 minutes. And the train schedule is dictated by people who work 8 hours in the office; taking an off-schedule train is a much worse proposition. So even though I gain the time on the train (which is probably not as valuable as I think it is) I still lose out on the rest of my life for having 1 hour less per day to spend completely electively.

So, yeah, I'd like it if my car drove me into work so I was free to do other things. But I would still value a 30 minute autonomous drive much more highly than a 1 hour autonomous drive.

cabacon··on Why You Should Start Using a VPN
I bet that works. Based on advice in an older HN thread about VPSes, I looked on lowendbox.com and found a Chicago VPS provider for $20/year for a 128M/5G VPS with 200GB/mo. of bandwidth. It seems to run OpenVPN just fine for when I've wanted to use it; I'm just using it when I'm on untrusted wifi, or to route around a network block.

I installed TunnelBlick on my mac to be the VPN client; it was a nice interface to setup for the client side, and handles things like DNS flushing automatically.

I'm also going to setup ssh servers on 80 and 443 for times when access to ports is restricted by the wifi provider.

cabacon··on Tumult Hype 1.5 is out with major improvements to the HTML5 builder for Mac OS X
Here's the thing, though - I clicked through, and started to watch the video about "25 features in 10 minutes". The icon change is listed as feature #1. I stopped watching around feature #3-4, because the product wasn't interesting to me. But as a rule, I think videos like this should be structured like the canonical newspaper article - put the biggest news up front. That way, at any point someone stops reading/watching, they have gotten the information that you thought was most important for them to get.

In other words, if you don't want people to focus on the icon change, don't highlight it as feature #1 in your time-limited chance to educate people about the product.

cabacon··on My Recent Development Stack: OS X Tools
He linked to his vimrc on github from the article. The binding is done in this block:

  if has("gui_macvim") "Use Experimental Renderer option must be enabled for transparencY
    set transparency=15
    set guifont=Monaco:h10
    set noantialias " I like my Monaco this way ;D
    " Swipe to move between bufers :D
    map <SwipeLeft> :bprev<CR>
    map <SwipeRight> :bnext<CR>
  endif
cabacon··on We should teach all our kids to code
I recently watched Randy Pausch's "Last Lecture" (http://www.cmu.edu/randyslecture/) where he promoted Alice (http://www.alice.org/) as a tool for teaching kids to code. I downloaded it and played with it, and it looked pretty good. Like logo, it makes programming more fun by giving you immediate visual feedback. Like the "If this, then that" thing the article liked, it promotes the idea that programming is a lot like storytelling; the entities do what you say they do, nothing more, nothing less.

I found in it the potential for excitement that I found when I recently looked at the demo programmer live coding at http://iquilezles.org/live/index.htm

The live OpenGL editor he uses for immediate feedback made me figure out how to get an OpenGL triangle rendered on my laptop right quick. I can imagine that having storytelling control over 3d characters could do the same for kids.

cabacon··on Show HN: elegant open-source pastebin server (node.js & redis)
For what it's worth, changing the extension doesn't seem to work for me. A simple C program (http://hastebin.com/36QWBlYlML) gets detected as TeX. Trying to change the http://hastebin.com/36QWBlYlML.tex to http://hastebin.com/36QWBlYlML.c just redirects me back to the .tex URL.

Also, while I am entering a file, the edit box is only two lines long, and I can't see the handle to resize it. This is Safari 5.1.1 on Snow Leopard.

Looks nice!

cabacon··on Japanese supercomputer blisters 10 quadrillion calculations per second
What impressed you about the supercomputers of 5 years ago that no longer impresses you about today's supercomputers? The Cray approach (http://www.nccs.gov/wp-content/uploads/2011/03/UserMeeting20...) and the IBM approach (http://en.wikipedia.org/wiki/Blue_Gene#Blue_Gene.2FQ) both seem more interesting than just connecting together as many CPUs/RAM as you can afford.

There are interesting OS challenges for the compute nodes, interesting hardware challenges on interconnect, interesting filesystem challenges, interesting programming challenges to manage the parallelism, competing architectural approaches between CPUs and GPU-accelerated clusters ... it's a pretty interesting space!

cabacon··on Search for your name in pi
Doesn't the difference between just being irrational (e.g., sqrt(2)) and being transcendental (e.g., \pi, e) matter here?
cabacon··on Why do Windows functions all begin with a pointless MOV EDI, EDI instruction?
Actually, I really like the stories about his nieces too. He had one about watching his niece learn to cheat that was fantastic.

Re: snark, I wasn't talking about his own snark; that's great. I'm talking about the bits he adds labelled "Pre-emptive snark: [insert snarky thing a reader might say here, plus his response". Maybe I'm mis-reading his attitude towards those, but he seems a bit weary of them.

cabacon··on Why do Windows functions all begin with a pointless MOV EDI, EDI instruction?
I have never written anything that runs on Windows, regardless of language or API, and I still subscribe to his blog. I feel badly that he gets snarked at so much that he has started injecting pre-emptive snark responses; I think he might write more, or more candidly, if it weren't for the highly vocal peanut gallery he has attracted.

This one in particular seemed worthy of sharing because of a couple of things. Firstly, if you just saw the artifact and not the reasoning, you would probably see a lot of WTF in having 7 bytes of NOP-type instructions, with five outside and two inside each function; it's a great reveal when you find out what it is for. Then my reaction was "Wow - I don't really design good instrumentation/logging/debugging points in my code, do I? I wonder if there's any part of this idea I can fruitfully rip off for my own code?" It was a nice one-two punch.

cabacon··on Why do Windows functions all begin with a pointless MOV EDI, EDI instruction?
1) I didn't see anything that suggested that all DLL functions have this hot-patch point. I think from his perspective "Windows DLL" means "a DLL that is part of the Windows operating system", not "a DLL used by an application executing on Windows".

2) I think he addressed this - someone might be executing the function while you are trying to patch it. Having a 2-byte, one clock cycle NOP at the front means that you can replace it "atomically" from the perspective that nobody can walk into the middle of you updating the memory.

cabacon··on PyPy - We need Software Transactional Memory
Then again, hardware transactional memory may be arriving: http://www.eetimes.com/electronics-news/4218914/IBM-plants-t...
cabacon··on SSH productivity tips
I don't know - I like having the control master around for when I've done something like startup an interactive process, then realize that I also want to pop onto the machine to look in some file. I don't always start screen when I login somewhere, and I don't particularly like screen well enough to make it my default first action when I log in somewhere. I also tend to prefer to be able to see all my logins simultaneously, rather than having them be screen windowed or tabbed.

I thought it was a nice overview of some things I use a lot (control master, and nicknames in .config) and included some things I didn't know, like the control persistence and some of the nickname wildcarding. It shouldn't be dismissed just because it isn't about screen/tmux.

cabacon··on SSH productivity tips
And GSI-Openssh too: http://grid.ncsa.illinois.edu/ssh/
cabacon··on Parallelism as a First Class Citizen in C and C++
Agreed re: pragmas as a hack, but that's just the kind of thing you'd expect to get to gain traction, before folding into a language standard.

And re: data parallelism, I don't see that anyone has made a terribly popular implementations. The niche languages like UPC, CAF, and HPF all seem to have withered on the vine. So far, the only thing people seem to buy into is that openmp-based task parallelism is easier than managing threads by yourself.

cabacon··on Parallelism as a First Class Citizen in C and C++
I'd argue that compared to OpenMP and CUDA, Cilk has very little traction. My frame of reference is the current set of HPC platforms, though. We had one customer who wanted to build Cilk, and it was really just for R&D, not production.
cabacon··on Parallelism as a First Class Citizen in C and C++
He's totally right, but people have wanted this, and tried to implement it, several times. There's UPC (http://upc.lbl.gov/), Co-Array Fortran (http://www.co-array.org/), OpenMP (http://openmp.org/wp/), TBB (http://threadingbuildingblocks.org/), Cilk from MIT per scott_s, then there are the CUDA/OpenCL accelerator extensions ...

We don't need a call to arms without a pretty good idea of how to do it, and why it is different/better than the existing shots at parallelism. Jamming it into C/C++ is one idea, and making a new language like Fortress (http://en.wikipedia.org/wiki/Fortress_(programming_language) ) is another.

And those are all just the languages / language extensions. There's also the message-passing (MPI, PVM) vs. remote put-get (ARMCI/Global Arrays/...) It's clearly a hot topic with how multi-core chips are coming along. I didn't see much here that adds to the existing attempts, other than perhaps bemoaning that they are currently proprietary. That seems natural, though. With so many competing ideas, you see which one gains traction first, then work on incorporating it into the standards.

cabacon··on Text Mate Fullscreen on Lion
As noted, you can run vim or emacs in a way where you can mouse where you want to go. In practice, there's usually a way to get to the place you want to be via some other command. For vi, you can usually use /search to get where you want. One of my most-used vi commands that I miss in other editors is f[char]. It moves you to the next instance of [char] on your current line. Things like f= or f( are great for bouncing through a line of source code. I wish textmate (chocolate, sublime, whatever) had a quick keyboard equivalent to that.
cabacon··on Ask HN:Should I get the new Macbook Air to replace my 3yr old MBP?
This piece from 100 days ago: http://news.ycombinator.com/item?id=2493319 has a lot of endorsements for the MBA as a primary work machine. I'd assume it has only gotten better since the latest upgrade.
← PreviousPage 2 of 4Next →