Monday, September 28, 2009

I've officially started down the long road of writing a 2nd edition of Concurrent Programming on Windows, and would like your help.

There are many great new features in Windows 7 and the next versions of .NET, Visual C++ / CRT, and Visual Studio.  The book will of course cover them all.

But I am also looking to reshape the 1st edition in many dimensions.  I'd like to focus on readability, conciseness, and clearly separating the "must know" topics from the more geeky and advanced ones.  This is a common conundrum when writing a technical book.  The advanced topics are more likely to appeal to readers of my blog, for instance, but may be daunting for newcomers to concurrency.  Tradeoffs abound.  Nevertheless the 2nd edition is likely to be slimmed down compared to the 1st.

Any and all feedback, suggestions, and ideas are welcome.  What did you like about the 1st edition, and what did you not like?  If you could change a handful of things, what would make the top of your list?  And was it missing something crucial that you would like to see covered?  Please send your feedback to joe AT@ acm DOT org, or simply leave comments here on the blog.  Regardless of whether you've read the 1st edition or not.

I sincerely look forward to hearing from you.  Cheers.

9/28/2009 5:47:03 PM (Pacific Daylight Time, UTC-07:00)  #   

 Thursday, October 02, 2008

It's been quite some time since I blogged about what I've been reading.  That's not because I haven't been reading -- au contraire! -- but rather because I've been busy doing so.  I find these posts interesting for myself, so that I can look back and see where my interests were at a particular point in time.  Given the sheer number of additions, I can’t properly rate them like I have in the past.  Here are the more interesting ones, those that stick out in my mind:

Music

Mathematics

Computers

Based on this list, you might surmise that I read a lot.  ;)  In fact, I typically have between 3 and 5 books going simultaneously (how parallel of me), so I use the term "read" somewhat nontraditionally.  I prefer to absorb the information by immersing myself in many books in the same genre simultaneously, instead of committing to a single one.  This seems to be effective, but is also slightly odd and perhaps quite esoteric to other people; the result is that every room in my home is littered with books each in some possibly long-forgotten state of being "read" (along with tattered academic papers, language manuals, etc).  I like it, but some people believe this is an indication that I’m a tad insane.  C’est la vie.

10/2/2008 12:13:55 AM (Pacific Daylight Time, UTC-07:00)  #   

 Sunday, April 29, 2007

Long time readers will remember that I used to regularly blog about what I've been reading lately. (See here, here, here, and here for examples.) Well, it's been close to a year since I've posted such a list. So here's a little bit of a clearance of my back- log. (And this isn't even everything! I guess I read a lot.) I've separated the list into geek and non-geek books.

Geek books:

The Soul of a New Machine -- Tracy Kidder

10 of 10.
I'm only 16 years late on this one. This book is about DG's race to build a machine to contend with DEC's VAX, and has some great story telling. It reads almost like a fiction book, with great character building, a nice storyline running through the book, etc. The geek factor is low on this one, though I suppose it _is_ a book about a bunch of geeks building hardware, so it's a little up there. Evidently it won the Pulitzer prize.


Programming Pearls -- Jon Bentley

10 of 10.
Another one in the category of "how the heck did I not read this sooner?" This book is a collection of essays on various programming tasks, and gives tons of insight on engineering software in general. The prose is even entertaining too. This book now occupies a special place on my bookshelf.


Java Concurrency in Practice -- Brian Goetz, et. al

10 of 10.
This is a very down-to-earth, pragmatic overview of concurrency in Java. It even has chapters on testing and debugging, which get very little coverage in most articles but are clearly important. Though its focus is on Java, many of the ideas are more general, and thus it's a must-read for any serious Windows or .NET concurrency programmer. It's not as good as my upcoming book, but given that you can't buy mine yet, it will do for now ;).


The Old New Thing: Practical Development Throughout the Evolution of Windows -- Raymond Chen

8 of 10.
I'm sure everybody who reads my blog reads Raymond's too. If you do, then the book will be quite familiar to you. It's a collection of essays, most of which are edited versions of ones that have appeared on Raymond's blog in the past. I really like the layout and organization of chapters. One downside: Raymond apparently tried to keep it from becoming too geeky (he mentions several times, "for you non-programmers, you can skip this chapter"), but c'mon: how many non-programmers are actually going to read this book? IMHO he should have just let loose and never looked back.


Software Pioneers -- Manfred Broy (editor), Ernst Denert (editor)

8 of 10.
This book is a collection of classic articles by precisely what the book's title suggests, software pioneers: Friedrich L. Bauer (ALGOL), Ole-Johan Dahl (Simula), Niklaus Wirth (Pascal), Fred Brooks (Mythical Man Month, OS/360), Alan Kay (GUIs), Rudolf Bayer (B-trees), Peter Chen (E/R modeling), Edsger Dijkstra (obvious), Tony Hoare (CSPs, axiomatic semantics), David Parnas, John Guttag (abstract data types), Michael Jackson (JSP), Tom DeMarco (structured analysis), Michael Fagan (code inspection), Barry Boehm (engineering economics) and Erich Gamma (design patterns). Most of the papers are available on the net, but having them in a printed hardcover is really nice. There are also some new write-ups and an accompanying CD which contains talks from all of the above people. Nice.


An APL Compiler -- Timothy Budd

8 of 10.
An overview of Timothy Budd's APL compiler, from front to back end. (For those not up on APL, it's a great language. See the next item.) Also contains a chapter on compiling high level program statements to vector ISAs, which is quite timely and interesting.


APL with a Mathematical Accent -- C. A. Reiter, W. R. Jones

