- Just finished playing Bocce Ball #
- The Squirrelizer: http://www.lutralutra.co.uk/squirrelizer/ #
- Pirate Music: Captain Bogg and Salty #musicmonday #
- Buying two new rack-mount servers for Project Firestorm. #
- Started following @MsMingNa (溫明娜) geek, actress, voice of Mu Lan, SGU regular. 因為她是有名的中國人。 #
- Wife called. Free pizza dinner tonight. Some new place is opening in Coeur d'Alene and was passing out time-tickets for free pizza! #
- Changing a project from C++ to PHP. It works if I offload decryption to another program, plus it makes the MySQL stuff much easier to write. #
- Just ordered at Garlic Jim's Famous Gourmet Pizza on hwy 95 and Neider in Cd'A. Had a free coupon! BBQ chicken on the way #
- Garlic Jim's Famous Gourmet Pizza (Cd'A) was good. Their crust is a lot like Papa John's. The BBQ Chicken pizza was tasty. ~$20 for a large #
- Just finished writing the get() functionality for my #mud project. It (and put()) are probably going to be the most complicated functions #
- #winMBP @taptaptap is giving away a $5999 ColorWare STEALTH MacBook Pro to celebrate launching Convert for iPhone! http://taptaptap.com/+GeC #
- Hasn't felt like it, but I've finished a ton of projects in the last week. It's a nice feeling. Because I have more on the horizon.. #
- Just wrapped up another big project. Things are going great right now... #
- Just finished a once-over on my Doxygen comments in my #mud project. Updated several classes. Fixed all undocumented classes. #
- Had to update Doxygen on Ubuntu due to a bug in PDF generation with deeply nested classes. New version works okay, but has PDF index error #
- Just added the concept of "collections" to the #mud. A collection is an object with a quantity, like coins. Next addition: "assemblies" #
- Recently passed 2,000 tweets. Another thousand and I'll surpass my number of blog posts... #
- Cleaned my whiteboard in my office last night. My office still smells like whiteboard cleaner. #
- Left my phone at home this morning. Lorien just brought it to me. #
- And so I end another work day in which much progress was made. Tomorrow will be testing code day! #
- Updated a lot of my #mud documentation tonight. It's online at http://bogomip.net/muddoc/ #
- Once again, I'm playing the part of the code monkey today. It's not too bad. #
- New version code is running awesome. Had one small bug, and squashed it flat. #
- RT @PartSixofThree: Giving away five DON'T PANIC! towel's today! Retweet this to enter; random winners will be announced at 6:00 EST! #6of3 in reply to PartSixofThree #
- Writing a new MySQL C++ wrapper class. This should be the last iteration... #
- Had a meeting with XO Communications today. #
- It's HOT outside! #
- Going to @sarahthepark and Frank(notthepark)'s place for dinner and fun! #
- I'm such a geek--even my music/mp3 player is command-line... #
I've been writing a replacement C++ wrapper class using the MySQL API. The previous method worked, but was prone to memory overwrites. The syntax is much better now, too. Just include the two header files and:
boost::shared_ptr<MySQL_Server> server = boost::shared_ptr<MySQL_Server>(new MySQL_Server("localhost", "user", "password", "database"));
boost::shared_ptr<Query> = boost::shared_ptr<Query>(new Query(server));
query->setQuery("UPDATE table SET var=val");
if(query->execute()) {
std::cout << query->getNumberOfAffectedRows();
} else {
std::cout << query->getError();
}
SELECT query results can be stepped through with the following:
for(unsigned int i=0; i < query->getNumberOfResultRows(); ++i) {
std::vector<std::string> row = query->getNextRow();
...
}
I think I'm going to like this new class a lot more than the old one!
I just finished writing the get() functionality I mentioned a few days ago. Using Boost::Spirit it was really easy to parse the grammar. It was much more work to actually act on the results of the parsing.
There are nine different ways to use the get command, each with its own grammar rule. Each of the rules gets more programmatically complicated, so the command code itself got pretty long.
I do suspect that the get and put functions will be some of the most complicated to write. I'd say I'm halfway done, but I haven't done enough testing on the get code to really call it "done."
- Had a great starting hand in #munchkin a while back. +4 and 6 hands: http://yfrog.com/5edx6j #
- Then the first card I turned over was a curse: lose the item that gives you the biggest bonus. That's #munchkin for you! #
- Reading "Pride and Prejudice and Zombies" now, about 2/3 done. #
- Fuse channel has been playing Depeche Mode 101. Hard to believe that was 20 years ago! #
- RT @rifftrax MST3k fans! Go to #rifftraxLive at Spokane Northtown 12 on 8/20 http://is.gd/2hekt RT & Win an iPod! #
- Waiting in the callback queue from Cisco...again... #
- Got host-based authentication configured on a bunch of my servers. It's easier than having to type passwords all day! #
- Cisco problem is finally solved. Going to blog about it shortly. #
- Constant interruptions in the office today. Having trouble getting tasks accomplished #
- Finally tracked down a software bug on a remote server. Subtle problem, tough to see. But it's fixed now... #
- Going to see Ponyo tonight. Wednesday nights are a good night to see movies. Tuesdays are, too. Lowest attendance nights. #
- Miyazaki animates like they did back in the 80s. Not a huge fan myself, but the stories are good. Wouldn't mind more modern animation. #
- Listening to @marcgunnmusic 's most excellent Irish and Celtic Music Podcast #
- Going to the @rifftrax live show tonight in Spokane at the Northtown 12. It's going to be AWESOME #
- Lots of interruptions today in the office. Having trouble staying on track when peopel are here every 5 minutes #
- Expect @kwmurphy to win tonight's Live Brawl with @michaeljnelson and @BillCorbett. He looks like he has a mean left hook. Rumble time! #
- Woah! Stop the Earth, I want off! My dad just sent me a text message!! #
- Doing some database cleanup. It's busywork, but nobody else can be trusted to get it done right and as quickly #
- Gathering up the friends to head off to Spokane Northtown 12 theatre for the @rifftrax not-live event. Hello delayed broadcasting! #
- Some serious thunder going on outside. It's late. Or early. Or BOTH! #
- Server problem at the office. Just got here to be Mr. Fixit. Sleep is for the weak. #
- Just found out that the reason the air has been so hazy lately is due to fires in British Columbia. Man am I out of touch with the news... #
- Aha! The problem this morning WAS a power issue. My UPS croaked #
- I was going to have fresh-baked sourdough bread with breakfast this morning. Instead I'm having: a big glass of water. Stupid power outage! #
- Really hungry right now. #
- 今天認識了兩位新朋友、從蒙古來的 #
- New project in the office got a codename: Project Firestorm. It's sweet. #
- Just wrapping up my work day. Coming up on 12.5 hours today. Jacob != happy #
- The sourdough that should have been ready for breakfast is finally mine. It's been a long day... #
- If you like chocolate and peanut butter, you need to try Tillamook's Sweet Centennial ice cream flavor--it's amazing! #
- Today is cookie madness. Packing the freezer with new chocolate peanut butter cup cookies. Another tasty creation... #
- Reading up on genetic algorithms for use in combination with AI #
Last night Lorien and I, her father, Suzanne (a friend), and Ellie and Taylor all drove to Spokane for the RiffTrax (MST3K) live event. Even though, for the west coast, it wasn't really live—it was delayed-broadcast.
Anyway, it was probably the funniest riffed movie I've seen. The jokes came at a mile a minute, and I laughed more in that short time than I have in the past week.
Jonathan Coulton made a guest appearance and played a couple of his songs: The Future Soon, and RE: Your Brains.
There was also a short film at the beginning: Flying Stewardesses. It was hilarious, and (hopefully) will be available on their website for purchase soon!
Last Wednesday night Lorien and I went to see Ponyo at the theatre. It was, like all Miyazaki movies, a great story. I'm just not a big fan of the 80's style animation they always use. The backgrounds are amazingly detailed, stories are inevitably great, but their animation, for me, leaves a lot to be desired. I don't know why they can't step that up like everything else.
Anyway, I saw Ponyo very much as a retelling of Andersen's The Little Mermaid. Last year, when I was in Copenhagen, I took a picture of the famous statue. I also took one of (what I call) The Big Mermaid: check it out here.
It was still a good movie, and if you're a Miyazaki fan I'm sure you've probably already seen it. If not, go, I'm sure you'll like it.
One last thing, though: Was anyone else creeped out by a love story about 5-year olds?
My server alarm went off this morning at 4:40, but it didn't wake me up—I was already awake from the thunder of an hour previous, and still hadn't gotten back to sleep.
Anyway, I had to come in to make sure things are working fine. And they are. It seems to have been just a hiccup on the ethernet card, the server was only unreachable for a few minutes, but I had to check. Unfortunately, I didn't get the UP signal from my server monitor, just the DOWN signal. I was sure it was a power issue, but I was wrong.
So I'm at work early with about three hours of sleep last night. I can tell it's going to be a spiffy day.
When I lived in Taiwan from 1992-1994, I spent my last three months in the mountains above Kaohsiung in the small town of ChiShan, and its neighbor, Meinong.
The typhoon that recently hit Taiwan devastated that poor little town, here's a video I found about it. It talks about the young foreign college students currently serving as missionaries in Taiwan (as I once did), and how they're tirelessly working to help the locals clean up.
My best wishes go out to those people, I hope they recover quickly.
I started this blog six years ago today, and it's hard to believe I've been able to keep up with it, but I'm still here, still blogging. I believe tacos are in order. TO THE TACO VAULT!
I've been working on implementing boost::spirit in my MUD to parse complicated grammar. Once I figured out how the library worked, it wasn't difficult to add to my existing codebase. The complicated part comes from actually using the results of the grammar. Take the get command, for instance. Now that I have an easy-to-use grammar system, I can make it as complicated as I want. I currently support the following types of get commands:
- get book
- get book 2
- get 30 coins
- get book from shelf
- get book 3 from shelf
- get book from shelf 2
- get book 2 from shelf 3
- get 30 coins from bag 2
- get 5 arrows 2 from quiver 3
I had to define a search order, too. If a player is carrying a container, and a similarly-named container also exists in the player's current room, the player can only manipulate the one in their inventory, and would have to first pick up container, then take items from it. I could work out a way to combine the inventories of the player and their location, but I'm not sure I want to go that far. Honestly, the way I've coded things it's not too difficult, but I'm more worried about perception of items and the confusion combining them all could potentially cause.
In any case, the get command is growing in complexity by orders of magnitude right now, and it's almost too much to keep in my head. I'm going to have to go through and refactor it before I've even finished writing it.
Here's a code example of one of my rules:
// 'get 20 items from container 2' grammar
rule5a = boost::spirit::int_p[boost::spirit::assign_a(mNumberToGet)] >> ' ' >>
(+boost::spirit::alpha_p)[boost::spirit::assign_a(mItemToFind)] >> ' ' >>
boost::spirit::str_p("from") >> ' ' >>
(+boost::spirit::alpha_p)[boost::spirit::assign_a(mContainerToLookIn)] >> ' ' >>
boost::spirit::int_p[boost::spirit::assign_a(mContainerNumber)];
Which reminds me, since this class (the get command) is a shared pointer, I have to lock up the volatile bits in a mutex so multiple threads play nice together.
I've been working with my boss for quite a while on a router issue. We've spent hours on the phone with Cisco technicians trying to get this issue solved, and today it finally happened. The solution was deceptively simple, but I guess you need to get the right technician.
Our issue was this: a firewall was configured on a Cisco 881W router with NAT translation to pass Microsoft VPN traffic in to a VPN server on the inside of the firewall (port 1723). The problem is it never worked. The solution required GRE (which we knew), but finding a tech with the right qualifications to tell us exactly what to do was a right pain. We found if the firewall was shut off, then the VPN connection worked, so we knew there was an issue somewhere on the firewall itself.
Well, to make a long story short, here are the missing bits:
access-list 120 permit gre any any
class-map type inspect match-all GRE
match access-group 120
policy-map type inspect NATOut-to-In
class type inspect GRE
pass
The number of the access list isn't important, as long as it isn't already used. The traffic has to be passed through via the policy map because it cannot be inspected. The NATOut-to-In is the rule for the firewall that handles outside to inside traffic. I don't know what yours may be named, but it should be something like that.
Today I cracked open my 100th Anniversary Wheel of Tillamook Vintage White Extra Sharp cheese. I had some of it on my sandwich and it was awesome!
It's a little crumbly, but hey, it's 3 years old! The taste is magnificent. If you like sharp cheese, anyway. Can't wait to make a cheese sammich with it…
You can get your own here.
- Just got back from cousin's wedding in Coburg. Grandfather had a mild stroke but won't talk about it with anyone. We're all a little worried #
- Just finished tweaking some object code in the #mud. It's working great #
- Went to Gustav's for dinner. The Caesar salad was terrible, but everything else was great. Fondue was excellent #
- There's talk of Tillamook and the cheese factory for tomorrow's itinerary #
- Made it to the Tillamook Cheese Factory. Cheese is awesome #
- Made it to the Pacific Ocean today, the water was Oregon-coast cold, which is normal. And cold. http://yfrog.com/3qnu0j #
- Just finished implementing dynamic weather in my #mud project. Made excellent progress this vacation! #
- Finally picked up Pride and Prejudice and Zombies to read. Been looking forward to it for a while now #
- 我妹妹的小女兒哭的要死,她好可憐 #
- Otto's Sausage Kitchen for lunch again today. It's the bomb #
- Heading back home tomorrow. It's been good to be with family #
- Today is my stepfather Ron's birthday. We had dinner and pie and ice cream together #
- Home! The drive back from Portland was normal. I hate Oregon's 65mph speed limit, it's retarded--but that's Oregon for you. #
- Playing catch-up at the office today. #
- On the phone with Cisco. Been on the phone in conferences for the last 5 hours. Welcome home huh? We totally stumped Cisco on this #
- Getting Lorien's house key from Wes at Schlotzsky's. Off to work soon for a special project. #
- Wow highway 95 is super busy in Coeur d'Alene right now. I have no idea what's going on #
We pulled an awesome "prank" at the office today. I'll have some pictures soon, didn't take any today though. For now, let's just call it Extreme Makeover Cubicle Edition.
We got home from Portland Thursday night, the drive back up was uneventful. It was a good vacation, and it was nice to spend time with so much family. I also got a lot of work done on my MUD, which, if you follow me via Twitter, you know about. For the record, numerous features were added, including full YAML support via the yaml-cpp library. I also have a functioning weather system that shifts across the map according to wind speed (6 speeds) and direction (16 different directions). I got several months' worth of work done in a week and a half, it was great!
On a side note, I also now own an oscilloscope.