Reflections

April 14th, 2003 § Comments Off on Reflections § permalink

The title may sound profound, but the subject of this post is not serious at all. :) In the spirit of my vacations, and true to the name of the blog, I point you to Reflections, a interesting and funny Flash game.

Update: It seems the game is now part of a paid subscriptions service.

Small changes in the site

April 12th, 2003 § Comments Off on Small changes in the site § permalink

I made a couple of small changes to the RSS feeds for this site. They now show only the last five entries, down from ten in the previous version. This change better reflects my posting habits. I also changed them to display the full post in aggregated that support this feature.

In a related note, I also changed the layout of the Portuguese version of this blog. I’m still tweaking the templates so expect problems — especially in the inner pages. The layout works better on browsers that support CSS 3, like Mozilla, but it will display fine in any browser (or so I expect).

Hosting troubles again

April 11th, 2003 § Comments Off on Hosting troubles again § permalink

For those who noticed, this blog was almost completely unavailable for the past three days. This problem was caused by a hardware failure in the server hosting this site. The server’s motherboard and HD crashed and had to be replaced. Everything seems to be back to normal now, with the exception of some lost posts — the backup is weekly so the database couldn’t be completely restored. I will attempt to restore them from what I’ve got in my home computer, but I don’t know if it will be possible.

I apologize for the inconvenience. :-(

The Code Book

April 4th, 2003 § Comments Off on The Code Book § permalink

The Code Book, by Simon Singh, is a fascinating account of the development of cryptography. The book recounts the evolution of this art through the centuries, describing the historic challenges and duels behind the search for privacy and security in communications. Starting with military espionage in ancient Greece, and ending with the still experimental quantum cryptography, Singh traces a great panorama of a science that affected world’s destiny in more than one occasion.

The history of cryptography has his heroes, villains, myths and misconceptions, and Singh makes a great job of showing the facts in their adequate context. He describes, albeit in a limited form, the general principles behind cryptography and cryptanalysis, allowing the interested reader to understand the intricacies of creating secure codes, and the even bigger complexities of breaking those codes, even when they look deceptively simple. The book also analyzes the recent developments in the field and the social and ethic concerns that permeate those developments. Additionally, Singh tells a bit of the histories concerning the deciphering of ancient writing and lost idioms, which bear strong resemblance to unknown codes.

Although the book is necessarily condensed, given cryptography’s rich history, it doesn’t lose its interest because it omits some events is that history. On the contrary, the high level perspective it presents allows the reader to understand how much cryptography influenced human history. Anyway, for readers interested in complementing their knowledge, the book offers a big list of additional reading going well beyond the book purposes.

As in his previous book, Fermat’s Enigma, Simon Singh shows he is a natural-born writer offering a light, understandable, and amusing text. Even the last chapters, which involve relatively complex concepts, are written in a completely accessible way to any reader willing to think about them.

The book is also of special interest to any person involved with Computer Science, as it shows the deep relationships between those two sciences. Characters as Alan Turing, Ron Rivest, Adi Shamir, Leonard Adleman, Phil Zimmermann, Whitfield Diffie e Martin Hellman appear when modern cryptography is described. The book also does justice to unknown heroes like James Ellis, Clifford Cocks e Malcolm Williamson, which independently developed public key cryptography many years before it was discovered by American scientists but were not allowed to publish their inventions because of security restrictions imposed by the British government.

In short, the book is totally recommended for any person interested in the field, and makes for an absorbing reading even for people not particularly interested on it.

Teaching programming

April 1st, 2003 § Comments Off on Teaching programming § permalink

I’m teaching programming to my youngest brother. Although he is seventeen years old and has been using a computer for a considerable time, his only experience beyond the common user realm is developing some animations and simples games with Flash.

I chose Smalltalk as our starting language as I believe it’s perfect both for beginners (for the matter, I also believe it’s perfect for professionals): it’s purely object-oriented, has a simple syntax, and the image-based environment favors a fast edit-run-debug cycle without requiring beginning programmers to understand intermediate stages like compiling when they still don’t need to. The language is also very linear and the basic concepts — objects, messages and classes — can be quickly understood. I’m using both Squeak and VisualWorks as our Smalltalk environments as they fit different niches: Squeak can be used to best explain basic concepts given its explicit educational features, and VisualWorks is better integrated to the platforms it runs one making it a more familiar environment.

Building on the basic concepts, we created some simple “programs.” Firstly, we created a program to find the divisors of a number. Then we used it to created another program to find if a number is prime, using the knowledge acquired in the first program. Obviously, we used a very simple approach to build those programs, as I only wished to explain how languages work, and how to think algorithmically.

Amusingly enough, my brother’s biggest problem so far has been the fact that almost all languages are strongly English-based. Smalltalk more so, as it’s tries to stay as close to a natural language as it can. So, my brother has to struggle a bit to remember the spelling of the messages he is using.

On the other hand, my problems is to know how to explain and administer the right amount of knowledge at the proper time. I’m trying to describe the basic concepts without going too much into implementation details. Again, Smalltalk helps as it hides the common distinctions between different programming constructs as loops and branching — everything can be expressed in terms of message sending between the objects that make a program. Even so, I’m a little lost. I don’t know how far I can go. For instance, how do I explain Boolean logic? We have already used the concepts, but I didn’t make them explicit.

In short, my brother is a better student than I am a professor :-) I can remember how I learned the concepts in the high school, but I don’t remember how I was taught. I fell in love with programming in the first day, and decide to ignore the classes and learn by myself. And after you learn the concepts, learning a new language is only a matter of understand the syntactic and semantic differences of the new language. The basic comprehension is there; one only need to apply it to the new language. The hard task is to pass those concepts to another person. Well, at least we are having a lot of fun.

Anyway, if you have any pointers to good teaching material, or even tips and personal experiences, please let me know. Any help is appreciated.

Where am I?

You are currently viewing the archives for April, 2003 at Reflective Surface.