8 of 10.
This is the best overview and reference book on APL I've encountered to date. For $120, you get the cheesiest binding and printing ever, so be prepared to be disappointed in that department, but the content is well worth it. Covers APL from start to finish and has some handy reference charts.


Inside OS/2 -- Gordon Letwin

8 of 10.
I picked this book up after reading Larry Osterman's blog entry about how acquiring a critical section in OS/2 effectively suspended all threads in the system until it was released. Sure enough, that's how it worked. Funny. Anyway, this book was fun because it takes you back in time, and, since Gordon was the chief architect for OS/2, the writing gives a ton of insight into software design and architecture when OS/2 was being developed. Though there is plenty of detail which is fairly useless today (like how to specifically use DosCWait), I enjoyed skimming it.


Dreaming in Code: Two Dozen Programmers, Three Years, 4,732 Bugs, and One Quest for Transcendent Software -- Scott Rosenberg

7 of 10.
In the style of Soul of a New Machine (see above), this book takes you through the development of Chandler, a start -up software project lead by Mitch Kapor, the founder of Lotus. I generally agree with most of the reviews on Amazon: the book idea was good, the writing is very good, but the project he chose to follow was crap. As far as I know, Chandler is now dead, and the start-up didn't seem like a place buzzing with immensely passionate people, no matter how hard the author tried to convey that. He should have chosen Windows Vista or something ;).


Non-(computer-)geek books:

Molecular Gastronomy: Exploring the Science of Flavor -- Hervey This

10 of 10.
This is THE book on molecular gastronomy, literally. Hervey basically invented the field, from what I understand, and this book is a great collection of easy-to-read essays on the topic. You'll walk away with a better scientific understanding of what cooking is all about, including how various new-age techniques work, and perhaps even the confidence to try some of it out on your own. This is a must read for any serious food geek.


The Making of a Chef: Mastering Heat at the Culinary Institute -- Michael Ruhlman

10 of 10.
In this book, the author enrolls at the Cullinary Institute of America (CIA) and goes through basically the full cirriculum. The book is written excellently, and you feel like you're right there in class with him. And you certainly walk away with a deep and lucid appreciation for those who are slaves to the knife, cooking up delicious food because they love it. I was considering a stint at the CIA ... until I read this ... I'm now convinced that I couldn't handle it ;).


This is your Brain on Music: The Science of a Human Obsession -- Daniel J. Levitin

10 of 10.
So many of you probably don't know that I'm a music geek too. I write a lot of material -- actually, I've been writing a whole lot more lately -- though I don't play live at all anymore. This book has some light introduction to music theory, but the great part is the way the author dives into cognitive neuroscience and the effect of music on people, their brains, and their psychology. The book is incredibly unique and will instill a newfound appreciation of every nuance of that next breakbeat you hear.


The Soul of a Chef: The Journey Toward Perfection -- Michael Ruhlman

10 of 10.
Great follow-up to The Making of a Chef. The delves into the make-up of a chef, starting with the master chef exam at the CIA, and then profiling two chefs: Michael Symon (Lola) and Thomas Keller (French Laundry, per se). While the whole thing is great, the 1/3 of the book devoted to Thomas Keller makes the book wortwhile.


Heat: An Amateur's Adventures as Kitchen Slave, Line Cook, Pasta-Maker, and Apprentice to a Dante-Quoting Butcher in Tuscany -- Bill Buford

10 of 10.
I couldn't put this book down for a whole weekend, and then I was sad when it was done. The writing is extraordinary, and makes you feel like you're there, learning to make various pastas, to be a line cook at Babbo in New York, to try and learn what you can from Mario, and to travel to Italy to learn from some very interesting characters indeed. Easily one of my favorite reads from 2006.


A Cook's Tour -- Anthony Bourdain

9 of 10.
After reading Kitchen Confidential, I couldn't not read A Cook's Tour. Anthony is extremely entertaining, crude, and raw. That's what he does best. This is the book version of his late TV show with the same title. In it, he travels the world, tasting regional cuisines and reporting "from the trenches". Lots of mouth watering street food, bizzare encounters, exotic beverages, etc. If you can't afford to do a foodie world-tour yourself, this is the next best thing.


Guns, Germs, and Steel: The Fates of Human Societies -- Jared M. Diamond

9 of 10.
This book needs little introduction. It won the Pulitzer prize, after all. The book describes how certain socieites came to dominate various geographies of the world, including (as the title suggests) the role of guns, germs (disease), and steel in the process. For obvious reasons, the writing is a tad dry, but it's so jam packed full of interesting data and written incredibly methodically, both of which more than make up for the dryness.


The Omnivore's Dilemma: A Natural History of Four Meals -- Michael Pollan

9 of 10.
This book takes you through many different forms of eating, from corn and our new industrialized food system, to farming, to hunting and foraging, and beyond. Each section concludes with a meal characteristic of one particular style of food creation. Though at times the writing gives a hint of an agenda, the writing is generally excellent, and many facts are presented for consideration.


The Reach of a Chef: Beyond the Kitchen -- Michael Ruhlman

8 of 10.
This is the third of Ruhlman's XXX of a Chef series of books, and I really enjoyed it. This one looks at chefs and their influence inside and outside of the kitchen. That includes Grant Achatz (of Alinea), how he studied under Keller and became an American pioneer of molecular gastronomy, various Food TV celebs, and so on. Great read.


The Essays of Warren Buffett: Lessons for Corporate America -- Warren Buffet, Lawrence A. Cunningham (editor)

