LaTeX Coffee Stains
filed in LaTeX, Links on Jan.24, 2012
LaTeX Coffee Stains is a new LaTeX style by Hanno Rein that will add coffee stains to LaTeX documents, in case you’re too hip to do it the old fashioned way.
filed in LaTeX, Links on Jan.24, 2012
LaTeX Coffee Stains is a new LaTeX style by Hanno Rein that will add coffee stains to LaTeX documents, in case you’re too hip to do it the old fashioned way.
filed in Puzzles on Oct.22, 2011
Rules and hints:
filed in Politics on Oct.01, 2011
Wall Street is occupied!
Okay. Now what?
As far as I can tell, this protest crystallized around anger directed at the people who got away with stealing billions from the rest of us. Lamenting the past is not the organizing principle for a political movement. This is a candlelight vigil for our economy.
If you think that getting mad as hell is all it takes to effect change, you need to go back and finish watching Network. Anger isn’t enough. We saw the same thing during the Mastercard hack in Dec. 2010. What did that achieve? Nothing. They had no demands and weren’t asking the public to help. If you don’t have a clear goal you’re not a protester, you’re a vandal. A protest that can effect change needs to have a stated, achievable goal, and a clear call to action.
A clear goal gives a protest a finish line, and it makes the opposition responsible for the costs. The message of a protest shouldn’t be, “We’re going to destroy your business,” but rather, “You can stop this by making a simple change.” A protest without a goal is just a public party, and the opposition has no choice but to wait it out.
Sure, maybe it’s not well organized, but at least they’re not just sitting on their butts doing nothing, right? Really? That’s the rock the vote argument, that every eligible person should vote regardless of how well they understand the issues. Just be heard; it doesn’t matter what you say.
This protest is going to be completely ineffective. This isn’t elementary school, there are no points for participation. This is going to demoralize people that might have participated in an effective civil action in the future. Worthless protests are a pressure release valve to prevent effective civil disobedience.
Don’t just do anything. Save your energy until you have a clear goal, and a real action that will put pressure on your opposition. Without those things you aren’t holding a protest. You’re just throwing a party.
filed in Software Development on Sep.06, 2011
This article follows how I developed an implementation of the Graham scan algorithm in Haskell, missteps and all. I think it’s valuable to see the process that others use, especially in a “weird” language like Haskell. At times, it can seem like most of what you’ve learned about developing software doesn’t apply to Haskell, but I think that’s just because the language allows so much of the scaffolding to be cut away once the software is finished. Reading Haskell code written by the masters can feel like looking at the Sistine chapel and wondering where they got such long paint brushes. This will be a step-by-step implementation as I developed it. I’m still learning too, so don’t take this as an example of excellent Haskell style.
filed in Flash, Physics on Aug.18, 2011
I’ve been playing around with some of the new features in HTML5, particularly to see how the canvas stacks up to Flash. One of the things I wanted to test was javascript performance, so I ported this Flash toy I wrote a few years ago. It’s a physical simulation of a double pendulum system. It’s interactive, and it can export the line drawing it produces as a PNG.
How did canvas+JS do? The export was a lot easier: I had to write a PNG encoder in Actionscript for the original version! Pretty much everything else was harder. Canvas has features similar to Flash 5, and I missed modern Flash’s rich standard library. CSS layout is still somewhat inferior to Flex for GUI design, as the layout options are less flexible.
One of the appeals of canvas is mobile support, but I was disappointed by the performance on my Motorola Droid. Just clearing the background on a canvas larger than 500×200 took the frame rate to single digits, and I couldn’t find a reliable way to make the canvas fill the screen if other elements were present (I didn’t look too hard, since a canvas that large was unusable). The javascript performance was fine, it was just the drawing that caused problems. Let me know if you get better results on different hardware, I’d love to know that this can work better.
Overall, canvas shows promise, but I don’t think it’s ready to replace Flash for complex graphical applications.
filed in Politics on Aug.17, 2011
Why do people speak of the apocalypse as a discrete, identifiable event? We will not stare in horror as the sky splits open, pouring hordes upon us. Do you think the Romans or the Chinese recognized the beginning of the end of their empire? History suggests that they didn’t even recognize the middle of the end. Look around.
filed in Links, Software Development on Jul.14, 2011
This is a great summary of the low-level API differences between Windows and Linux file systems.
filed in Links, Software Development on Jul.01, 2011
Starting with a simple shell script, Don Stewart shows how Haskell can be readable, safe, and robust in this slide show.
Practical Haskell: scripting with types « Control.Monad.Writer.
filed in Games, Software Development on Jun.27, 2011
Last time we looked at how the board is represented in the little Fox & Geese game I wrote in Haskell. This time, I’ll cover the machinery that makes the game go: moving pieces, jumping, and validating moves. The code for this part is available in my GitHub repo under tag v0.1.2.