December 28, 2005
Boston Genius Workshop
Reading through Seth Gottlieb's CMS weblog and stumbled into his writeup of the most recent Boston Genius Workshop. The more I look around the more I realize that Boston has a lot of personally, and professionally interesting social activity.
So far I've attended the MySQL and PHP meetups, one must start somewhere.
Posted by mike at 11:03 PM
Creative Commons (What have you done?)
If you didn't have a chance to see his Free Culture keynote a few years back (he delivered it around a hundred times at various places), it's worth watching. I saw it the first year I went to OSCON . . . powerful message. There's a lot more of Larry to be found in his books and other presentations, but I like the point of his Free Culture keynote, always gets me riled up to do something.
A few weeks back Heidi and I ended up spending an evening talking about being more generous in our philanthropic contributions, and setting a yearly goal to donate more to causes we found compelling. Larry's call came right in time, and the Creative Commons is compelling.
What have you done?
Update: it's getting down to the wire . . . if you still haven't donated be sure to read this on Flickr before you do. I missed it, could have made a bigger difference.
Posted by mike at 8:40 AM
December 27, 2005
Apache FOP Moving Forward
For a long time now, the Apache FOP (Formatting Objects Processor) project developers have been squirrelled away working on a complete rewrite of the formatting objects processing engine. This week (Christmas Day to be exact) the beta release (version 0.91) of the rewrite was announced and made available.
A summary of the project:
FOP (Formatting Objects Processor) is the world's first print formatter driven by XSL formatting objects (XSL-FO) and the world's first output independent formatter. It is a Java application that reads a formatting object (FO) tree and renders the resulting pages to a specified output. Output formats currently supported include PDF, PCL, PS, SVG, XML (area tree representation), Print, AWT, MIF and TXT. The primary output target is PDF.
We've been using FOP at Tufts for dynamic PDF generation since 2002 and have been wondering about the work. Glad to see things are moving forward.
Posted by mike at 5:31 PM
December 26, 2005
Golfing Season Comes to an End
My golfing buddy, Dave, and I have concurred that the New England golfing season is officially over. Yes, the favorite golf course officially closed back on the 2nd week in November. We did a full 18-holes the 1st week of November and made it through with record-tying scores despite the heavier clothes, chilled clubs and a jittery swing.
But the course closing wasn't enough to fully convince us. Not far up the road from where we live is a driving range that's open 365 days a year. It's a multi-tier range that has heaters in the lower, covered level. For the past few weeks Dave and I have joked that the season isn't over until we hit a bucket of balls in the falling snow.
Today we got close to that, although the temperature got up into the 40s so the downpour ended up being rain instead of snow. The heaters were pretty impressive (and are included in the price of a bucket). It was a rough session for both of us, having not swung a club for almost two months, but a worthy ceremony to officially close up a good season.
Looking forward to spring . . .
Posted by mike at 11:38 PM
December 22, 2005
How to not get a project done . . .
This week I was asked to do a specific project. I had been promised no distractions so I could get the work done. It's only a few days worth of work, but somehow getting the time has eluded me.
The week in review:
- Monday - Offsite meeting in morning, afternoon doing midpoint reviews and goal setting with some employees
- Tuesday - developers meeting in morning, another important project ended up taking all afternoon
- Wednesday - remainder of midpoint reviews and goal setting meetings, school holiday party
- Thursday - conference call, release new Tufts OpenCourseWare site
- Friday - long meeting scheduled, early release for holiday?
I have been able to squeeze small pieces of the project in here or there, but now it's Thursday night and there's no chance I'll get it done in one day. Perhaps I can make some significant progress tomorow before and after my meetings. At this point I need to fly like the wind to get things completed, but it's likely that it won't be until next week that I really get going. Unfortunately I have another project like this next week.
Posted by mike at 8:36 PM
December 21, 2005
Solaris Packages (pkgadd format) for MySQL!
In going to grab MySQL 5.0.17 today I noticed that the MySQL folks are now providing the Solaris binaries in Solaris packaging (pkgadd) format. That is so cool, now I don't have to go to the trouble of packaging it myself. I was planning to get started on a plan to move our dev environment up to 5.0 next week. Now rather than spending the day getting the build script up to speed I can do something else. I used to compile MySQL myself, but I just can't see the justification anymore, especially now that the pkgadd packages are available.
It hasn't been that long since I last came and grabbed MySQL, although that was for OS X so I might have missed the availability of Solaris packages.
Now, what will I do with my day?
Posted by mike at 8:36 AM
December 20, 2005
Files that Don't Belong in MySQL Data Directories
If you've ever been tempted to use your MySQL data directory for storing things other than that which is created by MySQL, don't. Today I went to DROP a database in our dev environment (in order to rebuild it with a dump from production) and got this response:
mysql-dev> DROP DATABASE medical_admin; ERROR 1010 (HY000): Error dropping database (can't rmdir './medical_admin/', errno: 17)
I've gotten this very error when triggers were first introduced and the .TRG file wasn't being removed on the DROP (we do not have triggers on this database though, and that bug was fixed). So I trucked (cd) over to the data dir and sure enough, an ls -l on the /data/mysql/medical_admin dirictory revealed:
/data/mysql> ls -l medical_admin total 1 -rwxr-xr-- 1 mysql mysql 175 Nov 15 13:30 changed_evaluations.dat
Not good. Who knows why that was stuck there, but let me just reiterate that there are much better places for such files. If the file was huge, like many, many gigabytes, and it only fit on our large storage array I could be more forgiving if it was in /data or even /data/mysql, but not down in the database directory. In this case it looks like ~ or /tmp would be a much better fit.
Posted by mike at 4:57 PM
December 18, 2005
Making a Neighborhood a Neighborhood
A few months back Heidi decided that we should throw a neighborhood holiday party. We moved into our current neighborhood about 5 months ago and have started to get to know folks on varying degrees. Heidi thought it would be a nice experience to get everyone together for an evening of hot chocolate and treats.
So a few weeks back Heidi printed up invitations and walked them around to eight different households in our immediate neighborhood. Tonight starting at 6pm we had a stream of people coming in, and in the end we had more people than we could accomodate. For several hours the house was filled with lively conversation, introductions, laughter and just a great feeling. The neighborhood is filled with great people of diverse backgrounds, ages, careers. Getting together with them was well worth the energy to plan and prepare.
It's clear that for many folks this is already a great neighborhood, but for us that are newer it takes a little time, and maybe some work to become a part of that goodness. We were delighted to learn that some of the attendees hadn't met some of the other attendees. I hope that over time these friendships become a real part of who we are. That's what a neighborhood should be, right?
One of the neighbors titled the party the "Annual Neighborhood Holiday Party," suggesting that we had committed to putting on such an event every year. To that I say "yes, awesome, we'll do it." I can't wait until next year. We've already hashed around some ideas to make the layout better (so not so many people don't have a seat), and identified some additional households to invite (sorry we missed you this year).
If you don't know your neighbors, take the time to introduce yourself and make a friend. Perhaps throwing a party is beyond what you can do, but at least take the time to help yourself and those around you feel welcome. Who knows, maybe you'll start to think of your neighborhood as a neighborhood.
Posted by mike at 10:31 PM
Recent Changes in MySQL
Got back to my favorite place in the MySQL docs tonight, the release notes for the 5.0 tree. I did a quick writeup back when 5.0.12 came out looking at changes in the recent history. Some significant changes between then and now, at version 5.0.18 (not released):
- CREATE VIEW now allows for DEFINER, to provide defining user, and SQL SECURITY syntax to set DEFINER or INVOKER - syntax allowed but parsed and ignored
- FEDERATED storage engine now uses the CONNECTION option for connection string (as opposed to the previously used COMMENT)
- OPTIMIZE TABLE and HANDLER not allowed in stored routines and triggers
- mysqldump correctly outputs triggers
- and a ton of bugs
5.0.14 (not released)
- RENAME TABLE works for views
- Table, column and constraint returned in error message when an InnoDB foreign key constraint is violated (this is awesome)
- and a ton of bugs
- The following now cause an implicit COMMIT; CREATE VIEW, ALTER VIEW, DROP VIEW, CREATE TRIGGER, DROP TRIGGER, CREATE USER, RENAME USER, and DROP USER
- and a ton of bugs
- CREATE VIEW uses DEFINER and SQL SECURITY syntax
- and a ton of bugs
- CREATE TRIGGER now allows for a DEFINER, to set the user who will be used to determine privileges when executing the trigger
- Stored procedures can contain recursion, but recursion is still not allowed in stored functions and triggers.
- Many bugs
Posted by mike at 9:27 PM
December 15, 2005
Presenting at MySQL Users Conference in Santa Clara
Looks like Jay and I will be presenting at the 2006 MySQL User's Conference in Santa Clara in April. Vee (from O'Reilly) just sent the notification this evening that our proposal was accepted. This news is exciting, foremost because it means that I'll be attending the conference. Oh, I've been there for the past two years but there's never a gaurantee that I'll get to return unless I'm on the program to present. Secondly that I'll get a chance to hang out with Jay, who I've only met once in person after many months of virtual slavery writing Pro MySQL.
Now that I say that, if the community team isn't already thinking about this, I think it would be cool to have a "Meet Planet MySQL" function where contributors and members of the community alike could gather somewhere and put faces with names, ask questions etc. Perhaps that will happen naturally throughout the conference and it's too much for an already busy schedule. If not formally planned, perhaps a BOF one evening?
Back to the presentation . . . the title is "What do you mean there are no backups?", a 45 minute session that is split into two sections . . . the non-technical, business side of planning for backups and the technical options for building a MySQL backup. It sounded great in the abstract, but now as we have to start putting together the actual presentation I'm not quite sure how we're going to cram both of those into 45-minutes.
Hope to see you there.
Posted by mike at 10:06 PM
Video of Philip Antoniades' Presentation at Boston MySQL Meetup
Finally got an evening to get the video (alternate site) of Monday night's MySQL meetup captured and ripped down to a manageable Quicktime move. The presentation is Philip Antoniades speaking about MySQL 5's new features.
It's really pretty easy with MiniDV and a firewire cable. Used Final Cut to throw in some titles (Creative Commons), fades and tweak the audio a bit. The longest part of the whole process was the export to Quicktime, about 2 hours while I worked on other things.
If you're looking for a dazzling multimedia experience, this isn't for you. The most important thing was to get the audio sounding good, and the ability to see the slides. We may improve upon it in future meetups, but for now you'll have to deal with a darkened face in favor of seeing the slides.
If there's enough complaining I can pretty easily make a larger or smaller version, and perhaps an mp3. Let me know in the comments if any of those interest you and I'll update with whatever the popular demands.
And just to be clear, Philip said it was OK to record as long as we put it up under a Creative Commons license.
Posted by mike at 8:55 PM
December 14, 2005
Linux (+Apache/Perl/MySQL) Consultant Needed
A few years back we were asked by another Medical school if they could take a copy of our code and run it elsewhere. We got all excited and said yes, but told them they had to get their own person to run it. We happened to have connections to a consultant, so we got the two in touch and off they went to get things going.
That ran OK until the consultant got a job and couldn't help anymore. When we were asked about who could maintain their site we didn't have anyone else, and I thought it good for us to get experience installing our software elsewhere.
Today we have five installations in the US and Africa, with two more coming. All of the schools would rather have us do the build/install/configure/maintain and pay a fee than try to bring someone on themselves. I've been doing all of this work, but have just come to accept that it would probably be better to bring someone in to do the work. The existing plan doesn't scale too well. In general we need someone to set up machines to run our Apache/Perl/MySQL site. A little more specific:
- install school-requested OS - likelly RedHat or BSD (with Perl, SSL libs, MySQL etc)
- build and install a statically compiled Apache with mod_perl, mod_ssl and Embperl
- install handful of other applications/libraries (libxml, libsxlt, FOP)
- install slew of Perl libraries (60+)
- install and configure (the toughest part) the TUSK software - all Perl (Mason, Embperl, OO)
This list is grossly simplified. We ask the schools to anticipate 40 hours of work for a new server and 10 for an upgrade (where just the last step is done). We would also entertain the idea of using extra hours to streamline the installation and upgrade process. The trick is that any particular school might want an installation now, and then not need anything else for another four months. So the work is kind of spotty, more of something for a side project but not to keep bread on the table.
Anyone interested could contact me. There is no requirement to be in any particular location . . . in fact, the more training I do on IM with that nifty logging feature on, the easier it is to trace back through the steps.
While I'm at it, I've been asked to keep my ears open for a Java programmer who's looking for a 2-year gig to build a concept map tool for another department here at Tufts.
Posted by mike at 3:15 PM
Article on Managing MySQL for OS X
O'Reilly Network has a nice article by Robert Daeley on managing MySQL on OS X. Robert starts with getting MySQL running on OS X and then does a brief overview of several tools for OS X. These include MySQL Administrator, YourSQL, phpMyAdmin and the mysql> command-line client. A good introduction to the tools available to folks using MySQL on their Mac.
Posted by mike at 11:42 AM
December 13, 2005
Is MySQL Simple or Complex (or both)?
At last night's Boston MySQL meetup someone raised a point that I've been thinking about off and on for the last day.
The attendee suggested that for years MySQL was the database that didn't have all the frills. It was simple to use, easy to maintain, and performed better than a more complex database. MySQL AB has been working on changing that perception for some time. Misconceptions about lack of transactions and referential integrity have been a battle since back in the 3.23.x days. Now with the release of 5, the message seems to be even stronger. It's no longer the database that it used to be, it's grown up, all of the features that it's been criticized for not having are now there in some form, and a lot more greatness is in the pipe.
So the question is . . . What happens to the people who really just wanted a simple, no frills, easy to use database. Based on the message, MySQL is no longer the database for them. Right?
Philip's answer was something to the extent of walking both sides of the street. Maybe that's true. Maybe MySQL can have all of this wonderful functionality that makes them viable in the enterprise arena, and at the same time stick to the 15-minute install rule and keep the clutter to a minimum for folks who love MyISAM, simple SQL from the application, and never want to go farther into metadata than show tables. That's why I started to use MySQL in the first place so many years ago, you didn't have to know much about a database to get it up and running and into use, and the word on the street was that for ease of use and maintenance, MySQL was the way to go.
I'm no marketing expert, but based on how much it takes to change a perception I'd guess that the work to move people to understand "we're mature and full-featured" means there's no room for the "we're really simple and easy to use/manage."
So what does happen to the person who wants a simple database and sees MySQL as more of an enterprise database? How does MySQL hang onto those folks? Or is it intentional to move up the ladder a bit and leave them behind?
Posted by mike at 3:56 PM
December 12, 2005
Boston MySQL Meetup Report
Attendance was ~25 and a fairly low key. After some pizza we got right into Philip's presentation, "What's New in MySQL 5." Philip gave 10 tips or reasons for migrating to 5.0, along with a host of other information about the company, the database architecture etc. A good presentation with a lot of background and in-depth information about MySQL. After the 40-minute presentation there was another 20 minutes of Q/A, which was also pretty in-depth. Philip knows his MySQL stuff.
I recorded the meeting on my PV-GS250, using a lapel mic that Sheeri brought. I will put the video up once I get a chance to do the "postproduction." Biggest problem, my 100gb hard drive is up in the 90gb range. Must move a few things around first before attempting to capture and edit. Coming soon . . .
Posted by mike at 10:23 PM
Too Long Without Reading Derek
Several months back I switched to a new aggregator, Shrook. Yes, I actually like it enough to pay the $25 registration fee.
Somehow I failed to transfer Derek Balling's feed from whatever I used before into my new reader. Today I was poking around at LISA coverage and the latest with LOPSA and stumbled back into Derek's weblog.
A few items that made me laugh out loud:
On enrolling for classes at Vassar College:
Apparently I'm on the meal-plan and getting a dorm-room assigned for Spring '06. I called them up and asked if they had married housing available that would support me, my fiancee, four cats and a dog, and if not, then maybe I might have to reconsider their housing plan. *grin* (to my understanding Derek has none of these)
Of course, maybe I'm wrong... maybe there's some latent interest in 2WD SUVs in England that I wasn't privy to in the past. But I'm not exactly counting on it.
I talked to Derek one time at OSCON (in the extremely slow elevator). The conversation was something like:
Me: Oh, hi Derek, I read your weblog.
Derek: That's pretty scary.
Me: I've read your book too.
Derek: Oh, that's much better.
I'm not really sure why I like reading Derek, my best guess is that I'm kind of the opposite; quiet, reserved about my opinions, and never one to speak out. I guess it's interesting, and enjoyable to see how the other side lives.
Posted by mike at 9:41 PM
Oh Yea, Grant Written and Submitted
Several weeks back I wrote about a grant that a handful of folks at Tufts were working on. Through a lot of effort, long meetings, and late night revisions the grant was submitted. It's not for another few months that we'll know if it will be funded, but I think we've put together a pretty solid proposal with some interesting technical problems to solve and great letters of support for the projects.
As I got into the writing I got a little overwhelmed, can be tedious work. Looking back it wasn't so bad, especially since there were several people to divide the work between. In some ways it was a flashback to the experience of doing a project in grad school, where everyone has different pieces and are all racing to get them done and then trying to make them meld together as one.
Posted by mike at 11:20 AM
December 10, 2005
iPods Maintain Value—Leads to New Video iPod
On Friday I upgraded to a 5th generation (video) iPod, black 60gb model. After hearing that Pete sold his iPod I hopped on eBay and found that people were paying well for other 20gb, 4th generation iPods. Mine was in great shape, I had kept it in an iSkin case for most of it's life (I had it for ~1 year). Without much thought I threw mine up for sale.
I found it interesting that I could sell my 20gb iPod for not much less than the price of a new 30gb video iPod. It was the same the last time I sold an iPod, a year ago. I sold my 15gb, 2nd Gen iPod, and was suprised then how much they could fetch on eBay. So in my mind the iPod retains it's value pretty well. If after one year of use I can sell it for 2/3 what I paid for it I think it's compelling to keep upgrading. Perhaps this is more like an iPod leasing program.
On Thursday the auction closed, Friday on my lunch break I travelled to the nearest Apple store (yes, there are four in greater Boston) to "look at one." The Cambridge Apple store was pretty crazy, three checkout lines, a few people in each one. They even had a special express line for iPod purchasers only. After toying with one of the 60gb models for a few minutes I could not resist.
The video is pretty good for the size, but I'm not sure how much I'll watch video vs listen to music. I first watched U2's Vertigo tour, a 2-hour concert from Chicago recorded on Tivo and ripped down to a compatible format. In fact, with Tivo in the picture it's likely there will be a nightly extraction from the Tivo to iPod. I wasn't so crazy about watching video on the train crammed in next to other folks. Will be interesting to see how much I use the video feature.
The iPhoto viewer is pretty cool, and the pictures actually look pretty decent. Having my photos on the iPod wasn't a compelling feature but I will definitely show photos to folks on the screen. I think the kids are really going to like that feature.
The iSkin evo3 seems like a must for protection (the Apple-included sleeve is pretty skimpy). Also looking at a second sync cable for work, car charger, and I'd love to get a nice set of speakers. The sound from Heidi's Bose Wave Music System, in the kitchen, is pretty incredible. This has led to looking at the Bose SoundDock but the reviews seem to indicate that the Klipsch speakers might deliver better sound. I like the look of the Promedia Ultra 2, perhaps accompanied by the stereo connection kit?
Posted by mike at 3:32 PM
December 9, 2005
Unix-based NTLM Authentication Server
This is crazy, this afternoon I'm looking into ways to build a Windows authentication mechanism (using NTLM) on one of our Unix servers.
We've been talking to Real Networks about authenticating users before providing Real streams. The current Real authentication allows you to either manually manage user accounts through the admin tool or use Windows authentication. Neither will work for us. With thousands of users in our system there's no way we're going to manually control who can or can't look at a clip.
So I turn to the second option, NT authentication. We have 0 experience with NTLM, and nery a Windows box in sight, but it's something, which is better than nothing. Apparently the Real server can tie into Windows authentication to ask if a user is allowed to view a clip. From our conversation with Real, the authentication mechanism is to grab a username and password from the URL, pass it off to the NTLM server and allow/deny based on the response.
So in my head I think "if only we could get a Unix-based NTLM service that we could hack to work with MySQL." There's a lot of stuff out there for tying various applications to NTLM, but not much in the way of offering an NTLM service. After some digging around I've stumbled onto the NTLM Authorization Proxy Server, which appears to be designed to pass requests off to a real NTLM service but also indicates that it can stand alone. As far as hacking the code to work with MySQL, it's written in Python and is open source.
So that's a start. I'm not sure how important this is, and I'm really supposed to be working on something else (actually many something elses). This looks like a cool thing to play with so I'm sure I'll find time to hack around on it. More to come if that happens . . .
Posted by mike at 3:20 PM
December 7, 2005
Boston MySQL Meetup December 12th
The Boston MySQL meetup is happening next Monday, December 12th, for the second time. The meeting will be held in the same location, Optaros. As with the inaugural session, MySQL AB is providing pizza and soda. There was plenty to go around last time. There will be more MySQL, O'Reilly, and Apress stuff given away this month as well.
The topic? Philip Antoniades, MySQL Senior System Engineer, is coming up from New York to speak about new features in MySQL 5.
The group is up to 106 members now, 30 have confirmed they will be in attendance on Monday. Looking forward to another good meeting. We didn't take photos last time, planning on bringing a camera and also working on plans to have the meeting taped for posterity.
Posted by mike at 11:22 PM
December 6, 2005
Creating Time-Sensitive Sample Data
I'm digging this newly-discovered method for creating sample data that is time sensitive. What I mean is sample data that will work correctly when used in the future with time-based queries.
Let me explain further . . . I'd like to create some sample data to use with a stored function that looks for data that's been spaced over regular intervals in the past few hours. If the sample data has the timestamps from the database I'm using now, the function won't demo correctly because the data will be too old when it is being used elsewhere.
Using now() normally works for this kind of stuff, but I need data spread over an interval prior to whatever now() happens to be then. Lo and behold, the date and time functions documentation steered me to date_sub(), which allows you to take a date and subtrack in certain intervals. This is perfect for my set of INSERT statements for the sample data:
INSERT INTO stockprice VALUES ('AMD',date_sub(now(), interval 100 minute),'23.70'); INSERT INTO stockprice VALUES ('AMD',date_sub(now(), interval 90 minute),'23.75'); INSERT INTO stockprice VALUES ('AMD',date_sub(now(), interval 80 minute),'23.76'); INSERT INTO stockprice VALUES ('AMD',date_sub(now(), interval 70 minute),'23.73'); INSERT INTO stockprice VALUES ('AMD',date_sub(now(), interval 60 minute),'23.74'); INSERT INTO stockprice VALUES ('AMD',date_sub(now(), interval 50 minute),'23.79'); INSERT INTO stockprice VALUES ('AMD',date_sub(now(), interval 40 minute),'23.81'); INSERT INTO stockprice VALUES ('AMD',date_sub(now(), interval 30 minute),'23.83'); INSERT INTO stockprice VALUES ('AMD',date_sub(now(), interval 20 minute),'23.84'); INSERT INTO stockprice VALUES ('AMD',date_sub(now(), interval 10 minute),'23.82');
What you're seeing here is a set of ten records that will be created, each one ten minutes apart working backward in ten minute increments from the current time on the server where the data is inserted. Perhaps there are other uses for these kind of time-sensitive INSERTs . . . for now this will do the trick perfectly.
Yes, this may seem strangely familiar to those who've read the December Linux Magazine article on MySQL 5 that didn't quite get to covering stored functions (and a few other MySQL 5 new features).
Update: Giuseppe notes that inserting time intervals is something that can be done using the FOR EACH loops in the MySQL 5 general purpose routine library.
Arjen points out that you can also perform this kind of interval math directly in the query like:
INSERT INTO stockprice VALUES ('AMD',now() - interval 10 minute,'23.82');
Posted by mike at 11:59 PM
December 5, 2005
MySQL Operator Precedence
Now that we're all going crazy with MySQL 5 and programming logic in the database it's probably worth a quick review of operator precedence in MySQL. I've listed the operator precedence highest to lowest (the MySQL docs do the opposite). Operators on the same line have the same precedence:
BINARY, COLLATE ! - (unary minus), ~ (unary bit inversion) ^ *, /, DIV, %, MOD -, + <<, >> & | =, <=>, >=, >, <=, <, <>, !=, IS, LIKE, REGEXP, IN BETWEEN, CASE, WHEN, THEN, ELSE NOT &&, AND ||, OR, XOR :=
And just for kicks I'll throw in the Perl operator precedence to see the precedence of the operators I'm most familiar with (never hurts to review):
terms and list operators (leftward) -> ++, -- ** !, ~, \, unary +, unary - =~, !~ *, /, %, x +, -, . <<, >> named unary operators <, >, <=, >=, lt, gt, le, ge ==, !=, <=>, eq, ne, cmp & |, ^ && || .., ... ?: =, +=, -=, *= ,, => list operators (rightward) not and or, xor
During my career I haven't done much of what I would consider calculation-heavy programming. Even so, I think it's always good to be sure even during a simple calculation that the evaluation happens in the expected order. To be explicit, and perhaps more readable, use of () to denote precedence is probably a good idea in anything more than the blindingly simple.
Posted by mike at 10:40 PM
December 4, 2005
The kind of emerge report I like to see
We have our kruckenberg server set up to alternate logwatch reports between Pete and I, I get them for one week and then Pete gets them for the next. We also do this with a weekly Gentoo emerge as well. Each week we do a pretend emerge to see what might be out of date on the server, and send that report to the admin on duty (either Pete or I, depending on the week). This week is my week for sysadmin, last night's emerge --pretent world report looked like:
These are the packages that I would merge, in order:
Calculating world dependencies...done!
Now that's the kind of emerge I like to see. Two weeks ago there were a few items out of date (spamassassin, a Perl module and a Gentoo utility). It wasn't hard to update those, but this week is even better.
Posted by mike at 6:56 PM
December 2, 2005
iChat with Pete becoming a Regular Activity
Pete (my older brother) and I have been IMing for years (before that we used talk on the command line), but even though we've both had iSights for the past two years we have only hooked them up for special holiday functions.
A few weeks ago Pete and I were IMing and somehow we ended up deciding that a video conference was a better format to discuss whatever was going back and forth. On this particular night we happened to both be in a position to throw up the iSight and ended up having a great conversation about something (the details escape me, but we both later commented on it being a cool experience).
Tonight we hooked up again for the third time in the past few weeks. The dialogue is definitely more rich than the conversations on IM. For much of our back and forth IM does the trick just right, a question here, pointer to a web site there. But these past few weeks as we've realized the goodness of video and audio we've done more regular "can you do video tonight, I want to run an idea past you." It's been a rewarding experience, it's a lot closer to an in-person visit than I would have imagined. Tonight I got to say goodnight to Pete's oldest daughter, kind of an added bonus.
The bulk of tonight (which is happening as I write this) is around MySQL. Pete's playing with an idea for tracking large amounts of data (a sample 5 minute period generates 1.4 million records, each record averaging ~35 bytes) and we're having a meaningful conversation about storage engines. Pete's played with MySQL a bit but is definitely the less experienced brother.
Posted by mike at 1:38 AM
December 1, 2005
The Right Tools for the [Electrician's] Job
I learned within just the first few hours of working with dad that, just like when I'm hacking away at code, there is a set of tools that you must have handy if you want to be productive. The next trip to Home Depot netted a collection of new tools. It's not like I don't have tools, I just don't have a lot of tools that you'd find in an electrician's set.
The most useful tool i bought . . . a toolbelt. I found that even with all the right electrician's tools, without the toolbelt to keep them all close it was almost pointless to have them. Having those tools on my person whether I was kneeling at an outlet, up on a ladder working on a light, or climbing in the attic made the work go so much better. It was hard to get into the habit of keeping stuff in the belt at first, but as the week went on I got pretty good at knowing exactly where a tool was and being able to get/return it without looking at the belt.
The toolbelt was $9, made of canvas, and was mostly two large pockets for loose materials, nails, staples, wire screws etc. Surrounding the outside was had slots for snips, needle nose, two screwdrivers, pen, pencil, hammer, flashlight and tape measure.
It did make me think what makes my computing environment work well and what might be missing.
Posted by mike at 1:03 AM