8 of 10.
Sometime in 2005, I stumbled across the archive of Warren Buffet's letters to the Berkshire Hathaway shareholders, dating back to 1977. I immediately printed them all out and have a stack of many 1,000 pages in my office to this day. Though they are fairly lengthy, there are many great lessons to be learned from reading them. This book is an edited down version of those essays. Very edited and abridged, actually, but some of the more important points are pulled out and analyzed. And the best part is that if you want to drill into more detail, all of the letters are available online.


Judgment of Paris: California vs. France and the Historic 1976 Paris Tasting that Revolutionized Wine -- Michael Ruhlman

7 of 10.
All wine lovers need to read this. I gave it 7 out of 10 simply because the writing style is actually pretty bad IMHO. But the content itself is great, and of historical signifciance. Wikipedia has a page on the event, but in summary, in 1976 many Bordeaux 1st growths, etc. were pitted against various California winemakers in a blind tasting. The tasting was held in Paris, and the judges were all French. Everybody believed the US wines would fall short, but it turned out that the US fared quite well: the book is the story of events leading up to and including this tasting.


The Nasty Bits: Collected Varietal Cuts, Usable Trim, Scraps, and Bones -- Anthony Bourdain

7 of 10.
To be entirely honest, this book was VERY entertaining, but fell a bit short of my expectations. This is a collection of fairly disjoint essays, almost the kind of thing you'd expect to see on a blog. Each reads very well on its own, but it lacked the kind of cohesive feel I was looking for. Nevertheless, Anthony is always entertaining, crude, funny, and makes me laugh. This book was no exception.


4/29/2007 12:22:39 AM (Pacific Daylight Time, UTC-07:00)  #   

 Sunday, January 07, 2007

Jim Larus, a Microsoft colleague of mine, recently co-authored a book on Transactional Memory with Ravi Rajwar from Intel, one of the most prominent authorities in the TM community.  It just became available.  You can purchase and download it online at Morgan & Claypool's website: Transactional Memory (Synthesis Lectures on Computer Architecture).  The series of which it is part is new, but there are at least a few other great books in its pipeline, including a CMP (chip multi-processor) architecture book by Kunle Olukotun, from Stanford and an architect of Sun's Niagara processor.

1/7/2007 12:12:42 PM (Pacific Standard Time, UTC-08:00)  #   

 Tuesday, October 10, 2006

It's probably old news on the street, but I just (happily) received my copy of the new of the dragon book yesterday. Yes, after 20 years, there is now a 2nd edition of the cult classic, Compilers: Principles, Techniques, and Tools. I have to admit I like the old cover much better--what can I say, I'm a cheesy cartoons over cheesy 3d models kind of guy--but the fact that there are 3 entirely new chapters on topics near and dear to my heart more than makes up for it: one on runtimes, and two on parallelism.  
10/10/2006 8:45:08 AM (Pacific Daylight Time, UTC-07:00)  #   

 Friday, May 19, 2006

It's been a while since I last posted a "recent reads" list.

Show-Stopper! The Breakneck Race to Create Windows NT and the Next Generation at Microsoft -- G. Pascal Zachary

10 of 10.
I read this book in nearly one sitting. I couldn't put it down. This book details the story of the conception, design, and implementation of the Windows NT OS. It's a great "from the trenches" report of what it must have been like to work on the project, and stars many familiar faces, not the least of which is Dave Cutler. Some DevDiv familiar show up, such as David Treadwell (was dev on WinSock, now VP for the .NET Framework) and S. Somasegar (was tester, now VP for DevDiv), among many Windows core architects who are still at the company today. It's out of print, but I found a like-new copy for a few bucks (yaay).

The Calculi of Lambda Conversion (AM-6, Annals of Mathematics Studies) -- Alonzo Church

10 of 10.
λ! Who am I to rate such a classic book? This is the seminal work for all modern functional languages (LISP is modern, yes?). I had to read it twice... carefully... to follow everything. (Perhaps I'm slow?) But it's only 77 pages. The text covers α conversion, β reduction, and η conversion, in addition to normal and head normal forms. And the best part of all? It's very concise, not very wordy, and follows a nice, natural progression.

Chances Are...: Adventures in Probability -- Michael Kaplan, Ellen Kaplan

8 of 10.
This book is fun. It's a bit lighter on the math than I'd prefer, but nevertheless offers a great historical insight into the evolution of probability. It begins in the 1600s, and details its origins in mathematics and science, and -- surprise! -- its practical use as a tool for gamblers. Eventually it discusses impacts to more interesting parts of society, such as the development of an insurance industry, evaluation of new drugs, and combat and war. A welcome break from my typical computer nerd books.

Dr. Euler's Fabulous Formula: Cures Many Mathematical Ills -- Paul J. Nahin

8 of 10.
Ahhh, a book after my heart. A quote from the opening says it all:

I used to think math was no fun
'Cause I couldn't see how it was done
Now Euler's my hero
For I now see why zero
Equals eπi + 1


The book details the historical development and importance of Euler's formula. Throughout, there is quite a bit of description-by-example by way of complex number mathematics, in addition to great historical accounts.

Why Most Things Fail: Evolution, Extinction, and Economics -- Paul Ormerod

7 of 10.
First, let me admit: I was a little disappointed by the broad title and relative narrow focus of the text. While some correlation is drawn between evolution, extinction, and economics, most of the book is spent describing why uncertainty in business--and the aparrent disregard for such uncertainty in commonplace naive business theory--leads to failure. He also uses examples from game theory on other related topics to draw such conclusions. The book should have been much longer, as I found myself at the end wondering, did I miss some big pieces? With that said, much of it is unique content backed by real research, so I'm sure developing the ideas took quite a bit of time.

The New Turing Omnibus: Sixty-Six Excursions in Computer Science -- A. K. Dewdney

6 of 10.
I don't think I learned a whole lot from this particular book, but it was at least entertaining to read. I brought it along with me on a trip, and liked the format: Short, concise, often under 5-page essays on some topic in computer science. While I was traveling, this enabled me to pick it up and read an entire essay when I had only a brief period of time. The topics do range quite dramatically, and the content is a little "dumbed down," but it is a great coffee table addition.

The Devil's Cup: A History of the World According to Coffee -- Stewart Lee Allen

8 of 10.
OK, this is definitely the odd book out. But I read it in about a day and a half, last weekend, and couldn't put it down. The book really isn't as much about coffee as it is about the author's crazy travels from Africa to Yemen to Europe and back to the US, in search of the "local brews." Quite a bit of historical insight is given, and it's a fun ride. I enjoyed it, and it was a much needed break from the techno babble and funny symbols. :)

