Bill tagged me.
Five things you didn't know about me:
- That device I'm staring at while on my afternoon walks is not a Blackberry,I'm not reading email. It's a Palm Pilot, I'm reading Planet Intertwingly.
- I was a garbage man at my dorm, freshman year in college.
- My first computer was a PCjr.
- I was asked to leave St. Peter's Basilica in VaticanCity, because I kept putting my hat on.
- I own a couple of pairs of pants.
In the December 2006edition of theInternational PHP Magazineyou'll find articles by some of my IBM colleagues:
PHP - A Language Implementer's Perspective -Experiments With the PHP Engine
By Graeme Johnson and Zoë Slattery
In this article we will describe some experimental work in building a PHP engine from existing virtual machine components. We were interested in seeing if we could reuse high performance VM components to create a high performance PHP implementation. We will talk about the process that we went through and what we learned about PHP along the way.
Service Component Architecture for PHP - Reusable Components and Effort-free Web Services
By Matthew Peters
In this article we will survey some of what Service Component Architecture (SCA) for PHP offers the programmer. We have high hopes that the combination of reusable components, which can be called either locally, or remotely via Web Services, with the same interface will be of interest, and that anyone who works with Web Services may be interested in the ease with which an SCA component can be deployed as a Web Service: a simple matter of adding annotations and dropping the component under the web server's document root.
Both Matthewand Graeme presented on these respective topics at theInternational PHP Conference last month.
Graeme; sorry I had to link you to my blog, I still can't find yours :-)
Thought I'd take the opportunity to teach the boys the concept of hexadecimal.
Dave Shields posted a blog entry the other day, "Yogi Yarns - On being lucky. First is not always best",in which he talks about his involvement in IBM's first official open source project, Jikes. Dave's current posts are a great read on open source in general. Highly recommended.
I couldn't resist sending him a note though, about a small piece of source code that I managed to convince my IP Lawyer at the time, Mr. X, to 'give away'. This was1994, and giving away source code wasn't something that normally happened in IBM at the time. Dave reposted my note in his blog.
Of course, the real credit goes to Mr. X. I swore I was going to give Mr. X a heart attack atsome point, with all the "crazy talk" that I threw at him. For some reason, he actually listened to me during my tirades,and realized that this particular rant, of wanting to give some customers some relatively harmless / worthless code, was not a completely stupid idea, and ran with it. The resulting license that he had me add to thedistribution bares a striking similarity to open source licenses you see today. Remember, this was 1994.
Of course, the real reason I responded was that it's impossible to resist someonesaying a record can never be broken. The question is, who's going to break Mr X's record?
I'm also reminded of an opposite case. Way back when, this guy I'd never heard of,Ward Cunningham, had a program on his web site called WikiWikiWeb.I was facinated. So much so that I wrote a lame clone of it in REXXfor OS/2. And then told Ward about it. This was about the same time, 1993 or1994.
Ward emailed me a few months ago, asking me if I still had the source. I never distributed the source, because, that was something thatsimply wasn't done. I had written some of it at work; it was IBM property,I couldn't just give it away.
I had a fun night, that night I got the email, trolling through lotsof my old source code. I have stuff going back to the early 90's. But I couldn't find my wiki clone. Sad. If I HAD given the code out, there'dbe a much better chance of it still be available, somewhere.
Update: Mr. X is Greg Doudnikoff.
Photo 'Mr - X', with a nice CC license, by Luiz Carlos. Found using the Create Commons Search Site.
In Should You Choose RELAX or JSON Now?, Robert Sayre claims"100% of the data-oriented use cases can be served better and faster by JSON. No 80/20 truism."
I've had a love/hate relationship with JSON over the last year, but I'm currently very positive on it. It has all the basic data types you need,and no more: numbers, strings, boolean, hash tables, arrays, and null.And it's not a document.
Photo 'stop', with a nice CC license, by MarkNick. Found using the Create Commons Search Site.
Yes, we camped out. At our local Target, which we believed was going to have 60 wii's available, and they did. My wife got the 5pm - 10pm slot, I got overnight. Kids stayed the entire time. It was frosty cold; literally. One of the shots in the flickr set shows the frost on one of our sleeping bags. The hot apple cider, hot Bojangles biscuits and hot Krispy Kreme doughnuts helped a little, but not enough.
I should point out this was the kids' idea. I was quite happy to wait till they became available on Amazon, and order from there. But they've been working us for the last few weeks about camping out, and when it finally came down to it, we folded pretty easily. The plan had been to head over at about 4am. Plans changed when we drove by at 4pm and saw about 9 people in line. By about midnight, there were 47 people in line. I think we could have arrived at 4am and just made it.
The crowd was great. Mostly young-ish nerdy types. The only shots I heard came from the Gears of War session someone had going. Power supplied by Lowes, next door, via an extremely long extension cord. Target really did this right. Came out at about 7pm to tell people they'd be opening the doors at 8am, and handing out vouchers at about 7am. That's the boys, to the right, holding our #16 voucher. Target let folks in early to use the restroom, also. Everyone was very friendly.
The Wii setup was easy, I guess. My 13 year old did it. I got it added to the network; it was no more difficult than adding any new device to our network was. Which for me, is a number of steps (security, dhcp, etc). For most people, I'm sure it will just 'work'.
The boys played Wii Sports all day; that's not my type of game, but they enjoyed it. Note you will need to have more 'open space' in your gaming area than normal, to allow for folks making full swinging motions with bats and rackets, as well as making plenty of boxing motions.
The boys didn't have enough money to get any games, so I bought one, and gave them the choice of Super Monkey Ball, Need for Speed, or Excite Truck, which seemed like the only ones I'd really play. They chose Excite Truck. Finally got to play last night at about 10pm.
The wii controller is quite cool. Bluetooth. Wonder if my Mac can see it, and what it would do with it? For the driving game, you basically hold the controller horizontally, then tilt it to steer and some other actions. I felt like I had to hold the controller a little unnaturally to do this, but once I got in the groove (a few minutes), it was pretty comfortable and easy.
BTW, as an additional non-proprietary thing they've done, you can use an SD memory card with the system, somehow; looks like it will show pictures from a phone or camera right now.
The internet connection doesn't seem to do much right now. One section of the system seemed to indicate that we'll be able to browse the internet soon. Showing an image of a Google web page. I guess if you're trying to show people you can connect to the web, showing them Google gets the idea across right away. Though it makes me wonder if there isn't some Google linkage coming. I'll be interested to see if they have some way to 'extend' web pages to do something interesting on them, when browsing on the wii. Also interested to see if people end up finding some networkable things on the wii. I was able to ping mine, but it doesn't have port 80 open.
Looking forward to downloading VectorMan from the Genesis section of the downloadable classic games area. Hope it's just $5, like a lot of them are.
Two of my IBM colleagues, Julian Dolby and Graeme Johnson, recently presented at theInternational PHP Conference. Their presentation,PHP: A Language Implementor's Perpective, is availablehere.
I should point out that the topics presented here are research topics undertakenby IBM. Both presentations are the result of IBMers taking research and development experience in programming languagesand applying that to PHP. And specifically, the challenges that PHP presents.
Brief overview ...
Julian's presented on static analysis of PHP, specifically, how static analysis can be used to identify security problems.
Graeme's presented on looking at the PHP runtime through the eyes of someonewho has been developing Java VMs for the last decade.
Interesting stuff for folks interested in the nuts and bolts of dynamic languagesand runtimes, and of course, specifically, PHP.
BTW, this was the same conference that Tim Bray presented on web frameworks, and then blogged about inComparing Frameworks.
Photo "the art of runtime performance optimization", with a nice CC license, by bitmapr. Found using the Create Commons Search Site.
I've been using Bloglines for ... a while. I wonderhow long? What did I use before? hmmm ... Anyhoo, one of those thingsthat shakes your belief in a product happened to me last night, as I was adding a feed to my bloglines collection.
All of my feeds disappeared.
For a few hours, at least. This morning, everything was back theway it used to be, including that new feed that I had tried to add.
Important Lesson: makea back up of your feed list every now and again. This would typicallybe in OPML, which everyone seems to be able to export and then import. There are all sorts of ways you can lose your feed list,including some suprise ones.
My last copy was just over a month old, which was good enough for jazz.
While it was down, I decided to poke around and see what else was available. I had recently loaded my bloglines opml intoGoogle Reader to give it a try, so I continued to giveit a try. I rather like it. And it's small fonts. (I think I'mquite fortunate that, of all the problems that people start accumulating when they get old, I don't have problems with my vision).I think I can get used to it.
Also took a quick tour of feedlounge, because I'veheard good things about it. $5 / month. I can deal with that, I think.I just played a little, I should do another 24 tour with it I guess.
I used to use Shrook back in the day, and when I foundit on VersionTracker, the reviews didn't seem so great, so I didn't bother.
Listening to a slightly old MacBreak Weekly today, I heard Leoput a good word in for NetNewsWire, which I guess got bought by NewsGator sometime in the recent past. I should try that also. I think the same show mentioned bothDaring Fireball and The Macalope which I should try reading(again, for Daring Fireball).
w/r/t the online vs. desktop dilemma, I think I'm still firmly in theonline camp (bloglines, google reader, feedlounge). Because there are stilloccaisons where I'm on some rando computer and want to check da feeds.
There are a number of downsides to Google Reader compared to Bloglines:
- having my feed list easily publically available
- groups, and feeds in groups not user-sortable
- difficult to move feeds between groups
- decent weather, package tracking?
- subscribe bookmarklet doesn't work so well
Update: fixed a typo, added the picture
Photo "civilized reader", with a nice CC license, by ytang3. Found using the Create Commons Search Site.
A colleague of mine, Andy Wharmby, sent me a link the other day.
Terribly exciting, no? Well, maybe not for you. But a bunch of us in IBM were quite happy.
Andy's got a cool job right now, which is: learn the innards of the php runtime. As IBM is getting more serious about PHP, we figured we had to get our fingers into the fun stuff, especially since we have a little experience with virtual machines and runtimes like this. Andy, for instance, has been working on the Java VM for a while.
Even so, getting a bug report like this filed doesn't seem like such a big deal; it's open source baby! My mom could submit bugs reports. But my mom doesn't work at IBM. We're fairly strict about work-related open source activities, after some of the events that have transpired over the last few years; we need not speak of that. Strict means getting approvals, etc. And to be precise, it's not the filing of bugs that anyone in IBM cares about, but shipping code, and by implication, submitting proposed fixes. Which Andy did. It's not an impossible chore to get this stuff done, but it takes some time to get everything lined up.
Everything's lined up.
BTW, Andy's fix was accepted with a small tweak from the Marcus and some eagle-eyed code checking from Pierre ... good to see the community keeping us honest.
Oh, Andy, I can't seem to find your blog. Where is it? :-)
Photo "the squashed bug", with a nice CC license, by [n]. Found using the Create Commons Search Site.
So, this dWorks blog supports tagging, which is great and all, but doesn't seem to support generating a feed of entries based on the tags, which isn't great. I asked the various &dieties; that I knew, Elias Torres, who I ended up having a great extended call with today, and James Snell, if they knew how to do this. In fact, I remembered James posting a blog entry with some roller atom generation hacks. Upside, they thought it was possible, but didn't have anything they could give me at the moment.
I started with James' blog post Deploying a Comments Feed in Roller, which got me most of the way there. And then tweaking from there.
Here's what I have so far: http://www.muellerware.org/projects/FeedTagged/index.html
Debugging these templates is ... a pain. And the programming facilities, using Velocity, aren't quite complete enoughfor my tastes.
One problem was the $requestParameters macro will give you the values for a particular query string parameter, but it gives you the values as an array (which is what you want). But Velocity doesn't seem to have any way of accessing arrays. Which seems totally insane. I found a little utility object the roller exposes called $utilities with a method called stringArrayToString which was ... good enough.
How did I find the $utilities variable? Roller's help. Notice however, no description of what $utilities is, is actually provided. How did I find stringArrayToString?
Debugging even something as small as this template is quite painful. One false move, and you'll get a 500 back from your server, with no indication of what the problem is. The trick is to create another template that you can plop tiny bits of code to exercise, and test that first. Want to know what class the $utilities object is, so you can find what methods are available? Just put the string $utilities in the 'testing' template, save, and then view the template. Voila. Hopefully you'll get the default toString() representation of the object, yielding the class name. From there ... google is your friend.
The crudest form of doIt / printIt I think I've ever used, but good enough for jazz.
Anyway, looks like it's functional, and validates.
Photo "Blade Here", with a nice CC license, by alykat. Found using the Create Commons Search Site.
I'm kinda bummed I missed the Zend/PHP Conference, which is wrapping up today. (Still waiting for the day when I can pay a few dollars and attend conference sessions virtually). Lots of interesting people, sessions and announcements. Right before the conference, someone had suggested tagging stuff about the conference with "zendconference2006". A few things tagged at del.icio.us and technorati, and boatloads of pictures got tagged at flickr.
IBM had quite a few folks presenting talks or in panels, including:
- Panel Discussion: How Do The Stacks Stack Up? that included Anant Jhingran
- Interoperability between J2EE and PHP by Stew Nicholas (IBM) and Andi Gutmans (Zend)
- Web Services and SOA with the Service Component Architecture by Graham Charters
- Querying XML - It's just data after all... by Kitman Cheung
- Unlocking The Enterprise Using PHP and Messaging and Queuing by Dave Renshaw
- Innovation That Matters: Making it Easy for Developers to Rapidly Deploy Usable & Actionable Information by Anant Jhingran and Mike Smith
Here's a list of pointers to other coverage.
update: fixed typo
I don't travel much, anymore, so I've gotten out of practice. Here are some things to remember to bring and/or buy.
- ethernet cables
I so rarely use the wired intarweb anymore that I don't even carry a cable in my backpack. That's dumb. Some places still only have the wired intarweb.
- airport express
Turns a wired connection into a wireless one. Useful even for just a hotelroom so I don't have to work at that thing they call a desk. Also, I havethe previous version of this device, which I use to stream Radio Paradise into my stereosystem at home, so this would be an upgrade of that device. That device is also sometimes referred to as a G3 iBook. My family would be happy to not have to unplug the stereo out every time theywant to use the "family room" laptop. And, the stereo jack onthe iBook is cracking anyway and probably doesn't have too much longer to live.
- note taking gear
I always have note taking gear with me. A Fisher Bullet Penand atiny IBM Think notepadin my pocket.But this isn't quite enough to take notes at a conference, like the one I just attended. For the family trip to Italy this summer, I got Moleskine Cahier Notebooksto keep a journal, and these worked great. I filled one up, and the boys did some scribbling as well.Sandy had a different journal thing she got from a friend. I tried using one at the conference, andit worked pretty well, except I was doing a fair amount of non-linear writing. That's where it getstricky. A daily log is simple; page after page after page. I had daily schedules, expense, notes onpresentations, questions to ask people, etc. It just barely worked.
I think the next thing to try is index cards.And pre-print with relevant templates from the absolutely gorgeousD*I*Y Planner Hipster PDA collection from Douglas Johnston.
I hate the thought of carrying these around in my pocket, which I'm sure I'll want to do at some point.I wonder if anyone makes 3"x5" index cards with rounded corners?
I spent the bulk of my time in the car, on the way to DC (5 hours), listening to podcasts. I sort of stopped listening to podcasts over a year ago (they got boring), but I decided to start looking around thereagain. Here's what I listened to on the trip:
php|architect's Pro::PHP Podcast. It's 1/2 interviewsand half news. Good stuff, if you're trying to track what's going on in the PHP world. Think I'm all caught up at this point.
RedMonk Radio from the boysat RedMonk. No, I don't know why they have an eyeless, souless,creepily smiling zombie on their home page. What is it with England and zombies? Shaun of the Dead?28 days later? Disclaimer:IBM is a Redmonk client. :-) Anyway, always a good listen. Think I'm all caught up at this point.
developerWorks podcasts. Grabbed these at the last minute before I left on my trip. I downloaded interviewswith folks I've worked / chatted with over the years, including John Kellerman (previous boss, fellowBoilerMaker - go Boilers!), Carol Jones, Rod Smith, Bobby Woolf.Note these are Old Dudes (and Dudettes) Who Know Smalltalk(I think Carol and Rod at least dabbled in ST anyway). It was fun to listen to old friends, butI didn't really learn anything from it; I hear it at work all the time anyway. I suspect it will be good for non-IBMers to listen to.
I will probably also need a new iPod soon; my old 3G 15G is really getting old and crusty.
And who can blame him, it's a blast! Maybe it's the simplicity of it. I'll rationalize that he'll empirically learn some physics ...
Just got back from the City of Ginormous Escalators, aka Washington, DC. I was there for The 2006 DC PHP Conference. To the right is picture of a typical escalator to the Metro subway system.
The conference was pretty small; about 80 people; in two small-ish conference rooms in the hotel. But everyone was great. Conferences are all about the people anyway. With the small crowd, it meant being able to spend time with a significant percentage of the people there. It was a mix of PHP thought leaders, everyday PHP programmers, and, since it was based in DC, a lot of folks focused on the unique industry that is DC - government.
Here's some notes ...
Writing Maintainable Code with PHP by Laura Thomson of OmniTI. Pretty much standard fare for an old programmer likeme, but good info for new folk. And it never hurts to hear this stuff again.Recommended the PEAR coding standards;arghhh ... spaces instead of tabs ...
PHP Security Testingby Chris Shiflett of OmniTI. This was good; I don't think I've ever reallythought about using a test framework specifically for securitytesting, but it obviously makes a lot of sense. I mean, we always test forcases we know will fail, or are likely to cause problems, as well as for cases we know will succeed. But I've never specifically thought abouttesting for security. Mentioned Selenium, which I've heardof but know nothing about. Note to self, check it out.Chris also gave a talk on general security vulnerabilities and attacks against them, which I couldn'tattend.
ext/soap with eBay Web Services by Adam Trachtenberg of eBay.Fascinating. Numbers: 59% of eBay listings are created from their WS APIs rather thanthrough the web ui. One million WS requests a day. 100K sellers using 3rd partytools that use the WS. eBay wsdl file is 3Mb (the huge wsdl contains human-consumable documentation on the APIs (like JavaDoc)). New version of the APIs roll outevery week, and each lasts a year or so, and there are separate APIs for differentparts of the world; meaning hundreds of versions of the API are available simultaneously (but they don't change all that much). Showed how to build https://www.dudewheresmyusedcar.com/.This was the first positive thing I've heard w/r/t WS-* in a long time.That's great. It's good to see people using this stuff in practicalways. I'm still not convinced it's the best answer though.Side note: Adam asked early on how many people have sold stuff on eBay, and I was embarassedto not be able to raise my hand. So I found something to sell: A pre-owned Metro FareCard.
High Volume PHP & MySQL Scaling Techniques by Eli White of digg.Went over typical clustering techniques, most of which I'm basically familiar with,although memcached, I'm not.Talked about database shards, a term I've not heard of before, but the concept I'm veryfamiliar with. None the less, I can't help associating the term "shard" with a scene with Philip Seymour Hoffman from Along Came Polly;discretion prevents me from explaining more. Eli also presentedTop PHP Feautures You Didn't Know Existed, but I was sitting in thevirtual parking lot that is I-95 South in Northern Virginia on a Friday afternoon instead of attending. Like my eBay n00by-ness, I don't read digg much, so I justadded it to my blogroll. Gotta keep up with the kewl kids!
Rasmus Lerdorf did two presentations in one; one was "Yes, PHP is ugly, get over it. Go solve some problems." The other was the Getting Rich with PHP 5.The first was definitely a pep-rally speech, but you know, I need one of those every now and again with PHP. The second one talked about valgrind/callgrind.Need to look into these.
Enabling Digital Identityby David Recordon of Versign. This was great; I knew almost nothing about OpenID before, and now I know ... something. Anything to get the nastiness of maintaining an authentication system yourself isa big win, as far as I'm concerned. Went ahead andcreated an account at https://pip.verisignlabs.com/,now I just need to figure out what to do with it. Also need to look furtherinto Yahoo's Browser-Based Authentication thing.
- General non-interest in frameworks
- Too much PHP, not enough C code (performance issues)
I was in total commiserate mode on this. Good frameworks are great, but theytake a while to become good. Before that, they're not so good. Do stuff youdon't want. Hard to debug. etc, etc. Maybe I'm just frameworked-outat the moment. There's also some confusion in the air; people callZend Framework a framework, but it's really just a bagof useful classes and functions. CakePHP and symfony and RoR are frameworks.
- Hard to hire good PHP programmers
I think this is true in general, it's hard to hiregood programmers; but PHP has a special problem in that the languageis so approachable that lots of people can 'learn' it, or enough ofit to be dangerous, and not really be ... programmers.
- REST payloads are XML.
I saw this in multiple presentations; REST and XML in close proximityto each other. That's too bad, since adding XML to the REST story justunneccessarily complicates things. JSON == good.
- Web services are only for server-to-server communication.
Not sure whatweb browser-to-server communication is, if it's not web services, but thereyou have it. I was really dumb-founded by this. What is XmlHttpRequestif not a web service? It's time for some serious head-shaping, if peoplethink they can't reuse what they're using between clients and servers, forwhat they're using between servers and servers.
Photo "IMG_2344", with a nice CC license, by joelogon. Found using the Create Commons Search Site.