Being a fair programmer may not always be enough to be a fair web programmer. Web programming has some peculiarities on its own. Defining a sound architecture for a web site is all but a straightforward task. This may explain why the software I wrote for this blog has grown a bit out of control O:-) (and, put it in this way, allows my ego to be safe).That’s why I looked for a book to improve my PHP web programming and found “PHP in Action”.
The book is packed with pleasant surprises. First of all it is a darn good book on web programming. Author spends a good time in explaining scenarios and examining programming patterns in easy-to-complex order able to solve the related problems.
But the book is a really good book on design in general. Several patterns are described in a hands-on, no-nonsense approach. More are introduced when dealing with specific aspects of web programming. A brief introduction to object oriented programming is included as well.
I found very valuable the presentation on Unit Test and the arguments for Test Driven Design, so much that I promptly searched a unit test library suitable for C and C++, so that I could use the same approach on my daily job.
If you are interested in PHP programming for Web I highly recommend this book.
The Last Hero
This is the first illustrated Terry Pratchett’s novel that I read. According to the legend, the first Hero stole the fire from gods. Now the Silver Horde – a bunch of elderly, but nonetheless lethal, heroes – is committed to bring back the fire to gods with interests – the Discworld equivalent of an atomic bomb. Unfortunately the detonation on the god citadel would cause the dispersion of all the magic bringing Discworld to death.
All the discworld nations ask Ank-Morpork to save the world. So the patrician assigns this mission to Captain Carrot, Rincewind the Wizard and the inventor Leonard of Quirm.
I found Rincewind and Leonard very fit in their part, while I had more surprise with the parts played by Carrot and by the Patrician. I can’t imagine capt Carrot joining the terror hymn that goes like “Aaaaaarrrrrggggghhhhh”. Carrot character has always given the impression of blind faith in the system. Thus he should have a wonderful faith in what the system has produced to save the world. The patrician is a fine connoisseur of human minds, I feel uneasy when he fails to understand Ponder Stibbons. Also very far of the image I have of this character that he propose so plainly to kill the Librarian to save the mission. The patrician is subtle, manipulating, not plain, nor direct. And the story, at a given point, cites a B plan, that is very Patrician, but the topic is not evolved… it seems more of a device to talk briefly about the attempt of ecumenism on Discworld. Also Death, who usually is very attentive to the fate of Discworld was a bit lacking, he just takes a look at the hourglass of the giant A’Tuine (the turtle that floats in the space void carrying four elephants that, in turn, carry the Discworld.
So… this is not one of the best book by Terry Pratchett – it is better than Erik, but worse of the other books. Nonetheless the drawings are gorgeous and the story is entertaining.
Slack
I hate wasting time. If you have time don’t wait for (more) time, that’s one of my favorite savings.When I started working I had a small commute by car and some time got wasted waiting for the traffic light to become green. So I started reading books in those waits.
With my MS-Windows becoming slower and slower at startup, I decided to spend the waiting time reading books. At work I started a copy of “Slack” by Tom De Marco. Being a book on efficiency I found fitting to read it in recycled time.
If you work in software development (or if you are a “white collar” at large) you ought know who Tom De Marco is. Or, at least, you should have heard about the book he wrote with Timothy Lister – Peopleware. This is one of the most referenced book, almost every book on project management written in recent years quotes Peopleware.
Back to Slack, this is a book intended to be read in a short time to convey good an bad practice about efficiency, innovation and risk taking in today’s organizations.
The author states about an hour and half as reading time, I guess it is somewhat more even if you read from page 1 to the end at the same time (and not scattered over a couple of month of PC boots), nonetheless the thought-provoking stuff is very dense. Chapter are short and almost everyone made me think.
It is possible I will write a resume of it in the future, but I strongly encourage you to read by yourself.
Tom hacks through myths trying to grasp what is needed by an organization to survive in times of change and crisis. First myth to fall is the one of total efficiency. Total efficiency means total rigidity. An organization that maximizes efficiency cannot withstand change because lacks of the buffer and the spaces to react to change and adapt.
Then he digs through the (wrong) assumptions about making the organization more productive – pressure, competition, fear and so on.
Eventually he bashes the Management By Objects and illustrates what really means to deal with risk.
For example planning should be an estimation and as a such should offer a range defined by: cannot complete before X and surely completed after Z, with a best estimation at Y, with X <= Y <= Z. Now that’s a planning, that’s quite different by setting a goal. From my experience, someone defines a planning, someone else carves it in stone and says that’s the goal. This way of operation ignores the risk, ignores that an estimation is just an estimation, not a commitment, and it is just a sure way to have a delay on the completion. In fact, even if the most likely date (Y in the example above) is taken, this is usually achievable only with a probability of 33%.
De Marco also marks “Management by Objectives” (MBO) as “don’t”. I already read about criticisms at MBO, but more about the bonus system rather than objectives by themselves. De Marco states that it is hard, if not impossible, that the defined objectives for employees lead the organization toward company objectives. Also in a time of changes it is hard to hit an objective even if the actions taken are excellent for the company.
I found this particular opinion a little forced on software development. I think that an objective and bonus scheme over the course of a project, if properly done, could be helpful. Maybe MBO is just crap if applied to vending or other areas.
I liked the book a lot and I think it is not just for managers (regardless of their level). The more widespread the ideas here contained the better the life of fellow programmers.
The Ultimate Guide to Videogame Writing and Design
Video gaming is for sure one of the reasons I got so addicted in computer programming. Being forced out of the videogame industry in 2004 had not been an happy experience at all and I am still trying to make sense out of it. But life goes on and if I am not really capable of “letting go” that part of my life, I am gardening the (possibly false) hope of making some games in my spare time.I am just a programmer and I know my game design skills will never rival with even to the scantest game designer. That’s why I bought and read this book. Not with the intent of becoming a game designer, rather with the desire of filling some of the gap and better understand the techniques and the mechanics of their work.
The book is easy to read and concepts are easily grasped. I found some little inspiring pearls. The first is the introduction itself. Authors claim that in an ideal world they would have suspended their work for at least one year in order to properly write the book. Actually this is impossible, as is impossible to do with much of the work they do – multiple projects are developed in parallel and the successful worker has to deal with this rather than complaining.
The first drawback is, IMO, a direct consequence of this – the book is not very well organized. I found that some chapters are out of order and oftentimes an overall picture is missing. It is not too bad, you may argue that is just “creative” at work.
Another interesting concept is that writing a game (o a show, a movie) is not “art” but “craft”. I.e. “art” is about inspiration and cannot be relied on for day-to-day work. “Craft” is something that gets thing done, in the best way, even when your muse is on vacation.
The book propose a good number of exercises. I started with the intention of doing them all, but some of them are too time consuming to be done on holiday, with an inviting sea in front of you (and your children yelling around).
The other big drawback is that this book is much more about “writing” than “designing”. The distinction may be thin, but “writing” pertains to the story, while “designing” pertains to the mechanics of the game. Most of (if not all) the problems are seen from the story point of view. Therefore characters are examines and created starting from their story, their internal struggle, their relationship, i.e. everything that is story, rather than from “powers” and which “actions” they perform.
This is not bad per se, it is just that the title may result a little misleading.
I have mixed feeling about suggestions given in the book about the job at large. At one extreme are good advises about how to deal with conflict in the team or with other project stakeholders (even if not everything is applicable in working context other US). At the other end are obvious suggestion (don’t live over your possibilities and subscribe a pension fund).
The book proposes a set of templates for the definition of characters, parties and world. The approach is good and likely the tables contain the right set of questions. In fact I found myself to develop an unexpected and quite awesome background for the videogame I am working at.
To sum it up, read this book if you are interested at story in videogame.
On The Edge
As far as it may seem odd nowadays, there was a time when BASIC was The Language. Computers from different vendors were 100% not-compatible and resources were so constrained that your average mobile phone could be considered a supercomputer when compared to. It was the Home Computer Era. Back then, it was the first half of the 80s, home computers started to spread around even in Italy. I was fourteen and started programming (and playing) with my ZX Spectrum 48k.
We hadn’t Windows or Linux, Vi or Emacs, Java or C#, but we had our religion wars – the most bloody, was Sinclair vs. Commodore and more precisely Spectrum vs. C64.
Owning a Spectrum I was in the Sinclair’s party – the gummy keyboard machine with a nice rainbow. Spectrum had superior BASIC and faster CPU. I like to think I always have an open mind, in fact, some years later, I was about to buy a C64. The Commodore machine sported for sure a superior hardware – more memory, more graphic modes, better audio, sprites, and decent keyboard.
I waited, then evaluated the C128, but bought an Amstrad. Some years later the Amiga arrived and I became a happy Commodore customer.
This book is like a documentary of the troubled history of Commodore. From the very early days, when the designer of the MOS 6502 CPU designed the first PET, to the final days of bankruptcy.
I found the book very good, more balanced of iWoz, maybe just because the writer is not directly involved in the company and just interviews people trying to rebuild facts.
The book reads nearly as a fiction book, with interesting characters, heroes, foes and plot twist, while the narration proceed toward the glooming end.
Two aspects stroke me during the reading – first is about success and failures, the latter is about overtime.
Many of the engineers interviewed hold that the most successful products were achieved when they were free from the marketing and worked almost free (but for the deadlines set directly by the CEO). The most unsuccessful products (notably the Plus 4 and C 16 abominations) were marketing driven. What really strikes me is how could the marketing and the middle management be so computer-unaware? They had a powerful brand, great hardware, yet they failed to steer the company helm to easily reachable success.
Overtime was a sort of way-of-life for Commodore engineers. Unrealistic deadlines were hit thanks to work around the clock for several days. One of the engineers recalls that his longest stay at office was 11 days. He just got some hour sleep in his office.
Unrealistic deadlines were needed to win against the strong competition from other vendors, but this is something you can’t live with for a reasonable time. You have to work less. I am a strong supporter of the 8h/day per 5days a week with just occasional overtime. My argumentation is that overtime tends to burn out people, making them behave in a sub-optimal way in the medium period. Also because of the long hours away from home they need to do something personal at work, just to keep up with life. So I wonder if those jewels (C64 and Amiga) that Commodore gave us could have existed and could have been the same with more human working conditions?
iWoz
Although I am not addicted to retrocomputing, I quite enjoy reading about Good Ol’ Days when Real Men where up to forge the computer revolution. Given this premise it was rather impossible to skip over the Amazon suggestion when I received it. iWoz is the story of Wozniak, the engineer among the two Steves that founded Apple back in the seventies, told by Steve Wozniak himself (or at least edited as if it sounds so).
The book is a pretty smooth reading up to the point where he left Apple, but I think it’s just me loosing somewhat interest in the narrated matter.
I found very emotionally touching the first chapters where Steve writes about his infancy and his father. Maybe it is because I had lot of thoughts recently on being father, but I found this figure of father-engineer really fascinating – never forcing his kid on learning something, but let his strong passion for technology and science “infect” his child. Also noteworthy the strong ethic component of this father about nearly everything. I’d like to be a father like this.
Also the book proves that some kind of chances could have occurred just there. I think nowhere in the world (and likely in time) a group of children could receive as gift from a telephone technician some hundreds meters of telephone wire. Also the home computer revolution had to start right there – all the players were there and they much knew each others.
In some parts of the book I read some naïvety. E.g. the Atari affair. Jobs always did the marking and commercial part of their projects. So they got this deal to build a videogame prototype for Atari. In change of one week effort Wozniak got few hundred dollars, because Jobs told him he got the same. Only later Wozniak discovered that Atari paid several thousand dollars for the project (and obviously Jobs kept the difference). This didn’t made Wozniak upset with his partner. He candidly states that Jobs needed money at that time and later (after Apple IPO) money ceased to become an issue.
Another aspect of the book I found somewhat uneasy with is that Wozniak claims to be a first in many key technologies of the emergent home computing industry – the first computer with video output and keyboard built in, the first color computer, the first computer with audio, the first microprocessor based videogame, remarked more or less with “something unheard of at those times”. I don’t want to take off anything from the pioneering work of Wozniak, but most of those technologies where really about to spring to life in those years and, there were other companies providing the same stuff in different degrees of completion.
Despite of these two aspects I am pretty satisfied of this reading and I recommend if you are interested in the topic.
Jingo
For those of you that know me, it is not a surprise that I really like Terry Pratchett work. So before the holidays I placed a huge order to amazon comprising all his book I haven’t yet read.”Jingo!” is the first popped out from the reading queue. I though this summer I would have read a bit more, but traveling throughout USA, trekking in parks and keeping an attentive eye on a teen nephew it’s time consuming as it sounds.
Back to the book. This time an island is rising from the ocean about halfway from Ankh-Morpork and Klatch. The island is discovered at the same time by two fishermen from the two towns. Everyone claims his country rights on the new land, and this leads to political frictions between countries.
As if this would not be enough, someone try to assassinate the brother of the Klatchian sovereign visiting Ankh-Morpork.
As the international struggle escalates both Vimes with his Watch and the Patrician with his political skills attempt to settle the question avoiding what seems to be a inevitable war.
As in every other book by Pratchett the witty humor is always paired with deep insights in the human mind, in community habits and legacies and plots are never obvious or sacrificed to the funny side of his writings.
I read this book as a strong position against wars, against the blindness of generals and war commanders, the arrogance and stupidity of racism and discrimination.
The Celestines Company
This is another Italian book without an English translation, at least not one you can buy on Amazon.The story is about a group of orphans that escapes from the orphanage to participate in the secret world championship of StreetBall. StreetBall is a specific variation of the football played along the streets of nearly everywhere with much passion and fantasy. The Great Bastard himself, the God of all the orphans, has dictated the rules for Street Ball.
The story takes place in the rich and corrupted country of Gladonia. The orphans are chase both by the (equally rich and corrupted) church in the person of Don Biffero and Don Bracco and the media personified by the journalist Fimicoli. And behind those pawns the egoarch Mussolardi supreme ruler and mostly owner of Gladonia.
As I have already expressed before in other posts, Benni is one of my favorite writers. In this case he manages to achieve a good tale telling, while keeping a meta register. Situations and characters usually live at different levels. The story level is nice, but the plot twists are a bit forced, situations are mostly resolved via Deus Ex Machina. The next level is satirical, Benni portrays the changing Italy, a beautiful country losing its genuine and true origins to progress, corruption, hypocrisy and indifference. What was clean and nice now is polluted, what once was quiet and calm now is crowded and noisy, what once was honest and private, now is criminal and reality show.
Characters are caricatures of real people, the county politician, the clergymen, the orphans, the media, the TV channel owner, and the army.
At a deeper level we find messages. Messages about what is going wrong and what would doom us. The strong message is about the importance of unadulterated youth. Children deserve to grow in a free and genuine environment. Benni strongly criticizes everything menacing this.
I have to admit that I lost most of these deeper levels at my first reading. But the book is so intriguing that the second read was swift.
Inquiry on Jesus
(This book is Italian only) If you, like me, grew up in a traditional Catholic environment, as it could be anywhere in Italy, or, to a lesser extent in France or Spain, then chances are high that most of what you know on Jesus is wrong.
This book attempts to shred some light on the historical man that so greatly influenced (and still influences) our world. In fact our knowledge about Jesus, his times and his land has considerably improved in the last 30 years. Better analysis techniques and the recent discovery of old writings from the earlier community greatly helped in defining a larger and more consistent picture.
The book takes the form of a loose interview where the writer introduces the argument of the chapter and the starts with questions and answer sessions with the expert.
“Inquiry on Jesus” begins as a sort of myth dispeller: Jesus was a strictly observant Jew; he had a number of brothers and sisters; he was married as his disciples were. He was a Pharisee, he didn’t intend to start a new religion; he had a political message; Gospels weren’t written by the same disciples that lived with him and so on.
The matter is interesting and it is dealt with a tactful approach. Of course the intended audience is everyone that wants to dig deeper in this part of human history with an open mind. Avoid it if you are a believer and don’t feel comfortable in reviewing part of your faith beliefs. I guess that a strong faith couldn’t be shaken by this book content, and that the book could satisfy an interest in the man Jesus.
One of the most striking revelations to me is that Jesus was deeply Jew; he observed every precept of the religion. Moreover he never intended starting a new religion or cult, neither converting anyone. He strongly believed that the Kingdom of God was near to come and that a real conversion and renewal was needed.
Another interesting point is about his sentence. For centuries the Catholic Church based a number of arguments against the Jewish on their guiltiness for sentencing Jesus to dead, basically perpetrating a deicide. These parts of Gospels have indeed been written to ease the position of the new Christian religion towards the Roman Empire. In the desire of appealing to the Romans, earlier Christians, turned the guilt away from Pontius Pilate (the likely real culprit) to the Jewish. What is astonishing is that by reading carefully the Gospels you can find yourself that not everyone in the high council, the Sanhedrin, was enemy to Jesus, in fact some of the people in the council were actually his friends.
Most of Jesus’ teaching, as reported by the Gospels, is easily traced in the religious currents popular at those times. Even the resurrection was a common theme far from being something unheard of. Rather, the specific attention and care to the latest and to poorest in the society is the original part of his message, the real revolutionary part.
The book takes a low profile on miracles, stating that most of the healings and exorcisms can be explained in term of psychic or mental effects. On the other hand, considering the historical character, the book supports the thesis that it is likely that Jesus thought a lot on the matter, considering it as a special gift from God and that by this gift God was calling him to some mission.
Considering that the central core of the Christian message is the resurrection for saving everyone, the book skims over too quickly over the fact that in the first edition of Gospel there was no mention about resurrection. It came as an afterthought during later revisions. Moreover, despite of the claims of Gospels, there are no reports about those exceptional facts (consider a dead man appearing to several hundreds people!) beside of the Gospels themselves.
I think that this is where the narrative scheme of the book falls short. I.e. the interview model allows too easy escape ways on topics that would have a much deeper analysis in a classical popularization book.
Apart from this the book is an interesting and easy read for those with an open mind regardless of the faction.
Programming in Lua
(cover to the left here, refers to 4th edition of the book, I read the 1st edition). It is somewhat difficult, in writing this review, to distinguish the language from the book. The book teaches about Lua, so my opinions in favor or against this language could interfere with my opinions about the book. Anyway I’ll try to accomplish this hard task.When writing a book about a programming language you could follow either an hands-on approach or a more formal one. Both ways have their pros and cons. The first approach helps language novices to grasp quickly language fundamentals, while latter provide a convenient reference for those already using the language.
For example Bjarne Stroustrup’s “The C++ Language” belongs to the second set. It is very formal and descriptive; learning the language by this book it is definitely the hard way to do that (aside from the fact that C++ is a very complex and huge language). “Programming in Lua” is from the first camp. It features an easy to follow, example-ridden way into the language. It doesn’t pretend to give a thorough reference for the language or the library, demanding other books for this specific purpose.
I have to say that the writer does quite a good job. The text reads smoothly, examples are always fit to the chapter scope, prose is clean and clear. In theory I should have practiced with the language itself in order to state whether the book covers the matter adequately or not, but I have a limited amount of free time and no suitable project for a Lua application, not even a toy one.
Anyway while I didn’t fell in love with the language (quite the opposite as you may have read) I appreciated the book. Also I found an interesting reading the last chapters on how interfacing and extending lua with C code.
What I didn’t like is the author bias toward the language; I feel a vein of naivety. For example Lua supports only floating point values. Not the “float” kind, but the “double” variety. No integers, just doubles. The author advocates that there is no reason for integers since “double” works fine for just everything. Although I have not much experience with doubles (just floats), this appears quite a bold statement, at least from what I have skimmed through. The dumbest consideration I could think of is that doubles still have the usual precision problems that affect floating point arithmetic. It just depends on how many iterations you have to do.
On a whole I found this book a worth reading either if you want to learn a new programming language or you are just curious (like me). Just be sure to buy the 2nd edition that came out just few days after I ordered the book (I ordered the book few days after having read the, now disappeared, slashdot review… maybe you see a connection)… or to read the first one online for free.