5/19/2006 10:48:49 PM (Pacific Daylight Time, UTC-07:00)  #   

 Tuesday, December 20, 2005

Now that the book's quieted down, I have more time to do things like code, read, drink wine, eat, and sleep. In that order.

And I've changed roles at Microsoft to focus entirely on concurrency.

I'm wrapping up development on some C++ code I wrote for an upcoming MSDN article. I also intend to spend quite a bit of time over the holiday finishing up another project that has really tested my thinking and coding skills. I love stuff like that. When carefully and intentionally crafted code must play nicely with the topology of the underlying machine. I have a presentation to the C# Design Team in late January to show 'em what I got, so I need to get these ideas down into code and optimized ASAP.

I've also become quite hooked on the sweet sounds of System of a Down. My 5 Top Played bands in iTunes right now are (in order): System of a Down, Ill Nino, Mudvayne, Machine Head, and Misfits. I've also been playing a bit more guitar lately, recording a little, but not being overly happy with the end result. Someday.

By the way, if you want to buy me any books, here's a condensed Wish List:

DEC is Dead, Long Live DEC: The Lasting Legacy of Digital Equipment Corporation -- Edgar H. Schein The Search: How Google and Its Rivals Rewrote the Rules of Business and Transformed Our Culture -- John Battelle
Parallel Computer Architecture: A Hardware/Software Approach -- David Culler, J.P. Singh, Anoop Gupta Transaction Processing: Concepts and Techniques -- Jim Gray, Andreas Reuter
Transactional Information Systems: Theory, Algorithms, and the Practice of Concurrency Control -- Gerhard Weikum, Gottfried Vossen Principles of Transaction Processing -- Philip A. Bernstein, Eric Newcomer

Interestingly, a number of those authors currently work at Microsoft.

Have a happy holidays everybody.

12/20/2005 7:37:26 PM (Pacific Standard Time, UTC-08:00)  #   

 Thursday, November 17, 2005

I haven't posted a book post in a while. So here are a few recent reads.

First, those pertaining to computers:

Microsoft Windows Internals, Fourth Edition -- Mark E. Russinovich, David A. Solomon

10 of 10.
I can't believe I never got my hands on this puppy previously. After seeing Mark and David's pre-con at PDC this year, I had to run out and buy it. Yes, I read it like a novel. And yes, it was just as suspenseful and enjoying. If you want to learn more about Windows esoterica--including memory management, thread scheduling, I/O, and various other internals--this is the best book on the market. At least the best one I've seen so far. I can't say enough about it.

The Cathedral and the Bazaar -- Eric S. Raymond

8 of 10.
(I've owned this book for years, but picked it up for a re-read. I was surprised at how much new I gleaned from it.) OK, Eric Raymond is known as a complete MS-basher. But this book is quite well written. He makes tons of interesting claims, backed up with logical arguments (albeit little data), and challenges the traditional viewpoint on software development economics. He does so from more of an anthropologists view rather than an economist, but he does surprisingly well mixing the two. You can find a digital copy right here if you're too cheap to buy the book. ;)

Virtual Machines: Versatile Platforms for Systems and Processes -- Jim Smith, Ravi Nair

