Sunday, March 22, 2009

Review: SQL in a Nutshell, 3rd Edition

Authors: Kevin E. Kline, Daniel Kline, and Brand Hunt Format: Paperback, 591 pages Publisher: O'Reilly Media, Inc.; 3rd edition (December 2, 2008) ISBN-10: 0596518846 ISBN-13: 978-0596518844 The original edition of this book was published the better part of a decade ago and both the 1st and 2nd editions did fairly well in the reviews and on the market. What does this 3rd edition have to offer and who is it offering it to? The blurb on the back states that the " edition clearly documents every SQL command according to the latest ANSI standard and details how those commands are implemented in Microsoft SQL Server 2008, Oracle, 11g, MySQL 5.1, and PostgreSQL 8.3". Of course that was written by either one of the authors or the O'Reilly editorial staff, so you'd expect them to say such a thing. Assuming all this is true and you need to know the SQL commands relative to those products, then I guess you'll really want this book. As far as who this book is for, the front matter of the text targets a number of different groups including programmers looking for a quick SQL reference, developers needing to migrate from one SQL to another, and DBAs (who else?) who need to keep up with the latest and greatest. Keep in mind (and if you're familiar with the In a Nutshell series, you won't need this reminder) that this series is strictly a reference guide, not a tutorial. If you need to learn how to work with the SQL language, this isn't the first place to start. The Kline, Kline, and Hunt book is, in essence, the "wiki" for the SQL language as interpreted by O'Reilly. Chapter 1: Long, long ago, in a Galaxy far, far away...but I digress. Anyway, like so many other books on so many other technical subjects, the book starts out with a brief history lesson, but fortunately, it's mercifully brief at a mere 15 pages. Depending on your needs, you can blow past this part and go directly to your destination, whatever it may be in the world of SQL. That's the beauty of a reference; you need read only what you are looking for...but thereby hangs a small tale...finding things. Maybe it's just that you can't search a hardcopy version of a book the way you can the web, but the indexing seems to continue to struggle, or rather, cause readers to struggle. If I'm looking for something specific in a reference text, the book is more valuable to me if I can find what I'm searching for quickly. The longer I have to look, the more "value added" becomes "value subtracted". If you don't intend on reading the book cover-to-cover (and it's not written to be used that way), then you'll likely have to use a combination of scanning the index, the TOC, and the relevant chapter or chapters to find whatever bit of data you need, depending on how obscure it is. That's really the only ding I can give the book though, and the authors did update the content with the present state of the techology in mind. There's actually two reasons to update such a book. The first I've already mentioned; to keep up with changes in the SQL language. The second is, since this reference is probably used often by those who need it most, to provide a fresh book to replace the dog eared copy you now likely have sitting by your keyboard. Who shouldn't buy this book, at least not yet? I previously mentioned this too, at least in part. The book isn't for someone who doesn't have a good handle on SQL. It's not a tutorial or an all-in-one learning book. If you need something like that, and you want to see what O'Reilly provides in that arena, try Learning SQL by Alan Beaulieu. It also seems to have done quite well, and once you've become at least adequate with the SQL language, revisit this book. You'll be ready for it then.

Monday, March 16, 2009

Sharing Faith

