<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Geek Book &#187; Programming</title>
	<atom:link href="http://geekbook.org/archives/category/programming/feed" rel="self" type="application/rss+xml" />
	<link>http://geekbook.org</link>
	<description>Books for Geeks</description>
	<lastBuildDate>Wed, 23 Dec 2009 20:23:33 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Python Essential Reference 4th Ed.</title>
		<link>http://geekbook.org/archives/205</link>
		<comments>http://geekbook.org/archives/205#comments</comments>
		<pubDate>Wed, 23 Dec 2009 17:05:43 +0000</pubDate>
		<dc:creator>bookGeek</dc:creator>
				<category><![CDATA[NonFiction]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[reference]]></category>

		<guid isPermaLink="false">http://geekbook.org/?p=205</guid>
		<description><![CDATA[It has been ten years since David Beazley wrote the first edition of Python Essential Reference. The book has proven itself as a valuable resource to Python developers and has been kept current over those ten years, with the fourth edition coming at an interesting time for Python. Python 3 was a major release that [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.informit.com/store/product.aspx?isbn=0672329786"><img src="http://www.informit.com/ShowCover.aspx?isbn=0672329786&#038;type=f"></a></p>
<p>It has been ten years since <a href="http://www.dabeaz.com/">David Beazley</a> wrote the first edition of <cite>Python Essential Reference.</cite>  The book has proven itself as a valuable resource to Python developers and has been kept current over those ten years, with the fourth edition coming at an interesting time for Python.  Python 3 was a major release that broke backwards compatibility.  Python 3 has been around for a year now.  That said, the current download page at the official Python site states, &#8220;If you don&#8217;t know which version to use, start with Python 2.6.4; more existing third party software is compatible with Python 2 than Python 3 right now.&#8221;  Beazley in keeping with the pragmatic roots of a reference that sticks to what is &#8216;essential&#8217; has removed the coverage on features from 2 that were removed from 3.  At the same time, the primary focus for new features that came with 3 is limited to those that have been back-ported to 2.  This approach, born out of a desire to keep the reference relevant, provides a blended approach that is above all else practical.</p>
<p><span id="more-205"></span>
<p>The end result of that choice is a reference document consisting of those parts of Python that are shared between versions 2 and 3.  This is a significant portion of the language and I think this approach is really what will give this reference more traction than many of the other guides that focus purely on 3.  I think that those are valuable and over time the balance will shift but as of right now, for a little while to come, this book takes the most realistic approach.  That feels very fuzzy, but I have no idea how long it will be until Python 3 truly is the dominant version and Python 2 is truly put to bed.</p>
<p>If I had to guess how Beazley&#8217;s <cite>Python Essential Reference</cite> has held in there over the years, the key would be that there is a lot of what a developer needs and very little of what she doesn&#8217;t need.  There is a twenty-four page tutorial introduction, but this is not a guide on how to program or how to use Python for beginners.  An experienced programmer could probably use this reference to shift to Python as a new language, but someone completely new to writing code would probably not want to start here.  A quick look at the table of contents shows that an explanation of the language itself is covered in under 200 pages.  Extending and embedding Python also get their own section, but close to 400 pages is given to the Python library.</p>
<p>An inevitable question is what one will gain with this reference over the <a href="http://docs.python.org/index.html">online documentation</a>.  A good example to see how things vary is to look at chapter nineteen, <cite>Operating System Services</cite> and the online documentation for <a href="http://docs.python.org/library/allos.html">Generic Operating System Services.</a>  The online documentation is very thorough, and covers each piece of the library starting with os and io, building from there.  While every facet is documented much of it is rather brief.  For example section <a href="http://docs.python.org/library/io.html#raw-file-i-o">16.2.3. Raw File I/O</a> is a very straightforward listing of the very low level functionality available via io.FileIO.  In contrast, looking at the <a href="http://docs.python.org/3.1/library/io.html#raw-file-i-o">3.1.1 Docs</a> for Raw IO shows that parameters for FileIO changed with that version.  Looking to the documentation for <a href="http://docs.python.org/dev/library/io.html#raw-file-i-o">2.7a1 Raw File I/O</a> shows that these changes are being back-ported to Python 2.</p>
<p>In <cite>Python Essential Reference</cite> none of this hunting down changes and checking to see if they are coming to 2 are necessary.  Beazley shows them in his documentation.  This is the strength of his choice on how to handle these types of situations.  On top of that, Beazley provides more than the online documents by including four paragraphs of additional information on Raw I/O and when its use is appropriate.  This added content is probably available googling around for it, but then I have to take the time to check dates on posts to see if things are still current and in general just hope that things are accurate.  I have never read a technical book that was completely error free, and there are probably at the very least some typos in <cite>Python Essential Reference</cite>, though I haven&#8217;t caught any of them on my read through or use of the book yet.  But the important thing is that I don&#8217;t expect the book to be perfect, rather I value it for being a known quantity.  I am aware of just when the material was compiled, who put it together and I have it all in one place.</p>
<pA last example from our chapter on operating system services would be how Beazley has handled the errno module.  The errno module deals with error codes returned by the operating system.  The online documentation for <a href="http://docs.python.org/library/errno.html">errno symbols</a> is not exhaustive and oddly enough is not ordered alphabetically.  Beazley provides two lists for errno symbols.  They are provided in alphabetical order, have a description and are grouped as POSIX error codes and Windows error codes.  A quick glance at these tables in a skimming of the book might lead one to believe that this is just a simple quick grab from already available sources, but that isn&#8217;t the case.  There is real value added even here.</p>
<p>The index is solid.  It would seem that one should be able to take this for granted with a technical reference but I&#8217;ve seen some sad exceptions.  Between the thorough index and the detailed table of contents I&#8217;ve never had to spend more than a few seconds looking for what I need.  This is the result of those tools as well as the fact that this is not an exhaustive reference.  After initially reading through the book for this review, I&#8217;ve taken some time just to use it day to day, as I doubt many will be reading it from front to back.  I don&#8217;t use Python professionally.  I&#8217;m purely a hobbyist when it comes to programming, but I&#8217;ve found that if I want to get the most out of the time I do have to play with personal projects, I want this book close.  I&#8217;m not cranking out code that fast to begin with and so I need all the help I can get.  I&#8217;ve found that Beazley seems to have hit that sweet spot where he gives enough information to get me where I need to be without bogging down in too many details or the things that I just don&#8217;t need to know.  I imagine this proper balance of information is due to Beazley&#8217;s extensive experience with Python and that of Noah Gift the technical editor for the book.</p>
<p>I&#8217;ve mentioned repeatedly that I approve of how the shift between Python 2 and 3 has been handled.  Beazley hasn&#8217;t completely integrated everything and left some of the unique new features of 3 out in the cold.  There is an appendix that deals specifically with Python 3.  It is short but does have some value.  New features, common pitfalls for those making the move from 2 to 3 and how to run both at the same time in a single environment are covered.  This is helpful and keeps my desk a little neater, though I think if I were going to be spending extensive time working with Python 3 then I would probably want to have another reference on hand.</p>
<p>If you are a week-end hacker like me, or someone that is writing Python on the clock, I think that this compact reference is very useful.  I don&#8217;t have any trouble running across huge technical books that do come in handy for any project that requires something heavy.  I also see a lot of little books that seem to be quickly produced summaries of what is already out there, spending most of their short content on fluff.  Every so often though, someone hits that sweet spot of concise usefulness.  Beazley did this with <cite>Python Essential Reference</cite> and this new edition continues that history in strong fashion.</p>
<p>Title: Python Essential Reference 4th ed.<BR>Author: David M. Beazley<BR>Publisher:  Addison-Wesley Professional<BR>Pages: 738<BR>ISBN: 978-0-672-32978-4<BR>Rating: 9/10</p>
]]></content:encoded>
			<wfw:commentRss>http://geekbook.org/archives/205/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mobile Design and Development</title>
		<link>http://geekbook.org/archives/199</link>
		<comments>http://geekbook.org/archives/199#comments</comments>
		<pubDate>Mon, 14 Dec 2009 22:01:35 +0000</pubDate>
		<dc:creator>bookGeek</dc:creator>
				<category><![CDATA[NonFiction]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[mobile]]></category>

		<guid isPermaLink="false">http://geekbook.org/?p=199</guid>
		<description><![CDATA[It is pretty obvious to anyone paying attention that the growing prevalence of mobile technologies is something that cannot be ignored. A special report in the Economist on telecoms in emerging markets wrapped up with the prediction, &#8220;&#8230;at current rates of growth it seems likely that within five years, and certainly within ten, everyone in [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://oreilly.com/catalog/9780596155452"><img src="http://covers.oreilly.com/images/9780596155452/cat.gif"></a>
<p>It is pretty obvious to anyone paying attention that the <a href="http://gigaom.com/2008/08/06/mobile-subscribers-forecast-to-top-5-billion-mark-by-2011/">growing prevalence</a> of mobile technologies is something that cannot be ignored.  A special report in the Economist on <a href="http://www.economist.com/specialreports/displaystory.cfm?story_id=14483856">telecoms in emerging markets</a> wrapped up with the prediction, &#8220;&#8230;at current rates of growth it seems likely that within five years, and certainly within ten, everyone in the world who wants a mobile phone will probably have one. 3G networks capable of broadband speeds will be widespread even in developing countries, and even faster 4G networks will be spreading rapidly in some places.&#8221;  It does not appear that it will be long before <a href="http://www.economist.com/research/articlesBySubject/displaystory.cfm?subjectid=894408&#038;story_id=14563636">Smart Phones are just normal phones</a> and anyone who wants to be, will be connected to a world wide mobile network.  Any business or developer that wants to reach groups of significant size really needs to be prepared via mobile platforms.  Brian Fling has been helping others operate in this space for close to a decade and is very familiar with the lay of the land.  He sees the opportunities and has experienced the pitfalls and frustrations as well.  His new book, <cite>Mobile Design and Development</cite> brings some of that experience and knowledge to the mobile neophyte, looking for an overview of just how to get in the game.</p>
<p><span id="more-199"></span>
<p><cite>Mobile Design and Development</cite> is not a long book and doesn&#8217;t delve deeply into the specifics of any one platform or technology.  This is an overview that would be of value to anyone that will be managing a project being built for mobile, or for technical folks that are new to mobile.  This will give the manager and leader an appreciation for the challenges and good guidance on realistic scope.  For the person actually implementing the technology there is quite a bit of good information here that will be of value on the front end for making choices in direction and platform.  There is also a section on building iPhone web apps ( applicable to any phone with similar capabilities running a WebKit based browser ).  But this is not primarily a &#8216;how to code&#8217; or reference book for any one mobile technology.  This isn&#8217;t going to be the only resource a developer will want but could prove invaluable in saving time and effort wandering in what can be a rather complicated set of choices.  The book even deals with making money on mobile platforms and so Fling very succinctly gives great coverage to most all that one would need to get up and running.  I would think the audience that would get the most from <cite>Mobile Design and Development</cite> is the small team or individual that want to take a stab at the mobile market and have a high degree of flexibility and freedom.  This book would be an invaluable resource in sorting through all the possibilities.  Whereas someone working in a large corporation that wont give them the freedom to choose their platform, or someone who has already made all their platform choices would probably do well just to dig into something more specific to their chosen technology.  That said, if the choice was arbitrary and if isn&#8217;t too late to change, working through the first half of this book may give one solid reason to reconsider.</p>
<p>In his preface Fling states that he has three principles that he would like to impart.
<ul>
<li>You need to know the different facets of the mobile medium.</li>
<li>You need to know how to leverage mobile technologies to address context.</li>
<li>You need to know how to leverage the right mobile technology for the need.</li>
</ul>
<p>The book is in two sections, the first being an overview of just all what falls under the &#8220;mobile&#8221; umbrella and provides a few ways of organizing those pieces.  It works to provide information applicable to the first two principles.  The second section of the book focuses on the third principle and goes mostly deeply into mobile web applications, which Fling sees as the answer to the platform and carrier fragmentation present in other solutions.  The question of web apps vs Native apps has <a href="http://www.quirksmode.org/blog/archives/2009/11/native_iphone_a.html">created some interesting discussion</a> and Fling falls into the &#8216;leaning towards web apps&#8217; camp, though he is pragmatic throughout this book.</p>
<p>That pragmatism is extremely attractive and a large part of what makes this book worthwhile.  It is obvious while reading that Fling doesn&#8217;t just talk about how things should be done, but he follows his own advice in his writing and presents what he believes will make for the best solutions.  If there is a place where idealism will lead to the quick and ugly death of an idea it would be the mobile space.  Compromise isn&#8217;t just something that may make sense at times, it is often forced right into the platform by carriers or others.  Fling doesn&#8217;t back away from this and acknowledges when there are multiple routes, none standing out as ideal.  He is very up front in sections where his technical reviewers had other opinions and presenting other options that they felt might be better.  Fling tries to give succinct coverage to what he sees as the better possible options and leaves the choices to the reader, now armed with enough information to dig deeper.</p>
<p>Fling&#8217;s clarity and up front appraisal of the considerations in the mobile space lead to him describing one of the most prominent limitations of his own book.  Besides the obvious that it can&#8217;t go into great depth on every mobile technology there is the fact that this information has a limited shelf life.  In the fifth chapter, <cite>Developing a Mobile Strategy</cite>, Fling gives a set of seven rules that he believes should be followed in the process of creating  a strategy.  The second rule is, <cite>Believe What You See, Not What You Read</cite> and the following chapter contains the admonition, <cite>&#8220;Don&#8217;t trust any report, fact, or figure that is more than a year or two old.  It is most likely wrong.  For example, the majority of assumptions about mobile development pre-iPhone are no longer applicable.&#8221;</cite>  According to Fling, barring a revision this book has a shelf life of roughly a year or two.  After that one should really be looking to more recent resources.  On the other hand, anyone even thinking about jumping into the fray, should be reading this right now.</p>
<p>This limitation is the only thing that causes me to not rate the book as a &#8216;classic&#8217; and it is not really the fault of the author.  It is just a reflection of the rapid rate of change taking place in the world it describes.  My only other problem with the book is small, though at times a bit annoying.  The book is black and white, without any color illustrations.  This in itself isn&#8217;t a problem but the shades chosen for pie charts in more than one place are not sufficiently different to tell where one edge stops and another starts.  Fling describes the charts, they are never floating alone without text that addresses them, so the reader doesn&#8217;t lose information, just the opportunity to see it displayed in a visual format.  I&#8217;m not a person with great visual design skills, so if I noticed I&#8217;m sure others involved in the production of the book have as well and hopefully later printings corrected this issue.</p>
<p>The first section, as I&#8217;ve described, is a high level overview of the mobile world.  This covers what Fling thinks of as all the layers of the mobile ecosystem. This means everything from carriers to hardware manufacturers to operating systems and more.  I&#8217;ve spent quite a bit of time over the last year reading up on much of what Fling covers here, but there were still pieces of new information that I found.  Fling takes a global view and doesn&#8217;t lean towards the situation as it is presented in any single geographical area.  He is also dealing with all types of phones and platforms.  While he obviously spends a lot of time, especially in the second section, dealing with more capable smart phones, he is still dealing throughout the book with less capable devices and systems.  This is where Fling&#8217;s experience really shines.  He has navigated what it means to try and develop for less capable phones, the realistic challenges one faces trying to get onto more hardware and more networks.  It is at times daunting, but I for one would rather walk into something knowing the reality rather than being uninformed.</p>
<p>Fling hits all the highlights from what is available to suggestions on the whole life cycle of a mobile product including prototyping, testing and adapting to various types of phones and platforms.  The second section, dealing with more specifics on putting together a Web App will throw a bone to the developer that wants to see some code.  While it is mostly mark-up Fling does spend time dealing with some specifics of implementing a WebKit compatible solution.  He states that this will work on a few modern phones, though a few subsections do carry warnings that they are iPhone specific.  Fling covers the use of XHTML, XHTML-MP, CSS, JavaScript, and other applicable web technology.  This is probably where the management types will start to skim over things.  I do think though it still serves the purpose of giving an idea of what is possible and when it is appropriate to choose a pure web application over a native application.</p>
<p>I think that Fling does an excellent job showing that it is important to create mobile applications that are designed purely with mobile users in mind.  The last chapter is only a couple pages long and is the only place that Fling devotes purely to prognosticating.  The rest of the book is practical and focused purely on what will work right now.  In his closing thoughts, Fling essentially invites the reader to be a part of bringing about the future of mobile.  I think this is very fitting as he has just given his readers what they need to set out on that path.</p>
<p>Title: Mobile Design and Development<BR>Author: Brian Fling<BR>Publisher:  O&#8217;Reilly Media<BR>Pages: 328<BR>ISBN: 978-0-596-15544-5<BR>Rating: 9/10<BR>Tagline: Practical techniques for creating mobile sites and web apps.</p>
]]></content:encoded>
			<wfw:commentRss>http://geekbook.org/archives/199/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Invent Your Own Computer Games with Python</title>
		<link>http://geekbook.org/archives/196</link>
		<comments>http://geekbook.org/archives/196#comments</comments>
		<pubDate>Tue, 27 Oct 2009 13:23:18 +0000</pubDate>
		<dc:creator>bookGeek</dc:creator>
				<category><![CDATA[NonFiction]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[e-book]]></category>
		<category><![CDATA[free ebook]]></category>

		<guid isPermaLink="false">http://geekbook.org/?p=196</guid>
		<description><![CDATA[The Second Edition of Invent Your Own Computer Games with Python is available to read on-line or as a free download. This is a book that aims to teach children to use Python. The author says that it is appropriate for kids from 10 years old, on up.I haven&#8217;t read through it all. I gave [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://inventwithpython.com/"><img src="http://inventwithpython.com/images/cover_thumb.png"></a><BR><BR>The Second Edition of <a href="http://inventwithpython.com/">Invent Your Own Computer Games with Python</a> is available to read on-line or as a free download.  This is a book that aims to teach children to use Python.  The author says that it is appropriate for kids from 10 years old, on up.<BR><BR>I haven&#8217;t read through it all.  I gave the PDF version a cursory glance and it looks good.  The table of contents doesn&#8217;t give page numbers and there are some other rough edges, but at no cost, this is acceptable in my mind.<BR><BR>I do intend to read it and see how it compares to <a href="http://geekbook.org/archives/157">&#8220;Hello World!&#8221;</a>.<BR><BR>Edit: It looks like there have been some changes over at the site and so I&#8217;ve updated the post to reflect the title and show the cover of the book.</p>
]]></content:encoded>
			<wfw:commentRss>http://geekbook.org/archives/196/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Android Application Development</title>
		<link>http://geekbook.org/archives/179</link>
		<comments>http://geekbook.org/archives/179#comments</comments>
		<pubDate>Tue, 29 Sep 2009 21:01:50 +0000</pubDate>
		<dc:creator>bookGeek</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[NonFiction]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[mobile]]></category>

		<guid isPermaLink="false">http://geekbook.org/?p=179</guid>
		<description><![CDATA[Google&#8217;s mobile OS Android has received plenty of press. As with a lot of Google products, there was much anticipation before any devices were even available. Now a number of phones are available, with many more coming out world-wide in the near future. Part of the lure of Android is the openness of the platform [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://oreilly.com/catalog/9780596521509"><img src="http://covers.oreilly.com/images/9780596521509/cat.gif"></a><BR></p>
<p>Google&#8217;s mobile OS <a href="http://code.google.com/android/">Android</a> has received plenty of press.  As with a lot of Google products, there was much anticipation before any devices were even available.  Now a number of phones are available, with many more coming out world-wide in the near future.  Part of the lure of Android is the openness of the platform and the freely available tools for development.  The SDK and accompanying Eclipse plug-in give the would be creator of the next great Android application everything they need to make their idea reality.  The bar to entry in the official Google Android Marketplace is very low and it doesn&#8217;t seem to be much of a stretch to predict that the number of developers working on Android is only going to grow.  As with any hot technology the number of books will grow as well and O&#8217;Reilly&#8217;s <cite>Android Application Development</cite> has jumped into the fray, promising to help budding Android developers what they need to get started.</p>
<p><span id="more-179"></span>
<p>The book begins with a brief introduction to Android followed by detailed instructions on procuring and installing the Android SDK.  Space is given to Windows, Linux and Mac.  The install is relatively simple on all three platforms, extra information is provided for Ubuntu users but no others distributions.  Extra care is taken to help Windows users with items they may not use regularly, such as environmental variables.  This is all pretty basic and gives the book very much of a &#8216;for beginners&#8217; feel.  Before I had the book I had already installed the SDK and Eclipse plug-in on Windows, Ubuntu and Fedora without any issues beyond getting a current version of Eclipse for the Ubuntu machine.  The version I already had from the Ubuntu repositories was not able to run the plug-in.  It&#8217;s a short chapter and if someone really struggles with it, they probably should shift their focus from learning to code to learning how to use their platform of choice.  This does set the tone though, that this is a book for those who are very new to development.</p>
<p>Chapter two steps the reader through the ever present &#8220;Hello World&#8221; and gives an overview of the structure of Android applications.  Chapter three introduces the example application that will be used for the rest of the book.  There is a lot of repetition here on just what directories and files make up the guts of an Android program.  I was quickly worried ( the first four chapters are only fifty-six pages in ) that maybe four authors had been too many.  The repetition made it feel as if separate work had been combined without enough editing to remove what was redundant.  Fortunately this got better, though there was still a strange proclivity to list files while referring to earlier chapters that explained their purpose.  This would be helpful to anyone jumping right into the middle of the book, but the index also serves the same purpose and saves space for more valuable content, as opposed to explaining the purpose of AndroidManifest.xml repeatedly.</p>
<p>Once I moved into the fifth chapter, <cite>Debugging Android Applications</cite> and the following chapters, things got better.  The pace picked up and the repetition dropped off for the most part.  The book did not become incredibly difficult, trying to be everything to everyone, but did maintain an introductory style.  At the same time the example application makes use of many Android features that are likely to be used by developers.  How to set up and use tools was covered step by step.  This is very nice but did cause some issues for the authors due to the rapid pace of development on Android.  A visit to the book&#8217;s <a href="http://oreilly.com/catalog/errata.csp?isbn=9780596521479">errata page</a> will show that many readers struggled with changes to the SKD tool set that came out very shortly after the book.  The authors say that future editions will fix these issues, but this creates a dilemma for that reader needing introductory level materials.  They are more dependent upon the book than a more advanced user and so these issues can be very trying.  Based on the responses to the errata posts it became trying for the authors as well.  This isn&#8217;t a knock on the book itself but rather a limitation of the delivery method.</p>
<p>Once the reader is digging down into the example application the team approach to writing the book does become an asset.  The authors bring a number of skills to the table that closely resemble the players that would be necessary to a team developing a real-world application.  The reader is now being pulled into an example that benefits from the knowledge of each and does a good job of exploring the range of options an Android developer has available.  This includes core functionality, UI options and how to best take advantage of the platform while at the same time taking performance and user expectations into account.  I felt like I was getting something beyond the excellent documentation provided by Google.  This is where I felt the book stood strongest.</p>
<p>Working with a single, large example application was a move that probably helped move things along on writing the book and I think it&#8217;s an interesting approach.  The problem is of course, that means that this example must be right.  Right for the task and technically correct.  Small issues in the code are inevitable but now their impact is book wide.  The changes to the platform just made it just that much more difficult to sort out.  On the whole I still found this to be a better approach primarily due to the fact that it gives the features highlighted a better sense of context.  Stand-alone examples are often good at highlighting technical features but completely ignore the issues necessary to using the feature in a larger piece of code.</p>
<p>I&#8217;m a fan of O&#8217;Reilly books.  Interestingly enough this doesn&#8217;t mean that I&#8217;ll gloss over issues with what they produce.  The result is actually the inverse, in that I go into all their titles with a high level of expectation with regards to quality on every level.  This may mean that though I strive to be neutral when I look at a book, I&#8217;m probably a little tougher on O&#8217;Reilly titles.  This made my rough start with <cite>Android Application Development</cite> a bit jarring.  The repetition and what felt like sloppy editing are not what I expect.  I was quickly given a sense that this book may have been rushed to publication a little sooner than it should have been.  As I moved deeper into the book, things improved and while I think there were still editorial issues, things did seem to smooth out to some degree.</p>
<p>There is an interesting tension that exists purely do to the nature of print books.  I don&#8217;t like to bring up print versus electronic in reviews as I don&#8217;t think it is on topic, but here it is unavoidable.  The book is aimed at people that need a little more hand holding and help getting going.  It does a good job of providing step by step instructions, the problem is that some of those steps have changed.  I don&#8217;t think anything in the code itself needs to be different, but the tools have changed enough that getting the code to run in a development environment against the new SDK is different.  That means that portion of the book is no longer of as much value without going to other sources to find the new steps.</p>
<p>  That said, warts and all I found this to be a helpful way to get my feet wet with Android.  I really look forward to future versions as I think just a little more time and work will move this from my &#8216;good&#8217; list to my &#8216;great&#8217; list.  Making things a little tighter and cleaning up the few typos and errors would certainly make this an 8 instead of an 7, which is really substantial in my mind.  I&#8217;m no super developer and I need stuff like this, that can take things a little more slowly and make it all clear.  I think this guide is great for those of us in that category as long as the reader is o.k. with hopping to external sources for the information they&#8217;ll need to get the newer tool set working.</p>
<p>Title: Android Application Development<BR>Author: Rick Rogers, John Lombardo, Zigurd Mednieks, Blake Meike<BR>Publisher: O&#8217;Reilly Media Inc.<BR>Pages: 332<BR>ISBN: 978-0-596-52147-9<BR>Rating: 7/10<BR>Tagline: Programming with the Google SDK.</p>
]]></content:encoded>
			<wfw:commentRss>http://geekbook.org/archives/179/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Learning Ext JS</title>
		<link>http://geekbook.org/archives/176</link>
		<comments>http://geekbook.org/archives/176#comments</comments>
		<pubDate>Mon, 28 Sep 2009 21:38:50 +0000</pubDate>
		<dc:creator>bookGeek</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[NonFiction]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://geekbook.org/?p=176</guid>
		<description><![CDATA[Rich Internet Applications (RIA) have often been associated with some type of sandbox or virtual machine environment to make desktop features available via the web. Many applications though, have left behind the restrictions and demands of those technologies, implementing RIAs as pure web interfaces. One key technology in this area is JavaScript. It&#8217;s been well [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.packtpub.com/learning-ext-js/book"><img src="http://images.packtpub.com/images/100x123/1847195148.png"></a><BR><BR>
<p><a href="http://en.wikipedia.org/wiki/Rich_Internet_application">Rich Internet Applications</a> (RIA) have often been associated with some type of sandbox or virtual machine environment to make desktop features available  via the web.  Many applications though, have left behind the restrictions and demands of those technologies, implementing RIAs as pure web interfaces.  One key technology in this area is JavaScript.  It&#8217;s been well documented that working with JavaScript can be <a href="http://www.webdevelopersjournal.com/articles/cross_browser/javascript.html">problematic</a> across various browsers.  In response a number of JavaScript libraries have been created to alleviate the issues in dealing with different browsers, allowing developers to focus on application logic rather than platform concerns.  One such library, focused on providing tools for building RIAs is <a href="http://en.wikipedia.org/wiki/Ext_%28JavaScript_library%29">Ext JS</a>.  For the aspiring developer looking to use Ext JS, Packt provides a guide to the library in the form of <cite>Learning Ext JS</cite></p>
<p><span id="more-176"></span>
<p>The book is written for people with experience in doing web development.  The authors state that a working knowledge of HTML and CSS are important, but experience with JavaScript is not essential.  I think that a reader that has not used JavaScript may want to supplement this guide with something that covers the basics of JS.  Experienced developers that haven&#8217;t worked specifically with web programming should have no trouble keeping up.  Anyone completely new to the idea of programming, scripting, markup, etc. really will need to take some time to get familiar with those concepts before they dive into this book.  The authors do not spend time teaching programming, they are focused purely on realistic applications of Ext JS.</p>
<p>The authors begin by stating that, &#8220;Ext is not just another JavaScript library&#8230;&#8221; and it is understandable that they would feel this way.  I am unsure why one wouldn&#8217;t think so other than a personal preference for the product.  That said Ext JS can be used alongside other JS libraries and does provide a lot of features &#8216;out of the box&#8217; that make it an attractive choice.  The emphasis on RIA widgets and building strong applications is nice as Ext JS is not working to be all things to all developers.</p>
<p>The book is heavy on code and examples but not so much so that it falls into the cook-book style of writing.  <cite>Learning Ext JS</cite> is more of an extended tutorial with ample explanation to help the reader not only understand the code but why certain choices are made.  Frederick, Ramsay and Blades have done a good job of working through the examples in a concise manner.  While the book is the result of group work, it does not have the feeling of being written by a community.  I did not run into an abundance of repetition and topics flowed well.  <cite>Learning Ext JS</cite> also covers installation and integration of the library as well as a very quick survey of tools for development.  While short these sections would be extremely important to anyone coming into web development with little experience.</p>
<p>It&#8217;s a quick read, and doesn&#8217;t delve extremely deeply into more advanced topics.  Rather, a reader new to Ext JS will get a launch that should make the library usable in a practical way and also give them the framework to push deeper.  The book was written and published just as Ext JS moved between versions.  The new version is backwards compatible with the material in this book and a number of the changes in version three would not have fallen within the scope of this book, so it is still a good place to get started with Ext JS.  Those who want to dig deeper will need to look elsewhere.</p>
<p>The brevity of the book wont work for those folks who want to really dig down deep into Ext JS.  I on the other hand, wasn&#8217;t looking for a massive tome to lug around and grind through.  I was happy to have a very accessible tool that would get me started quickly and that is what I got.  On the other hand I do like to be able to find what I need quickly and nothing is more important to me when learning than a solid index.  Unfortunately the only really large ding I have for the book is that the index is weak.  It would be a lot worse if the book were larger, so the brevity helps here a bit, but it&#8217;s still unfortunate.  This does make the ebook version a little more attractive.  Packt will bundle them at a cost that makes the addition of the electronic copy very attractive.  That said, the easy flow does it make it easy to read this book front to back while working the examples.  <cite>Learning Ext JS</cite> just wont be my first choice when I need to quickly check a reference.</p>
<p>I&#8217;ve discussed the shallow coverage, but this does not mean that the book is not useful.  The Ext JS library bundles enough functionality into the stock widgets, that decent applications could be written with nothing more.  Creating custom widgets is covered and extending existing code as well, but this is later in the book.  The material prior to that covers not only the use of the provided widgets but how to tie them together, theme an app and then handling data.  This means the reader pretty much has everything in hand to build a stock application.  The focus is on dealing with these issues on the client side.  The examples do include a small amount of back end code when necessary for the execution of examples.  All the examples are available to download from the Packt site and come packaged with all necessary scripts, images, etc.</p>
<p>I&#8217;ve always worked primarily with desktop applications.  I&#8217;ve done some work with web applications, but it seems to me that increasingly the tools that I use the most are web based.  With technology like Google Gears making those applications available whether I&#8217;m connected or not they have become much more attractive.  Tools like Ext JS make it much easier for me to transition over to this new way of developing applications.  I&#8217;ve found that <cite>Learning Ext JS</cite> has been a valuable resource in taking what is a great resource and allowing me to get the most out of it more rapidly than I would have otherwise.</p>
<p>Title: Learning Ext JS<BR>Author: Shea Frederick, Colin Ramsay, Steve &#8216;Cutter&#8217; Blades<BR>Publisher: Packt Publishing<BR>Pages: 309<BR>ISBN: 978-1-847195-14-2<BR><br />
Rating: 8/10<BR>Tagline: Build dynamic, desktop-style user interfaces for your data-driven web applications.</p>
]]></content:encoded>
			<wfw:commentRss>http://geekbook.org/archives/176/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PragPub</title>
		<link>http://geekbook.org/archives/167</link>
		<comments>http://geekbook.org/archives/167#comments</comments>
		<pubDate>Thu, 09 Jul 2009 01:16:16 +0000</pubDate>
		<dc:creator>bookGeek</dc:creator>
				<category><![CDATA[NonFiction]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[e-book]]></category>
		<category><![CDATA[pragmatic]]></category>

		<guid isPermaLink="false">http://geekbook.org/?p=167</guid>
		<description><![CDATA[This is not about a book per se &#8211; but I do love all the Pragmatic Bookshelf books I&#8217;ve read this far, and so a free magazine available on-line from these folks is awesome. They&#8217;ve got downloads available for this first edition in pdf, epub and mobi formats. That is also a big win as [...]]]></description>
			<content:encoded><![CDATA[<p>This is not about a book per se &#8211; but I do love all the Pragmatic Bookshelf books I&#8217;ve read this far, and so a free magazine available on-line from these folks is awesome.  They&#8217;ve got downloads available for this first edition in pdf, epub and mobi formats.  That is also a big win as it means I can read them on my phone.  Below is text cut from the press release for the new mag.</p>
<p>The Pragmatic Bookshelf, the innovative publisher of award-winning books by programmers for programmers, has launched a new magazine: <a href="http://post.oreilly.com/rd/9z1z1jhvcgkdfikpbg4vj3ivr6vlche0resb9741okg">PragPub</a>.</p>
<p>PragPub editor Michael Swaine served for years as editor-in-chief and editor-at-large for the venerable Dr. Dobb&#8217;s Journal and coauthored the seminal personal computer history book, Fire in the Valley.</p>
<p>Michael says, &#8220;There is a huge demand for timely information on current programming issues, but conventional magazine publishing can&#8217;t keep up with the pace of change in software development. There are some wonderful blogs and wikis that address particular technologies or projects, but they tend to come and go, or serve an extremely niche audience. We&#8217;re hoping to strike a balance between a conventional magazine and a topical blog or wiki, capturing the benefits of professional editing and a regular publishing schedule of a magazine, and the responsiveness and sense of community of the blogs and wikis&#8211;the growing, worldwide Pragmatic community.&#8221;</p>
<p>The July issue is now available from the <a href="http://post.oreilly.com/rd/9z1znleskvvtsu9r4jbhjck41jd0mh3446oovcq56v0">Pragmatic Programmers site</a>. PragPub is published monthly and is free of charge.</p>
]]></content:encoded>
			<wfw:commentRss>http://geekbook.org/archives/167/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hello World!</title>
		<link>http://geekbook.org/archives/157</link>
		<comments>http://geekbook.org/archives/157#comments</comments>
		<pubDate>Thu, 02 Jul 2009 18:19:43 +0000</pubDate>
		<dc:creator>bookGeek</dc:creator>
				<category><![CDATA[NonFiction]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Education]]></category>

		<guid isPermaLink="false">http://geekbook.org/?p=157</guid>
		<description><![CDATA[Hitting middle age has been an interesting time. I catch myself thinking about how well kids have it today and sounding a lot like my father. One difference is while my dad was happy to teach me about sports or cars, we never spent any time knocking out code together. I think he did realize [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.manning.com/sande/"><img src="http://www.manning.com/sande/sande_cover150.jpg"></a><BR>
<p>Hitting middle age has been an interesting time.  I catch myself thinking about how well kids have it today and sounding a lot like my father.  One difference is while my dad was happy to teach me about sports or cars, we never spent any time knocking out code together.  I think he did realize that home computers were important and I will always be grateful for the Commodore Vic-20 be brought home one day.  It was a substantial purchase for our household.  I spent many days copying lines of basic from magazines and saving the results to cassette tapes.  In my home today we have a considerably better situation, computing wise.  There are usually a couple laptops running as well as the desktop machine upstairs.  My kids take for granted what I found to be amazing and new.  Still, that&#8217;s all pretty normal and I&#8217;d like to give them an opportunity to go deeper if they are so inclined, just like we give them opportunities to explore other skills and pursuits.  With that in mind I brought a copy of <cite>Hello World!</cite> home a few weeks ago, and the response from my oldest has been surprisingly enthusiastic.</p>
<p><span id="more-157"></span>
<p>Warren Sande wanted to teach his son Carter about programming but had difficulty finding what he thought was a suitable book to guide the process.  At the encouragement of Warren&#8217;s wife, he and Carter decided to write their own while Carter learned to code.  Warren chose Python as the language they would work in and then the two together outlined the book and created the sample applications.  As the book moves into more complex territory the sample applications are the kind kids like best.  They are games.  As soon as my daughter saw that she would get to make her own computer games she immediately asked me if we could start working through the book together.  When it has been a while since we&#8217;ve had a chance to crack it open, she reminds me by asking when we will get back to it.  I would say that on her end it has been a complete success.  It has been a great time for us as father and daughter and educational for us both.</p>
<p>Language choice can be quite a hot topic amongst us geeks.  In the preface Warren defends his choice of Python with a bullet list I&#8217;ll summarize here.
<ul>
<li>Python was created from the start to be easy to learn.</li>
<li>Python is free.</li>
<li>Python is open source software.</li>
<li>Python is not just a &#8216;toy&#8217; language.</li>
<li>Python is multi-platform.</li>
<li>Warren likes Python and thinks others will like it too.</li>
</ul>
<p>I think the list is pretty solid.  The only one I think may not be directly applicable to the case it hand is the FOSS angle.  Warren explains that being open means that more can be done with the software and that there is a large set of corresponding code out there freely available.  A case could be made that this is also true of more closed languages.  The one thing I think that could make this important is if the teacher of the material is interested in not just teaching the technical side of programming but is also interested in communicating the philosophical values of freedom.  In light of the amount of closed source software and ignorance in regards to FOSS options I&#8217;ve seen in the public school system where I live, I think this may be more important than some think.</p>
<p>The rest of the reasons though I think make Python an incredibly solid choice, and above all else is the simplicity.  My daughter has been able to have fun typing code into <a href="http://docs.python.org/library/idle.html">IDLE</a> without having to get hung up with a complicated environment.  The syntax is clean and simple, there is no compiling, it&#8217;s very easy to just jump in and start making things happen. I think this is important, the younger the student.  I was concerned that nine might be just a touch too young for this undertaking.  The book itself does not make any recommendations concerning age.  The more I&#8217;ve thought about it, the more I agree with that choice.  Children vary so greatly and any number chosen would be rather arbitrary.  My nine your old has done well so far, but she is already quite a book worm and leans towards more academic pursuits.  An older child may struggle and there may be some that are even younger that would be fine with the material in <cite>Hello World!</cite>  So rather than focus on age I think a parent needs to come at this from a perspective of ability, proclivity and experience.</p>
<p>In the ability area, a child is going to know how to read, work with a mouse, and type things via the keyboard.  Of course the mouse is optional strictly speaking but most will probably want to use it.  Some math skill would be good as well as the ability to understand the use of variables.  The book tackles the necessary material in a kid friendly way but it is not dumbed down.  In fact the learning potential here is huge, as one may imagine.  The book is formatted with lots of visuals and fly-outs that give information on how computers operate and how programming languages deal with information processing.  My daughter and I have already had interesting discussions on subjects like integers and floats.  An example that draws a sine wave lead to a great teachable moment about amplitude and wave length.  Then there is the constant need for approaching problem solving in a structured manner using logic.  I think that taking on programming brings a wide number of benefits.</p>
<p>One of the features, is a little caricature of Carter that is placed throughout the book with observations that the real Carter made as he learned with his dad.  These are things that a real kid noticed, and so they are likely to stand out to a child working through this book.  For instance in the chapter on &#8220;Print Formatting and Strings&#8221; Carter says, &#8220;I thought the % sign was used for the modulus operator!&#8221;  The book explains that Python uses context to choose how the % sign is used.  There are other little cartoon characters that appear throughout the book drawing attention to important points that need to be remembered.  Learning is reinforced through quizzes at the end of the chapters.  The chapters are not too long but I&#8217;ve found that my daughter and I have to break them into sections because of her typing speed.  I&#8217;ve been tempted at times to move things along by typing for her but I know that she will not get the same benefit from the exercise if we do it that way.  I will also let errors slide by at times to allow her the opportunity to look at error messages and find the problems.</p>
<p>As I mentioned the book is billed as being for kids and &#8220;other beginners.&#8221;  I&#8217;m going to say that the primary focus is rightly on kids, and probably kids who are in grade school or maybe junior high.  This is not to say that the examples and information wouldn&#8217;t be great for anyone brand new to programming.  There are even some nuggets for someone who has written some code but is new to Python.  I am going to guess though that the average high school student will not be as taken with the cartoons and puns.  I&#8217;d have loved to have written my own lunar lander game at that age though, so maybe I&#8217;m selling this short, or maybe it would be something a teen would be happy to work on away from the eyes of others, so as not to appear childish.  (I may take heat for this but even as a teenage geek I was immensely worried about the perceptions of my peer group.)  I think an adult that was serious about learning to program, even if they had no prior experience, would do better with heavier material.  All that said, I think for children they&#8217;ve really hit the sweet spot and as much as marketers would like it to be so, no book can be everything to everyone.</p>
<p>Things start simple with print statements and loops that took me back to good old days of watching messages scroll endlessly by on display computers at Sears when I was a kid.  The move towards games starts even then with text and quickly moves on to leveraging Pygame for games that utilize graphics.  I think this is important as it keeps things entertaining while teaching important concepts at the same time.  I have to say it is quite a bit fun to sit with my child discussing nested loops and decision trees.  By the end of the book examples will have included a simple virtual pet, a downhill skiing game and a lunar lander simulation.</p>
<p>I&#8217;ve discussed a child&#8217;s ability a bit but I think the last two things I mentioned must be taken into account as well.  They are proclivity and experience.  I&#8217;ve let my daughter drive the time we spend working on this.  Just like the parents who project their sports dreams on their kids, I think there is a possibility to do the same with my love for all things digital.  It may even be easier to do so as I view the ability to do some amount of programming to be an important life skill.  The thing is I don&#8217;t want to push her too hard and have her back away from it completely.  This fits in with the experience part.  We take it as it goes, and if things stop being fun, we will back off.  I don&#8217;t do this with her core disciplines from school like reading and math, but for something that is extra right now I&#8217;m not going to push.  It would transition from being a joy to being work.  That brings up a last and unexpected benefit from <cite>Hello World!</cite>  I&#8217;m rediscovering a lot of the fun and excitement that drew me into this industry in the first place.</p>
<p>Title: Hello World!<br />Author: Warren and Carter Sande<br />Publisher: Manning<br />Pages: 430<br />ISBN: 978-1933988498<br />Rating: 9/10<br />Tagline: Computer programming for kids and other beginners.</p>
]]></content:encoded>
			<wfw:commentRss>http://geekbook.org/archives/157/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CJKV Information Processing, 2nd ed.</title>
		<link>http://geekbook.org/archives/148</link>
		<comments>http://geekbook.org/archives/148#comments</comments>
		<pubDate>Fri, 26 Jun 2009 16:08:52 +0000</pubDate>
		<dc:creator>bookGeek</dc:creator>
				<category><![CDATA[NonFiction]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[cjkv]]></category>
		<category><![CDATA[internationalisation]]></category>

		<guid isPermaLink="false">http://geekbook.org/?p=148</guid>
		<description><![CDATA[The end of last year I made a move from an IT shop focused on supporting the U.S. side of our business to a department that provides support to our operations outside the U.S. This was the first time I&#8217;ve worked in an international context and found myself running into long time assumptions that were [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://oreilly.com/catalog/9780596514471/"><img src="http://covers.oreilly.com/images/9780596514471/cat.gif"></a><BR>
<p>The end of last year I made a move from an IT shop focused on supporting the U.S. side of our business to a department that provides support to our operations outside the U.S.  This was the first time I&#8217;ve worked in an international context and found myself running into long time assumptions that were no longer true on a regular basis.  My first project was implementing a third party, web based HR system for medium sized offices.  I found myself constantly missing important issues because I had such a narrow approach to the problem space.  Sure I&#8217;ve built applications and databases that supported Unicode, but I&#8217;ve never actually implemented anything with them but the same types of systems I&#8217;d built in the past with ASCII.  But a large portion of the worlds population is in Asia, and ASCII is certainly not going to cut it there.  Fortunately a new edition of Ken Lunde&#8217;s classic <cite>CJKV Information Processing</a> has become available and it has really opened my eyes.</p>
<p><span id="more-148"></span>
<p><cite>CJKV Information Processing</cite> has a long history that actually goes back into the 1980s.  It began as a simple text document JAPAN.INF, available via FTP on a number of servers.  This document was excerpted and refined and published as Lunde&#8217;s first book in 1993, <cite>Understanding Japanese Information Processing</cite>.  Shortly after JAPAN.INF became CJK.INF and the foundation for the first edition of <cite>CJKV Information Processing</cite> was born.  The first edition was published in 1999, and it is safe to say that a number of important things have changed over the last 10 years.  Lunde states four major developments that prompted this second edition in the preface.  They are the emergence of Unicode, OpenType and the Portable Document Format (PDF) as preferred tools and lastly the maturity of the web in general to use Unicode and deal with a wider range of languages and their character sets.</p>
<p>Lunde sets out not to create an exhaustive reference on the languages themselves, but rather an exhaustive guide to the considerations that come into play when processing <a href="http://en.wikipedia.org/wiki/CJK">CJKV</a> information.  As Lunde states, &#8220;..this book focuses heavily on how CJKV text is handled on computer systems in a very platform-independent way&#8230;&#8221;  Taking into account the complexity of the topic, the breadth of the work and the degree to which it is independent of any specific technology, outside a heavy bias for Unicode, is extremely impressive.  A glance over the table of contents show just how true this is.  Chapter 9, <cite>Information Processing Techniques</cite> has sections touching on C/C++, Java, Perl, Python, Ruby, Tcl and others.  These are brief, with most examples in Java but that they are all directly addressed shows a great awareness of the options out there.  The sections that deal with operating system issues have the same breadth.  Chapter 10, <cite>OSes, Text Editors, and Word Processors</cite> doesn&#8217;t just hit the top Mac and Windows items.  It looks at FreeBSD, Linux, Mac OS X, MS Vista, MS-DOS, Plan 9, OpenSolaris, Unix and more.  There are also sections for what Lunde calls hybrid environments such as Boot Camp, CrossOver Mac, Gnome, KDE, VMware Fusion, Wine and the X Window System.  Interestingly the Word Processor system covers AbiWord and KWord but not OpenOffice.org  The point stands that anyone looking to support CJKV, this book will probably cover your platform and give you at the very least a starting point with your chosen tool set.</p>
<p>That said, an extremely specific implementation is not what Lunde is out to offer up.  This is the very opposite of a &#8216;cook book&#8217; approach.  This also makes the book extremely useful to anyone dealing with internationalization, globalization or localization issues regardless of character set or language.  Lunde teaches the underlying principles of how writing systems and scripts work.  He then moves to how computer systems deal with these various writing systems and scripts.  The focus is always on CJKV but the principles will hold true in any setting.  This continues to be the case as Lunde talks about character sets, encoding, code conversion and a host of other issues that surround handling characters.  Typography is included, as well as input and output methods.  In each case Lunde covers the basics as well as pointing out areas of concern and where exceptions may cause issues.  The author is nothing if not thorough in this regard.  His knowledge of the problem space is at times down right staggering.  Lunde also touches on dictionaries as well as publishing in print and on the web.</p>
<p>The first three chapters set the table for the rest of the book with an overview of the issues that will be addressed, information on the history and usage of the writing systems and scripts covered and the character set standards that exist.  This was a fascinating glimpse, once again into CJKV languages and how other languages are dealt with as well.  I think there is even a lot here that would be extremely informative to a person who wants to learn more about CJKV, even if they are not a developer that will be working with one of the languages.  That&#8217;s only the first quarter of the book, so I don&#8217;t know that it would be worth it from just that perspective, but it is definitely a nice benefit of Lunde&#8217;s approach.</p>
<p>The style is very readable, but I wouldn&#8217;t just hand this to someone who didn&#8217;t have some familiarity with text processing issues on computer systems.  While there is no requirement to know or understand one of the CJKV languages, understanding how computer systems process data and information is important.  I did not know anything about CJKV languages prior to reading the book and have learned quite a bit.  What I learned was not limited to the CJKV arena.  The experience I had was very similar to when I studied ancient Greek in school.  Learning Greek I learned much more about English grammar than I had ever picked up prior.  Reading <cite>CJKV Information Processing</cite> I learned quite a bit more about the issues involved in things like character encoding and typography for every language, not just these four.  But in dealing with CJKV specifically I&#8217;ve found that Lunde&#8217;s work is indispensable.  It is not just my go to reference, it&#8217;s essentially my only reference.  If any other works do come my way, this is the standard against which they will be judged.</p>
<p>There are thirteen indexes including a nice glossary.  Nine of them are character sets, which were printed out in the longer first edition.  In this second edition, there is a note on each, with a url pointing to a PDF with the information.  It seemed odd, but each URL gets it&#8217;s own page.  This means there are nine pages with nothing but the title of the index and a url.  Fortunately they are all in the same <a href="http://examples.oreilly.com/9780596514471/">directory</a>, which can be reached directly from the books page at the O&#8217;Reilly site.  It seems it would have made sense to just list them all on a single page, but maybe it was necessary for some reason.  It&#8217;s a minute flaw in what is a great book.</p>
<p>Title: CJKV Information Processing 2nd ed.<BR>Author: Ken Lunde<BR>Publisher: O&#8217;Reilly Media, Inc.<BR>Pages: 898<BR>ISBN: 978-0-596-51447-1<BR>Rating: 10/10<BR>Tagline: Chinese, Japanese, Korean &#038; Vietnamese computing.</p>
]]></content:encoded>
			<wfw:commentRss>http://geekbook.org/archives/148/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Refactoring SQL Applications</title>
		<link>http://geekbook.org/archives/126</link>
		<comments>http://geekbook.org/archives/126#comments</comments>
		<pubDate>Fri, 06 Mar 2009 17:05:18 +0000</pubDate>
		<dc:creator>bookGeek</dc:creator>
				<category><![CDATA[NonFiction]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[RDBMS]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://geekbook.org/?p=126</guid>
		<description><![CDATA[My past as a DBA probably makes me a bit biased, but the reaction I&#8217;ve seen the most when a database application isn&#8217;t performing as well as would be liked seems to focus on the database side of things. The search for a solution usually seems to center around tuning db parameters, the building (or [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://oreilly.com/catalog/9780596514976/"><img src="http://oreilly.com/catalog/covers/9780596514976_cat.gif"></a><BR>
<p>My past as a DBA probably makes me a bit biased, but the reaction I&#8217;ve seen the most when a database application isn&#8217;t performing as well as would be liked seems to focus on the database side of things.  The search for a solution usually seems to center around tuning db parameters, the building (or removal) of indexes and if the budget allows, throwing hardware at the problem.  In their new work, <cite>Refactoring SQL Applications</cite>, Faroult and L&#8217;Hermite bring a much wider range of options to the table.  There is a lot in this little book for the developer charged with fixing an existing application and I think a lot of good information that could save one from making a number of head-ache inducing mistakes on a new application.</p>
<p><span id="more-126"></span>
<p>The book is divided into eight chapters the first two deal with how to approach a problematic application in general.  In the preface the authors say, &#8220;This book tries to take a realistic and honest view of the improvement of applications with a strong SQL component, and to define a rational framework for tactical maneuvers.&#8221;  I found this to be true throughout the entire book and was impressed by how well the examples, suggestions and problems echoed my real life experience.  This book is first and foremost practical.  There is really almost nothing in the book that does not come immediately to bear upon the problem at hand.  I&#8217;ve seen others do a lot less with many more pages.</p>
<p>The examples and benchmarks are compared across three different popular relational database management systems.  They are MySQL, Oracle RDBMS and Microsoft SQL Server.  I thought that this brought up a couple interesting issues that are not directly addressed in the book.  First is that the authors are talking about how to improve performance, not comparing platforms but the numbers are there and may be of some interest to people who would like to compare them.  Secondly, I&#8217;ve met a number of people over the years who get quite animated about insisting that a good DBA does not need to know any certain solution, but rather just the fundamentals.  I think Faroult and L&#8217;Hermite put this idea to rest, though unintentionally.  In order to discuss how to best understand what exactly is happening and how best remedy issues, they show that it is necessary to have an understanding of platform specific issues and tools.  This is true on two levels.  The first is that the location of use of the built in tools for each platform are different.  The second is that what works for one platform does not necessarily work for another.</p>
<p>For example, Chapter Two &#8220;Sanity Checks&#8221; contains a section on parsing and bind variables.  The authors compare performance when queries are hard coded, with new prepared statements on each iteration (firm coded) and with one prepared statement and changing the parameter value on each iteration in a loop (soft coded).  On Oracle and SQL Server the performance was poorest with hard coded, better with firm coded and best with soft coded.  MySQL did best with soft coded as well but actually took a performance hit moving from hard coded to firm coded.  This had to do with differences in how MySQL server caches statements.  The authors took the time to rewrite their code from java to c in order to ensure that the issue was not related to language or driver issues.  This is not to say that one can ignore RDBMS and SQL fundamentals, but rather that to get top performance requires knowledge of platform specific issues.  This also comes out again when dealing with optimizers.</p>
<p>With that in mind, the authors recommend that readers have a solid understanding of SQL and some programming language.  Most examples are SQL and code is given in Java and PHP.  There are also examples that illustrate SQL extensions showing procedures, functions, etc. written for all three RDBMS products covered.  The authors stick primarily to standard SQL but do make note and at times show examples of how things will look in each of the other databases.  This information is current and reflects the most recent versions of the each product.</p>
<p>The fourth chapter, &#8220;Testing Framework&#8221; is incredibly useful.  The authors cover generating test data and then checking correctness of outcomes through comparison.  This is really useful information for anyone working to improve an application, or writing one for the first time.  I think it also a large part of why this book could really appeal to new and experienced developers as well as the developer working on existing or brand new applications.  I think there is a good chance that only the most extremely experienced developer would find nothing new here, or at least some new way to approach a problem.  New developers can learn quite a bit and avoid some bad habits and assumptions without having to gain that information the hard way.  And then the tools for generating random data, large amounts of data and comparing results will provide excellent opportunities for learning and real world application.</p>
<p>The next three chapters cover dealing with specific types of issues and how to improve performance.  The last chapter then quickly describes a scenario of just how the authors step into real world situations and start to attack a problem.  This is followed  with two appendices.  The first is scripts and samples, the second tools that are available to help in finding issues and resolving them.  Some of the authors tools use SQLite, which is discussed briefly in the chapter on creating test data as some of the tools depend upon it.</p>
<p>I think that it has been a while since I&#8217;ve read a book that could have such a rapid return on investment.  There are many suggestions and insights that should enable anyone to squeeze better performance out of just about any database application.  While the focus is on the application side, there is plenty that requires understanding and work on the database side as well.  There is discussion of the parameters and hardware I mentioned at the start of this review.  But rather than the only options, they are one part in a much larger and systematic approach.</p>
<p>The authors relate that often refactoring for this type of application comes into play when something that used to work does not work any more.  This can often lead to an environment of high pressure and emotion.  The desire for a rapid resolution can lead to casting about in the dark for a quick fix or a feeling that cost is no longer as significant since a fix must be had now.  The authors argue, and I agree, that this is exactly when a rational, disciplined process of tracking down and fixing issues is the most valuable.  I agree.  The issue is of course that someone in a position to do something must have the ability to take that approach.  This book will get one well on the way to being in that place.  Of course it can&#8217;t take a brand new developer or DBA an expert.  Much like a degree it can give them some fundamental tools that will allow them to take full advantage of experience as it comes rather than just crashing and burning.</p>
<p>If I could I&#8217;d have any developer on a database centric application read this, and DBAs as well.  There is a lot here for both sides to learn about just how much they depend upon and impact one another.  This may be an idealistic dream, especially for larger shops where often the relationship between those two groups is adversarial, but I think that such an approach could only make life much better for everyone involved.  For anyone looking to enter this world on either side of the DBA or developer equation, this may make a nice addition to their education.  For that individual wearing both hats this could be a life saver.  In this small book they will learn many things to look out for as well as gain exposure to some of the similarities and differences in what are arguably the top three relational database management systems right now.</p>
<p>Title: Refactoring SQL Applications<BR><br />
Author: Stephane Faroult with Pascal L&#8217;Hermite<BR>Publisher: O&#8217;Reilly Media, Inc.<BR>Pages: 293<BR>ISBN: 978-0-596-51497-6<BR>Rating: 9/10</p>
]]></content:encoded>
			<wfw:commentRss>http://geekbook.org/archives/126/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Assemble the Social Web with Zembly</title>
		<link>http://geekbook.org/archives/113</link>
		<comments>http://geekbook.org/archives/113#comments</comments>
		<pubDate>Fri, 20 Feb 2009 15:07:13 +0000</pubDate>
		<dc:creator>bookGeek</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[NonFiction]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Social]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[sun]]></category>
		<category><![CDATA[web apps]]></category>

		<guid isPermaLink="false">http://geekbook.org/?p=113</guid>
		<description><![CDATA[Web applications are all the rage. Web applications that function within the context of social networking sites doubly so. I think it is safe to say that pretty much anyone looking to garner a large audience on the web, for financial or any other reasons, has to be considering how they can reach people on [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.informit.com/store/product.aspx?isbn=0137144318"><img src="http://www.informit.com/ShowCover.aspx?isbn=0137144318&#038;type=f"></a><BR>
<p>Web applications are all the rage.  Web applications that function within the context of social networking sites doubly so.  I think it is safe to say that pretty much anyone looking to garner a large audience on the web, for financial or any other reasons, has to be considering how they can reach people on sites like Facebook, or all those users out there accessing the web via their iPhones.  Sun Microsystems has entered this arena by providing a set of web based development tools and a platform on which to host the resulting products that is now in beta and named <a href="http://zembly.com/">Zembly</a>.  And while Zembly has not been open to the public for all that long, two of Zemblys architects with the help of two writers have published a new cookbook for the aspiring Zembly developer, <cite>Assemble the Social Web with Zembly</cite>.</p>
<p><span id="more-113"></span>
<p>Zembly is relatively new and the name doesn&#8217;t offer any insight into just what it is, so before I get to the book itself, I&#8217;ll explain a little about just what Zembly is.  It is a Sun project.  In their promotional material on the site they claim, &#8220;Over two decades ago, Sun&#8217;s motto, &#8216;The Network is the Computer&#8217;, foreshadowed the advent of today&#8217;s cloud computing movement.We like to say that zembly is the development environment for Sun&#8217;s bold vision&#8230;&#8221;  So Zembly is an on-line development environment.  But more than just being an on-line editor, it is development in a social context aimed at social tools.  The code written by one Zembly user, is available to any other user.</p>
<p>Along with providing a social development environment, Zembly also provides the platform and resources where the applications developed there will live.  To put it in literal terms the framework is comprised of Solaris, Java, Glassfish, and MySQL.  It operates via Sun’s Network.com cloud-computing business.  That framework supports the use of HTML, CSS, JavaScript, FBML, and FBJS.  There are templates in place to develop applications for several popular social networking sites and there will be more as users add them.</p>
<p><cite>Assemble the Social Web with Zembly</cite> is an introduction to all this and serves primarily as a cookbook to help the reader get their head around how all the pieces work together, giving them a jump start into the process.  As Zembly is all about colaberation it seems appropriate that this book is the product of four authors.  Gail Anderson and Paul Anderson are experience authors, with a number of published tech books between them.  Todd Fast is the architect and CTO of Zembly.  Chris Webster is another Sun employee and the Technical lead for Zembly and also a published author himself.</p>
<p>The book covers an overview of Zembly, a chapter on how to use the tool set and then moves through a series of chapters that provide examples of building widgets and services for Flickr, Zillow, Facebook, Dapper, and web apps for the iPhone.  There is also a widget section that makes use of WeatherBug, Google Maps and Yahoo! Pipes.  The results can be published as applications within those sites or embedded into other sites.  I see the real potential for Zembly in places like Dapper and Pipes, where Zembly becomes an endpoint for those types of services that can consume almost anything.  The usefulness of Zembly comes in allowing to integrate that into the social sites and the scaleable hosting is already built right in.</p>
<p>The book is well organized and black &#038; white illustrations are put to good use in making directions clear.  The index is thorough.  The authors do not assume a lot of prior knowledge on the part of the reader in regard to how the various social networks operate.  This did mean at times I had to plow explanations of things that really didn&#8217;t have anything to do with Zembly.  The information on what Facebook applications are and what they do is a good example.  This was a little annoying but fortunately these sections were short.  I found the writing to be clear and to the point.  The authors do not try to be hip or cool and focus on content.</p>
<p>To really get the most out of the book a reader should be familiar with JavaScript, html and css.  It wouldn&#8217;t hurt to also understand RESTful web services.  Once the first two chapters explaining Zembly are over, this really is a cook-book, or set of examples/tutorials rather than instruction on how to code or do markup.  The experienced developer could probably slide by even if they were not working regularly with these technologies.  Someone who has never written a bit of code may want to spend some time building some familiarity with javascript before they tack this book.  Zembly itself has some quick tutorials that require almost no knowledge of programming.  I watched a graphic art guy at work throw together a facebook widget/app in about 10 minutes using Zembly.</p>
<p>Zembly is still in what has become the ubiquitous beta state for on-line applications.  And as it is under active development this book probably has a very short shelf-life.  It wont be all that long before the platform moves along and leaves it behind.  In an effort to shore up against that inevitability all the code and resources for the book are stored in Zembly.  If changes are made today, tomorrows reader will be able to work with the updated structures.  The book itself is also available in traditonal ebook formats and through Safari.</p>
<p>One of the nicer things about the Zembly approach is that it removes the barrier of hosting costs to participate in this space.  In turn the developer surrenders up their work to be used by others.  This may be problematic for those who would rather keep all their code to themselves, but fits in-line nicely with the fact that the entire stack is built on FOSS products.  Of course, once again the beta status means that this free ride is not something that is guaranteed for perpetuity.  I&#8217;m guessing that at some point, this type of central hosting is going to necessitate an attempt by Sun to generate some income from the service.</p>
<p>Getting in on the front end of a technology can often be rather difficult.  The Sun folks seem to be ahead of the curve on making it easier for people to participate with Zembly.  There are excellent tutorials and documentation on the site itself.  For those who want to take it a step further, there is this book with a wealth of examples and explanations that will really accelerate the learning process.  I&#8217;m not sure if Zembly will become the next big thing or not, but anyone who wants to gamble that it will, here is a chance to make the most of the ride.</p>
<p>Title: Assemble the Social Web with Zembly<BR>Author: Gail Anderson and Paul Anderson with Todd Fast and Chris Webster<BR>Publisher: Prentice Hall<BR>Pages: 385<BR>ISBN: 978-0-13-714431-0<BR>Rating: 8/10<BR>Tagline: Let&#8217;s Make a Social Application.  Right Here. Right Now. Together.</p>
]]></content:encoded>
			<wfw:commentRss>http://geekbook.org/archives/113/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.298 seconds -->