6 of 10.
This is probably a good book to have, and to skim through. I personally only read about 1/5th of it (those that were relevant and contained information I wasn't already entirely comfortable with) but the sections I did go through were well written. It covers various "virtual machines," from virtual execution environments--e.g. CLR and JVM--to hypervisors and more traditional virtualization (a la VirtualPC and VMWare). The content is, unfortunately, quite introductory in nature.

Next, those that have nothing to do with bits and bytes (but that I enjoyed nonetheless; non-fiction, of course):

In the Devil's Garden: A Sinful History of Forbidden Food -- Stewart Lee Allen

8 of 10.
Wow, super entertaining. This book talks about all of the foods throughout history which have been labeled "forbidden," yet for some reason always seemed to be secretly enjoyed by the more privileged classes in certain societies. Its chapters are broken up into the Deadly Sins, leading to some surprising and definitely engaging narratives throughout various cultures. I blew through this in just two sittings, mostly because it's an easy read, but also because I couldn't put it down.

Kitchen Confidential -- Anthony Bourdain

8 of 10.
OK, so this book is about food. A really good book about food. Anthony Bourdain did a brief stint as a "celebrity chef," but ultimately he's just a raw all-American cook. He is executive chef as Brasserie Les Halles in New York City. And his book details the grungy side of kitchens and the restaurant industry, but in a very intruiging and culinary-rich sense. I read it on the beach in Maui, which made it even better.

The Accidental Connoisseur: An Irreverent Journey Through the Wine World -- Lawrence Osbourne

7 of 10.
This is an enligntening tale of one man's journey through the world of wine. At first, he is confronted with a dizzying array of magical words thrown together by "experts" on taste and wine, and struggles to find his ground. Over time, a subtle transformation takes place, where the comfort level with the industry, influentials, and its products gradually rises. No strong conclusion is made, but the journey is fun.

11/17/2005 10:40:37 PM (Pacific Standard Time, UTC-08:00)  #   

 Wednesday, September 14, 2005

2 talks down, 0 to go.

What a great feeling. Both talks are currently in the Top 10 for session evals. We'll see if I can stay on top.

Update: Please fill out the session evals on CommNet if you attended my talks. Thanks!
Update #2: The decks for my talks are available: (1) Programming w/ Concurrency and (2) Writing a Compiler.

Time to fall asleep reading Virtual Machines: Versatile Platforms for Systems and Processes.

9/14/2005 12:23:59 AM (Pacific Daylight Time, UTC-07:00)  #   

 Tuesday, August 09, 2005

I get nearly zero time to read lately. Too much stuff going on, including a toasted BIOS on my primary work PC. (Yeah, it had my PDC presentations on it...You'd think working at a storage company for many years would have taught me to back my work up. *sigh*)

But I have a rule that I must read for at least 4 hours per week. Anything less than that, and I fear brain rot. Here are some current and recent reads:

The Design and Evolution of C++ -- Bjarne Stroustrup

9 of 10.
I am thouroughly enjoying this one. It takes a historical tour of the design and evolution of the C++ language, from it's inception based on Bjarne's work with Simula in the late 70's, to his C with Classes, it's codification as C++, and its evolution from 1.0 and beyond. Great insight into why certain decisions were made, and a great way to get some context around where we are today and how we got here.

Fundamentals of Parallel Processing -- Harry F. Jordan, et al

9 of 10.
A fairly detailed tour of the parallel processing space, with some practical advice as it pertains to modern shared memory architectures and systems. I mentioned it a few weeks back, but I'm just now reading straight through the book. Material is introduction-to-medium-level, but offers some meaty chunks (whatever that means...it just came out, sorry) in many areas. Especially good coverage on data dependence analysis.

Customizing the CLR -- Steven Pratschner

8 of 10.
I bought this book primarily for its coverage of Constrained Execution Regions, Critical Finalization, and reliability as it pertains to our hosting APIs. But then I started reading from the beginning and couldn't stop. This book will certainly serve as a good reference for anybody doing hosting coding, and could serve as a source of endless hours of fun...just toying around with some of the cool extensibility hooks the CLR provides. Happy hacking!

Dude, Did I Steal Your Job? Debugging Indian Computer Programmers -- N. Sivakumar

7 of 10.
Despite it's potentially offensive title, this book offers interesting insight from an Indian programmer working in the United States. Funny, entertaining, and very raw (i.e. little to no editing). I am slightly annoyed by the triple spaced typesetting, but so be it. Definitely a lighter read than my norm, but it's a welcome change.

8/9/2005 12:20:20 AM (Pacific Daylight Time, UTC-07:00)  #   

 Saturday, March 26, 2005

I can't imagine what it would have been like to write a CLR/.NET Framework 1.0 book before it was released from the outside. That is, while not working for Microsoft.

I just upgraded from Whidbey Beta1 to PD7, and found a ton of interesting changes. Mostly API renames which, thankfully, are done through obsoleting the old one. This makes migrating much smoother since the build doesn't break, and I can just follow up on the warnings as needed. I have to be better about keeping up from drop to drop. Even without doing that, though, every so often I get wind of a change via email or word of mouth, and make a note to check it out at some point in the future. I basically have a whole set of Outlook folders, one for each chapter, with nearly one hundred todo's... One has to wonder if I'll ever be able to follow up on them all. :)

Luckily, I also have a whole suite of test cases which I am using to verify when something changes. Basically, anything I write about, I write a test case for. This has definitely been one of the best decisions I made towards the beginning of the project. This at least helps to identify areas where the text might now be out of date, and points directly to code samples which are obsolete.

3/26/2005 6:20:37 PM (Pacific Daylight Time, UTC-07:00)  #   

 Friday, March 04, 2005

Advanced Topics in Types and Programming Languages
edited by Benjamin C. Pierce

9 of 10. This book builds on one of my favorite reads from last year, Types and Programming Languages. It contains a collection of essays on topics ranging from precise type analysis, lower level type systems (e.g. a typed assembly language), reasoning about programs, and ML type inferencing. I've not yet completed it, but it is generally very well written. I highly recommend both of these books.

Free Culture: The Nature and Future of Creativity
by Lawrence Lessig

8 of 10. Fascinating read by one of the most knowledgeable and provocative experts on the topic of both historical and modern intellectual property. This book takes a careful look (without too much lawyer speak) at the impacts IP law have had on culture as a whole, and examines the impacts on the future of ideas and the ability to act out on such creativity. Lawrence has a blog over at http://www.lessig.org/blog/, and has a great collection of presentations over at the IT Conversations website.

Mind Hacks
by Tom Stafford, Matt Webb

7 of 10. This is a fun book. While some of the topics covered aren't necessarily hacks, the author's do a great job of discussing some interesting facets of how the brain functions. While coverage doesn't go very deep in any one area, the book provides plenty of (mostly web) references to follow up on if you end up wanting more details. The prose is very computer/geekish which just adds to the reading pleasure.

3/4/2005 12:39:18 PM (Pacific Standard Time, UTC-08:00)  #   

 Saturday, January 22, 2005

Having a massive library of techie books is a blessing in disguise... Especially when you're writing a book and need constant reminder of how things really work. Or just a little inspiration.

I have these on my desk right now (listed in no particular order):

Notice that I have quite a few Java books. Interestingly, I own very few CLR/.NET Framework books... I've found that most of the Java material is transferrable. I'd recommend any one of the above books very highly.

1/22/2005 8:04:36 PM (Pacific Standard Time, UTC-08:00)  #   

 Saturday, January 15, 2005

Games and Decisions: Introduction and Critical Survey
by R. Duncan Luce and Howard Raiffa

8 of 10. Discussion of game theory with concrete examples in terms of politics, war, and economics. This is a reprint of the classic 1957 text, and is highly dependent on von Neumann's extensive work in this area. Includes a great deal on classification, e.g. two-person, n-person, zero-sum, and cooperative, and the related strategic theories. Also discusses general decision making based on interests, including both at an individual and group level, with much content derived from Nash's relavent work. The book is also very approachable, leaving much of the heavy duty math to von Neumann's classic Theory of Games and Economic Behavior. A fun deviation from my typical CS read.

1/15/2005 7:37:45 PM (Pacific Standard Time, UTC-08:00)  #   

 Tuesday, December 28, 2004

I finished up the latest round of books just in time for a few more, two of which were holiday gifts.

Types and Programming Languages
by Benjamin C. Pierce

10 of 10. Contains a pragmatic view of language typing by using formal operational semantics. It begins with an untyped lambda calculus and moves to simply-typed on up through more complex language syntax. The text is very well organized, introducing new topics in a logical progression from untyped to fully typed language syntax. The book uses ML to demonstrate example implementations along the way.

Formal Semantics
by Glynn Winskel

9 of 10. This is a very mathematically-oriented text on formal mechanisms for representing programming language semantics. Includes coverage of domain theory, and operational, denotational, and natural semantics, plus special coverage of parallel and nondeterministic formalisms. Very dense, but very well written.

Computer Architecture: A Quantitative Approach
by John L. Hennessy, David A. Patterson, David Goldberg

6 of 10. Decent, albeit introductory and very sparse, coverage of various computer (hardware) architecture topics. This includes coverage of instruction set design, parallelism, pipelining, multi-core, and a variety of other interesting things. The biggest disappointment is the lack of depth in the topics covered. Still recommended as a quick reference to occupy your bookshelf.

12/28/2004 11:34:31 AM (Pacific Standard Time, UTC-08:00)  #   

 Wednesday, December 22, 2004

I'm going to get into the regular habit of soliciting feedback on book content. The responses here were very helpful.

Right now, I'm wrapping up the chapter on mutli-threading which covers app-domains, threading, and process management. I've tried to cover of all the standard concurrency and threading topics, asynchronous API patterns, synchronization and the Win32 WaitHandle-based resources, and both the System.AppDomain and System.Diagnostics.Process classes.

Is there anything specific to this area you'd like to see covered?

Any common pain points that .NET newcomers (or even experienced developers) seem to get hung up on when it comes to this topic?

Any anti-patterns you see emerging that the general public should know about?

Feedback would be much appreciated.

12/22/2004 1:16:06 AM (Pacific Standard Time, UTC-08:00)  #   

 Tuesday, November 30, 2004

I'm several chapters through my book. Well, rough draft chapters that is--I suppose there's a subtle difference. ;) And I have a question that hopefully at least one person out there can provide feedback on.

As I am writing, I'm constantly battling with the whole “know your user” dillemma. This fundamental tenet applies to building products, designing APIs, and writing books, too. If my book is under or over the head of my target audience, well... folks likely won't read it! At this point, it's hard to pinpoint exactly who my readers will be. My envisioned persona at this point is an IT software professional who either has a couple years of experience or a CS degree. This person enjoys reading about technologies, but at the same time has a job to do and will be using the book as a crucial tool to enable them in doing it.

Seeing as I've never explicitly said what the book is, let me do that: roughly, it is a whirlwind tour of the CLR and .NET Framework, with a focus on 2.0 stuff. There are several similar works out there already, so I'm trying to differentiate myself with a more technical, geekish edge, and great coverage of the new 2.0 features.

So here comes my constant internal debate. How much computer science-ish stuff should it contain? I mean, there's a certain level needed to understand some concepts, but many could just as easily be glossed over. Moreover, if folks need to learn about hardcore CS stuff, well... there are plenty of classic texts out there already. Take type systems, for example. I could just say: hey, there are these things called types, of which there are two categories... value and reference types. The differences are X, and you use them by doing Y. And so on. Or, I could take a step back, and briefly discuss the design decisions made when choosing strong vs. latent typing, a good mixture of static and dynamic type checking, and so on. I could easily spend 1/5 of the entire Type System chapter on this alone. But I fear that could be a mistake.

I suppose there is a subtle difference... however, I do know that many people out there just want to “see the code” when they buy a book. Not read through a whole bunch of geeky expositions.

Any opinions would be awesome! Thanks...

11/30/2004 10:50:06 PM (Pacific Standard Time, UTC-08:00)  #   

 Thursday, November 04, 2004

Essentials of Programming Languages
by Daniel P. Friedman, Mitchell Wand, Christopher T. Haynes

10 of 10. Details fundamental programming language concepts with a focus on the implementation of them, including closures, type checking, continuations, object orientation, and the like. The book gives a great overview, building a functional interpreter using Scheme along the way to illustrate and highlight points. There is just the right amount of formal notation. Highly recommended.

Structure and Interpretation of Computer Programs
by Harold Abelson, Gerald Jay Sussman

10 of 10. The Wizard book. Although it's available for free online, I ended up buying a copy. This is a classic book on fundamental concepts of programming, with a heavy focus on Scheme and functional programming constructs. Anyone who doesn't already own it... well... should. :)