I originally wrote this post in response to Aaron on his Honest Uncertainty blog asking people to share how they came to faith. I was going to post my response as a comment to his blog post, but, as you can see, my commentary is way too long. Decided to post it in my own blog and insert a summary and link in Aaron's blog. Here we go. First, a disclaimer. Faith experiences are highly subjective. After all, even if other people are involved in the process of a person coming to faith, ultimately it's between that person and God. There are just a ton of "marital" metaphors in the Bible, where God characterizes himself as the husband to His "bride", the Children of Israel, and Christ is cast as the groom to his "bride", the believers in Messiah. The reasoning as I understand it, involves a description of a special type of intimacy; the intimacy between the believer and God. In other words, it's personal and a unique relationship between two individuals. Of course, at some point, the "bride and groom" metaphor begins to break down (for one thing, God is perfect, so only one half of the partnership can fail to live up to his or her end of the bargain), but the important point is that the relationship between a person and God is very specific to those two individuals. There is only one God (Adonai Echad or "God is One") but there are many believers. That means each "pairing" or each relationship, while having many things in common with the other like relationships, are also very different from each other. My relationship with God is going to be different than Leah's relationship with God, than Ken's relationship with God, than Darlene's relationship with...but you get the idea. I say all this as a preface to my "witness" to explain that each person experiences his or her coming to faith and remaining in faith (it's in a state of constant renewal and adjustment and hopefully growth, just like any other "marriage") differently than any other believing person. Your mileage may vary. I was raised in a family of faith, sort of. Actually, my parents didn't really talk about God or Jesus. I guess my mother believed more than my father, at least when I was a child (that changed after I became an adult and my father's faith blossomed), but I don't recall anything being said about it. I was baptized as an infant, so there must have been some expectation that this was required. When I was in Junior High, we went to a Lutheran church. I remember two rather painful years in Catechism school culminating with me being "confirmed" in the church. Unfortunately, no one asked me about my beliefs or if I had a "personal relationship with Jesus Christ". I didn't. I went through all these experiences, including church every Sunday, because my parents took me. When I got old enough to stop going, I stopped. For all of my adult life up until my 40s, I lived a secular existence. Well, let me take that back. I had a brief "flirtation" with the Unification Church (yeah, the "Moonies"), but I participated only because I was looking for some sort of meaning in my life. I didn't particularly believe what was going on around me and, out of a lack of personal commitment to them or anything else, I dropped out of their influence. As I started to say before, I lived a liberal, humanistic, "agnostic-leaning-towards-atheist" existence for most of my adult life. Periodically, someone would enter my "bubble" and try to share his or her faith in Christ with me, but I immediately shut them down, not wanting to have that encounter with a vengeance. I eventually got married and had children and proceeded with my life as I thought I was supposed to, trying to build an education and a career. My wife was (well, she still is) Jewish, but wasn't raised as such and in fact, didn't even know she was Jewish until her early 20s (long story). When we were planning on having children, she expressed some thoughts of joining a synagogue, but her lack of experience and a sense of intimidation prevented this. For my part, I didn't object at all, but I wasn't going to take the lead in the effort either. The idea cooled and nothing was done. My wife's younger brother became a Christian when my kids were very young (and to this day, denies that his mother was Jewish at all, as if the idea is offensive to him). My kids adored him as many kids do an uncle. Whenever he came down for a visit (he lived in the Bay Area and we were in Orange County at the time), he'd worship at a local church on Sunday. He'd always ask if anyone wanted to go with him and usually my son David did. We had one very uncomfortable moment during one of my brother-in-law's visits when David, singing the praises of the Jesus he learned in Sunday school, asked why we all didn't go to church and learn about Jesus. Gee, how do you answer a question like that in front of your Christian brother-in-law, your very excited son while being completely turned off to the idea? Time continued to pass and, after the nearest drive by shooting to our home was a mile and a quarter away, we decided to move the family out of California and to a safer environment. Another very long story later, we moved to Boise, Idaho. The kids were still on the younger side of Elementary school. We started to re-establish our lives in Boise. Then things began to happen all at once. At the time, the events were innocent enough. My employer sent me to a conference and I ended up sitting next to a very nice woman named "Nancy" (not her real name). She was easy to talk to and it was nice to have someone to relate to, since I really don't like going to conferences. End of event one. The next event was that I volunteered to referee my daughter's soccer team. Understand that at the tender age of 6, kids don't display a lot of skill in playing soccer and the ref's job is mainly to make sure that the kids are kept safe on the field. The fellow who was my co-ref was named "Joe" (not his real name, either). He was a really nice guy and easy to get along with. End of event two. My brother-in-law invited us to his wedding in the Bay Area. We got to stay at his place, sleeping on the living room floor in sleeping bags. The youth pastor from his church, Matt (yeah, fake name) and his family were staying there, too (the place was pretty big) while they were having their house built. My brother-in-law and his wife-to-be were both Christian so naturally, they had a Christian wedding. I'm not hugely comfortable at weddings or any event involving lots of people, so I sat through the service at least internally squirming. Wedding and reception came and went. Lots of family related events that aren't relevant to the story, so I won't mention them. Bride and Groom dashed off to their honeymoon and my family and Matt's family spent one more night together in my brother-in-law's house before we left for Idaho the next morning. That evening "it" happened. Matt asked us "the" question. Here it is. "If you died tonight, do you know where your soul would go?" I cringed internally but was determined to try to be polite. My wife wasn't polite. I was a little embarrassed about how pointed her responses were to Matt. She had nothing nice to say about Christianity at all. The conversation went on. We reached the point where we agreed to let Mark send us a Bible and some other supportive material. The next morning came and we were on our way back home and away from our experiences of the night before. I recall though, during the drive, I remarked to my wife that the previous night's conversation made me want to take a class in comparative religion. An odd thing for me to say. Weeks passed and then months and no Bible or other packages from Matt in the Bay Area. I figured that was that. End of Story. Except it wasn't. My wife, ever the joiner and organizer, ended up being the treasurer at the local PTA. She met a couple there named Ethel and Fred (definitely fake names). They were a very nice couple. Ethel was very talkative and not shy about anything. Fred was an Idaho native, quieter than his wife, but still outgoing. They invited us to a Christmas play at their church. To my horror, my wife accepted and there I was, in a church, watching a Christmas play. The play was set in the days right before Pearl Harbor, which is an interesting historical period for me, so I was fairly engaged. I don't recall much about the play now, but one thing does stand out. Who should be in the play but "Joe", my co-ref on my daughter's soccer team. What an incredible “coincidence”. Matt's package arrived as a Christmas present. Along with the Bible, there were some books by C.S. Lewis including "Mere Christianity". The moment had passed, so our interest in these texts remained dormant...but not for long. I don't remember how it happened, but we started going to the church where we saw that Christmas play with Ethel and Fred. You know, the one where Joe was playing a character? At some point, as I was scanning the other people during the Sunday worship service, I recognized one woman, but couldn't figure out where I'd met her before. I was afraid she'd think I was a "masher" (archaic term) if I just walked up to her and said "Have we met before?" but I had to know who she was. I knew I'd seen her before, but couldn't figure out where. Oh duh, it was "Nancy". I'd only met her once months ago over a two-day conference, so I couldn't place her. Naturally, she remembered me right away. Another coincidence? In fact, I started meeting people in that church all over the place. It seemed like they were everywhere. Sure, Boise isn't as big as L.A., but c'mon, it's not that small, either. My wife, kids, and I became what they call "seekers". Actually, I'm pretty sure my kids became believers almost right away, but let me explain. "Seekers" are those group of people in churches that are there looking for something that they don't believe in yet. We are orbiting faith the way a moth orbits a light; attracted, but not sure of the risks involved. We circled closer, then farther away, then a little closer, trying to understand why we were even there and if this was right for us. Please understand, if someone had suggested, even six months prior, that I'd be going to church on a regular basis, I would have thought they were out of their minds. Yet there we were. Going to church, going to Sunday school, going to Bible studies. It was weird. Like a bit of high energy plasma inexorably being pulled towards a black hole's event horizon (I know the imagery sounds grim, but it was that kind of pull), I knew that I was going to fall past the point of no return and really soon. I was afraid of two things: 1. I was afraid of getting into something that would end up being a horrible mistake. 2. I was afraid of becoming a believer and my wife not becoming a believer. I wasn't excited about being part of a "mixed marriage" and worse, that I would be the cause of the "mix". But what could I do? I made an appointment with the Pastor. I don't recall when it happened, but I realized I was a believer. I'd crossed the event horizon and was swirling towards my ultimate destination, I knew not what it was at the time. The pastor was a really nice guy. Through my "transition" we spent quite a few lunches together. He seemed to really understand my predicament on the various levels I was experiencing it. I remember specifically that when I told him something like "I'm a believer but..." he finished my sentence "...but what happens now?” Yeah, that's exactly how I felt. He also said that he'd prayed about my wife and "felt" that I had nothing to worry about. I had no idea what this “feeling” thing was all about, but he was right. When I finally worked up my nerve to tell my wife that I was a believer, she told me she had made the same decision. She didn't want to tell me for fear of "influencing" my own decision towards faith. I know, I know. It seems as if I'm glossing over the entire point of how I came to faith. It's funny. I know of believers who can tell you the exact date they came to faith and the specific circumstances, but I'm not one of them. I can't even really tell you the exact year and I don't know the circumstances. It was just a large number of tiny events that, step-by-step, led me to my faith in Christ (the "Messiah" part is another story). Having no experience with the Bible, I read it cover to cover in a year and did that for three years straight, just to get the "source material" in my head. I'd like to say that once I became a believer, everything in my life worked out fine and I ended up growing closer to the Lord day by day in stair step fashion, but that's not the truth. 40 plus years of secular living had made its mark and I had a lot of house cleaning to do. Nothing was linear (much to my chagrin). My life became a huge mess at one point and my early journey of faith was a roller coaster ride of events and emotions that was sometimes horrible to experience. It's taken me years to get to the point to where I'm not just trying integrate faith into the rest of my life but actually experiencing faith as my life. I know this isn't what you were looking for. My experience isn't very likely to help you or anyone else understand why I came to faith or to guide anyone else into a life of faith in Christ. I also have another revelation. While becoming "saved" is certainly a critical first step in a life of faith, it's just a first step. I've met believers that seem to feel like once you're "saved", that's all there is to it. You just sit in church as if it were a bus station, waiting for your ride to Heaven so you can be with Jesus. To me, that's a terrific mistake. Faith isn't something you keep hidden in your head or your heart (like a lamp under a bowl, so to speak), it's something you live out day by day in everything you say and do. Yes, there's a goal. You can read about it in Revelation (among other places), but you aren't supposed to sit on your thumbs waiting around for it. There are all kinds of parables (bridesmaids and oil lamps, for instance) that talk about getting and staying ready. John talked about faith and action. Coming to faith is an act of...well, faith. It's a shot in the dark. It's a leap over a cliff. It's letting yourself be swept over the event horizon and into the maw of a black hole. It's scary to let go of all the assumptions, beliefs, and practices of a lifetime and begin committing to something and someone you don't understand. It's like getting married. At the time, you're sure you love the person, but you also have no idea of what's about to happen to you and what it's going to be like in the long haul. There's a quote from the film “The Matrix” that applies, believe it or not. It's when the Oracle talks to Neo about being “the One”. Here it is: “I wanna tell you a little secret, being the one is just like being in love. No one can tell you you are in love, you just know it, through and through...” That's what faith is like. No one can tell you. You can't explain it. It just “is”. Through and through. I've been married to my wife for over 20 years and it's exactly like that. At the time, I was sure of what I was doing through and through, but I didn't have a clue of what the long haul was going to be like. If someone had told me for sure some of what I'd experience in married life, I'm not sure I'd have gone through with it...not because I don't love my wife, but when love is young, it's not ready for the curve balls married life tosses at you when you're more mature. When I first came to faith, it was all new and shiny and exciting...just like a honeymoon. I was very excited to be a part of something bigger than I was and to really be loved and accepted by God. I had no clue what was about to happen to me and, if I did, I'm not sure how it would have affected my decision. No way to tell now...especially from the perspective of being a believer for over 10 years at this point. Faith is a journey. Coming to faith is just the first step. The real story is what happens afterwards. I hope some of this helps.

Wednesday, March 11, 2009

Review: Using Drupal

Authors: Angela Byron, Addison Berry, et al Format: Paperback, 492 pages Publisher: O'Reilly Media, Inc.; 1st edition (December 16, 2008) ISBN-10: 0596515804 ISBN-13: 978-0596515805 To quote Wikipedia, "Drupal is a free and open source modular framework and Content Management System (CMS) written in the programming language PHP. It is used as a "back end" system for many different types of websites, ranging from small personal blogs to large corporate and political sites". According to the back cover of this book, "Newcomers will find a thorough introduction to the framework, while experienced Drupal developers will learn best practices..." Cool. A "something for everybody" book. That's one reason why I included a basic definition of Drupal at the beginning of this review. Apparently, you don't have to be particularly familiar with Drupal to find a use for the Byron, Berry, Haug, Eaton, Walker, and Robbins ("whew") book. This is confirmed on the first page of the Preface in part, by the statement, "If your lead developer can't seem to shut up about this weird 'Drupal' thing, and you want to figure out what on earth she's (to compensate for decades or centuries of using only men as examples in technical books, all modern technical books now feature only women) talking about, this book is for you". The first chapter is an overview of Drupal and the first section is called "What is Drupal", so it's pretty plain that you don't have to be an expert, although later sections are supposed to be written for Drupal gurus. Assumptions, assumptions. While it's ill advised for people to make assumptions (though we do all the time), books must make them relative to their audience. In this case, some of the assumptions are that you have access to a server running PHP, a web server (Apache is recommended by the authors), and a database (MySQL is recommended by the authors). LAMP would be the logical choice for me, but WAMP is available for Windows users, and Mac users can access MAMP. That makes it pretty darn easy to get your server up and running fast and ready for Drupal. The unspoken assumption is that you know what all those things are and how to use them, at least marginally. If not, you might want to spend some time learning the basic technologies involved before tackling this book. Oh, it wouldn't hurt to learn more about Content Management Systems (CMS) if you have no idea what those are. Like I said, this book is accessible to the beginner, but you should at least understand what a CMS is and why you'd need one. Chapter 1 gives the reader the basic rundown on what Drupal is, what it's good for, and how it works. A general, high level explanation to get the uninitiated up to speed. Experienced Drupal people can easily avoid this and the next few chapters, but the rest of you should pay attention. For those of you who are impatient (like me) and want to get your hands dirty fast, Chapter 2 presents "Drupal Jumpstart" which lets you build a small website using Drupal. Some books, at this point, back off and return the reader to a conceptual tour of the topic, reintroducing the audience to hands on tasks only during the later chapters. Fortunately, this book isn't one of them. All of the successive chapters teach the reader how to develop a particular type of web site functionality (job board, wiki, photo gallery, and so on) and, at the same time, each chapter deepens the reader's understanding of Drupal modules and features. There are only 11 chapters in the book but they're packed with valuable information. Each chapter presents its particular emphasis on a site type, and the content is relatively easily adapted for commercial use (which I assume...there's that word'll want to do). The Preface contains a brief section on how to download and set up Drupal on your server, but the appendix section has a much more detailed description. You might want to have a look at the back of the book before doing anything else if you are completely new to Drupal. If you've already gotten one or more Drupal environments up and running, you can skip around chapters and focus on the topics that interest you. The book is quite good for newbies, but make sure you access the online errata. The book's been out for about three months now and early readers have pointed out some minor issues with the content and the code version used. As far as more advanced readers are concerned, I'd say that "intermediate" would be the highest level of Drupal user that would really be "wowed" by "Using Drupal". That's hardly a slam and I find the book to be quite good for readers wanting to learn to use Drupal or wanting to get more out of it. That said, it's not a "one stop shopping center" for all things Drupal and the truly high end developer may only find limited value between the text's covers. The other audience that will benefit are those developers who've been working with another platform such as Django and are looking to either branch out or change to Drupal. Whether you are a CMS/Drupal neophyte or are searching for a way to enhance your understanding of Drupal, you should have a blast using this book. A final word. How does Drupal stack up to Django? It's sort of like having your favorite Linux distro or preferring one JavaScript library over another (Dojo, jQuery, and such). I use Django on a more or less daily basis so familiarity breeds preference in my case, but don't let that stop you from trying Drupal or from buying this book. There's more than one road to building web applications. Update: 2009/03/12 From the Oops Department There actually isn't a comparison according to Sander Marechal who made the relevant comment below. Mea Culpa or in English, "my bad". Update: For a brief description of one developer's experience with Drupal and Django, read The Blog of Curtis Chambers.

Sunday, March 8, 2009

Review: Python Fundamentals (Video Training) (LiveLessons)

Author: Wesley Chun Format: Hardcover, 112 pages Publisher: Prentice Hall PTR; 1 DVD/Pap edition (January 2, 2009) ISBN-10: 0137143419 ISBN-13: 978-0137143412 Update: 2009/3/13 I finally tried out the suggestion from Pearson about getting the DVD to play on Ubuntu. Read the full update in the comments section for this blog post. Thanks. I've had bad experiences with training videos before, so I tend to shy away from them. Also, I can read much faster than a person can speak (that's not bragging, it's true of virtually anyone who can read normally) so in the same amount of time it takes to view a video training, I can read and (hopefully) absorb much more content. So what about Wesley Chun's Python Fundamentals videos? Let's have a look. As the list at the top of this blog attests, there is a book involved that's 112 pages long, but it only functions as an accompaniment to the DVD, which contains over 7 hours of video teaching by Chun. Actually, in a truer sense, the DVD should accompany Chun's book Core Python Programming (2nd Ed), also published by Prentice Hall. The DVD doesn't contain any new content but rather, presents the core concepts of the "Core" book in video, rather than text format. This is a matter of preferred learning style, not accessing video to access new information. In other words, if you have Chun's "Core" book (I do), then you have what's on this video. The blurb on the back of the DVD's packaging suggests that this video will work best with those who already have some Python experience. For you beginners, it does start with the fundamentals of Python syntax, standard types, and operations. The accompanying book is a distillation of the massive "Core" tome, formatted to fit the lesson plan on the DVD. Again, nothing new is presented. It's previously published content reworked to fit video. Frankly, after having gone through some of the lessons, I don't see why a person with virtually no Python experience wouldn't also be served by this product. Then again, keep reading to see if this video tutorial will work for you. Do I sound like I think Chun is "cheating" by recycling previously used content? In one way, it does involve only a little more work on the author's part, since all he has to do is adapt what he's already written. On the other hand, Chun has to shoot the live videos and the slides. I did this exactly once and I didn't think it was fun at all. Relating to a live class of real people is one thing, but talking to yourself as you're shooting little movies on your computer is (at least for me) darn awkward. Doing the "head shots" is the last step of making an instructional video (at least from the author's perspective), so don the neutral, short sleeved polo shirt, have a seat in the video studio, and start doing "takes". But enough of the process of making a video guide. How does this particular set of DVD lessons stack up? Some negatives immediately occurred when I slipped the DVD into my Ubuntu machine. It didn't play. Turns out that the disc is formatted to play on Windows and Mac only. Linux users need not try. Bummer, Prentice Hall. Fortunately, I keep a Windows computer around for just such an eventuality. The next "bummer" moment came when I was informed that the video plays best at a screen res much higher than is supported by the video card in my (older) Windows PC. It will still play, but you have to click past the prompt telling you to change the res to 1280 x 960. Ironically, Chun mentions towards the beginning of his lesson, that the student probably has Python on their computer if they have a Mac or UNIX-like machine such as Linux (though, he pronounces it "lee-nix" as opposed to "lin-ux"). There are 10 separate lessons contained on the DVD, but even the first or introductory lesson, is really made up of many, small movies that are only a few minutes long. You'll need to continue to click "next" after each small movie. This is probably a good idea if you plan on toggling back and forth between the video and practicing python. Of course, you can always pause the video to try something out. In my case, it would actually be better to run the video on my Windows machine and to practice on my Ubuntu (Linux) machine sitting next to it. In order to be understood by the maximum number of people, Chun was likely instructed to speak more slowly than he probably does in actuality, which gives his voice a slightly "unreal" presentation. It also makes everything go really, really least for me. Like I said, I can read much faster than a person can speak. While each lesson has an Exercises section in the accompanying book, there's nothing in the video that takes the student through the exercises. The video is pretty "static" in the sense that all it really offers the majority of the time is Chun's voice and a series of slides. It would be like watching a long series of small PowerPoint presentations while listening to the presenter on a speaker phone. Not quite what I was expecting. I was hoping to see Chun actually demonstrate using and developing with Python, which wouldn't be hard. All he'd have to do is take movies of his computer screen with him using the command line while explaining what he was doing. The DVD does contain an "Extras Folder" holding each chapter's sample code. so you don't have to write it all out yourself. Of course, most books have an accompanying website which usually holds sample code, so the only "value added piece" is that you don't have to download the code from the web. I know that one of the real markets for video training are classes given by companies who want to bring their staff up to speed on a particular topic. Such classes may or may not be used with a live instructor. I really didn't see why I'd use this DVD to learn Python as an individual if I had a good book at my side. I also don't see developers using this video in a classroom setting. For me, the only thing I'd like to add to learning Python from the "Core" book is the ability to either email or IM an instructor (Chun would be ideal, but I know he's busy) if I had a problem or question. Of course, there are plenty of programming discussion boards on the web available for this sort of "support". I like the people at Prentice Hall and their books. I like Chun, at least relative to his writing and knowledge of Python (I've never met him, so I can't say I "like" him as a personality, though I'm sure I would). I like Core Python Programming which I previously reviewed for Linux Magazine. I guess I'm not the kind of person who learns better using videos, at least not videos formatted as this one is. Unless you really hate using books and are completely addicted to video as your learning medium, you'll be better served learning Python from Chun's aforementioned text.

Wednesday, March 4, 2009

Beautiful Architecture: Leading Thinkers Reveal the Hidden Beauty in Software Design

Editors: Diomidis Spinellis and Georgios Gousios Format: Paperback, 426 pages Publisher: O'Reilly Media, Inc.; 1st edition (January 29, 2009) ISBN-10: 059651798X ISBN-13: 978-0596517984 According to Wikipedia, Software Architecture is "the structure or structures of the system, which comprise software components, the externally visible properties of those components, and the relationships between them". Probably, if you need to go to Wikipedia to read the complete definition and background of Software Architecture, you aren't ready to buy this book, but let's see. According to the editors (multiple contributors provided numerous essays for the book's content), Beautiful Architecture is a direct relative to the 2007 O'Reilly book Beautiful Code. Andy Oram and Greg Wilson provided the editing for that work, but the formatting and much of the purpose is identical to the book I'm now reviewing: to allow well-known and not-so-well-known, but innovative software architects to offer their insights in describing their ideas on the process of software architecture. The scope of course, is different; wider and sometimes, less focused than you might imagine. Contributors are given more latitude than authors of technical works are normally provided. The editors and publishers provide the framework, the "architecture" if you will, but each contributor provides his or her (actually, just "his") own vision. Surprises are at least tolerated if not welcomed. Beautiful Code was reasonably well received so it is up to Spinellis and Gousios to provide a text worthy of its predecessor. In terms of the breadth of topics, I think it does quite well. After all, architectures touched upon include Xen, Emacs, and Facebook. If you like variety in the extreme, this book will work for you. But who should read this book? The front matter doesn't provide an answer. The first chapter, written by John Klein and David Weiss, is called "What is Architecture?", so the book does start at the "beginning". The contributors explore what an architecture is, not simply in terms of software and not just with building architecture. Metaphor is the language of this chapter, and the authors of provide sufficient connections to different people from different backgrounds and who use varied methods of conceptualization, in order to describe what an architecture is. An architecture is a framework, skeleton, or context, designed to contain and to define its contents and the purpose of those contents. Otherwise, what you have is a jumble of information, much like a collection of random musical notes without the structure, or a bunch of bricks without a design...or like a collection of essays without a common theme. However, defining architecture is just the beginning. Chapter 2 moves from metaphor to allegory with the article "A Tale of Two Systems: A Modern-Day Software Fable". Actually, the way architecture is described by Pete Goodliffe is in terms of city design (roads, neighborhoods, and so on). Each chapter thus, is an example not only of a principle or conceptualization of software architecture, but of how the authors perceive both the general topics and specific problems associated with the architectural issues at hand. The personality and style of each contributor becomes just as important as the subject they are addressing, since those factors determine what they see as important to communicate. This sort of book can be difficult to review because it isn't a single "thing". Most technical books are written with one vision and one purpose and usually, with one voice, even when there are several authors involved. Reading Beautiful Architecture is much like reading an anthology of works from different classic authors and poets. While there is a loosely associated theme, each essay has its own voice and its own personality. Reading this book in a linear fashion is not particularly useful, depending on your goal. Certainly starting with the first part of the book works if you know little or nothing about software architecture in general, but then again, I don't think this should be your first exposure to the topic. That's not a slam against the book, but it takes some previous exposure to the idea of software architecture to begin to provide the reader with the internal structure necessary to make sense of what's being said. I suppose the best analogy I can use is that one must understand basic art theory before attempting to evaluate masterpieces, or before determining if a work is or is not a masterpiece. By definition, the book is inconsistent. That's what happens when you hire almost 20 different singers to provide their interpretations as to "what is music?". Like art and music, you take away from this book what you need or at least, what you can. That means, I can't tell you that everyone who wants to learn more about software architecture will either love or hate this book. Some of you will think it's a glorious production while others will barely be able to tolerate it. Like Beautiful Code the concept is wonderful, but "pulling it off" is problematic. I think the book works best for the seasoned veteran who is expert in his or her field but is looking for new and different perspectives. When you are that good at something, sometimes, you get locked into your vision and have a tough time seeing architecture from different and particularly radical points of view. If you are newer to software development, you can still gain some good insights from the book, but depending on how linear or global a thinker you are, you can either gather new directions for your craft or learn to become completely confused. I suppose it would be like my anthology analogy where you might like one or two of the contributions to the book but overall, find the entire text disjointed and disconnected. Just as each author's personality is an integral part of their essay, the personality and needs of the reader are a required ingredient in providing the cement that holds each particular article together with the book as a whole.

Tuesday, March 3, 2009

Musings on Being a Grandparent and Time Travel

You can never go home again. ~ Thomas Wolfe What children need most are the essentials that grandparents provide in abundance. They give unconditional love, kindness, patience, humor, comfort, lessons in life. And, most importantly, cookies. ~ Rudolph Giuliani If the universe of discourse permits the possibility of time travel and of changing the past, then no time machine will be invented in that universe. ~ Larry Niven Last Friday, my wife and I flew from Boise to San Diego to visit our first grandchild. Actually, my son's family lives in Oceanside, California, which is just a little north. To be even more accurate, they live in base housing on Camp Pendleton since he is a Marine. The trip proved that time travel is not possible but that time loops probably are. Let me explain. My wife and I used to live in Orange County, CA. When the nearest drive by shooting was only a mile and a quarter from our house, we decided it wasn't safe to raise kids there anymore and eventually moved to Idaho. However, while we were in California, we had our three, beautiful kids. I remember my parents, the new grandparents, coming down each time a baby was born. While my parents connected with my sons easily enough, I was a little worried how my Dad would react when we had a daughter, since he only had boys. As it turned out, my daughter had him totally wound around her little finger on the very first visit. Thus began a lifelong bonding between my children and my parents that I have watched with the utmost joy. Now it's my turn. Seeing my grandson Landon for the first time reminded me of the first meeting between my parents and my children. I remembered thinking my parents looked just a bit older on that occasion, but I didn't feel old at all when I saw Landon. I did feel somewhat amazed listening to my son David comment on his responsibilities and how he had planned every detail of the next 20 years of his son's life. He was somewhat revelling at being "head of household" and projected a sense of confidence and security in his own decision making as a parent that I'm sure I didn't have, even though I was ten years his senior when I had my first children. I also remarked to myself how that confidence would be eroded as he actually proceeded to parent over the next weeks, months, and years. Families are not the certain and stable things we pretend they are. I don't mean I think families are unstable. Family life just doesn't progress in an orderly and linear fashion. Having children introduces uncertainty to the extreme and events become unpredictable currents in the stream of time, like a leaf you send sailing into a forest creek. Nothing brings out the best and worst in people as does facing those currents by becoming a parent. I wonder how sure my son will be about how he wants to raise his own children five or ten years from now? I don't feel old. When I look at photos of myself (which I don't like to do often) I look old. My face sags and my hair is, at best, a salt and pepper mix (though I've managed to keep most of it). I have the usual aches and pains and obsess over what they all mean, but I don't look like my grandfather did, with a full head of silver hair standing on trembling legs (trembling at least near the end of his life). I feel "mature" when my son and his wife complain about how little sleep they're getting and all of the other adjustments they have to make, now that a newborn has entered their lives. The history of my own early parenthood rises to the occasion, though I see that action more in my wife, as her mothering skills come to the fore. The passage of time has caught me a little by surprise. Being a grandparent seems all at once real and unreal. Certainly holding my grandson is very real to me, but the stereotype of being a grandparent is completely unreal. I haven't given my first piggy-back or horsey ride yet, or read Landon his first storybook, or taken him to the park to play on the swing set or any of that stuff (give me a break...he's only eight days old right now). The passage of time also introduced another strange experience...going back "home". I say "home" in quotes, because Idaho is my home now. However, we weren't that far from Orange County and one of my sister-in-laws still lives there, so we went to go see her on Sunday. She has cerebral palsy, so doesn't travel much; thus she hadn't been able to go to Oceanside to see Landon. We all went up to her in Buena Park. Although she's my wife's younger sister, her hair is completely gray. She looked well and in fact, was probably the heaviest that she's ever been. In her case, putting on and keeping on weight is the same for her as my newborn grandson. Since Annie has cerebral palsy, her health has always been an issue. As she's gotten older, she has suffered more, and we've always had it in the back of our minds, that she may not live as long as the rest of us. She spent sometime in the hospital over the past few months and my wife was frantic at one point, trying to make sure she got the right care while hundreds of miles away. We hope and pray for God's care and peace in her life, but I couldn't help but notice the that she looks older than my wife. The added punctuation in the story was Landon, who is just starting to live. While in the area, we also decided to visit the "old neighborhood". Our old next door neighbor is still in the same house and we went over to visit. By contrast to my sister-in-law, Norma hadn't really changed that much. Her husband has, but not in a bad way, and at 71, he still has a full head of hair. He's survived 5 types of cancer and still looks like he runs (though he likely doesn't these days). He says that he's learned to stop worries (a quality I wish for in my own life...though I hope that I don't have to face cancer to learn it). The kids my kids grew up with are all tall and at least somewhat like adults. One even has a child of his own, but I noticed Norma was still in charge of how all the kids are raised. A lifetime as a foster and adoptive parent has moulded her into the ultimate caretaker for many generations. Being a grandmother is the most natural progression for her. We managed an invite into our old house. Everything was a darker color but there were some things that were familiar, even after 15 years. The ceramic tile we had laid right before we moved was the same. I remembered the place in the backyard pool where David had broken a tooth (baby tooth, thankfully), while jumping in the jacuzzi. The chandelier in the core of the house was different, but the railing on the stairs was the same. It was an odd trip back in time, but then, I had to remind myself that time travel is impossible. There are only memories to create the illusion. Like the house, the neighborhood was the same, but different. The streets were lined with palm trees now, that the city had put in. The local park was the same, but new playground equipment was in place. The air still smelled of partly combusted hydrocarbons, but the strip mall where our dentist had his office was gone; replaced by partly built condos that had been abandoned when the economy crashed. Now the frames of the aborted condos are exposed to the weather and disintegrating; perhaps illustrating the erosion of California, or at least my mind's version of it. The freeways were the same, but if at all possible, everything around them was even more built up than when I lived there. Cars traveling 75 miles per hour (and faster) were just inches away from us as we moved from one freeway to the next, while my son listened to the droning guidance of his GPS system. Little sparks of pleasant familiarity briefly flared into view, like fireflies on a humid summer's night, but then reality repossessed the night and the present returned. As I wondered how life would have evolved differently had we not moved away, I was reminded that I could never move back, even if I wanted to. I was no longer the same person who left 15 years ago and neither were my surroundings. While it was home once, it isn't now and won't be again. We left Orange County and David took us onto Pendleton through a different entrance to show us where he worked. We had driven past the Pacific Ocean on I 5 and I gazed at the endless seas that I never get to visit in Idaho, longing for one small visit to the beach. More than anything, I missed the ability to look out and let my eyes and my mind expand out across the vastness of the water, going past the horizon to distant shores. I no longer feel landlocked in Idaho as such, but this trip reminded me of what I sometimes miss. This trip pointed out to me that you can only revisit old neighborhoods, but you can't actually relive the past. Memories are mile markers, but the territory continues to change. In some ways, my wife and I have become my parents and my son has become the father. I can now hold my grandson in my arms and feel the new life in him and pray that God lets him grow up and be safe in an increasingly uncertain world. This must be what my father felt like when he held my children for the first time. Time travel is impossible, but visiting old neighborhoods and accepting the role of grandfather from my own father allows for a certain "looping" in time. I haven't really become my father, but having my own grandchild has created a new connection between us and between the moment when he first held my children and the first time I held my son's child. I can visit the house that was my children's first home, but it's only a shadow of what it once was. It's good to visit, but you can't live there. Connecting with the past provides valuable reminders, but the action is always happening in the present. We take what we can from our histories, but the ink has been dry for sometime and the pages are yellowing. The quotes from the past must be lifted from the old page and be written with new ink. I'm back home now in Idaho and it's another ordinary day in the City of Trees. I'm back at work, seeing familiar faces and doing familiar things. I posted the first pictures of Landon to Picasa and to my Facebook profile and emailed the attachments to quite a number of people. I'm writing the new history with fresh ink, but it's already drying as my first meeting with Landon moves from present to past. I can take from the past what I need to establish my role and use it to anticipate the future, whatever God wills it to be. I pray that I am allowed to read Landon from his favorite books, and do all of those things with my grandson that my father did with my children. Well, it won't be the same, both because you can't completely summon the past into the present and because, although I have adopted the role, I'm a grandfather in my own way. The past is just a memory after all. Landon and I will need to build our new memories together. For Landon.