Matthew brought this home from school in February. I don’t think he quite got the spirit of Martin Luther King Day.
To paraphrase the Reverend, “The moral arc of the Star Wars universe is long but it bends towards justice.”
Matthew brought this home from school in February. I don’t think he quite got the spirit of Martin Luther King Day.
To paraphrase the Reverend, “The moral arc of the Star Wars universe is long but it bends towards justice.”
→ 3 CommentsTags: Uncategorized
I struggled mightily with this issue trying to get WebEx to work, so I’m posting my solution on my blog.
The error is “Failed to load GPC extension” when trying to attend a WebEx meeting. I could only find one other post on the whole Internet with this issue and it was unsolved since 2003.
Anyway, the reason I was getting this error was because I had named my hard drive “☯” (the Unicode character for Yin Yang). The solution was the manually uninstall everything (instructions below), reboot, change the name of my hard drive to something boring like “Todd,” and then try again.
Here are the instructions for manually removing WebEx:
a. Open up your MacHD –> User Folder –> Library –> Application Support
Trash the WebEx Folder
b. Go back to your User Folder –> Library –> Internet-Plugins
Trash the WebEx-Plugins Folder
c. Go back to your User Folder –> Library –> Preferences
Trash all WebEx Preference files (3-6 possible prefs)
d. Open up your MacHD –> Applications –> Java –> J2SE 5.0 –> Java Preferences
Click on Delete Files under Temporary Internet Files and delete all all Temp Files.
e. Open up your MacHD –> Applications –> Utilities –> Terminal
type: rm -rf .webex (return)
type exit (return)
f. Empty Trash (not all items may be removed, if not empty trash again after reboot)
g. Reboot system
My theory is that the Meeting Manager installer and program both can’t handle file paths with Unicode/non-ascii characters in them. When I turned on debugging and looked in console I saw pointer problems in both Safari and Firefox:
11/17/08 4:13:24 PM [0x0-0x1f01f].com.apple.Safari[240] Destroy
11/17/08 4:13:24 PM [0x0-0x1f01f].com.apple.Safari[240] Safari(240,0xa0477fa0) malloc: *** error for object 0xec32c8: pointer being freed was not allocated
11/17/08 4:13:45 PM [0x0-0x1d01d].org.mozilla.firefox[234] plugin,NP_Initialize start
11/17/08 4:13:45 PM [0x0-0x1d01d].org.mozilla.firefox[234] plugin,NP_Initialize end
11/17/08 4:13:45 PM [0x0-0x1d01d].org.mozilla.firefox[234] plugin,NP_GetEntryPoints start
11/17/08 4:13:45 PM [0x0-0x1d01d].org.mozilla.firefox[234] plugin,NP_GetEntryPoints end
11/17/08 4:14:15 PM [0x0-0x1d01d].org.mozilla.firefox[234] Destroy
11/17/08 4:14:15 PM [0x0-0x1d01d].org.mozilla.firefox[234] firefox-bin(234,0xa0477fa0) malloc: *** error for object 0×26532c8: Non-aligned pointer being freed
11/17/08 4:14:15 PM [0x0-0x1d01d].org.mozilla.firefox[234] *** set a breakpoint in malloc_error_break to debug
11/17/08 4:14:15 PM [0x0-0x1d01d].org.mozilla.firefox[234] NP_Shutdown
I hope this helps someone else out there who runs into this.
[Update: I tried to send this info to WebEx support and got this in return:
Thank you for trying to contact WebEx Support, but your request could not be accepted for one of the following reasons:
- There was no open case number in the subject line,
- The case number in the subject line refers to a case that is closed,
- Or the case number is invalid.
]
→ 2 CommentsTags: Uncategorized
I just downloaded this WordPress app to my iPhone. I’m attaching a picture of Matt with his buddy R2D2. We are in New York, and I regret that I haven’t been able to find an unofficial Star Wars shirt. I may be reduced to buying one at Baby Gap.
Star Wars is his new obsession though he hasn’t seen the movie. A friend across the street has some sort of Star Wars video game. He and Matt will walk around singing the theme that plays whenever the Empire does something naughty or is about to.
Took this picture at FAO Schwartz, where they do a regular show on that keyboard in Big. *Spoiler alert!* The grand finale is Bach’s tocatta and fugue in D minor.
→ No CommentsTags: Uncategorized
This is the last night of my vacation. I took last week and the preceding Friday off. My favorite kind of vacation is where I hang out at home for the time out. All my books, music, and gadgets are at home. And most of my favorite places are a short drive from my home, so home is an ideal place to spend a vacation as far as I am concerned.
The day before vacation I made a quick list of what I wanted to do with the time off. Eleven days later I am in the happy position of being able to grade my vacation.
Here’s the list from my notebook:
→ 2 CommentsTags: Uncategorized
I woke up this morning and read an email from friend (Hi Kent!) stating that my blog had been hacked. Frankly, I deserved the haxoring because I was running an old (2.1.1) version of WordPress — one that had actually been cracked while on the download servers at that.
I exported by blog posts, cleaned out the bad links, deleted every wp file, deleted my database and every associated database user, deleted a bunch of other files that were laying around my htdocs directory, installed WP, imported my posts, and added a new theme.
Most everything made it over okay. I even moved the blog to a /blog directory and updated my .htaccess file to 301 all of the links. The old feed link doesn’t seem to work in Google Reader for some reason. The only real data lose occurred because I used the Exhibit plug in for a bunch of posts, so a lot of my image links were gone when I delet. I may need to redo my album of pictures I found on the ground after I retire.
I’m going to upload a few images to test that feature out and then check the feed links. (Note: WebKit crashed when trying to upload pictures the first time.)
→ 2 CommentsTags: Uncategorized
More than a year ago I wrote a “buzzword bingo” application. I was at work and had about three hours to kill while waiting for some scripts to finish, so I hacked together some PHP to pick random words out of a file and put them on a bingo card image that I found on Google image search.
This made conference calls more interesting and probably caused my friends at work to listen more closely than they would have otherwise. It was fun for a while, and then we kind of forgot about it.
The last time I thought about it before this week was when I got a nasty email from someone in Canada complaining that there were 500 bingo cards printed out on their printer in color. Since I hosted this app out of my home directory, my LDAP name was in the URL for every page. I explained that anyone with a browser could have printed it out, which got no response. (I sure hope he doesn’t have a job that requires deduction.)
But anyway, I have been trying to stay abreast of Google’s 6,000 APIs, and App Engine seemed as good a place to start. (I played with Open Social a little the week before.) Porting my simple bingo card app to Python and to Google App Engine seemed like the perfect starter project.
I worked through the tutorial using vim, then I tried to work through it again using Eclipse. Maybe I’m just an idiot, but after using Eclipse for over two years I still don’t really get it. I can run programs and include libraries and set breakpoints for debugging, but I get the impression that somehow I’m doing it all wrong. After a few hours trying to find a browser previewer to show the app dev server, I gave up on Eclipse in search of a new IDE to work with.
And after reading through this thread about Python editors, I downloaded the free (as in speech) Komodo Edit app. I spent most of last night using it to port my bingo card app, and I think it’s a great development environment for App Engine.
I’ve only used Komodo Edit for a little while, but here are the steps I took on my government^WGoogle-issued MacBook Pro (running Leopard) to get it set up for App Engine:
1. Download Google App Engine SDK and install
2. Download Komodo Edit and install. (I installed 4.3.2 for x386.)
3. Configure Komodo Edit
a. Make a command to start the dev server
Tools->Run Command…
In the Command box: /usr/local/bin/dev_appserver.py %p
Check Add To Toolbox
Press the More button
Select Run In New Console (otherwise you won’t be able to run any other commands)
b. Make a command to upload the app to Google
Tools->Run Command…
In the Command box: /usr/local/bin/appcfg.py update .
Check Add To Toolbox
Press the More button
In the Start in box: %p
Select Run In New Console
Note that these commands will show up when you show the Toolbox, which you can see by toggling the “Show/Hide Right Pane” or selecting View->Tabs->Toolbox from the main menu.
c. Add the Google libraries to the code completion path
Go to Komodo->Preferences…
Languages->Python
Add /usr/local/google_appengine
d. Django file extension
This isn’t really a configuration, but remember to save your Django templates (the templating language that Google App Engine uses) with the file extension .django.html to enable syntax highlighting.
e. Add handy URLs
I found it handy to add some common URLs that I was using in development.
To add a URL go to the main menu and select Toolbox->Add->New Url…
I added these:
Appspot login == http://www.appspot.com/
Google App Engine intro == http://code.google.com/appengine/docs/gettingstarted/introduction.html
http://localhost:8080/ == http://localhost:8080/
Double click to launch the default browser, right click and select Open URL in Tab to open it as a tab in Komodo Edit.
f. Use vi mode if it floats your boat
One interesting feature is the ability to use vi or emacs commands in the editor window. You can set this in the Preferences under Edit->Key Bindings, then select Vi under Key Binding Schemes. I turned this on for a while but quickly tired of the novelty.
There is also an emacs mode, but it seems unnecessary because if you know emacs you are already such an efficient programmer that using a program with a gui Komodo Edit would be too jolting, sort of like a speeding race car hitting a large pothole.
g. Getting a side by side view
I heard this complaint in a review of Komodo Edit, so here’s how I was able to do it (not that I really used this):
Put focus on a file you are editing
Window->Move To Other Tab Group
Window->Rotate Tab Group
4. Create a project
I didn’t really get the whole Live Import thing, so I might be doing this wrong. I made a directory, copied the .yaml, .py, and .html files into it, then File->New->New Project… Then I browsed to the directory and saved the project file with the name of the app that I was working on. Be careful naming the project because I couldn’t figure out how to rename project files.
When uploading the app to Google only the necessary files are uploaded, so it doesn’t matter if the project file is in that directory or not.
I’m not sure how the project view (on the left hand side) maps to the file system. I created a directory and moved a file into it from the project view, but that wasn’t reflected in the file system. So I just moved files around with Finder and then selected File->Refresh Status from the main menu.
5. Reflect on the experience
Once I was set up it was very easy to code, test, and deploy with this environment. You can check out the end result at http://wordbingo.appspot.com/ After I password protect editing the buzzwords, I’d like to try to make it multiplayer. But that might require more free time than I have.
(Actually, if I had some extra time I’d really like to set up syntax highlighting and code completion for the Gadget API — because I spend a lot of time on gadgets, gadget ads, and Open Social gadgets. Currently I’m using the Google Gadget editors which are okay but have their limitations.)
Now you have a full accounting of last Friday night between the time that my wife fell sleep putting my son to bed at 8:00 and when I went to bed at 12:30am.
→ 12 CommentsTags: Uncategorized
This is a test from Google Docs. I’ve been meaning to set this up for a while.
→ No CommentsTags: Uncategorized
The great Funky 16 Corners blog has a nice write up of the song that my blog is named for. “I’m not weak but not I’m not too strong. But I think I’ve been around too long.” My first choice — Ain’t Too Proud To Blog — was already taken, which sent me looking through my soul CDs for an appropriate title.
In related news, two nights ago Matt was singing “You can feel it all o-o-over. You can feel it all o-ver people” from Sir Duke.
→ No CommentsTags: Uncategorized
I was deleting some comment spam and decided to post some pictures that I’ve been meaning to post for a while…
M. as a robot. Notice that I gave him a volume knob and an on/off switch. Two modifications that I would make to kids if only they were as easy to mod as iPhones.
Over the summer S. developed a bit of a belly. Diana and I would occasionally fret over it while she was out of hearing range. Then one day she proudly lifted her shirt and proudly said, “Check out my Grampa belly!”
When we took S. to her 7th birthday appointment, the doctor wasn’t too happy about the Grampa belly. The doctor was showing her reasonable portions. One of the reasonable portions was half of a bagel. She proudly told the doctor that she ate two whole bagels Sunday morning. So I got in trouble because I’m the one who took her.
Not that S. isn’t in great shape. She was in swim team all summer and she would ride to work with me in the mornings sometimes. She would go 6 miles keeping up with me and not even be winded when we arrived at work. So her stamina is good, but not her Grampa belly.
I remember being really impressed by my Grampa’s huge belly. I also have a very clear memory of walking in on him drying off after a shower. He was fatter than my dad. I must have been 4 or 5.
M. imitated S. eating the pizza earlier but he burned his mouth and started crying. So we waited a while and took the picture again.
Fig 4. From L to R: Stinkles, Girl
This is our new cat, Friskers. I tried to name him Stinkles, but it didn’t take. Then I tried to name him Lolcat, but that didn’t take either. So he is Friskers. He is an excellent tree climber. He has been up in every tree in our yard. The first time he did this, he slipped and was hanging like that cat in the “Hang in there, baby” poster. D. made me get up on a ladder and rescue him. So now I know that my life is worth approximately one kitten life.
→ 2 CommentsTags: Uncategorized
Last Tuesday I took Diana to the Elysium Tonsillectomy And Auto Repair Center to get Diana a tonsillectomy and get the oil changed in my convertible. Both were a major success. We arrived at 7 a.m. and were back home at 10 a.m. I’ve been working from home until today, so that I can nurse her and parent the kids.
It turns out that adults take ten to fourteen days to recover from a tonsillectomy. I’m not quite sure why this is, but I do know that after the operation raw muscle tissue is exposed to the air. Diana mainly slept at first, so nursing mainly involved giving various medicines at the right times. A few days after that nursing mainly involved making her go back to bed, drugging her with codeine if necessary.
Before the operation I went shopping for tonsillectomy food for Diana and regular (Midwest) food for the kids and me. I didn’t know exactly what to get, so I made a few mistakes: frozen lemonade popsicles (too acidic), tomato soup (too acidic), mocha chip light gelato (little chocolate chips), cheese (what was I thinking?). The Midwest food I got for the kids and me was all perfect: bologna, sandwich-sliced pickles, regular potato chips (not the weird gourmet ones or the ridiculous baked ones), bread and butter pickles, regular oatmeal (the good brown sugar and maple kind). One major overlapping food that was both Midwestern and tonsillectomy-approved: Cream of Wheat.
Through painstaking trial and error I arrived at this set of tonsillectomy-approved food for the discerning vegetarian: Cream of Wheat, rainbow sherbet, mango sorbet, fresh and mushy brownies, vegetable broth, Slurpees from 7-11, Diet 7-Up with ice chips, and vegetarian ramen.
The ramen comes from Whole Foods by the way, which shows how much I love my wife because I don’t like going there. It’s all cramped and everyone there is morally superior to me. But I didn’t mind it so much this time because (1) I was on a mission of mercy and (2) I brought my son, who I let put random food in the cart. Matt’s random food list: chocolate cupcakes, cheesy bread sticks, one apple, brie, and a can of ravioli.
Aside: I have a rule that if I pick a cart with an old shopping list in it that I have to buy everything on the list. (This is somehow related to my collection of pictures that I found on the ground.) I don’t go shopping that often, so I’ve only had to follow the rule a few times. The main thing I have noticed about shopping lists with no context is that they are very vague. It will just say something like “pickles,” which could mean anything on 5 shelves in a space about two feet wide. In that case I try to get the version of the item that would most likely be the illustration of that word in a children’s book. We philosophers refer to this as the “Platonic ideal.” For pickles, this would be a big jar of deli pickles. For bread, I would buy a baguette (and if it were possible, a bike with a basket and a full-scale model of the Eiffel Tower to ride in front of).
I was going to mention a bunch of books that I recently bought with my birthday money but I don’t have time. (Did I mention that I turned 40????????? Well I just did, so kiss my 40-year-old butt!!!!!!!!!!11) Since “books” is already in the title, I will briefly mention two books: I just finished reading Founders At Work, which is a collection of interviews with founders of tech start ups. It’s strange to think that people exist with that much drive. At the age that these people were selling their companies for millions of dollars, I was watching TV trying to remember which beer can I had peed into. I think a good subtitle for Founders At Work would be “Founders At Work: What Was That Sound? Only The Starting Gun Ten Fucking Years Ago.”
The book that I am reading right now is Ideas: From Fire To Freud. This is the perfect book for us philosophers, and I’m trying to limit myself to just one chapter per night. I don’t know why, but lately I am crazy for summary histories and overviews of civilization. Somehow it’s scratching a brain-itch that I’ve had since I was a surly teenager. It also helps me understand why I find things like Whole Foods so annoying.