Alan Turing: Life and Legacy of a Great Thinker
by Christof Teuscher

9 of 10. An amazing collection of essays covering the spectrum of Turing's life. Not super-geeky, but nonetheless a fascinating set of pieces. I've been interested in Turing ever since I read The Code Book: The Evolution Of Secrecy From Mary, Queen Of Scots To Quantum Crytography years and years ago, a historical account of cryptography with a decent coverage of his attempts and eventual success to break the ENIGMA.

Programming Ruby
by Dave Thomas

8 of 10. This is the classic text on Ruby, the programming language. This is referred to the "PickAxe" among the Ruby crowd. The first edition has been out of print for some time, so the recent re-release of a second edition is very welcome! Not only has it been updated to cover Ruby 1.8, but it has much more content than the first edition. Great book, especially for reference. (Ruby isn't known for its great documentation!)

The Haskell School of Expression
by Paul Hudak

7 of 10. This book is a brief tour of the Haskell programming language, using multimedia examples to illustrate a variety of potential uses. I found it a bit too geared towards the functional language beginner. The focus on multimedia was interesting, albeit distracting at times.

11/4/2004 10:15:34 PM (Pacific Daylight Time, UTC-07:00)  #   

 Thursday, October 14, 2004

I'm feeling better about this book project each time I sit down to work on it. My word count is increasing steadily, and as expected my ability to get in “the zone” and crank out pages is indeed improving. My first draft is actually about 3% complete! :P

10/14/2004 11:38:15 PM (Pacific Daylight Time, UTC-07:00)  #   

 Saturday, October 09, 2004

I've decided to track my book progress by capturing a number of interesting data points at the end of each writing session. If there are other interesting ones folks would like to see, let me know and I'll start recording them.

Here's what I have at the end of my first session... I'm pretty slow right now, trying to get used to the various writing templates, guidelines, and styles provided by my publisher. I hope my output beefens up as I progress.

Date Chapters Done Pages Words Chars Paragraphs Sentences Passive Reading Ease
10/9/2004 0 4 1038 5518 89 41 7% 38.9

At one of my previous jobs, I was affectionately (I think) referred to as the Data Pig. Oink, oink.

10/9/2004 1:31:29 PM (Pacific Daylight Time, UTC-07:00)  #   

 Saturday, September 18, 2004

Yup, another one of these book posts... I've actually found the process very revealing for my own self; I very seldom take a structured look at my activities, and I think research and reading is one that deserves structure. The next step is to plan ahead rather than simply analyze prior trends.

How to Solve It: Modern Heuristics
by Zbigniew Michalewicz, David B. Fogel

10 of 10. This book is easily within the select few books that I've enjoyed 150%, page for page. The general topic of heuristic-based problem solving strategies is discussed, including search- and network-based solution techniques, evolutionary approaches, along with plenty of fundamental information on problems, modeling, and the process of devising solutions. I felt engaged throughout, constantly presented with example problems to keep my brain active. Although some relatively elementary math is used to express concepts, the book is surprisingly easy to read (considering the density and depth of the material covered).

Just as a teaser, I'll go ahead and offer up one of the simplistic examples found early in the book:

Mr. Smith and his wife invited four other couples for a party. When everyone arrived, some of the people in the room shook hands with some of the others. Of course, nobody shook hands with their spouse and nobody shook hands with the same person twice.

After that, Mr. Smith asked everyone how many times they shook someone's hand. He received different answers from everybody.

How many times did Mrs. Smith shake someone's hand?

microserfs
by Douglas Coupland

8 of 10. This was a gift, and was read within a couple days of receiving it. The book is basically a novel that reads like a pathetic Microsoft employee's journal. He and his friends decide to be not-so-pathetic, and decide to join a 90's-style start-up, but still end up being pathetic. I'm still unsure what sucked me in, as I'm typically not a fan of works of fiction, but perhaps it was the truthfulness of the Microsoft cultural references that did me in. It's a bit frightening when a fictional book reads as though it's a diary of your own life... oh, and it was written ~10 years ago! Now, I'd like to think that I'm not as sad as the characters in the story, but perhaps I'm in denial? ;)

Waltzing with Bears: Managing Risk on Software Projects
by Tom DeMarco, Timothy Lister

7 of 10. For that spreadsheet-oriented part of your brain. Covers some fairly straightforward (duhh) concepts that, as in most books written on topics of business and management matters, should be obvious but often aren't. And no, this book doesn't advocate for eliminating risk entirely, quite the opposite actually. Which is why I found it interesting: it is primarily about managing and mitigating the negative consequences that could result from making (and managing the implementation of) risky decisions.

Joel on Software: And on Diverse and Occasionally Related Matters That Will Prove of Interest to Software Developers, Designers, and Managers, and to Those Who, Whether by Good Fortune or Ill Luck, Work with Them in Some Capacity
by Joel Spoelsky

7 of 10. Most of this material is available right on Joel's weblog, but for those who prefer killing trees (which I do, not for the killing trees part but rather the yet-to-be-widely-understood preferable feeling of holding a book in one's hands) this was worth it. His style of writing gives some people heartburn, but if you take it for what it is, it's enjoyable. So what is it? Well, a collection of op-ed pieces on technology from somebody with a respectable amount of experience and success in the software industry. Luckily, you can get a good taste of his style by reading his weblog and be at ease knowing the book is significantly less expensive than your average book covering the subject of computers.

