Showing posts with label book. Show all posts
Showing posts with label book. Show all posts

Monday, June 16, 2008

Option, Futures and Other Derivatives Book Review

Option, Futures and Other Derivatives is by far the most popular book in finance. You will find it in every finance company, on many desks.

It is a very good introduction for people not familiar with standard financial products. This kind of book is unavoidable to understand the basis. It goes also beyond with the chapters on pricing and hedging. These 2 chapters make one understand many other book. If one understands the Black and Scholze formula, one can easily approach many other pricing formula, as in a way, there are all similar in their approach.

Option, Futures and Other Derivatives Book Review

Option, Futures and Other Derivatives is by far the most popular book in finance. You will find it in every finance company, on many desks.

It is a very good introduction for people not familiar with standard financial products. This kind of book is unavoidable to understand the basis. It goes also beyond with the chapters on pricing and hedging. These 2 chapters make one understand many other book. If one understands the Black and Scholze formula, one can easily approach many other pricing formula, as in a way, there are all similar in their approach.

Structured Equity Derivatives Book Review

If one has to learn about equity derivatives, beside the classic Option, Futures and Other Derivatives from Hull, Structured Equity Derivatives by Harry M Kat is a must read.

His ideas are presented in a software developer friendly way, as his goal is to show how different equity derivatives products are behind the scenes, very similar.

I enjoyed the variety of exotic products presented and the very detailed way in which they are explained.

The book is filled up with graphs, which is a good thing. While browsing the book for the first time, I did not really grasp those graphs well. But after having read it, they do make sense and help visualize what's happening. With those graphs, volatility and other parameters don't look only like abstract variables in a formula.

Structured Equity Derivatives Book Review

If one has to learn about equity derivatives, beside the classic Option, Futures and Other Derivatives from Hull, Structured Equity Derivatives by Harry M Kat is a must read.

His ideas are presented in a software developer friendly way, as his goal is to show how different equity derivatives products are behind the scenes, very similar.

I enjoyed the variety of exotic products presented and the very detailed way in which they are explained.

The book is filled up with graphs, which is a good thing. While browsing the book for the first time, I did not really grasp those graphs well. But after having read it, they do make sense and help visualize what's happening. With those graphs, volatility and other parameters don't look only like abstract variables in a formula.

Wednesday, February 14, 2007

Java Concurrency In Practice Book Review

My reference book on Java concurrency is Doug Lea's Concurrent Programming in Java: Design Principles and Patterns. He is one of the authors of this new book, Java Concurrency In Practice. There is also Joshua Bloch, author of Effective Java, that many people love (but I am less a fan of it, even if I would recommend it to Java newbies), and author of Java Puzzlers, that I found more fun.

With such authors, I had relatively high expectations. I was surprised that there is not much material in common between Doug Lea's book and this one, which is a good thing. It's a different presentation, that focuses on different problems.

There is some very interesting material, I especially enjoyed chapter 16 on the Java Memory Model. There are not many  books with information on it. I did not know that initializing a final member in the constructor was providing thread safety for the accessor method of the corresponding field if there is no other modifying method, no synchronization needed. And not having the member declared as final was breaking the safety.

I also had not heard of Amdahl's law before. It seems quite intuitive, but then the example in the book about processing parallel tasks using a synchronized LinkedList (improvement up to 3 threads, no more later due to time spent on synchronization) shows that the reality is not that intuitive.

I enjoyed how the book is written, and how information is presented. There is for example their concept of publication and escape (in chapter 3) which tells you important things, like not starting a Thread in a constructor (and if you still want to do it they present a nice way to do it).

I think this book is a simpler read that Doug Lea original book, and probably a better introduction (that still goes very deep) to Java concurrency programming.

Java Concurrency In Practice Book Review

My reference book on Java concurrency is Doug Lea's Concurrent Programming in Java: Design Principles and Patterns. He is one of the authors of this new book, Java Concurrency In Practice. There is also Joshua Bloch, author of Effective Java, that many people love (but I am less a fan of it, even if I would recommend it to Java newbies), and author of Java Puzzlers, that I found more fun.

With such authors, I had relatively high expectations. I was surprised that there is not much material in common between Doug Lea's book and this one, which is a good thing. It's a different presentation, that focuses on different problems.

There is some very interesting material, I especially enjoyed chapter 16 on the Java Memory Model. There are not many  books with information on it. I did not know that initializing a final member in the constructor was providing thread safety for the accessor method of the corresponding field if there is no other modifying method, no synchronization needed. And not having the member declared as final was breaking the safety.

I also had not heard of Amdahl's law before. It seems quite intuitive, but then the example in the book about processing parallel tasks using a synchronized LinkedList (improvement up to 3 threads, no more later due to time spent on synchronization) shows that the reality is not that intuitive.

I enjoyed how the book is written, and how information is presented. There is for example their concept of publication and escape (in chapter 3) which tells you important things, like not starting a Thread in a constructor (and if you still want to do it they present a nice way to do it).

I think this book is a simpler read that Doug Lea original book, and probably a better introduction (that still goes very deep) to Java concurrency programming.

