I’ve decided that I haven’t been using this blog as much as I would like, so I’m going to shift strategy a bit: Post more, but make them smaller. So here we go:
Two things.
I’ve decided that I haven’t been using this blog as much as I would like, so I’m going to shift strategy a bit: Post more, but make them smaller. So here we go:
Two things.
It sucks so bad! I’ve spent a good two hours trying to RMA an AMD CPU (Yes, I actually had a CPU go bad I’ve never heard of a CPU going bad before. I’ve always thought that CPUs are either good or bad but they don’t go bad, apparently I was wrong. It was only a partial failure too, which added to the weirdness)
This is inexcusable. I’ve seen better/more functional websites written by grade schoolers!
Now I actually have to call AMD, and I’m not going to be happy.
UPDATE: While their RMA website sucks calling them wasn’t that bad. I had an RMA number in about 4 minutes. Hmmm although I should have gotten an email from them by now…
UPDATE 2: 24 hours and still no email. Called them again. Apparently email was never sent. This time the sent it and I got it in a couple minutes. Hopefully the rest of this process will be more straightforward.
So my friend John convinced me and a mutual friend of ours (Joyce a geek in training) to go to BarCamp this weekend. We had a blast!
Barcamp is free, very open ad-hoc technical conference.
Registration is free, but everyone is encouraged to present something.
Time is allocated into 30 minute blocks and you basically just pick an open time-slot/room and write in what you are wanting to present, and then nerds show up at that time to listen to you (if it sounds interesting). I did a presentation covering a brief overview of Haskell (bad slides here) and got a chance to listen to the presentations of several other fellow nerds. It was a lot of fun actually
One of the coolest things about BarCamp was all the awesome free stuff! (sponsored by local companies):
And did I mention that this was all free!
Anyway, I had a great time. Will definitly be going again next year!
I haven’t posted anything in a while, but I just moved the site to a new host (a VPS actually which is sweet) so I thought I’d add something.
Wordpress’s import feature is awesome. I just have to do an export at the old site, and an import at the new one, and all my posts, images, etc… just copyied over automagically. Took me all of a minute.
I just finished moving from my old Drupal setup to Wordpress. So far I’m liking it better
I need to find a better theme though… or shrink some of my images….
I’ve been moving my old posts over to the new system manually (only had a dozen or so). So, even though it says so, I didn’t write the last dozen posts in two days
I’ve been waiting for it for over a month, but the 64 bit version of Linux Mint 6 has finally been released! I’m very excited. I’m going to test drive Mint 6 and Sabayon 4 and see which one I like better. I’m currently running Sabayon 3.5. It’s an ok system, but it has a few annoying quirks and I really like the “it just works” properties of the Ubuntu based distros. We’ll just have to see how it goes.
Code without sophisticated error handling in a large and complex component:
buildParser factor resultToExpr name parseData m = checkParseData $ execState (m >> buildLexer) parseData
where
checkParseData (newParseData@(ParserData lexer opTable literals pegTable)) = expr
where
expr = buildExpressionParser exprOpTable (foldr (<|>) (factor newParseData) literalParsers)
…
… more code
…
…
… lots more code …
…
Code with sophisticated error handling in a large and complex component:
buildParser factor resultToExpr name parseData m = checkParseData $ execStateT (m >> buildLexer) parseData
where
checkParseData (Left errorMsg) = fail errorMsg
checkParseData (Right (newParseData@(ParserData lexer opTable literals pegTable)) ) = expr
where
expr = buildExpressionParser exprOpTable (foldr (<|>) (factor newParseData) literalParsers)
…
… more code
…
…
… lots more code …
…
Did you catch it? can you see the difference?
Now, without any additional modifications I can use ‘lift $ throwError’ anyware in ‘m’ (which is big) or ‘buildLexer’, and the error will propagate all the way down here to checkParseData, which will then drop the error right into the Parsec parser monad.
Doesn’t it just make you happy?