In Search of Stupidity: Over 20 Years of High-Tech Marketing Disasters
by Alan MacFarlane, Iris MacFarlane

9 of 10. A classic tale of foolish mistakes that have sunk entire software- product units and/or companies over the years. I burst out laughing several times, and still can't believe that many of the stories are true. I find that learning from other peoples' mistakes is often more valuable than digesting theoretical prose, especially when it comes to business advice. This book serves that purpose perfectly.

From Airline Reservations to Sonic the Hedgehog: A History of the Software Industry
by Martin Campbell-Kelly

8 of 10. A very well-written historical account of the software industry, and (imho) an indispensable resource for attempting to understand where we've been and where we're going. This fell into the category of "once you start, you just can't put it down"... for me, at least.

I've also been particularly enjoying a set of Don Syme's [MSResearch] publications. I found the coverage of ILX very insightful, and particularly relevant to my current Scheme compiler effort (man, I need a freaking code name badly).

9/18/2004 3:43:31 PM (Pacific Daylight Time, UTC-07:00)  #   

 Saturday, August 28, 2004

Ants are very fascinating creatures. I've become more appreciative and aware of this recently, as the pages of the following books flowed past my eyeballs:

Emergence: The Connected Lives of Ants, Brains, Cities, and Software
by Steven Johnson