Monday, September 11, 2006

Good Software Books - 2006 version

Here is an update of the most interesting software books I found interesting. I already made such a list in 2005:

  • Object Oriented Software Construction, 2nd Ed, by Bertrand Meyer. This made me understand why OOP is important, what is important in OOP and why it is still relevant. It contains lots of important guidelines you can apply to better design programs. One famous quote is "Real systems have no top". Code Complete (Microsoft Press) covers some of the same ideas as Meyer's book, and some more pragmatic issues that arise in software projects ("measure twice, cut once"). I also liked the chapter on "table driven design".
  • Concurrent Programming in Java, Second Edition, by Doug Lea: there is all you need to know about programming in a multithreaded environment in it. The chapter on synchronization should be a must read for every Java developer.
  • Design Patterns by the GoF: simply the best presentation of most common design patterns. I have a glance on it once in a while.
  • Artificial Intelligence through Prolog, by Neil C. Rowe (Prentice-Hall): if you don't remember much about Prolog, it's a good book. It details how Prolog interpreters work.
  • File Systems Forensic Analysis, by Brian Carrier (Addison Wesley): everything you need to know about disks and file systems, every trick to recover lost data. To go more in depth into file systems theory, you can read the free Practical File System Design with the Be File System from D. Giampaolo, the creator of BeFS.
  • Mind Hacks (O'Reilly): you probably already bought that one. Not about software, but excellent.
  • Practical Issues in Database Management by Fabian Pascal (Addison Wesley): short but concise book on relational database theory. F Pascal is of CJ Date school of thoughts, "null are evil". You don't need to read it if you have read any other similar book (by CJ Date for example).
  • Inside The Java Virtual Machine, by Bill Venners (McGraw-Hill): there are other books on the same subject. While this book has some bad reviews, I found it an easy read, and it explain well enough for me all the inner details of Java. I found "Programming for the Java Virtual Machine" not better, and with some bad example of a Prolog language for the JVM (1 full chapter for this to present a way too simple thing to be of any use).
  • Programming Jabber, by O'Reilly: I have read it 2 years ago, I enjoyed how they made you go through building a Jabber server.
  • Lucene In Action: the only book about Lucene, some of the info is useful to understand how it is designed.
  • Hibernate In Action: if you have to use hibernate, this is the book to read. It presents different ways of using it.
  • some Javascript+DHTML(+CSS) book: useful if you have none. They often have good tricks to solve the usual problems. In the AJAX days, it becomes useful again. I find O'Reilly's "Javascript - The Definitive Guide" good to have an API reference (as ebook), and "Javascript and DHTML Cookbook" has the most useful recipes.
  • Lean Software Development by Poppendieck (Addison Wesley): easy to read, good presentation of software dev management problems and pragmatic solutions. My favorite on the subject. Another good one but very specific is "Requirements Management" (MS Press).
  • UML Distilled by M Fowler: always useful to have if you need to draw UML diagrams.

Good Software Books - 2006 version

Here is an update of the most interesting software books I found interesting. I already made such a list in 2005:

  • Object Oriented Software Construction, 2nd Ed, by Bertrand Meyer. This made me understand why OOP is important, what is important in OOP and why it is still relevant. It contains lots of important guidelines you can apply to better design programs. One famous quote is "Real systems have no top". Code Complete (Microsoft Press) covers some of the same ideas as Meyer's book, and some more pragmatic issues that arise in software projects ("measure twice, cut once"). I also liked the chapter on "table driven design".
  • Concurrent Programming in Java, Second Edition, by Doug Lea: there is all you need to know about programming in a multithreaded environment in it. The chapter on synchronization should be a must read for every Java developer.
  • Design Patterns by the GoF: simply the best presentation of most common design patterns. I have a glance on it once in a while.
  • Artificial Intelligence through Prolog, by Neil C. Rowe (Prentice-Hall): if you don't remember much about Prolog, it's a good book. It details how Prolog interpreters work.
  • File Systems Forensic Analysis, by Brian Carrier (Addison Wesley): everything you need to know about disks and file systems, every trick to recover lost data. To go more in depth into file systems theory, you can read the free Practical File System Design with the Be File System from D. Giampaolo, the creator of BeFS.
  • Mind Hacks (O'Reilly): you probably already bought that one. Not about software, but excellent.
  • Practical Issues in Database Management by Fabian Pascal (Addison Wesley): short but concise book on relational database theory. F Pascal is of CJ Date school of thoughts, "null are evil". You don't need to read it if you have read any other similar book (by CJ Date for example).
  • Inside The Java Virtual Machine, by Bill Venners (McGraw-Hill): there are other books on the same subject. While this book has some bad reviews, I found it an easy read, and it explain well enough for me all the inner details of Java. I found "Programming for the Java Virtual Machine" not better, and with some bad example of a Prolog language for the JVM (1 full chapter for this to present a way too simple thing to be of any use).
  • Programming Jabber, by O'Reilly: I have read it 2 years ago, I enjoyed how they made you go through building a Jabber server.
  • Lucene In Action: the only book about Lucene, some of the info is useful to understand how it is designed.
  • Hibernate In Action: if you have to use hibernate, this is the book to read. It presents different ways of using it.
  • some Javascript+DHTML(+CSS) book: useful if you have none. They often have good tricks to solve the usual problems. In the AJAX days, it becomes useful again. I find O'Reilly's "Javascript - The Definitive Guide" good to have an API reference (as ebook), and "Javascript and DHTML Cookbook" has the most useful recipes.
  • Lean Software Development by Poppendieck (Addison Wesley): easy to read, good presentation of software dev management problems and pragmatic solutions. My favorite on the subject. Another good one but very specific is "Requirements Management" (MS Press).
  • UML Distilled by M Fowler: always useful to have if you need to draw UML diagrams.

Wednesday, April 26, 2006

Algorithms in Java (Third Edition) Book Review

The book Algorithms in Java is huge, but unlike the usual huge books, the content is very interesting. It can be used as reference material, or as toilet book (to learn things while you're wasting time in the toilets).

You will learn simple things, like what is the "raison d'être" of linked lists. The author gives very good examples to illustrate his propositions. He explains through the sieve of erathostene and through Josephus problem the advantages of arrays or linked list.

You will learn step by step everything that is to be known in algorithms. Recursion, divide and conquer, Tree knowledge will be useful for the later sorting and searching chapters.

The chapter on Hashing will make you understand very clearly why the source of String.hashCode() is
public int hashCode() {
  int h = hash;
  if (h == 0) {
     int off = offset;
     char val[] = value;
     int len = count;
     for (int i = 0; i <  len; i++) h = 31*h + val[off ++];
     hash = h;
  }
  return h;
} 

There might be too much info on different types of sorting algorithms and the book becomes there more a reference book than anything else. But overall, you will learn plenty with this book. It is very well written, complete, and will refresh one's memory. I find it useful to read back things I learnt after a few years as I then have a very different view of the subject, and I pay closer attention to some details I completely missed the first time (sometimes).
Tags:

Algorithms in Java (Third Edition) Book Review

The book Algorithms in Java is huge, but unlike the usual huge books, the content is very interesting. It can be used as reference material, or as toilet book (to learn things while you're wasting time in the toilets).

You will learn simple things, like what is the "raison d'être" of linked lists. The author gives very good examples to illustrate his propositions. He explains through the sieve of erathostene and through Josephus problem the advantages of arrays or linked list.

You will learn step by step everything that is to be known in algorithms. Recursion, divide and conquer, Tree knowledge will be useful for the later sorting and searching chapters.

The chapter on Hashing will make you understand very clearly why the source of String.hashCode() is
public int hashCode() {
  int h = hash;
  if (h == 0) {
     int off = offset;
     char val[] = value;
     int len = count;
     for (int i = 0; i <  len; i++) h = 31*h + val[off ++];
     hash = h;
  }
  return h;
} 

There might be too much info on different types of sorting algorithms and the book becomes there more a reference book than anything else. But overall, you will learn plenty with this book. It is very well written, complete, and will refresh one's memory. I find it useful to read back things I learnt after a few years as I then have a very different view of the subject, and I pay closer attention to some details I completely missed the first time (sometimes).
Tags:

Friday, March 31, 2006

SOA and B. Meyer

While rereading parts of "Object Oriented Software Construction" from B. Meyer, I still find valuable information I overlooked. In the part about functional decomposition where he argues pro and cons of top-down / bottom-up approaches, he has the intuition of the current SOA hype. By showing that

Real systems have no top.

He suggests that the only way to build complex software is through a service oriented architecture. Of course SOA is a very old concept. Meyer example of Operating Systems is a fine one.

Another interesting remark is his object motto to design an object oriented system:

Ask not first what the system does:
Ask what it does it to!



SOA and B. Meyer

While rereading parts of "Object Oriented Software Construction" from B. Meyer, I still find valuable information I overlooked. In the part about functional decomposition where he argues pro and cons of top-down / bottom-up approaches, he has the intuition of the current SOA hype. By showing that

Real systems have no top.

He suggests that the only way to build complex software is through a service oriented architecture. Of course SOA is a very old concept. Meyer example of Operating Systems is a fine one.

Another interesting remark is his object motto to design an object oriented system:

Ask not first what the system does:
Ask what it does it to!



Wednesday, March 15, 2006

Non Fiction Books (Mostly Software Programming) Before 2003

A page with useful reference for me as I don't own each one of these books. It can provides you a very short review non-commercial biased.

2003

  • Programming Jakarta Struts (O'Reilly - Chuck Cavaness) much better than Manning book. Explains struts very clearly with a more interesting example. Not enough on how to design your application for use with the evil ActionForm. Almost nothing on Struts 1.1 features. Nothing on common problems encountered while building web applications, or even about on how to design them using struts.
  • Struts In Action (Manning) not much more about struts than what's available on struts website. Their example throughout the book is the same login example. Struts 1.1 features, esp DynaForm are mentioned but not really presented. On the positive side, there is a very useful Validator reference at the end and a too short mention of different strategies for the ActionForm.
  • Contributing to Eclipse (Kent Beck - Erich Gamma) funny little drawings inside to make some good points.
  • The Design Patterns Java Companion(Adison Wesley - James W. Cooper) A must read for clean swing development. Essencial design patterns inside. Nice tip about doing deep cloning in java.
  • Java Threads (O'Reilly - Scott Oaks and Henry Wong) very clear presentation of multithreading programming in Java. Explain how to write your own thread scheduler.
  • J2EE expert one on one (Wrox) pragmatic view of J2EE. Many interesting comments like why avoiding stateful session bean if you are a little bit concerned with performance. Some strange benchmarks at the end of the book showing velocity templates being 10x faster than JSPs.
  • Java Distributed Computing(O'Reilly - Jim Farley) very good to learn more about RMI because it starts with a custom distributed object system.
  • Java Enterprise in a Nutshell (O' Reilly - David Flanagan, Jim Farley, William Crawford, and Kris Magnusson) good complementary book, provides a good basis. I liked how RMI use in EJBs was detailed, Servlet chapter is also excellent (but don't look for design tips/help in it - it is a book on the BASICS).
  • Enterprise Javabeans, second edition (O'Reilly - Richard Monson-Haefel) second lecture made me better appreciate that book, contains a lot of fundamental concepts to know. Very detailed on transaction management. However there is nothing I remember in it about EJB restrictions. In short incomplete but not bad.
  • Structure And Interpretation Of Computer Programs (MIT Press)

2002

  • A New Kind Of Science (S. Wolfram)
  • Programming C# (O'Reilly) contains good and detailed information, is a nice lookup book when we want some information on a particular C# subject, and contains a nice example about programming Windows Forms without Visual Studio.
  • C# Language Reference (Microsoft, june 2000) ok to lookup information but O'Reilly is usually better.
  • C# .NET Web Developer's Guide (Syngress) useful, good data on the CLI and on the C# compiled format. It is a nice book to learn C#.
  • C#, Your visual blueprint for building .NET application ( ) not good, very Visual Studio centric.Filling up pages with obvious data.
  • Thinking in Pattern (Bruce Eickel) essencial oo design patterns
  • The Zope Book ( ) good book to familiarize yourself with Zope
  • Fractal Geometry of Nature (B. Mandelbrot) the spirit of Fractals, maybe good for people that already know a lot about fractals, otherwise kind of difficult to read sometimes because it does not detail ideas that much focusing more on the spirit.
  • Complete Java 2 Certification (SYBEX) do you know that a byte is signed and a char is 16 bits?
  • Chaos and Fractals (German authors) makes fractals accessible to everyone including non graduates, while still being ambitious (Fractal dimension details, Julia set details...). It is based on relatively classic mathematical approachs.

2001

  • Java Security (O'Reilly) repetitive but very good overview of overall Java Security. In September 2001, it was the only book with a chapter on JAAS.
  • Learning Python (O'Reilly) ok to learn python.
  • Bluetooth demystified (N.J. Muller) first chapters are interesting to get an overview of bluetooth and its market potential. Then it describes the telecom technology behind bluetooth from scratch. A must read for people who have to program embedded bluetooth devices. It reminded me a little bit the GSM book. I would have liked a detailed technology comparison with its competitors (not only the spec comparison).
  • J2EE ( ) just another rewriting of Sun specs...
  • Programming Ruby, the pragmatic programmer's guide ( ) Excellent overview of Ruby but a little bit too much pro-Ruby. The first book on Ruby. In 2002, Ruby is now a bad choice of programming language because Python does everything as simply as Ruby does and has a much larger community.
  • Python Essencial Reference (New Riders) good because the python hypertext documentation has a really bad index and is not well organized.
  • Programming Python (O'Reilly) that book sucks.
  • Genetic Programming III, Darwinian Invention and problem solving (Koza) very good approach, nice comparison with evolutionnary theory + good introduction to LISP. First chapters must be read, then repetitive.
  • How to solve it: Modern Heuristics (Springer) AI techniques overview. Not very useful because it describes the obvious with a lot of details and the difficult in a few words. Furthermore some very stupid comments like p358 "some have suggested (e.g. Walter Freeman) that digital implementation of neural network may fail to emulate the biological reality because real brain are chaotic analog devices. Digital computers can only approximate the behaviour of analog devices to a given degree of precision. This precision may not be sufficient to capture the chaotic dynamics that exist in the real brain". 3 sentences to express a not-so-interesting remark, none of them add any details. Koza is much more interesting.
  • Professional JMS (Wrox) good overview of JMS, everything I needed to know about it.
  • Professional J2EE (Wrox) really good on custom JSP tags. Some interesting design issues. Explicitely mention the restrictions of J2EE (even if he does not explicitely tell you how to avoid them). Unfortunaly their examples are not always very good and sometimes just too long (especially the XML/JSP part is crap).
  • Applied Cryptography (B. Schneier) The basis of cryptography, very detailed. Could be used as a reference manual.
  • Fast Food Nation (E. Schlosser) 1000 reasons not to eat cheap food. A social part and a chemical part, but mainly social. I found interesting to read "Americans with German ancestors far outnumber those with English ancestors", (of course Schlosser is from German origin). A shame he did not specify any reference probing this fact.
  • The Codebook ( ) history of cryptography describing the diverse techniques to encrypt or crack.

2000

  • Web security ( ) some interesting parts but a lot of nothing.
  • Database Nation ( ) why worry about your private data? Authentification problems on social life.
  • CCTV( ) first chapters interesting on the history of prisons and criminals. Then a lot of repetitive data on CCTV in England. CCTV means Closed Circuit TV i.e. surveillance systems for public areas.
  • In Code(S. Flannery) nice introduction to cryptography and mathematics. At 16, she proposed a new authentification scheme quicker than RSA. My first slightly technical purchased book for my pleasure.
  • Java Server Pages, chapter 8 a must read for clean servlet/jsp programming: a nice presentation of MVC adapted to a web client through the command pattern. The rest of the book is much less interesting and much more entry-level. Professional JSP from Wrox is probably a much better book now.

1999

  • GSM (don't remember the title but it's red and from the ENST) everything about GSM technology, very well described and explained.
  • Lamps ( ) a lot of books on light/optics/lamp technology.

1998

  • Thinking in Java (Bruce Eickel) free and good to learn Java. Good chapters on Swing programmation. Swing was new at this time.

1997

  • Java in a Nutshell (O'Reilly) my first Java book. Was ok to learn java but not that great. JDK API documentation should be removed from the book and replaced by a chapter on the Javadoc system.

Tags: ,

Non Fiction Books (Mostly Software Programming) Before 2003

A page with useful reference for me as I don't own each one of these books. It can provides you a very short review non-commercial biased.

2003

  • Programming Jakarta Struts (O'Reilly - Chuck Cavaness) much better than Manning book. Explains struts very clearly with a more interesting example. Not enough on how to design your application for use with the evil ActionForm. Almost nothing on Struts 1.1 features. Nothing on common problems encountered while building web applications, or even about on how to design them using struts.
  • Struts In Action (Manning) not much more about struts than what's available on struts website. Their example throughout the book is the same login example. Struts 1.1 features, esp DynaForm are mentioned but not really presented. On the positive side, there is a very useful Validator reference at the end and a too short mention of different strategies for the ActionForm.
  • Contributing to Eclipse (Kent Beck - Erich Gamma) funny little drawings inside to make some good points.
  • The Design Patterns Java Companion(Adison Wesley - James W. Cooper) A must read for clean swing development. Essencial design patterns inside. Nice tip about doing deep cloning in java.
  • Java Threads (O'Reilly - Scott Oaks and Henry Wong) very clear presentation of multithreading programming in Java. Explain how to write your own thread scheduler.
  • J2EE expert one on one (Wrox) pragmatic view of J2EE. Many interesting comments like why avoiding stateful session bean if you are a little bit concerned with performance. Some strange benchmarks at the end of the book showing velocity templates being 10x faster than JSPs.
  • Java Distributed Computing(O'Reilly - Jim Farley) very good to learn more about RMI because it starts with a custom distributed object system.
  • Java Enterprise in a Nutshell (O' Reilly - David Flanagan, Jim Farley, William Crawford, and Kris Magnusson) good complementary book, provides a good basis. I liked how RMI use in EJBs was detailed, Servlet chapter is also excellent (but don't look for design tips/help in it - it is a book on the BASICS).
  • Enterprise Javabeans, second edition (O'Reilly - Richard Monson-Haefel) second lecture made me better appreciate that book, contains a lot of fundamental concepts to know. Very detailed on transaction management. However there is nothing I remember in it about EJB restrictions. In short incomplete but not bad.
  • Structure And Interpretation Of Computer Programs (MIT Press)

2002

  • A New Kind Of Science (S. Wolfram)
  • Programming C# (O'Reilly) contains good and detailed information, is a nice lookup book when we want some information on a particular C# subject, and contains a nice example about programming Windows Forms without Visual Studio.
  • C# Language Reference (Microsoft, june 2000) ok to lookup information but O'Reilly is usually better.
  • C# .NET Web Developer's Guide (Syngress) useful, good data on the CLI and on the C# compiled format. It is a nice book to learn C#.
  • C#, Your visual blueprint for building .NET application ( ) not good, very Visual Studio centric.Filling up pages with obvious data.
  • Thinking in Pattern (Bruce Eickel) essencial oo design patterns
  • The Zope Book ( ) good book to familiarize yourself with Zope
  • Fractal Geometry of Nature (B. Mandelbrot) the spirit of Fractals, maybe good for people that already know a lot about fractals, otherwise kind of difficult to read sometimes because it does not detail ideas that much focusing more on the spirit.
  • Complete Java 2 Certification (SYBEX) do you know that a byte is signed and a char is 16 bits?
  • Chaos and Fractals (German authors) makes fractals accessible to everyone including non graduates, while still being ambitious (Fractal dimension details, Julia set details...). It is based on relatively classic mathematical approachs.

2001

  • Java Security (O'Reilly) repetitive but very good overview of overall Java Security. In September 2001, it was the only book with a chapter on JAAS.
  • Learning Python (O'Reilly) ok to learn python.
  • Bluetooth demystified (N.J. Muller) first chapters are interesting to get an overview of bluetooth and its market potential. Then it describes the telecom technology behind bluetooth from scratch. A must read for people who have to program embedded bluetooth devices. It reminded me a little bit the GSM book. I would have liked a detailed technology comparison with its competitors (not only the spec comparison).
  • J2EE ( ) just another rewriting of Sun specs...
  • Programming Ruby, the pragmatic programmer's guide ( ) Excellent overview of Ruby but a little bit too much pro-Ruby. The first book on Ruby. In 2002, Ruby is now a bad choice of programming language because Python does everything as simply as Ruby does and has a much larger community.
  • Python Essencial Reference (New Riders) good because the python hypertext documentation has a really bad index and is not well organized.
  • Programming Python (O'Reilly) that book sucks.
  • Genetic Programming III, Darwinian Invention and problem solving (Koza) very good approach, nice comparison with evolutionnary theory + good introduction to LISP. First chapters must be read, then repetitive.
  • How to solve it: Modern Heuristics (Springer) AI techniques overview. Not very useful because it describes the obvious with a lot of details and the difficult in a few words. Furthermore some very stupid comments like p358 "some have suggested (e.g. Walter Freeman) that digital implementation of neural network may fail to emulate the biological reality because real brain are chaotic analog devices. Digital computers can only approximate the behaviour of analog devices to a given degree of precision. This precision may not be sufficient to capture the chaotic dynamics that exist in the real brain". 3 sentences to express a not-so-interesting remark, none of them add any details. Koza is much more interesting.
  • Professional JMS (Wrox) good overview of JMS, everything I needed to know about it.
  • Professional J2EE (Wrox) really good on custom JSP tags. Some interesting design issues. Explicitely mention the restrictions of J2EE (even if he does not explicitely tell you how to avoid them). Unfortunaly their examples are not always very good and sometimes just too long (especially the XML/JSP part is crap).
  • Applied Cryptography (B. Schneier) The basis of cryptography, very detailed. Could be used as a reference manual.
  • Fast Food Nation (E. Schlosser) 1000 reasons not to eat cheap food. A social part and a chemical part, but mainly social. I found interesting to read "Americans with German ancestors far outnumber those with English ancestors", (of course Schlosser is from German origin). A shame he did not specify any reference probing this fact.
  • The Codebook ( ) history of cryptography describing the diverse techniques to encrypt or crack.

2000

  • Web security ( ) some interesting parts but a lot of nothing.
  • Database Nation ( ) why worry about your private data? Authentification problems on social life.
  • CCTV( ) first chapters interesting on the history of prisons and criminals. Then a lot of repetitive data on CCTV in England. CCTV means Closed Circuit TV i.e. surveillance systems for public areas.
  • In Code(S. Flannery) nice introduction to cryptography and mathematics. At 16, she proposed a new authentification scheme quicker than RSA. My first slightly technical purchased book for my pleasure.
  • Java Server Pages, chapter 8 a must read for clean servlet/jsp programming: a nice presentation of MVC adapted to a web client through the command pattern. The rest of the book is much less interesting and much more entry-level. Professional JSP from Wrox is probably a much better book now.

1999

  • GSM (don't remember the title but it's red and from the ENST) everything about GSM technology, very well described and explained.
  • Lamps ( ) a lot of books on light/optics/lamp technology.

1998

  • Thinking in Java (Bruce Eickel) free and good to learn Java. Good chapters on Swing programmation. Swing was new at this time.

1997

  • Java in a Nutshell (O'Reilly) my first Java book. Was ok to learn java but not that great. JDK API documentation should be removed from the book and replaced by a chapter on the Javadoc system.

Tags: ,

Tuesday, December 27, 2005

Professional Portal Development Book Review

I just finished reading Professional Portal Development With Open Source Tools (Wiley).

The Good:


I enjoyed Chapter 1, it gives a good presentation of Portlets for someone who does not know much about it. It is a chapter one can use as a reference to verify some specific details of how Portlets are working. It is a bit similar to JSR 168 specifications, but I found it more detailed and well written.

Beside Chapter 1, there are here and there useful information:
  • A presentation of Model 1 and 2(X) Architectures in relation with Portals. It could have been more detailed.
  • Example use of some Design Patterns in a Portal although the example use is really just one sentence and some Patterns uses are too obvious and not related to Portal (Singleton, Template Method).
  • Web Services for Remote Portlets.

The Bad And Ugly:

I was disappointed by the remaining of the book. While it is good to mention Lucene, Apache James, OJB, Jakarta Slide, as those can be useful in Portal development, the book does not provide any useful information on those products. It would be difficult to put all that in just one book. The author merely gives kind of hello world examples for each technology, which I find quite useless.

A quick presentation of software methodologies is again quite useless, and not what we expect from that kind of book. If I want to learn about software methodologies, I buy a book about it, I don't buy a Portal Development book.

The rest of the book really looks like a list of disconnected subjects, the important ones are not given more attention to the non-relevant ones. Portal Navigation is a problem you will encounter in any Portal development, but you won't find much in the book except a short example. The author also writes with way too many words for the content about CVS, Subversion, JUnit, AntHill, Scarab. And then he goes on about Java Web Start, woohoo! Yes, it almost reads as well as a resume full of keywords.

Summary:

Don't buy this book.
Tags:

Professional Portal Development Book Review

I just finished reading Professional Portal Development With Open Source Tools (Wiley).

The Good:


I enjoyed Chapter 1, it gives a good presentation of Portlets for someone who does not know much about it. It is a chapter one can use as a reference to verify some specific details of how Portlets are working. It is a bit similar to JSR 168 specifications, but I found it more detailed and well written.

Beside Chapter 1, there are here and there useful information:
  • A presentation of Model 1 and 2(X) Architectures in relation with Portals. It could have been more detailed.
  • Example use of some Design Patterns in a Portal although the example use is really just one sentence and some Patterns uses are too obvious and not related to Portal (Singleton, Template Method).
  • Web Services for Remote Portlets.

The Bad And Ugly:

I was disappointed by the remaining of the book. While it is good to mention Lucene, Apache James, OJB, Jakarta Slide, as those can be useful in Portal development, the book does not provide any useful information on those products. It would be difficult to put all that in just one book. The author merely gives kind of hello world examples for each technology, which I find quite useless.

A quick presentation of software methodologies is again quite useless, and not what we expect from that kind of book. If I want to learn about software methodologies, I buy a book about it, I don't buy a Portal Development book.

The rest of the book really looks like a list of disconnected subjects, the important ones are not given more attention to the non-relevant ones. Portal Navigation is a problem you will encounter in any Portal development, but you won't find much in the book except a short example. The author also writes with way too many words for the content about CVS, Subversion, JUnit, AntHill, Scarab. And then he goes on about Java Web Start, woohoo! Yes, it almost reads as well as a resume full of keywords.

Summary:

Don't buy this book.
Tags:

Thursday, November 17, 2005

Good Software Books

A friend asked me for a list, here is it. I found those books the most interesting ones among those I have read about software in the past year or two:
  • Artificial Intelligence through Prolog, by Neil C. Rowe (Prentice-Hall): if you don't remember much about Prolog, it's a good book. It details how Prolog interpreters work.
  • File Systems Forensic Analysis, by Brian Carrier (Addison Wesley): everything you need to know about disks and file systems, every trick to recover lost data. To go more in depth into file systems theory, you can read the free Practical File System Design with the Be File System from D. Giampaolo, the creator of BeFS.
  • Mind Hacks (O'Reilly): you probably already bought that one. Not about software, but excellent.
  • Practical Issues in Database Management by Fabian Pascal (Addison Wesley): short but concise book on relational database theory. F Pascal is of CJ Date school of thoughts, "null are evil". You don't need to read it if you have read any other similar book (by CJ Date for example).
  • Inside The Java Virtual Machine, by Bill Venners (McGraw-Hill): there are other books on the same subject. While this book has some bad reviews, I found it an easy read, and it explain well enough for me all the inner details of Java. I found "Programming for the Java Virtual Machine" not better, and with some bad example of a Prolog language for the JVM (1 full chapter for this to present a way too simple thing to be of any use).
  • Programming Jabber, by O'Reilly: I have read it 2 years ago, I enjoyed how they made you go through building a Jabber server.
  • Lucene In Action: the only book about Lucene, some of the info is useful to understand how it is designed.
  • Hibernate In Action: if you have to use hibernate, this is the book to read. It presents different ways of using it.
  • some Javascript+DHTML(+CSS) book: useful if you have none. They often have good tricks to solve the usual problems. In the AJAX days, it becomes useful again. I find O'Reilly's "Javascript - The Definitive Guide" good to have an API reference (as ebook), and "Javascript and DHTML Cookbook" has the most useful recipes.
  • Lean Software Development by Poppendieck (Addison Wesley): easy to read, good presentation of software dev management problems and pragmatic solutions. My favorite on the subject. Another good one but very specific is "Requirements Management" (MS Press).
  • UML Distilled by M Fowler: always useful to have if you need to draw UML diagrams.

Good luck!
Tags:

Good Software Books

A friend asked me for a list, here is it. I found those books the most interesting ones among those I have read about software in the past year or two:
  • Artificial Intelligence through Prolog, by Neil C. Rowe (Prentice-Hall): if you don't remember much about Prolog, it's a good book. It details how Prolog interpreters work.
  • File Systems Forensic Analysis, by Brian Carrier (Addison Wesley): everything you need to know about disks and file systems, every trick to recover lost data. To go more in depth into file systems theory, you can read the free Practical File System Design with the Be File System from D. Giampaolo, the creator of BeFS.
  • Mind Hacks (O'Reilly): you probably already bought that one. Not about software, but excellent.
  • Practical Issues in Database Management by Fabian Pascal (Addison Wesley): short but concise book on relational database theory. F Pascal is of CJ Date school of thoughts, "null are evil". You don't need to read it if you have read any other similar book (by CJ Date for example).
  • Inside The Java Virtual Machine, by Bill Venners (McGraw-Hill): there are other books on the same subject. While this book has some bad reviews, I found it an easy read, and it explain well enough for me all the inner details of Java. I found "Programming for the Java Virtual Machine" not better, and with some bad example of a Prolog language for the JVM (1 full chapter for this to present a way too simple thing to be of any use).
  • Programming Jabber, by O'Reilly: I have read it 2 years ago, I enjoyed how they made you go through building a Jabber server.
  • Lucene In Action: the only book about Lucene, some of the info is useful to understand how it is designed.
  • Hibernate In Action: if you have to use hibernate, this is the book to read. It presents different ways of using it.
  • some Javascript+DHTML(+CSS) book: useful if you have none. They often have good tricks to solve the usual problems. In the AJAX days, it becomes useful again. I find O'Reilly's "Javascript - The Definitive Guide" good to have an API reference (as ebook), and "Javascript and DHTML Cookbook" has the most useful recipes.
  • Lean Software Development by Poppendieck (Addison Wesley): easy to read, good presentation of software dev management problems and pragmatic solutions. My favorite on the subject. Another good one but very specific is "Requirements Management" (MS Press).
  • UML Distilled by M Fowler: always useful to have if you need to draw UML diagrams.

Good luck!
Tags:

Monday, November 07, 2005

7 Years Later: Still EJBs

In 1998, a student of my school had a project with Sun about EJBs. This was the beginning of EJBs, they were not public, and there was no J2EE. At that time he found it utterly complicated, and had difficulties to understand why they made it so complicated.

In 2000, I worked for a company who had built in-house most components of a today J2EE application server. For example, they had their own unified messaging system, on the JSP side, they were already using custom tags, etc.. Their problem is that they took lots of time to develop in-house, all what later became standard, and almost freely available.

Today, 7 years later, the big talk, new Java products, be it Spring, or JBoss Seam, are still all about the same ideas as in the first J2EE. Spring has the freedom to include whatever technology, but in the end, their scope closely matches J2EE scope. Service Oriented Architecture (SOA), the current buzzword, will come out relatively naturally with J2EE, session EJBs being natural candidate to expose functionalities to the outer world. JBoss (or Geronimo) architecture is fully SOA: a small kernel managing services, that are exposed for other to use.

To learn about EJBs, I still find Enterprise JavaBeans by Richard Monson-Haefel, the best book. The chapter (in the 2nd Edition of the book, not in the 4th unfortunately) where he rolls his own distributed objects system is for me a testimony on how well he wants you to understand what's behind EJBs. And if you want to better understand what's behind RMI, Java Distributed Computing (O'Reilly) has a chapter where the author rolls his own RMI.

To conclude, Sun was really clever in defining J2EE scope and branding several Java technologies as J2EE (despite the awful version naming). While the ideas were very good, the developer's life was forgotten. It was too much a pain in the a** and not flexible enough (especially the ORM side). JBoss gets it right, what people need is a way to use pieces of J2EE, without imposing too much unnecessary hurdle on development.

Tags: , , ,

7 Years Later: Still EJBs

In 1998, a student of my school had a project with Sun about EJBs. This was the beginning of EJBs, they were not public, and there was no J2EE. At that time he found it utterly complicated, and had difficulties to understand why they made it so complicated.

In 2000, I worked for a company who had built in-house most components of a today J2EE application server. For example, they had their own unified messaging system, on the JSP side, they were already using custom tags, etc.. Their problem is that they took lots of time to develop in-house, all what later became standard, and almost freely available.

Today, 7 years later, the big talk, new Java products, be it Spring, or JBoss Seam, are still all about the same ideas as in the first J2EE. Spring has the freedom to include whatever technology, but in the end, their scope closely matches J2EE scope. Service Oriented Architecture (SOA), the current buzzword, will come out relatively naturally with J2EE, session EJBs being natural candidate to expose functionalities to the outer world. JBoss (or Geronimo) architecture is fully SOA: a small kernel managing services, that are exposed for other to use.

To learn about EJBs, I still find Enterprise JavaBeans by Richard Monson-Haefel, the best book. The chapter (in the 2nd Edition of the book, not in the 4th unfortunately) where he rolls his own distributed objects system is for me a testimony on how well he wants you to understand what's behind EJBs. And if you want to better understand what's behind RMI, Java Distributed Computing (O'Reilly) has a chapter where the author rolls his own RMI.

To conclude, Sun was really clever in defining J2EE scope and branding several Java technologies as J2EE (despite the awful version naming). While the ideas were very good, the developer's life was forgotten. It was too much a pain in the a** and not flexible enough (especially the ORM side). JBoss gets it right, what people need is a way to use pieces of J2EE, without imposing too much unnecessary hurdle on development.

Tags: , , ,