Day 3 of My 19 Days of Python introduced me to my first real challenge (in a definitely "non-trivial" way) in attempting to think like a computer scientist. I don't know if it was all the jargon or if I was having trouble connecting the concepts with actual practice. Probably both. But I could just "feel" my brain slowing down as I was reading through Chapter 3: Functions."
What I do to prepare for a "day of Python" is to read through the chapter while sitting well away from a computer. I just read the pages and plan out what I will be doing and noticing areas where I know I will struggle. That way, when I'm back at the computer with Downey's book Think Python, I know the direction in which I'll need to travel and will be aware of the potholes and speed bumps in the road.
"Math functions. Why did it have to be math functions?" Chapter 3 introduces modules, which are files that contain the definitions of the functions and variables related to the module. But while Downey includes a bit of trigonometry (well beyond my skills as a mere writer), this chapter doesn't require the reader to actually do any trig (thankfully). For the sake of "mathphobic" people like me though, it would have been nicer if Downey had inserted another module to use as an example. On the other hand, after importing math, I can use "math.pi" in a statement without having to specifically define pi.
Chapter 3 is also the first time when the reader will have to compose or put together when they've learned in previous chapters, particularly Chapter 2. After reading the chapter, I actually go through the pages sitting at my computer and practicing what I'm reading as I blog (I haven't encountered Exercise 3.1 yet) and I think this helps map the concepts to the practice somewhat. Maybe more examples or practice exercises per concept would be useful, at least to me, when trying to "glue" an idea to an action (thinking of a function vs. writing a function). As of page 27, I've got a program, if you can all it that, containing two function definitions: "print_lyrics()" and "repeat_lyrics()" (more Monty Python fun and games). Now I need to write a script containing those definitions and use the script for the first two exercises.
For the first time, Downey mentions text editors (in the Debugging section) that are "aware" of Python and its "indentation needs," but he doesn't suggest any. Fortunately, gedit, which I regularly use in Ubuntu, lets you select which program or format you need including Python, so I'm OK there...sort of, as it still doesn't do indentation automatically. But the reader who knows absolutely nothing about this will be at a loss.
I forgot to end one of my strings with a double-quotation mark and also forgot that in the shell, to execute my script, I had to type "python repeat_lyrics.py" instead of just "repeat_lyrics.py." Once I corrected those little fubars, my wee script ran. Now on to Exercises 3.1 and 3.2. I guess you can change the order of function definitions and still have the program run OK. But these two exercises were absolutely benign next to what I knew was coming later.
I think part of what makes "Day 3" difficult is just keeping concepts like parameters, arguments, variables, statements, and functions straight. A nice picture or diagram would have helped. Actually, Downey did include a stack diagram, which is how programmers graphically keep track of which variables are used where, but I think this is part of a "think like a computer scientist" thing. A "non-scientific" picture of the overall process might have been helpful. I found a handy bullet point list at chucol.mml.cam.ac.uk to organize these terms for me somewhat.
I also had a heck of a time getting the first function in the Parameters and Arguments section of the chapter to work until I defined "bruce," which wasn't made explicit in the text. I did it wrong, since I treated the parameter "bruce" like a variable, but it worked. I wasn't satisfied however, completely exited from the shell, opened a new shell, and finally got it to work. I'll never know what I did wrong the first time, though.
I mentioned stack diagrams before and they're tricky because, at least as far as the example in Chapter 3 goes, they're read from the bottom up. The natural human tendency is to read from the top down. On the other hand, I'm a highly visual person, so it does help to have a picture to follow when trying to remember lots of little details, like parameters and variables inside a function.
There were a few concepts that were introduced but I'm not sure how much I was expected to understand. Pages 30 and 31 talked about __main__ as a built-in Python function and None as a special value (None comes back to haunt me later). After this, I was "treated" to information that seemed a little more digestible such as "Why Functions?" which I thought should have been at the beginning of the chapter, and how to import from within a module such as "from math import pi" rather than importing all of the math module with, "import math".
The Debugging section primarily addressed the various problems you can run into with text editors, although it still would have been nice if Downey would have expressed a preference. Maybe he wants his readers to "think outside the book" and do that investigation themselves. I dunno. The Glossary section is especially handy for people like me who have problems connecting concepts and "jargon" with what they actually do. But then, I'm stalling, because I'm living in dread of the Exercises section. Will I be able to successfully navigate the three remaining exercises without either cheating or giving up?
No. I cheated. I found the answer for Exercise 3.3 (I won't tell you where) and the problem made a sort of sense when I saw the answer. I copied it into a script and ran it and it worked. I think most of the required information was contained in the chapter, but I obviously don't "think like a computer scientist" because I couldn't intuitively put it together, even with the clue Downey inserted in the question for the exercise.
Actually, even after looking up the answers (or what were supposed to be the answers) for Exercise 3.4, they still don't make sense. This is typically where I get stuck trying to learn to program, think like a computer scientist, or whatever you want to call it. In a classroom setting (which is where I appear to belong), I could always tuck my tail between my legs and slink off to the instructor's office to ask what I'm doing wrong, but working alone (with everyone who reads this blog watching) at home, it doesn't quite work out so well.
I always imagine that a relatively intelligent person can pick up at least the basics of a particular discipline, including programming, but this is where I've hit my wall once again. Unless I can get past this point, I'll either be stuck at Day 3 forever or my efforts to try and "think like a computer scientist" will expire. Is there something different I could be doing or is there some way of presenting this information that would facilitate learning for a newbie better? From inside the problem, I can't tell.
Allen, are you out there?
Showing posts with label o'reilly. Show all posts
Showing posts with label o'reilly. Show all posts
Tuesday, September 11, 2012
Sunday, September 9, 2012
My 19 Days of Python: Day 1
Chapter 1: The Way of the Program. The title of this chapter immediately made me think of "the Way of Bushido, but my mind takes random turns and makes strange associations from time to time. Still, it's either a very dramatic way to begin the journey of learning to think like a computer scientist, or at least something that sounds vaguely mystical or philosophical. Sort of like Zen and the Art of Motorcycle Maintenance. But I digress.
This is the very first chapter of Allen Downey's book Think Python, and the very first day of My 19 Days of Python. What will it teach me?
First off, the chapter starts differently than most of the beginning programming books I've read. It starts out conceptually. OK, a lot of books start out with the concepts of programming in general and the programming language being addressed in specific, but then they drone on for 50 or 70 or 165 pages boring the reader half to death and making them beg to either be put out of their misery, or to be allowed to write the 'Hello, World!' program and then move on.
Downey starts out with a conceptual section but it has two qualities I appreciated: 1. It was brief. 2. It was useful to the beginner (me, that is). What's a low-level language and why is it sometimes called a machine or assembly language? What's the difference between a low-level and a high-level language? You might not think these distinctions are important if you're just going to learn how to program, but the goal of the book is to get the reader to think like a computer scientist, which means the reader will have to understand some basic terms and concepts.
This also helps if you plan on talking to, or maybe just listening to more experienced programmers (and at this stage of the game, that includes just about everyone). That is, if you expect to understand little bits and pieces of what they're talking about. In addition, learning these distinctions helps the reader better explain what they're doing to others, which comes in real handy for people like me who are reviewing this book.
Actually, more than anything, I really appreciated the description of natural vs. formal languages. It makes a great deal of sense to talk about programming in these terms since everyone uses a natural language with which to communicate (in my case, English). We're all familiar with one or more formal languages, such as math or chemistry, and this helps the readers build a bridge from concepts and ideas we're familiar with to the one we're trying to learn; the formal language of programming.
This could have been a real snooze but as I said, the section is relatively brief and it's presented in a way that (for me at least) is engaging and even compelling.
Guilty admission: I skipped Exercise 1.1. It's actually placed in the middle of the chapter and not with the rest of the exercises at the end, and it could be considered a "pre-programming" exercise. However, I've done enough writing and editing in my career to be able to readily picture how a sentence looks when it is constructed using invalid tokens and/or with an invalid structure. Believe it or not, it's the reader's first foray (there I go with military metaphors, again) into parsing and debugging.
The bottom of page 7 has a section called "The First Program," and so I thought, "Here comes 'Hello, World!'".
Well, sort of. Downey briefly describes a print statement and lightly touches on Python 3, though it seems the reader will won't be asked to learn programming on Python's "bleeding edge."
I was a little surprised at the Glossary section being included near the end of the chapter, (each subsequent chapter has a Glossary) but it makes sense if part of the book's intent is to be used in the classroom. This also allows the reader to have immediate access (instead of repeatedly thumbing pages at the back of the book) to the meanings of specific terms used in the current chapter.
OK, that's the "set up," but most readers by page 11 will be ready to write their (our, my) first program in Python.
But wait a minute.
Downey briefly mentions Linux (well, really the UNIX command window) on page 3, but he didn't include some information that an absolutely beginning programmer/computer scientist will need to know. How do I run Python on my computer? It's not quite the same thing using Windows vs. Linux. What do I have to do?
Since I'm using Ubuntu 12.04 (Precise Pangolin) for all of my exercises, and I've read a few books on Python before, I know that Python is already installed on my Ubuntu PC and all I have to do is open a terminal, type "python" at the prompt, and presto, I'm in interactive mode.
If a total programming neophyte wants to get past this step, they'll need to go online and look up how to install Python and then run it on whatever operating system they're using.
Hint: If you're using Windows 7, try this handy tutorial. Assuming this book will eventually go into a second edition, or better yet, a second printing of this edition, I'd like to see Downey include a little information to help the reader find out if Python is already installed on their computer (Linux, Mac, Windows), and if not, how to install it. Then, of course, explain to the reader how to start a terminal session and start Python.
If this is a beginner's book, these are beginning steps.
The exercises.
I assume Exercise 1.2 is more a "look ahead" since a "programming virgin" will be able to review the information at http://python.org/ but not make a lot of use of it right now.
I've never seen the help feature for Python in the terminal before, so Exercise 1.3 was kind of interesting. Without any experience with Python though, the reader (me) can do about the same thing as he or she could do on the Python.org site; just noodle around and poke their nose into a few corners. There's no way to really know what you're looking at until later on (hopefully).
The last exercise is a math problem but not a horribly complicated one. It's more of a "familiarity" exercise designed to let the reader actually "do something" in interactive mode with Python.
At the end of Day 1 of my 19 Days of Python, I didn't feel really challenged, but so far what I have been asked to understand and perform has been well within my grasp. But then a lot of beginning programming books start out this way. Downey's introduction to the book even said so. Chapter 2 is called "Variables, Expressions, and Statements," so I assume that's when I'll actually have to do more than convert kilometers to miles.
At this stage in my journey, I'm concerned with two things: 1. The ability to retain information as I move from one chapter to the next, so that I can use information I learned on one day when I'm performing exercises on subsequent days. 2. (this one is critical) Eventually being able to understand enough Python and to think, even a little bit, enough like a computer scientist to write simple programs in Python on my own, and not just copy them from the book or other sources.
Will I be able to get that far and will Downey's book be able to take me there? That's what we're going to find out together as I progress through the next 18 days of Python.
This is the very first chapter of Allen Downey's book Think Python, and the very first day of My 19 Days of Python. What will it teach me?
First off, the chapter starts differently than most of the beginning programming books I've read. It starts out conceptually. OK, a lot of books start out with the concepts of programming in general and the programming language being addressed in specific, but then they drone on for 50 or 70 or 165 pages boring the reader half to death and making them beg to either be put out of their misery, or to be allowed to write the 'Hello, World!' program and then move on.
Downey starts out with a conceptual section but it has two qualities I appreciated: 1. It was brief. 2. It was useful to the beginner (me, that is). What's a low-level language and why is it sometimes called a machine or assembly language? What's the difference between a low-level and a high-level language? You might not think these distinctions are important if you're just going to learn how to program, but the goal of the book is to get the reader to think like a computer scientist, which means the reader will have to understand some basic terms and concepts.
This also helps if you plan on talking to, or maybe just listening to more experienced programmers (and at this stage of the game, that includes just about everyone). That is, if you expect to understand little bits and pieces of what they're talking about. In addition, learning these distinctions helps the reader better explain what they're doing to others, which comes in real handy for people like me who are reviewing this book.
Actually, more than anything, I really appreciated the description of natural vs. formal languages. It makes a great deal of sense to talk about programming in these terms since everyone uses a natural language with which to communicate (in my case, English). We're all familiar with one or more formal languages, such as math or chemistry, and this helps the readers build a bridge from concepts and ideas we're familiar with to the one we're trying to learn; the formal language of programming.
This could have been a real snooze but as I said, the section is relatively brief and it's presented in a way that (for me at least) is engaging and even compelling.
Guilty admission: I skipped Exercise 1.1. It's actually placed in the middle of the chapter and not with the rest of the exercises at the end, and it could be considered a "pre-programming" exercise. However, I've done enough writing and editing in my career to be able to readily picture how a sentence looks when it is constructed using invalid tokens and/or with an invalid structure. Believe it or not, it's the reader's first foray (there I go with military metaphors, again) into parsing and debugging.
The bottom of page 7 has a section called "The First Program," and so I thought, "Here comes 'Hello, World!'".
Well, sort of. Downey briefly describes a print statement and lightly touches on Python 3, though it seems the reader will won't be asked to learn programming on Python's "bleeding edge."
I was a little surprised at the Glossary section being included near the end of the chapter, (each subsequent chapter has a Glossary) but it makes sense if part of the book's intent is to be used in the classroom. This also allows the reader to have immediate access (instead of repeatedly thumbing pages at the back of the book) to the meanings of specific terms used in the current chapter.
OK, that's the "set up," but most readers by page 11 will be ready to write their (our, my) first program in Python.
But wait a minute.
Downey briefly mentions Linux (well, really the UNIX command window) on page 3, but he didn't include some information that an absolutely beginning programmer/computer scientist will need to know. How do I run Python on my computer? It's not quite the same thing using Windows vs. Linux. What do I have to do?
Since I'm using Ubuntu 12.04 (Precise Pangolin) for all of my exercises, and I've read a few books on Python before, I know that Python is already installed on my Ubuntu PC and all I have to do is open a terminal, type "python" at the prompt, and presto, I'm in interactive mode.
If a total programming neophyte wants to get past this step, they'll need to go online and look up how to install Python and then run it on whatever operating system they're using.
Hint: If you're using Windows 7, try this handy tutorial. Assuming this book will eventually go into a second edition, or better yet, a second printing of this edition, I'd like to see Downey include a little information to help the reader find out if Python is already installed on their computer (Linux, Mac, Windows), and if not, how to install it. Then, of course, explain to the reader how to start a terminal session and start Python.
If this is a beginner's book, these are beginning steps.
The exercises.
I assume Exercise 1.2 is more a "look ahead" since a "programming virgin" will be able to review the information at http://python.org/ but not make a lot of use of it right now.
I've never seen the help feature for Python in the terminal before, so Exercise 1.3 was kind of interesting. Without any experience with Python though, the reader (me) can do about the same thing as he or she could do on the Python.org site; just noodle around and poke their nose into a few corners. There's no way to really know what you're looking at until later on (hopefully).
The last exercise is a math problem but not a horribly complicated one. It's more of a "familiarity" exercise designed to let the reader actually "do something" in interactive mode with Python.
At the end of Day 1 of my 19 Days of Python, I didn't feel really challenged, but so far what I have been asked to understand and perform has been well within my grasp. But then a lot of beginning programming books start out this way. Downey's introduction to the book even said so. Chapter 2 is called "Variables, Expressions, and Statements," so I assume that's when I'll actually have to do more than convert kilometers to miles.
At this stage in my journey, I'm concerned with two things: 1. The ability to retain information as I move from one chapter to the next, so that I can use information I learned on one day when I'm performing exercises on subsequent days. 2. (this one is critical) Eventually being able to understand enough Python and to think, even a little bit, enough like a computer scientist to write simple programs in Python on my own, and not just copy them from the book or other sources.
Will I be able to get that far and will Downey's book be able to take me there? That's what we're going to find out together as I progress through the next 18 days of Python.
Friday, February 5, 2010
Fourth Annual Web 2.0 Expo San Francisco Focuses on Platforms for Growth
This information appeared in my inbox a day or so ago, so I thought I'd pass it along. Feel free to do the same. Cheers.
San Francisco, CA, February 4, 2010 — O'Reilly Media, Inc. and TechWeb, producers of Web 2.0 Expo and Web 2.0 Summit, today announced the return of Web 2.0 Expo San Francisco, the annual event for designers, developers, entrepreneurs, marketers, business strategists, and venture capitalists building a web for the 21st century. This year, Web 2.0 Expo centers on the theme of "Power of Platforms," helping businesses choose and leverage the right web platforms for success. Web 2.0 Expo San Francisco is May 3 - 6, 2010 at Moscone West.
"It's not just about how companies use the web as a platform," said Sarah Milstein, Web 2.0 Expo Co-Chair and TechWeb General Manager. "It's about how they fit into an ecosystem or create new, larger ones. What we're interested in this year is the new wave of companies that have the potential to build new economies and exploring exactly how that is done."
Celebrating its fourth year, Web 2.0 Expo continues its tradition of inspiring and educating the tech industry by providing unparalleled educational programs and valuable networking opportunities. This year, the event launches One Day Intensives, "mini-conferences" that feature expert speaker panels in a participatory classroom experience. Web 2.0 Expo Intensives feature "Lean Startup" with Eric Reis of StartupLessonsLearned.com and "Applied Communilytics" with Sean Power and Alistair Croll of WatchingWebsites.com.
Web 2.0 Expo San Francisco will consist of a multi-track conference, an "unconference" program called Web2Open, a major tradeshow and many networking opportunities and events. Conference tracks include: Strategy & Business Models, Social Media Marketing, Design & User Experience and Development with six focus tracks on Mobility, Community, Real-time, Analytics, Enterprise and Cloud Computing.
Web 2.0 Expo San Francisco 2010 welcomes supporting companies, including Platinum sponsor Microsoft; Gold sponsors Adobe, Invest in Germany, and IBM; Silver sponsors Berlin Partner, blueKiwi, EffectiveUI, HP, Neustar, OpenSRS, OpenText, The Planet and SOASTA.
To learn more about the 2010 Web 2.0 Expo San Francisco or register visit: www.web2expo.com/sf
For articles, blogs, photos, videos, and speaker presentation files from Web 2.0 Expo SF 2009, see: www.web2expo.com/webexsf2009
To read the O'Reilly Radar, visit: radar.oreilly.com
If you have ideas about areas you'd like to see included at the conference, send a note to: webexpo-idea@oreilly.com
If you'd like to stay up to date on information relating to Web 2.0, sign up for the conference newsletter (login required): elists.oreilly.com/#conferences
About TechWeb
TechWeb, the global leader in business technology media, is an innovative business focused on serving the needs of technology decision-makers and marketers worldwide. TechWeb produces the most respected and consumed media brands in the business technology market. Today, more than 13.3* million business technology professionals actively engage in our communities created around our global face-to-face events Interop, Web 2.0, Black Hat and VoiceCon; online resources such as the TechWeb Network, Light Reading, Intelligent Enterprise, InformationWeek.com, bMighty.com, and The Financial Technology Network; and the market leading, award-winning InformationWeek, TechNet Magazine, MSDN Magazine, Wall Street & Technology magazines. TechWeb also provides end-to-end services ranging from next-generation performance marketing, integrated media, research, and analyst services. TechWeb is a division of United Business Media, a global provider of news distribution and specialist information services with a market capitalization of more than $2.5 billion. *13.3 million business decision-makers: based on # of monthly connections.
About O'Reilly
O'Reilly Media spreads the knowledge of innovators through its books, online services, magazines, and conferences. Since 1978, O'Reilly Media has been a chronicler and catalyst of cutting-edge development, homing in on the technology trends that really matter and spurring their adoption by amplifying "faint signals" from the alpha geeks who are creating the future. An active participant in the technology community, the company has a long history of advocacy, meme-making, and evangelism.
O'Reilly conferences bring together forward-thinking business and technology leaders, shaping ideas and influencing industries around the globe. For over 25 years, O'Reilly has facilitated the adoption of new and important technologies by the enterprise, putting emerging technologies on the map.
O'Reilly Conferences.
San Francisco, CA, February 4, 2010 — O'Reilly Media, Inc. and TechWeb, producers of Web 2.0 Expo and Web 2.0 Summit, today announced the return of Web 2.0 Expo San Francisco, the annual event for designers, developers, entrepreneurs, marketers, business strategists, and venture capitalists building a web for the 21st century. This year, Web 2.0 Expo centers on the theme of "Power of Platforms," helping businesses choose and leverage the right web platforms for success. Web 2.0 Expo San Francisco is May 3 - 6, 2010 at Moscone West.
"It's not just about how companies use the web as a platform," said Sarah Milstein, Web 2.0 Expo Co-Chair and TechWeb General Manager. "It's about how they fit into an ecosystem or create new, larger ones. What we're interested in this year is the new wave of companies that have the potential to build new economies and exploring exactly how that is done."
Celebrating its fourth year, Web 2.0 Expo continues its tradition of inspiring and educating the tech industry by providing unparalleled educational programs and valuable networking opportunities. This year, the event launches One Day Intensives, "mini-conferences" that feature expert speaker panels in a participatory classroom experience. Web 2.0 Expo Intensives feature "Lean Startup" with Eric Reis of StartupLessonsLearned.com and "Applied Communilytics" with Sean Power and Alistair Croll of WatchingWebsites.com.
Web 2.0 Expo San Francisco will consist of a multi-track conference, an "unconference" program called Web2Open, a major tradeshow and many networking opportunities and events. Conference tracks include: Strategy & Business Models, Social Media Marketing, Design & User Experience and Development with six focus tracks on Mobility, Community, Real-time, Analytics, Enterprise and Cloud Computing.
Web 2.0 Expo San Francisco 2010 welcomes supporting companies, including Platinum sponsor Microsoft; Gold sponsors Adobe, Invest in Germany, and IBM; Silver sponsors Berlin Partner, blueKiwi, EffectiveUI, HP, Neustar, OpenSRS, OpenText, The Planet and SOASTA.
To learn more about the 2010 Web 2.0 Expo San Francisco or register visit: www.web2expo.com/sf
For articles, blogs, photos, videos, and speaker presentation files from Web 2.0 Expo SF 2009, see: www.web2expo.com/webexsf2009
To read the O'Reilly Radar, visit: radar.oreilly.com
If you have ideas about areas you'd like to see included at the conference, send a note to: webexpo-idea@oreilly.com
If you'd like to stay up to date on information relating to Web 2.0, sign up for the conference newsletter (login required): elists.oreilly.com/#conferences
About TechWeb
TechWeb, the global leader in business technology media, is an innovative business focused on serving the needs of technology decision-makers and marketers worldwide. TechWeb produces the most respected and consumed media brands in the business technology market. Today, more than 13.3* million business technology professionals actively engage in our communities created around our global face-to-face events Interop, Web 2.0, Black Hat and VoiceCon; online resources such as the TechWeb Network, Light Reading, Intelligent Enterprise, InformationWeek.com, bMighty.com, and The Financial Technology Network; and the market leading, award-winning InformationWeek, TechNet Magazine, MSDN Magazine, Wall Street & Technology magazines. TechWeb also provides end-to-end services ranging from next-generation performance marketing, integrated media, research, and analyst services. TechWeb is a division of United Business Media, a global provider of news distribution and specialist information services with a market capitalization of more than $2.5 billion. *13.3 million business decision-makers: based on # of monthly connections.
About O'Reilly
O'Reilly Media spreads the knowledge of innovators through its books, online services, magazines, and conferences. Since 1978, O'Reilly Media has been a chronicler and catalyst of cutting-edge development, homing in on the technology trends that really matter and spurring their adoption by amplifying "faint signals" from the alpha geeks who are creating the future. An active participant in the technology community, the company has a long history of advocacy, meme-making, and evangelism.
O'Reilly conferences bring together forward-thinking business and technology leaders, shaping ideas and influencing industries around the globe. For over 25 years, O'Reilly has facilitated the adoption of new and important technologies by the enterprise, putting emerging technologies on the map.
O'Reilly Conferences.
Sunday, November 1, 2009
Linux in a Nutshell, 6th Edition
Authors: Ellen Siever, Stephen Figgins, Robert love and Arnold Robbins
Format: Paperback, 942 pages
Publisher: O'Reilly Media; 6th edition (September 30, 2009)
ISBN-10: 0596154488
ISBN-13: 978-0596154486
I was going to swear that, with each successive edition of this book, the page count got larger and larger, but I checked, and it's stayed almost the same over the last three editions. O'Reilly says that the 4th edition was 944 pages long, but the 5th and 6th editions (the 6th being the latest) are both 942 pages. When I got my review copy in the mail and opened the box, the book seemed larger than I expected for some reason.
But if the book isn't getting larger and thus, filled with more recent and updated information about Linux, why publish subsequent editions? For that matter, can you call a book that's approaching 1000 pages a "Desktop Quick Reference?" To try and answer my first question, I took a look at the back cover and saw, "This updated edition offers a tighter focus on Linux system essentials, as well as more coverage of new capabilities..." Yes, the Linux kernel continues to evolve and thus, what you need to know about Linux system administration continues to change as well. While most of the common shell commands won't change, there are new ones that you'll need to know (and if you've bought this book or are intending to, you belong to that class of person who needs to know). Also, virtualization is huge these days and you can now manage Linux servers via Xen and VMware.
Linux in a Nutshell is considered a classic by anyone's standards, so it's expected to review well. In fact, the prior editions have reviewed extremely well so, in this case, turning in a bad review on the latest edition would mean that the authors and publisher must have completely rewritten the book and done a poor job of it. Fortunately, that's not the case here. Linux in a Nutshell, 6th Edition is a worthy successor to those editions that have come before it. You have three main reasons to buy it. First, you have the reason I've already mentioned; keeping up to date on the latest changes to Linux. Second, you've completely worn out your older copy of the book and need something that isn't hanging in rags. Third, you are new to Linux and need to buy a reference guide for the first time.
In a literary sense, some books are considered classics and almost legends. That may be a bit more rare in technical circles (is there such as thing as the equivalent of A Tale of Two Cites or To Kill a Mockingbird when it comes to Linux?), but it's not entirely unheard of. If the world of Linux has such a book, it's probably Linux in a Nutshell.
All that said, you will be disappointed in this book if you don't know what to expect, and I've read comments from people who were quite disappointed with this book. Hence writing reviews. Here's what not to expect. This is not a tutorial. It will not explain, step-by-step how to use Linux, particularly for the home or office desktop user (and with Ubuntu 9.10 (Karmic Koala) having just been released, a large number of people are thinking of the Linux desktop). If you try to read this book cover-to-cover, you won't find it amusing or entertaining. It would be like trying to read an encyclopedia set or dictionary from A to Z. Yes, it would be very informative, but organized in a very rigid manner, and it will not read like a narrative.
This book is a reference in the same manner as the aforementioned encyclopedia and dictionary. You look up only what you need to know. It presupposes that the reader have some familiarity with Linux, at least enough to understand what information they require and how to use the book to find it. The list of shell commands runs from page 33 to page 503, for instance and is in alphabetical order. On the other hand, chapters such as The Bash Shell do contain narrative and explanatory components, so you do get more than raw shell commands and arguments. Still, it is not a good book as your first exposure to Linux documentation or as an introduction to topics like the bash shell, the vi text editor, or the gawk programming language. It would be like trying to learn English by reading a dictionary. A dictionary is better utilized once you know at least the basics of the language and want to pick up something specific.
Both Git and Subversion version control system commands are well covered in the later chapters, but as I said, you'd better know the basics first, rather than expect to learn them for the first time here. As promised, Virtualization Command-Line Tools sits in the last chapter of the book, giving you fingertip access to the commands and options involving KVM, VMware, and Xen virtualization tools.
This book's 6th Edition is indeed a worthy inheritor to those that have come before it and carries on the tradition of providing A Desktop Quick Reference for Linux shell commands and utilities. If you've owned a prior edition, this update is now available as a replacement. If you are learning Linux administration for the first time and have the basics down, you're ready to buy this edition as your first experience to Linux in a Nutshell.
Format: Paperback, 942 pages
Publisher: O'Reilly Media; 6th edition (September 30, 2009)
ISBN-10: 0596154488
ISBN-13: 978-0596154486
I was going to swear that, with each successive edition of this book, the page count got larger and larger, but I checked, and it's stayed almost the same over the last three editions. O'Reilly says that the 4th edition was 944 pages long, but the 5th and 6th editions (the 6th being the latest) are both 942 pages. When I got my review copy in the mail and opened the box, the book seemed larger than I expected for some reason.
But if the book isn't getting larger and thus, filled with more recent and updated information about Linux, why publish subsequent editions? For that matter, can you call a book that's approaching 1000 pages a "Desktop Quick Reference?" To try and answer my first question, I took a look at the back cover and saw, "This updated edition offers a tighter focus on Linux system essentials, as well as more coverage of new capabilities..." Yes, the Linux kernel continues to evolve and thus, what you need to know about Linux system administration continues to change as well. While most of the common shell commands won't change, there are new ones that you'll need to know (and if you've bought this book or are intending to, you belong to that class of person who needs to know). Also, virtualization is huge these days and you can now manage Linux servers via Xen and VMware.
Linux in a Nutshell is considered a classic by anyone's standards, so it's expected to review well. In fact, the prior editions have reviewed extremely well so, in this case, turning in a bad review on the latest edition would mean that the authors and publisher must have completely rewritten the book and done a poor job of it. Fortunately, that's not the case here. Linux in a Nutshell, 6th Edition is a worthy successor to those editions that have come before it. You have three main reasons to buy it. First, you have the reason I've already mentioned; keeping up to date on the latest changes to Linux. Second, you've completely worn out your older copy of the book and need something that isn't hanging in rags. Third, you are new to Linux and need to buy a reference guide for the first time.
In a literary sense, some books are considered classics and almost legends. That may be a bit more rare in technical circles (is there such as thing as the equivalent of A Tale of Two Cites or To Kill a Mockingbird when it comes to Linux?), but it's not entirely unheard of. If the world of Linux has such a book, it's probably Linux in a Nutshell.
All that said, you will be disappointed in this book if you don't know what to expect, and I've read comments from people who were quite disappointed with this book. Hence writing reviews. Here's what not to expect. This is not a tutorial. It will not explain, step-by-step how to use Linux, particularly for the home or office desktop user (and with Ubuntu 9.10 (Karmic Koala) having just been released, a large number of people are thinking of the Linux desktop). If you try to read this book cover-to-cover, you won't find it amusing or entertaining. It would be like trying to read an encyclopedia set or dictionary from A to Z. Yes, it would be very informative, but organized in a very rigid manner, and it will not read like a narrative.
This book is a reference in the same manner as the aforementioned encyclopedia and dictionary. You look up only what you need to know. It presupposes that the reader have some familiarity with Linux, at least enough to understand what information they require and how to use the book to find it. The list of shell commands runs from page 33 to page 503, for instance and is in alphabetical order. On the other hand, chapters such as The Bash Shell do contain narrative and explanatory components, so you do get more than raw shell commands and arguments. Still, it is not a good book as your first exposure to Linux documentation or as an introduction to topics like the bash shell, the vi text editor, or the gawk programming language. It would be like trying to learn English by reading a dictionary. A dictionary is better utilized once you know at least the basics of the language and want to pick up something specific.
Both Git and Subversion version control system commands are well covered in the later chapters, but as I said, you'd better know the basics first, rather than expect to learn them for the first time here. As promised, Virtualization Command-Line Tools sits in the last chapter of the book, giving you fingertip access to the commands and options involving KVM, VMware, and Xen virtualization tools.
This book's 6th Edition is indeed a worthy inheritor to those that have come before it and carries on the tradition of providing A Desktop Quick Reference for Linux shell commands and utilities. If you've owned a prior edition, this update is now available as a replacement. If you are learning Linux administration for the first time and have the basics down, you're ready to buy this edition as your first experience to Linux in a Nutshell.
Monday, August 17, 2009
Book Review: Head First Networking
Authors: Al Anderson and Ryan Benedetti
Format: Paperback, 536 pages
Publisher: O'Reilly Media, Inc. (June 4, 2009)
ISBN-10: 0596521553
ISBN-13: 978-0596521554
Head First Networking, eh? I'm familiar with the Head First series, having reviewed a number of such books before. Head First books are generally successful at teaching a technical topic to a moderately to severely distractable person. I was curious how teaching networking would fit the bill, particularly since "networking" as a technology, is so vast. Head First books tend to be beginners books, so I wasn't expecting a huge amount of detail or advanced knowledge. The typical audience for this series is late high school/early college, so I thought at best, the content would more or less map to CompTIA's Network+ certification.
The authors both have "day jobs" at Salish Kootenai College, but I was surprised to discover only one of them currently works in IT. Al Anderson is the Director of Academic IT Services at the college, but Ryan Benedetti teaches Liberal Arts. I suppose one was responsible for the technical content, and the other was responsible for knowing how to write. That's just a guess, though. Actually, Benedetti was Department Head for an IT group in a previous life, according to his bio, so he does indeed know that side of the street.
In the Who is this book for? section, I was surprised to see the initials "CCNA" even mentioned. Apparently, one of the goals of the book is to be a resource for students who have earning Cisco's CCNA certification as a goal. So much for my Network+ assumption. The Who should probably back away from this book? portion, does say that people who already have their CCNA or CCNP need not bother with this text, which makes sense.
Like all Head First books, this one includes made up scenarios that the reader has to investigate and "solve", using the technologies featured in the book. In a programming book, and especially languages like Python or Ruby, not much is required to participate in the exercises, besides a computer that has those programs installed (and Linux has them on board by default). Having all the equipment you'd need to network even a small business would cost quite a chunk of change. The starter problem in the book's first chapter requires the reader to work on networking issues for "Coconut Airways". The first problem is the "nest of snakes in the server closet" issue (and if you've ever worked in IT at all, you know what I mean), so not much of a cash outlay at the onset.
The CAT 5 cable and RJ-45 connectors seemed logical, but I was surprised to see that the authors tossed in Coaxial cable problems and solutions. I'm not sure if the current Network+ exam still includes Coax cable and BNC connectors, but I seriously doubt any real-life networks still use such antiquated cabling. In fact, CAT 5, while common, isn't the only "CAT" cabling solution a novice network tech would run into. I was beginning to wonder if the book also included Token Ring. Sure enough, it's mentioned in the index, and I was directed to page 473. Arriving on that page, I was further confused and dismayed when I arrived on said-page, only to discover the instructions for installing Wireshark on Mac OS X and Linux (Ubuntu). I did finally locate a diagram of Token Ring topology on page 471, but that technology wasn't mentioned elsewhere in the book, that I could find.
I was pleased to see that Windows, Mac, and Linux were all included. After all, they all have to be networked. Certainly Ubuntu is the most commonly used Linux distro currently available (sorry Red Hat and SUSE), so it would make sense to include it for an audience that probably has limited financial means. Speaking of finances, I ran across a price list for Cisco IOS simulators, which seemed a tad advanced for a beginner's networking book. Cisco IOS commands are quite arcane, and usually basic networking is a prerequisite for even considering entering the Cisco realm. Of course, I found this in the appendix dedicated to "leftovers", or the things the book didn't really cover.
A fair amount of the book covered the physical nature of networking, but packet analysis, routing (at least the concepts, if not the practice), and DHCP are also found between the covers. DNS is left for the appendix section, and even then, all that's presented is how to install BIND on Windows, Mac, and Linux. Kind of pointless, unless you teach the reader what to do with it after it's installed.
Even for a ground-level beginner's book, I was a little disappointed. Too much space seemed to be dedicated to obsolete networking technologies and equipment. There were a few errors (such as the aforementioned page numbering) that I thought the editors should have caught (although that's what errata is for). All in all, this book will give the student a basic foundation in networking, but the reader will still need to pick up some additional materials and get their hands dirty making cables and networking computers, before it'll really mean anything.
Friday, June 26, 2009
Review: Regular Expressions Cookbook
Authors: Jan Goyvaerts and Steven Levithan
Format: Paperback, 510 pages
Publisher: O'Reilly Media, Inc.; 1st edition (June 4, 2009)
ISBN-10: 0596520689
ISBN-13: 978-0596520687
According to Wikipedia, "In computing, regular expressions provide a concise and flexible means for identifying strings of text of interest, such as particular characters, words, or patterns of characters". If you even dabble in open source, shell scripts, and writing code, you are likely at least somewhat aware of regular expressions. Some people are even really good at using regular expressions, but this method can be a struggle for others. O'Reilly's Cookbook series offers over 100 "recipes" using regular expressions to solve common tasks. The question is, will this cookbook help you whip up the dish you need to serve?
I hate to cave in to the consensus of reviews on the web, but this book is hot! That said, there is a caveat. Despite the fact that the Intended Audience section of the book's front matter states the book is written for anyone who "regularly work(s) with text on a computer, whether that's searching through a pile of documents, manipulating text in a text editor, or developing software...", many of the people who are editing articles, books, or a web page source won't need or want to access the power regular expressions have to offer. Also, a large number of the book's recipes are written for programming languages or for web development, so to make the most out of this book, you'll need to be doing work in those areas.
I was a little surprised that the book didn't require any prior experience with regular expressions at all. It offers the reader a complete introduction from the first chapter on what regular expressions are, then proceeds to teach the basic skills in chapter two. I doubt it will replace O'Reilly's Mastering Regular Expressions but it might be a way in the "side door" of using regular expressions for someone who doesn't need to "master" this process.
For those of you who are programmers (which is most likely the majority of people reading this review), the content that will interest you starts in Chapter 3. Languages covered in the recipes includes .NET Java, JavaScript, Perl, PHP, Python, and Ruby. Regardless of your level of expertise, there's bound to be a recipe or two in this book that will make your life easier.
A regular expressions cookbook doesn't require that you be able to use this method "from scratch", any more than a food-related cookbook expects you to create a cheese soufflé from scratch. The "ingredients" are all listed, how they are to be mixed, the temperature of the oven, how long to bake, all the little details should be included. Of course, you'll need to know the difference between a cup and a tablespoon, and how to use all the tools typically found in a kitchen. The regular expressions cookbook is no different, except the ingredients and process aren't designed around food but rather text. You also have to know what task you want to perform and the cookbook must contain information on that task. If you want to make an omelet and your cookbook doesn't contain that recipe, you're out of luck. That's the limit of the Regular Expressions Cookbook. At least some of the recipes contained within its pages must apply to the tasks you need to perform. A random (I just flipped to a page) example is as follows.
In recipe 3.5 Test Whether a Match Can Be Found Within a Subject String, the problem is presented in summary and then the solutions are offered. In this case, the solutions presented are for C#, VB.NET, Java, JavaScript, PHP, Perl, Python, and Ruby. The discussion section talks about any additional information or special cases involved in any of the languages. In this example, discussion sections are available for each of the aforementioned languages. The reader is also referred to Recipes 3.6 and 3.7 for more information.
I just described the general formatting of recipes in any of O'Reilly's Cookbook texts and this is what you can expect when you use this specific book. If you want (and this is the way the common cookbook is used), just thumb through the table of contents or index to find the particular recipe you require and then have at it. Occasionally, a novice cook will consult the beginning sections of a cookbook to familiarize themselves with food preparation basics. If that's describes you relative to regular expressions, you'll find the early parts of the book quite handy.
Bottom line, I'd have to say that the Regular Expressions Cookbook is best used by someone who doesn't use regular expressions regularly (sorry), but whose work efficiency would be enhanced by using a regex engine. The types of recipes that are accessible through this book are also correctly "biased" to the audience, so you won't find that only one or two bits are useful while the rest are impractical or unrealistic for typical coding and text manipulation tasks. I'd have to say that authors Goyvaerts and Levithan and O'Reilly have hit a home run with this book.
Monday, April 6, 2009
Review: Head First PHP & MySQL
Authors: Lynn Beighley and Michael Morrison
Format: Paperback, 812 pages
Publisher: O'Reilly Media, Inc. (December 30, 2008)
ISBN-10: 0596006306
ISBN-13: 978-0596006303
The good news is all you need to use this book is some prior experience building static web pages using HTML/XHTML...sort of. That's what the Who is this book for? section says. However, the Who should probably back away from this book part says that anyone who isn't familiar with basic programming concepts like variables and loops should steer clear. On the other hand, the same section declares that those basic concepts can be learned from this book. OK, just a tad confused here. Actually, the one piece that would bind all this together would be the mention of JavaScript (and there's a Head First book for that, too). Not sure why JavaScript wasn't mentioned, but it would have been a good bridge linking the rank web design beginner to this book, since JavaScript also makes static HTML pages dynamic. Also, folks familiar with JavaScript would certainly be familiar with basic programming concepts. Be that as it may, let's move on.
This book contains certain predictable bits that you'd expect in any Head First book. It's loaded with diagrams, graphics, and "retro" photos from what looks like old 1950s sitcoms. It's written for someone who forgot to take his or her Ritalin today and is in desperate need of said medication. The book teaches technology using scenarios that at least the book series and O'Reilly considers interesting if not important to the late high school and early college reader. Of course, there's a bit more to learning and using PHP and MySQL then learning to write code in a text editor. Will this book successfully teach the beginning web designer how to use server-side scripting and relational databases?
The Read Me section in the front matter didn't look like the usual Head First boilerplate and it is necessary to read, because it holds the keys to using this book. The authors stress that repetition is absolutely necessary, so don't skip around the book. If you know enough PHP and MySQL to do that, you probably don't need Beighley and Morrison's tome anyway. You start learning the easy parts first, then move on to the more complex (nothing revolutionary there), but keep in mind, this book isn't one stop shopping. There's just too much going on with these technologies to teach you everything. The book is here just to teach you enough to get you going. You will absolutely, positively need a web server that supports PHP and MySQL. Before you do anything, blast to the back of the book and see the Appendix section for how to install all that on your local machine. Seems like you'll need just a bit more knowledge (or at least a lot of confidence) than just playing around with HTML tags for this one.
Actually, the very beginning of the book doesn't really require that you have your web server set up, since you need to learn the basics of PHP first, but it couldn't hurt. At least once you get to the point where you'll need a web server, you won't have to halt the learning process and install everything. Personally, I'd just set up LAMP on a Debian box and call it good, but the instructions for installing PHP and MySQL on your local computer provided by the authors covers Windows 2000, Windows XP, Vista, and Windows Server 2003/2008. If you're a Mac user, OS X 10.3x or newer is supported. What? No Linux? These *are* open source technologies, folks and it's not like O'Reilly is a "Microsoft-only" publisher. OK, so they're playing the odds, figuring that most people run Windows and a significant minority run Mac, but I was still disappointed that they didn't give Linux a nod.
Actually, do yourself a favor and just install XAMPP which does run on Linux (tested on SuSE, RedHat, Mandrake and Debian) and, if you really must use Windows, XAMPP for Windows is just as easy. You'll be able to do perform all the book's exercises fine and you don't have to break your brain pan setting up your web server in the process. JMHO.
Once you get past the server set up, you can concentrate on learning the actual coding involved. True to the other books in this series, Head First PHP & MySQL teaches by taking the reader through actually building working features using the technologies involved. In this case, you'll actually learn how to build apps that let visitors to your site fill out forms (though I thought doggie alien abductions was an "interesting" first topic, compared to the expected gaming and rock concert examples) and other client-server interactive tasks. The book is so big (812 pages), not just because it contains a great deal of useful information, but because it presents that information in a bunch of different ways, which is typical for the series. As far as PHP and MySQL is concerned, for the newbie, repetition is absolutely required to "get it". It's one thing to kloogie together code so that it sort of works and quite another to be competent by the last page of the book.
Is the book juvenile? Is the series juvenile? Well...yes, but that's the point. If you're a very "serious" person or being highly distractable has never been your problem, there are other books out there for you. Try Web Database Applications with PHP & MySQL or better yet, for beginners, take a look at Learning PHP 5 and Learning MySQL. They're both great books and very good teaching resources. If however, you've looked at those books and felt the grim spectre of boredom settling down on your shoulder, ready to paralyze your will to live, then perhaps Beighley and Morrison's Head First PHP & MySQL is the book for you. It's got what it takes to teach the topic and in a way that will keep you engaged. Make it so.
Labels:
book review,
MySQL,
o'reilly,
PHP,
programming,
web design
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 again...you'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.
Wednesday, February 25, 2009
Review: The Art of Lean Software Development: A Practical and Incremental Approach
Authors: Curt Hibbs, Steve Jewett, and Mike Sullivan
Format: Paperback, 142 pages
Publisher: O'Reilly Media, Inc.; 1st edition (February 2, 2009)
ISBN-10: 0596517319
ISBN-13: 978-0596517311
What is Lean Software Development? Fortunately, that's an OK question to ask if you are reading this book. It's not written for developers who are well versed in "lean" or "agile" development. That's good for the rest of us. For instance, in my "day job" we are slowly moving towards a more Agile development model. I suppose if some folks around here weren't all that sure what "agile" meant, reading up on it would be helpful. That's the sort of role this book hopes to fill relative to "lean", with the understanding that the "pro-lean subculture" is well associated with Agile development.
The book is lean. I mean that in the plain meaning of the word. It's a short book at only 142 pages and each of its nine chapters is less than 20 pages long. The idea, according to the Preface, is to avoid "padding our chapters with useless fluff". Like a string held taught between two tin cans or a tightly focused laser beam, the book attempts to describe the shortest distance between two points; between start and destination. Actually, the last sentence in the last chapter states, "Remember, Lean is a journey, not a destination", so I guess my review is already somewhat inaccurate. "Lean" then is the string or the laser beam.
As you may have guessed by now, the process of Lean development is to make software development..."lean". That is, it's what government is always proposing to do; to use less resources and produce superior results more effectively (I'll avoid my usual commentary on the whole "stimulus package" theory of "lean" or "anti-lean" in its case). The first chapter in the book establishes why lean is a good idea and where it came from. In order for you to be interested in the book, the authors must first sell the reader on the desirability of lean development.
The use of the term "subculture" a few paragraphs back was not really a euphemism. Lean development even has it's own "glossary" of sorts, which is also presented in Chapter 1. Like any philosophy, it comes with it's own "mindset" and "world view" relative to software development (and beyond). Considering its Japanese origins, the ideal of group cooperation in any endeavour is both espoused in the lean development vision and within the pages of this book. Certainly the authors wrote their book with that philosophy in mind and it makes sense. The short definition of Lean development is to reduce a series of tasks to the simplest set of steps possible. Why use two words to say something when you can do it with one? At the same time, accuracy and making the product work can't be sacrificed for the sake of simplicity of design or speed of delivery.
It's interesting that one of the values of Lean development is respecting people (which is also a very Japanese value). You wouldn't normally think of the humanity of software development, but coders are human too, as are the rest of the employees of any software development outfit, and as well as their customers. That also works (at least in theory) across the boundaries between management and line staff; hiring people who know what they're doing and then trusting that they'll do their jobs. I know a few "micromanagers" who could benefit from reading at least this part of the book (no one I've worked for recently, thankfully).
At this juncture (or before), you may have asked yourself, "What's the difference between agile and lean"? Apparently, not much, according to the authors, at least on the surface of the goals. Both philosophies and methods claim to do what all managers want to do with their companies; make a superior product more efficiently, using less time, personnel, and money. The underlying "mindset" is where the two paths diverge. Agile is more focused around the specific process of software development, while Lean casts a wider net and includes software development within the larger business context.
The book functions as a beginner's primer on Lean software development, describing the philosophy and basic design of Lean development. It's not easy to describe a philosophy using a lean process since the concept of philosophy tends to be somewhat long winded (not unlike myself). The book is sprinkled with little real-life examples, like bread crumbs, from the lives of the authors, briefly illustrating the points to be made along the trail of the book's pages. That's good, because such content doesn't easily lend itself to longer tomes, such as the 430 pages of Shore and Warden's The Art of Agile Development (it's a good book, but you have to really want or need to read it).
The benefit of the last chapter, "What's Next?" is that it allows the book to be "lean" and at the same time, doesn't leave the reader hanging in mid-air. Actually, it's the resources listed in the Appendix that shows the reader the roadmap to the next part of the territory, based in the book's bibliography. Despite the "Using Code Examples" section in the Preface, this is a book about concept and not about mechanics. In other words, there are no code examples and no supplementary website for the book. The book is a brief template to be applied to your actual practice, not the practice itself. I can take philosophy in limited doses before I must return to my bolts and my wrenches. Fortunately, Hibbs, Jewett, and Sullivan had people like me in mind when they wrote this book.
If you are a manager who is considering moving to a more focused software development model and is wondering if "lean" is for you and your company, it wouldn't hurt to have your first introduction to Lean software development be The Art of Lean Software Development: A Practical and Incremental Approach. At least you will find out fast if you want to explore that path more completely after sailing through the book.
Wednesday, February 18, 2009
Review: David Pogue's Digital Photography: The Missing Manual
Author: David Pogue (who else?)
Format: Paperback, 304 pages
Publisher: Pogue Press (January 22, 2009)
ISBN-10: 0596154038
ISBN-13: 978-0596154035
Update: March 10, 2009 I never made it to the Pacific Ocean during my trip to California, but I did take my wee digital camera to the Capital Street Bridge that crosses the Boise River near BSU. I posted the pics to Picasa just so you can view my first efforts. I didn't do anything to the photos besides a bit of cropping, so what you see is what you get. If you're interested, you can post comments (be nice, these are my first photos in a very long time) and suggestions. Capital Street Bridge in Winter. Peace.
I'll admit that I've used a digital camera on occasion. That's probably an odd admission, since taking photographs with a digital camera is about the same thing as driving with a car these days. Let me explain. I haven't really been "into" taking pictures for quite sometime, even at "family events" or on other occasions when it would be normal for people to take pictures. I don't vacation often (life as a contract worker, though I've got a "day job" currently), so I don't go to places that are unusual enough or spectacular enough to inspire me to record them on film...uh, in flash memory. By the way, that's the other reason I don't take many pictures these days.
"Back in the day" as they say, I was very much into photography. Keep in mind this was back in the day of the 35mm SAR (single action reflex) camera. This was back in the day when Kodak still made B & W paper and film (remember "film"?). This was also back in the day when I actually went places and saw things that were (in my humble opinion) worthy of recording on film. I didn't even have to go far, because in those days, I could "see" a lot more. That is, I could see things in my ordinary world that could become art, using the right perspective (and the right filters, and the right film, and the right...).
Somewhere along the line, I just got too busy, or I got too committed to practicalities, or I got too cynical. I stopped looking at the world as if it were art, and started wearing my blinders. Oh sure, the occasional sunset still looked "pretty" and I'd sometimes see a bit of loveliness in the world here or there, but then the next second would pass, and I'd have to be getting back to the task at hand (whatever that task might be). My view of the world would once again become mundane and ordinary, and "the vision" would be corked back into its bottle; tossed somewhere into the depths of what used to be my imagination.
My wife bought a digital camera several years ago. I remember being surprised, because we had a couple of small film cameras and she's not the sort of person to buy something "just because". There has to be a demonstrated need for the item. I think the film cameras were getting on in years and there was something she wanted to record (probably someone else's backyard...she's into landscaping, or wants to be). Anyway, this camera came into our...her possession. I helped her figure out how to download pictures from the camera to her PC the first time, but that's about all I had to do with it.
Recently, I had reason to start creating a number of social networking sites (the original reason is still a secret, but I'll be able to talk about it soon...don't worry...nothing bad) and needed a "profile picture". I'm nothing to look at. In the photos of my son's wedding last May, I looked a bit like a cross between "Lurch" from the Addams Family and Night of the Living Dead. I needed to figure out a way to take a portrait (by myself) and make it look not too scary. With the aid of the digital camera and the bathroom mirror (the missus was out that evening) I managed to create something passable. I "desaturated" the image using GIMP, modified the brightness and contrast a bit, and I was set. Rather proud of my effort, something long dormant stirred within me.
I periodically get email notices for different books being published, inviting me to review them. David Pogue's Digital Photography: The Missing Manual appeared in my inbox. I figured "why not"? Then it arrived, and I remembered the digital camera and started wondering if the dead could be resurrected. Yeah, I've encountered Flickr and Picassa and such, and sampled their wares. I thumbed through an old National Geographic at the barber's...uh, "hair stylist's" recently, and spent quite a bit of time going over the photos of the South Sandwich Islands. Was I really still interested in photography? Did I really have time for a hobby? Well, it wouldn't hurt to look at the book.
Pogue's book, like most of the Missing Manual series, is written for the beginner. In fact, the first chapter is dedicated to describing the different digital cameras on the market (and there are tons), and the second chapter is a list of the features to be found on said-cameras. I'm pretty sure I still remember the basics of composing a shot in the view finder (chapter 3), but the information's in the book, if I needed a refresher. As I worked my way through the book, I started to get depressed and remembered why I wasn't attracted to digital cameras. They were too easy and too hard.
The too easy is like what blogging has done to writing. Everything is instantaneous. Access is automatic. Anything you happen to be thinking of, at anytime, can be translated to text, with graphics added with just a bit more effort, and published to the web for all (potentially) the world to see. Where was the effort? Where was the editing? Where was the gatekeeper to define which piece of writing is "worthy" to see the light of day? All this applies to "instant" digital photography, especially with places like Flickr, that can allow the photographer (and his or her grandmother) to publish to the web anything they can point and click at.
I pushed my mental "reset" button and tried to pull myself out of "cynical" mode. After all, I know professional photographers who use digital cameras and edit in Photoshop, so it can't be a lost cause. There are blogs actually worth reading (and I hope mine is one of them), and I've used a microwave oven for decades, so I know that not all "instant gratification" is bad (though my "jury" is still out on cell phone cameras, which Pogue's book covers). I moved on.
I started to see parallels between Pogue's book and a book written by Akkana Peck for Apress: Beginning GIMP: From Novice to Professional (2nd Ed) (I reviewed this book for the hardcopy version of Linux Pro Magazine, but due to the publication cycle, you won't be able to read it until the March 2009 edition). I really like GIMP, and though I've never used Photoshop, from what I know of PS (besides the fact that it's overpriced), GIMP seems to be able to do most of the same tasks. I'm reasonably satisfied that Pogue's and Peck's books could work in concert in my life ("My life"? Did I just say that?).
Pogue's book is a reintroduction to basic photography for those of us who once loved the art (even though I was hardly an expert) and have let it lay fallow for several decades. If you have never done anything more with your digital camera than "point and click", Pogue teaches you how to do more. If you've never purchased such a camera, the beginning chapters in the book will teach you what to look for in terms of features that will meet your needs. It is a beginner's book. If you are wanting to get into serious digital photography, this book will only take you so far, but it will get you started. That is, it's very much like a person wanting to learn how to paint; you need to do enough still lifes before you get on to "art". You need to lay the foundation for your skill sets before you can build up. David Pogue's book functions like that foundation, or at least shows you how to construct it.
Appendix A: Where to Go From Here will speak to you if you want to take digital photography beyond your vacation pictures. It provides various online and print resources you can access and mentions Photoshop (but not GIMP; shame on you, David) as the photo editing software of choice. Appendix B: The Top Ten Tips of All Time is the book in a nutshell, in terms of distilling down all the advice given in the book on how to take a shot into just a few pages.
I think the resistance I've experienced around wanting to review this book, and getting anywhere near my wife's modest little digital camera, isn't that I'm afraid of taking pictures with modern technology. It's more that I'm afraid I'm going to start caring about taking photographs again. I've already got plenty of creative tasks on my plate and plenty more practical tasks, all competing for the same 24 hours in each day (and I do have to sleep sometimes, though that too is occasionally elusive).
Do I recommend Pogue's digital photography book? Actually, yes. If you are a beginner, either at buying such a device or knowing what to do with it, I think Pogue has produced a document "worthy" of your time and attention. Like most of what comes out of this series, the writing is solid and accessible. Technically, the information is accurate, and Pogue writes from the perspective of someone who also loves to photograph (which is probably why he wrote the book, rather than commissioning another author to do so).
I know this review has been more editorial than anything else, but this is one book that squarely collided with my personality and my personal history. No book review, or any other sort of writing for that matter (certainly the popular news media) is without bias, so when I review any book, I review it from my point of view. For David Pogue's Digital Photography: The Missing Manual though, that point of view was a little closer to "home" than most.
Unabashed plug time. A friend of mine named Karen (I don't know if she wants me to use her last name on my blog) has breathed new life and new passion into her love of technology by discovering Photoshop (she feels sorry for me because I prefer GIMP). I've been following her progress on twitter with satisfaction and have noticed that some of the tutorials on her blog Pursuing Photoshop have been picked up by some of the more noteworthy Photoshop online venues. She's also been known to hang out at the PlanetPhotoshop.com forums, if you're interested. If Photoshop is your photo editor of choice (and Adobe has as big a grip on that market as Microsoft Windows has on the home desktop space), you can't go wrong visiting those online resources.
For those readers out there (all three of you) who are more open source minded like me, you will want to get your hands on a copy of Akkana Peck's Beginning GIMP: From Novice to Professional (2nd Ed). I won't do the review of her book here for the reasons I've already stated, but the long and the short of it is, her's is the best GIMP book on the market, as well as being the most up to date. It will go well with everything Pogue has written in his book and, as far as the photo editing piece; GIMP offers a more "reasonably priced" alternative to Photoshop.
Will I use Pogue's book to bring back the dead? Well, the corpse is stirring, but whether or not it will emerge from its tomb, only time will tell. I'm supposed to take a four day trip to Oceanside after my daughter-in-law has her first baby (my first grandchild), so who knows? I haven't seen the Pacific ocean in a long time.
Monday, February 16, 2009
Spelling, Algebra, and When to Turn Off the Computer
Update 2009/02/18: Tim O'Reilly commented on this blog entry, and it looks like I didn't read his original comments well enough. I appreciate him stopping by my humble abode and feel it necessary to include his comments here.
Original Article: Tracey Pilone's recent blog at O'Reilly.com, The Intersection of Algebra and Technology got me thinking about one of my "soapbox" issues; the use of computing in education. One of the biggest proponents of computers in schools is the Bill and Melinda Gates Foundation which has provided millions of dollars in technology to education, from Elementary schools to Universities over the years. But is this all a good idea?
As Pilone, co-author of Head First Algebra (O'Reilly, December 2008) points out in her blog, there was a great deal of discussion between the authors (her and her spouse) and the publishers as to how much technology should be injected into the book. In other words, should graphing calculators be required or at least "allowed" in working through the book's problems? The ultimate answer was "no", which was a relief to me (I don't what to have to go out and buy one again). The Pilones had grown up and learned Algebra in a world without graphing calculators, and certainly generations of mathematicians worked through Algebra without such aids. Learning to do it yourself has advantages (and yes, calculators are "allowed" to perform simple math calculations).
Pilone also mentioned a Duke University study, Scaling the Digital Divide which "surprisingly" concluded (not a surprise to me) that ...the impact of home computer use is, if anything, negative on school achievement. That means that there may be benefits to learning language and mathematics before introducing technology into the mix".
I have an experience that illustrates this in a very simple way. I'm known as the dictionary of my family. Whenever anyone wants to know how to spell a word or the definition of a word, they ask me. Why? Because 9 times out of 10, I probably know the answer. I grew up in a world without the Internet, online dictionaries, and spell checkers. I still have hard copies of a Dictionary and a Thesaurus that I consult when I want to learn something about words (and since I'm a writer, I refer to them often). Since I grew up with this practice, without realizing it, I had memorized a large number of word spellings and definitions, so I've become something of an asset to my kids and my spouse (and to myself).
There are words that always "defeat" me, such as "Caribbean" and "Mediterranean", but for the most part, I'm pretty good at not having to use "high tech" to figure out how to spell (I suppose a hard copy dictionary could be considered "low tech").
The idea of putting computers in schools is simple and understandable. Computers are *the* tool of the 21st century for accessing information in the "Information Age". I say "computers" using the widest possible definition, including hand held devices and any hardware or software utility used to store, collect, organize, and transmit data. I'm not saying to pull all the PCs out of the classroom and to burn down all of the computer labs at your local university. I am saying though, that we sadly teach our children to use a calculator to do simple addition, subtraction, multiplication, and division to the point that they can't even make change at a grocery store and they always assume the cash register (or whatever it's called these days) is right (even though it's not). This practice is not doing our children and future generations any favors.
Tim O'Reilly wrote an article for his blog yesterday called Change Happens and communicates the idea that, since change is inevitable, we shouldn't resist it. I replied to his tweet on twitter that I didn't think all change was good and got back the standard "party line" that it's inevitable, more or less saying "why fight it"? This makes me wonder if O'Reilly bothered to read Pilone's blog (which after all, is published on OReilly.com), since it doesn't seem to line up with his perspectives.
Yes, change is inevitable and some change is beneficial, but not all change should be embraced. No, the future won't be like we imagine and the future won't always be good, but that doesn't mean we're helpless in the face of change. Change is caused for the most part, by the intervention of people in the world. It's not an elemental force we are helpless to affect, such as a hurricane. We can steer the course of change. All we have to do is care enough to make the effort.
If we want to take control of our education, our understanding of the world around us, and the direction of our lives, we can do small, simple things to make a difference. It can come down to something as straightforward as learning and memorizing the spelling and definitions of words, and working out algebra problems using a pencil and paper. Tools are instruments to be used by people; we are not to be used by them, nor should our lives be dictated by them, simply because they were invented and simply because they exist.
Again, I'm not talking about "killing" the PC or Mac. After all, I make my living documenting technology in a number of different ways, including being a technical writer for a software firm, writing books and book reviews about technology, and a column for Linux Pro Magazine. I'm not talking about biting the hand that feeds me. I am talking about making conscious and calculated decisions on when to use technology and when to use less complicated (and less convenient) tools. Your brain is still the best "technology" that you'll ever have for solving problems and making decisions. Try putting away the cell phone and Kindle and picking up a book once in awhile. You'll be surprised at how much you learn.
By the way, Harlan Ellison spoke somewhat to this point in his short story Jeffty is Five, which I read many years ago and which remains one of my favorite Ellison works. An excellent book on precisely this topic is Steve Talbott's Devices of the Soul: Battling for Our Selves in an Age of Machines. Reading these works is worth definitely worth your time.
"I think you missed the point of my "change happens" blog post, if you thought my reply was "just get used to it." In fact, I was writing about resilience in the face of change. And what you're talking about - stepping away from the computer when needed - is one way to become more resilient in the face of change. We should always be wary of becoming too dependent on our tools. FWIW, I also published the book you recommend at the end, Steve Talbott's Devices of the Soul, as well as his much earlier The Future Does Not Compute. So I really don't know why you thought that my "change happens" piece was contrary to your thinking".Mea culpa. Update 2009/02/17: I saw this Calvin and Hobbes cartoon this morning and thought it the perfect "counterpoint" to my article. I just proves that doing it "the old fashioned way" has pitfalls, at least when your tutor is a tiger. LOL
Labels:
algebra,
change,
computers,
definitions,
education,
learning,
o'reilly,
spelling,
technology
Monday, February 9, 2009
Review: Head First Web Design
Authors: Ethan Watrall and Jeff Siarto
Format: Paperback, 495 pages
Publisher: O'Reilly Media, Inc. (January 2, 2009)
ISBN-10: 0596520301
ISBN-13: 978-0596520304
I recently reviewed Creating a Web Site: The Missing Manual and thought a review of this Head First book would be in order. While you might say that both of these books cater to beginners who don't have a history of creating and maintaining web site, you can also say that each book caters to its own special audience.
Actually, these two books have two different audiences in more than one way. The Head First series, as I mentioned in my review of Head First Algebra, tends to be best used by younger people. A high school age audience is ideal and if you have been diagnosed with the dreaded initials "A-D-H-D", so much the better. All of the pictures, drawings, arrows, puzzles, and other input types are just great if you normally hate sitting still for more than a few minutes at a time reading straight text.
However, as I glanced through the front matter of Watrall and Siarto's book, I got a mild shock. They didn't write this text for the "right-at-the-starting-gate" beginner. Specifically, the book assumes you have prior experience with XHTML (the most recent "buzzword" for HTML that conforms to the latest standards) and CSS, plus have some knowledge of PHP, .NET, and/or Ruby on Rails. If you don't fit this description, the publisher recommends picking up a copy of Head First HTML with CSS & XHTML to get started. So just what does this "web design" book teach?
The book proposes to take up where designing a static HTML/CSS site leaves off. Specifically, to teach how to design and develop web sites for the professional or the wannebe-professional web designer. Your first clue that this Head First book is different from the rest of its siblings is that it's in color. I know it's an odd detail to mention, but all of the other Head First books I've seen to date have been strictly monochrome. It never occurred to me that color would be an option in this series (unless there's such a book as "Head First Color Digital Photography").
Relative to the audience-type I mentioned before, this isn't the easiest subject to teach, even in the Head First format. Action-oriented readers are doers, not necessarily planners, and designing professional web sites requires a lot of planning. Chapter 1 covers how to storyboard a proposed web site, which is a necessary first step in many artistic projects. This is contrary to the artist who, extending the metaphor, would rather grab a blank canvas and some paints and start spontaneously creating. Of course, using this approach, you don't always know what you'll end up with until it happens. With designing web sites, and particularly for people who are paying you, this isn't always the best option.
While the web pages and some of the diagrams are better rendered in color for the sake of this book, I'm not sure that goes for the photos of the actual people (models). They tend to work better, at least for me, when they retain a more monochrome effect. It makes them easier to take, given their lack of surroundings. In fact, as I made my way through more of the book, I realized that I was having trouble shifting back and forth between the reality that color lends to screenshots of web sites and the more "cartoony" feel of the rest of the Head First format. I agree, it's better to "tell this tale" in color rather than monochrome, but it creates another problem. I found myself wondering if the reader, having become at least competent in basic XHTML/CSS and one or more programming languages, might be better served by "graduating" to a more standard web design/development text.
I think of the Head First series as a single stepping stone for a person at a particular stage in their cognitive development (which is different than intelligence) that needs information served up in a particular format at this time in their life. Once they progress beyond that developmental milestone, they will be able to tolerate more "standard" information streams. This Head First book comes closer to the border between its realm and the realms covered by those other info streams than I would have expected.
My basic assumption though, could be flawed. I have assumed that people "grow out of" needing to have all or most of their information provided the way the Head First series offers learning. On the other hand, how many people actually prefer the "video game" method of learning their entire lives? Is this also a generational difference in learning styles and that I'm on the wrong side of that particular line? No, otherwise, no one in their 20s could learn from any of O'Reilly's "The Definitive Guide" or "Cookbook" series, among others, and I know that's not true.
The book might have been better titled "Head First Professional Web Design", since "web design" as a term, covers a wide field. Maybe that's what threw me off. While I, as an individual learner, am not often best served by this series (the Algebra book being the exception), this web design book seems to almost be pulling the audience away from a strict "Head First" learning model and encouraging them to take the next step. The "atypical-ness" of this one Head First book is being reflected in the difficulty I'm having in reviewing it.
It's not that the book doesn't teach its subject well, it's just that the book has to bend it's own series format rules in order to do a good job. Could the audience have taken the next step on their own and just learned the same content from a different book? I'm not sure. Maybe the book serves those people who are used to and like the Head First format and don't feel ready to move away from it...even though they are. Is this book a good teacher for its audience? Probably. It just seems that, in order for the authors to teach this topic, they needed to appeal to the audience to stretch beyond what Head First normally offers. That may mean that Head First has an upper limit for what it can teach. As I review more in this series, I'll see if there's a point past which it cannot go.
Thursday, February 5, 2009
Head First Algebra: A Learner's Guide to Algebra
Authors: Tracey Pilone and Dan Pilone
Format: Paperback, 559 pages.
Publisher: O'Reilly Media, Inc. (January 2, 2009)
ISBN-10: 0596514867
ISBN-13: 978-0596514860
Update: I owe an apology to O'Reilly and anyone who has read this review so far. I rather consistently referred to the "Head First" series as the "Head Start" series. The mistake was completely mine and I apologize.
No, this isn't a book that directly maps to FOSS or Linux or programming...exactly. On the other hand, the paths to programming in open and closed source usually move through this realm, so I think it is relevant. Picture yourself a would-be programmer who likes to code in your spare time, but you've got a problem. To really become any good at what you'd like to be your profession, there are math requirements, and you think math is almost as interesting as watching wind erode granite. Fortunately for you, O'Reilly and the Head First series has come to your rescue. They created "Head First Algebra".
I agreed to have a look at this book first as a rough cut via Safari. Unfortunately, it presented me with a major drawback relative to my learning style; I could't write in the book. OK, I admit it. I really need to be able to write notes in my textbooks, highlight key sentences and paragraphs (which can include a sizable percentage of the book) and otherwise fold, spindle, and mutilate the thing. As hard as I tried, I just couldn't stick with it when the learning source was online. It doesn't help that I'm kind of "math-phobic" on top of everything else.
Actually, that's not entirely true. I do just fine with standard math such as adding, subtracting, multiplying, and dividing. It's all that other pesky stuff, which includes "algebra", that sets off my panic attacks. I've actually taken and passed an algebra class in the dim past, but my grades weren't exactly stellar (compared to the much higher grades I got in all of my other classes), so when I saw that Head First was offering an algebra book, I figured I had a second chance. I hate admitting defeat or anything near it. This book seemed to be my way to victory.
When the paperback version of the book arrived on my doorstep, I sharpened a brand new number 2 pencil, got out a fresh highlighter, and got to work. I had gone through the first chapter in Safari, so I knew that the material would lull me into a false sense of confidence. The authors present "solving for unknowns" as simple adding/subtracting/multiplying/dividing problems (which they are), which I can do. Of course, that's the point; to bring the reader in slowly and build up their confidence. After all, if you are going to use a Head First book to learn algebra, it means that the more standard (read: dry as Gobi desert sand) texts on the subject have not been entirely successful.
Actually, I'm the perfect person to review this book. If I like it, then the target audience will adore it. If I were an algebra teacher or skilled at more advanced forms of math, I probably couldn't "reduce" my thinking down to who the book is written for. It would be like an Olympic swimmer trying to review a book written to teach pre-schoolers how to paddle in a kiddie pool.
All that said, I had my usual "issues" with the Head First series. The series is written for people (young and old alike) who are just a tad bit ADHD (or more) and need to have a lot of stimulus coming in more or less constantly to stay engaged. If you could teach algebra from the perspective of a first-person shooter, that would be ideal for this population, but that's hard to do in a static book. The Head First series does its best to cater to this audience (and as an aside, I just sent my rather distractable son a copy of "Head First JavaScript", and I'm dying to see what he thinks of it) and I think high school students everywhere should pay homage to O'Reilly for creating Head First.
By page 14, you can see where the book is going, even though the problems are still easy enough to do in your head, and for the math-phobic, that's when the sweat will start to form on your palms. Time to confront your fears and remember, this isn't an "ordinary" algebra book. You end up seeing a nice, neat example of "isolating the variable". Seems rather benign, actually. Why do I remember this stuff being hard? Oh wait! I'm still in the first chapter.
By the end of the first chapter, the reader will start to get the feeling that they might really be successful at this stuff. Naturally, there's the spectre of more complicated problems to face, but the saving grace of the book isn't just the book. Unless your high school math teacher is using this as their official text book, you will probably use this book on its own. I'd really recommend it for a "summer reading book" you go through before formally taking algebra in the fall. The book (sans class) lets you do what the classroom experience doesn't allow. You can go at your own pace. Parents reading what I just wrote will shudder in fear, calculating that their child's voluntary "pace" at learning algebra will be slightly slower than the flow of the nearest glacier (although, with "global warming" effects, that could end up being a bad analogy).
Fear not. I remember thinking to myself during my own rather painful "algebra experience" that I wished I had just a little more time to "get it". I was working my sorry tail off going to class, doing homework until the wee hours, and taking tutoring, both from the instructor (nice guy, really) and outside tutoring. If effort was the ultimate measure of how well I'd do in the class, I should have gotten an A+. Alas, things like aptitude and time have something to do with it as well. That means, the existence of this book in your room or on your bookshelf isn't enough to teach you algebra, but putting significant and regular effort into it, will. Without the artificial constraints of the classroom environment, learning algebra using this book is very "do-able", even if you don't like math.
Is "Head First Algebra" a fool proof method of learning algebra for everyone? Depends. First off, you have to at least be able to tolerate the format of the Head First series (and if you already love the format, then no worries for you). Then, you have to use it. I found it a little easier to go through this book than others in the series for some reason. I think that I need to learn programming in a way that doesn't lend itself to how Head First teaches, but Head First is really the way I need to learn algebra. Will wonders never cease. I don't think I'd recommend this book to be the only exposure to algebra for you (or your kids). Almost nobody learns algebra because it's fun and entertaining (OK, there are a few people out there like that, but the rest of the "herd" thinks you're weird). We learn algebra, at least formally, because we have to.
I can see the ideal use for this book as I described it a few paragraphs back. Take this book and work through it over the summer, before you have to actually take a "for real" algebra class, with a teacher, other students, homework, and (ugh) tests. Play with the book and the topic, but don't be lazy. Really use it regularly so the learning remains fresh. Then, after finishing the last pages and with all that dancing in your head, enter your high school or college algebra class. Your learning curve won't be nearly as steep and you'll be "desensitized" to the fear-inducing elements of algebra. You won't be fighting memory-destroying anxiety as you're working on learning.
I hear that No Starch is coming out with The Manga Guide to Calculus next summer. I wonder...
Wednesday, January 28, 2009
Review: Creating a Web Site: The Missing Manual
Author: Matthew MacDonald
Format: Paperback, 606 pages
Publisher: Pogue Press; 2nd edition (January 7, 2009)
ISBN-10: 0596520972
ISBN-13: 978-0596520977
Matthew MacDonald is something of an "in-house" author for the Missing Manual series. He's "penned" (and I use the term loosely in this day of the word processor) Access 2007: The Missing Manual, Excel 2007: The Missing Manual and, of all titles, Your Brain: The Missing Manual (and since I've reviewed all three of these books, I can tell you that he had a little expert help with the last one, especially). He's also written quite extensively for Apress and seems to be well versed on a number of topics.
That's why I thought Creating a Web Site might be a little "light" for him. I don't belittle the creativity and technical expertise involved in developing a website (and having created a few in my day, I know whereof I speak), but HTML, CSS, and a smattering of JavaScript isn't perhaps as challenging as writing about how your brain works. On the other hand, there's really so many details to web design that, instead of being to "light", MacDonald may have bitten off more than he could chew by trying to cram "everything" into a single book. Of course, I'm speaking from the point of view of not having cracked open the cover yet. Let's see what this book has under the hood (and I'm really mixing my metaphors in this paragraph).
Actually, it's "the hood" I noticed first, or rather the red "ribbon" on the cover saying, "Fully-Revised 2nd Edition". I'm used to reviewing later editions of earlier classics (the first edition of this book reviewed quite well), but "fully-revised" caught my attention. When writing a subsequent edition, often much of the original content doesn't need to be changed; just the bits of the technology that have been updated in the few years between books. Fully-Revised implies MacDonald overhauled the entire thing. It would be almost like writing a new book.
No clues were to be had on the back cover, so under the hood I went. I was also disappointed that the Introduction held nothing that said "What's New in this Book". I'd be willing to bet that Part Five: Blogs is probably one of the sections that was added. Of course, if MacDonald really did completely redo the book from scratch, there will be no new "parts" of the book; the entire structure and content will be new. Sadly, I didn't find any direct indication of this in the opening parts of the book, either.
What I did find, at least at the beginning, was a book written for the beginner. Fortunately, there's no "history lesson" on the development of "the Internet" or web browser development (I don't think I could have forced myself to take another stroll into the early years of Netscape). Chapter 1 does lightly gloss over about a page worth of Internet history, the major browsers (including Google Chrome; newbie on the block) and various conceptual items. Chapter 2 offers the reader the opportunity to create their first webpage and so on. Definitely starting at ground zero, which isn't a bad thing. If you wanted to design your own wee site, you'd want a book to hold your hand and guide you along the front end of the trail. There's enough in the second chapter to get the reader to create a single HTML page and display it in a browser.
Progressing through the book is like walking up a set of stairs. This is good for a linear thinker like me. Since this is a book about building websites, it presents more than just HTML and such. Chapter 3 talks about how to choose a webhost; necessary if you expect people to be able to access your site via the web. Chapter 4 introduces the reader to web editors including Adobe Dreamweaver (of course) and Microsoft Expression Web, but also lesser known editors such as open source Nvu and w3.org's Amaya. Since this is a general text about building websites, the material here goes into virtually no depth at all and we know that entire racks of books have been dedicated to Dreamweaver. Don't expect to become an expert on any of the editors from what this text gives you.
Part Two takes the reader back into the basics of building and developing web pages, going into more detail about XHTML and CSS, then building on those concepts and practices. This part of the book is what you'd typically expect and MacDonald delivers. In fact, at roughly 200 pages, you could consider this section to be a small book all it's own, teaching the language side of website construction. Remember though, a generalist book has to cover a lot of territory.
Part Three is the "marketing" section. Once you've built a site, it doesn't do much good if people don't visit. There's even some material on how to monetize your site using tools such as Google AdSense, Amazon Associates and so on. I thought we were probably through with the "technical" side of website development, when MacDonald took me back into the realm with what he calls "Web Site Frills". These days, I don't consider JavaScript a "frill" but rather a standard "screwdriver" or "hammer" in the web designer's toolbox. Of course, limited to one chapter, there's not a huge amount of information to be gleaned (and The Missing Manual series has an entire book dedicated to JavaScript written by David Sawyer McFarland, but I digress). Of course, how many amateur web designers just "Google" for the bit of JavaScript they need and paste the ready-made code into their webpages?
The part of the book on Blogs seemed a bit of a departure from everything that came before, mainly because a blog isn't a website as such. People (myself included) often have a website and blog, since they fulfill different functions on the web. Even MacDonald introduces this section by telling the reader that he's moving away from the web site building agenda. He makes heavy use of Google's Blogger which is building a blog with assistance. I will admit that the skills the reader should have learned up to this point will let them customize the style sheets underlying the standard templates, so they can create their own look and feel (functionality is still largely controlled by the available widgets).
I found the "hazards" of blogging box interesting as the author addresses some of the social pitfalls of putting what amounts to a personal journal on the web for all to see. If you've never made a blog with Blogger before and think you might be intimidated by the process, this section contains a nice tutorial for the you. "Marketing" your blog is restricted to another box at the end of the section, but it might be helpful for the uninitiated.
I was pleased to see that the appendixes included the expected XHTML reference and a "useful web sites" list, but I'm not sure what to think of the book overall. It's been awhile since I've needed a basic primer on building a web site, and I'm torn between thinking the book was too short and too long. It really tried to cover all the basics and then some, and yes, the reader will be able to design, develop, and publish a site to the web if they follow what this book says. On the other hand, it's a mile wide and an inch deep. You can't cover everything you'd really need to know to design a really good site in a single book, even if it's over 600 pages long.
I think the book might better have served its audience, even if it reduced itself in size, by confining itself to teaching web design and publishing basics. I'm not even sure I'd have thrown JavaScript into the mix but instead, would have pumped in more HTML and CSS. I'm torn because, as I previously said, you hardly find a site on the Internet anymore that doesn't have some JavaScript. So where do you draw the line as far as what to put in this book and what to leave out?
What I really wanted to see was references to the other Missing Manuals that more exclusively cover the technologies barely touched upon in this text. The Missing Manual series has books on just about everything that addresses CSS, JavaScript, Dreamweaver, and such and in depth. Using this book as a spring board into those other books might have been the way to go.
Don't get me wrong. The book will teach you want you need to know to create a web site, and MacDonald is honest, albeit in the Blog part of the book, that what the book doesn't address is how to maintain a website. If you do what the book says, you'll have a website on the Internet that will function at least adequately. If that's the goal of the book and the reader, then you're all set. It's just that so much more can be done and many of the book's chapters could have ended with something like "Please see CSS: The Missing Manual to get more out of your style sheets".
As a parting thought, I received Head First Web Design from O'Reilly the same day as I did the Missing Manual book, so it'll be interesting to me (and hopefully to you) to compare the two books when I write the "Head First" review. Which book is better for the beginning web designer or, does each book point to a different audience? We'll find out soon.
Subscribe to:
Comments (Atom)