I bought this several years back (2001, I think), but just picked it up again for a read. It describes the concept of emergence, that is, when given an aggregate, the capabilities (far) surpass the sum of the capabilities of its individual parts. For example, consider ant colonies, in which individual ants are making decisions in isolation based on an extremely limited capacity for analysis and thought. When viewed in the aggregate (colony), however, each ant appears to be contributing to an extremely coordinated, thoughtful, and strategic mass. The author here attempts to be clever on too many ocassions, and the applications to technology are a bit stretched (IMHO). However, it lead me to look deeper into the behavior of ant colonies, and as such was a good “gateway“ read.

Ant Colony Optimization
by Marco Dorigo, Thomas Sttzle

Read this now. This book focuses on algorithmic techniques for approximation of NP-hard/complete problems, in particular Ant Colony Optimization (ACO). Out of disorder, chaos, and localized decision making, the simulation of ant behavior to attack classic NP-hard algorithms causes fascinating new approaches to problem solving and new approximate solutions to emerge. This is one of the best reads in a while.

8/28/2004 11:32:40 AM (Pacific Daylight Time, UTC-07:00)  #   

 Monday, August 09, 2004

I'm in the process of reading the following books, all of which tickle me in a special way,

Algorithmics for Hard Problems: Introduction to Combinatorial Optimization, Randomization, Approximation, and Heuristics
by Juraj Hromkovic

Awesome read, covering various broad strategies to solving "hard" problems. Discusses deterministic, approximation, randomized, and heuristic approaches, at the same time providing realistic enough examples that the tradeoffs between each is made evident.

Eats, Shoots & Leaves: The Zero Tolerance Approach to Punctuation
by Lynne Truss

I'm still peeing myself. For punctuation nerds who are absolutely disgusted with the current state of English literary skills. This is a masterfully written, much appreciated break from my typical geekish read.

Free as in Freedom: Richard Stallman's Crusade for Free Software
by Sam Williams

I love historical accounts that spend entire chapters discussing PDP-10s and 11s. This book is all that and more, detailing the life one of the most eccentric and intelligent figures in the world of software. I've also read the following similar accounts, all of which I would highly recommend: The Cathedral and the Bazaar, Rebel Code, Just for Fun, The Art of UNIX Programming. Note: This book is available online for free... right here.

Game Physics
by David H. Eberly

This book is unfortunately primarily a refresher course in high school physics, perhaps university level, but there are a couple sections which make this one a keeper. I'd recommend it for reference, not something with which you'd want to curl up in front of the fireplace.

While I didn't read the following book cover to cover, I did read through about 50% of the material over the weekend.

Threat Modeling
by Frank Swiderski, Window Snyder

Written by a couple of my fellow Microsofties, this book details the threat modeling process in great detail. It's definitely a process book, and as such makes a few assumptions I would prefer to steer away from (e.g. lack of quantitative data showing why the investment in threat modeling is a Good Thing(tm)). That said, there is a lot of good material here.

So many books left to read, so little time.

8/9/2004 9:45:19 PM (Pacific Daylight Time, UTC-07:00)  #   

 Tuesday, June 08, 2004

Two great books are at the top of my reading stack at the moment,

Distributed Systems: Principles and Paradigms
by Andrew S. Tanenbaum, Maarten van Steen

Decent book thus far (I'm only a couple chapters in), although it feels dated. If I make it through, I'll post a detailed review about it.

and

ANSI Common Lisp
by Paul Graham

This is a re-read. Unfortunately I'm not able to work with Lisp as often as I'd like, and thus every once in a while I dust off the cobwebs. Each time I go back, I learn something new and am treated to a new perspective on everyday challenges. I want to get ahold and paw through a copy of Guy Steele's Common LISP: The Language, but as of yet have not had a chance.

6/8/2004 6:44:59 PM (Pacific Daylight Time, UTC-07:00)  #   

 

RSS 2.0

Me
 

Joe Send mail to the author(s) is an architect and developer on a systems incubation project at Microsoft.

Recent

Search

Browse

Disclaimer:
The content of this site are my own personal opinions and do not represent my employer's view in anyway.

© 2013, Joe Duffy