Revision as of 00:43, 23 September 2007 by Clarman
Why are the columns this width? See here. At normal reading distance, the eye's span of movement is (only) 8 cm. For the average person, this layout supports faster reading.
This is arguably going to one of the top five most widespread influential technologies over the next 20 years. Coming in 2007.
Beautiful visions of science.
My time these days is spent helping clients who have adopted iterative methods on relatively large projects (e.g., 50, 250, ...). One of the biggest misconceptions about "agile method" practices is that they are new, or have only been applied to small projects. This misunderstanding stems in part from not knowing that key practices (avoiding the waterfall and applying short iterative and evolutionary dev, automated daily builds with test and integration, risk-driven iterative planning) have been known and applied for decades. Did you know that the USA Space Shuttle flight control software project (extremely non-trivial!) applied these practices in the mid-1970s? Or that iterative dev, rather than the waterfall, was applied on the new Canadian Air Traffic Control system? Or that the next-generation USA anti-ballistic missile space based system is being built with agile process practices. And, of course, large OS projects such as MS Windows and Linux. These are all huge systems-engineering, multi-team and multi-site projects. For many more examples of the history of iterative development since the 1960s, I suggest reading "Iterative and Incremental Development: A Brief History" by Dr. Vic Basili and myself in IEEE Computer (June, 2003), and the 'Evidence' chapter in my book Agile and Iterative Develpment: A Manager's Guide.
Related to the above, it has always struck me as odd when people ask, "Should we apply iterative dev to large projects, or stick to the waterfall in that case?" Since research shows that waterfall practices are associated with more risk, failure, defects, and lower productivity, and late integration and test of large system components is a well-known major risk, it is even more important, the larger the project, to do it in short early-integration iterative steps with feedback from users, tests, etc. BUT, don't listen to what is, IMO, unskillful XP advice about architecture--that we can avoid an early, careful architectural design focus. Rather, on large projects, it is critical that the early iterations focus on architecturally-significant elements (proved through program and test!), and skillful collaborative architecture-centric design workshops (involving programmer-architects) that (horrors!) spend significant time modeling, thinking, talking, and writing about the architecture. Of course, tempered with a reality-check of early programming and test. I've seen large projects, apparently inspired by XP's advice of avoiding upfront design, fail because of this; that's an amateur-hour mistake. Big systems need early solid architecture work! But that doesn't mean it has to be the waterfall; there is a balanced approach recommended in methods such as FDD and UP that combine some upfront design with early programming iterations to test and prove ideas. In my book Applying UML and Patterns: An Introduction to OOA/D and Iterative Development, I show a 3-iteration case study that takes this balanced iterative approach to modeling and programming.
Related to the above, another misconception about agile methods is that agile = XP. Not true. XP is just one of a dozen modern iterative and evolutionary methods, including DSDM, FDD, UP, Crystal, and many more. These other agile methods are very different than XP. I like XP, which is full of great ideas and practices, and I think Kent Beck and Ward Cunningham are brilliant, but please don't equate XP with agile or iterative, which is a much broader field. For example, in contrast to XP, a number of the other methods, including DSDM, FDD, and UP, require an early focus on some modeling and architecture-centric work and development in early iterations. In these methods, it is normal and expected to spend a few days each iteration in group requirements or design workshops before programming. It is only XP which takes the 'extreme' viewpoint of avoiding almost any pre-programming workshop analysis or design. Don't throw the baby out with the bathwater, especially on large projects--there are group collaborative design workshop techniques for modeling (agile modeling) which are wondefully useful!
If you care about prostate cancer, new research suggests you should drink pomegranate juice or eat the fruit.
Nicholas Negroponte, founder of the MIT Media Labs, has outlined the design and development plan for the introduction of a sub-$100 laptop for children worldwide (especially in poor regions), with estimates of millions being produced each year. Part of the One Laptop Per Child initiative. In 2007, the Massachusetts governor Mitt Romney plans to start buying them for all 500,000 middle and high school students. The Linux-based 1GB wireless-networked laptop is very durable, encased in rubber, uses flash memory rather than a hard disk, and even has a hand-crank to generate electricity when all else fails. AFAIK, this is a serious project with major backers. Consequently, the implication for Linux is interesting--an angle I haven't read commented on. If this really takes off, the mainstream adoption of "desktop" Linux and Linux apps (Firefox, OpenOffice, Thunderbird, ...) (rather than Microsoft apps) will be huge.
Speaking of OpenOffice, you've probably also read that the state of Massachusetts, plus various cities and universities (Munich, U. of Toronto), are moving or have moved to the free OpenOffice (or the Sun-upgraded StarOffice version) rather than the MS Office suite. If you haven't tried OpenOffice, check it out. Like Firefox, it is an excellent product, free; it also reads/writes MS Office-format docs. Sun is the financial backer behind OpenOffice, and I think they made an interesting strategic move, because MS Office is a major profit center for MS. If Sun can significantly erode that revenue stream with a relatively cheap investment supporting a FOSS project, they'll have scored major strategic points.
In case you've been living in a cave for the last year, AJAX is HOT HOT HOT. e.g., what makes the Google Maps UI work.
Lots of my clients have masses of legacy code (e.g., C or Cobol), with questions about how to apply test-driven development with it, refactor it, and so forth. I recommend Working Effectively with Legacy Code by Michael Feathers.
I've always been a huge fan of Alan Kay, a seminal figure in computer science, and along with Dan Ingalls, the creator of Smalltalk, which influenced me deeply. He won the highest award in computer science, the Turing Award, in 2003 (and the Kyoto prize); here's a summary of his speech. If you don't know his contributions and vision for computing, please take a look. These days he's involved in OpenCroquet, an OSS visionary next-generation 3D immersive networked collaborative computing platform. I only wish it was built with Java rather than Squeak (a Smalltalk dialect), because putting aside all technical and religious language arguments, i bet it would simply get more interest and support.
Researchers say low doses of activated vitamin D and non-steroidal anti-inflammatory drugs (e.g., Vioxx), taken together, can slow the growth of prostate cancer cells.
If you predict an hydrogen economy boom, it might be time to invest in rhenium stocks. And if you didn't know, the USA gov't is investing strategically for a hydrogen economy, and the USA stands to be a major technology provider-winner.
Here's another reason to think twice about rising CO2 levels: 95% of life on earth died as a result, 250 million years ago.
Yet another reason to eat uncooked olive oil.
I've never had the time or location-flexibility to try priceline.com. Recently i thought i'd try and started with (i thought) an unlikely extreme experiment: I asked for a 4-star hotel in London for a week at $75 a night. Got it! Hilton Kensington--good location an hotel. Normal rates start at $200/night. I'm impressed. I've also rented a car at 1/2 normal rate using wheelsabroad.com.
A strong Java trend coming on: Component-based Web UI frameworks are not of course new. .NET Web Forms takes this approach, as does the excellent, mature, Tapestry framework for Java (take a serious look). Ditto for the official standard JavaServer Faces and its implementation in the Jakarta MyFaces project. There's good stuff in JSF, but I'm frustrated by its slow pace of innovation hampered by the standards process. Much more should be in it, and fixed in it, within months, not within the 1.5 years it will take for next-version standards approval (as Struts and JSF creator Craig McClanahan suggested to me recently in Italy, where we met). Still, it's worth a serious look and is maturing, and it's pretty clear that JSP is "dead" and being supplanted by JSF within Java EE5. Back to Java trends... Rather than a component-Web UI focus, Web-MVC designs have been the norm in Javaland for some years (e.g., classic Struts and Spring). Now I sense sufficient momentum in the component-based Web UI architectures, that I predict solutions such as Tapestry and JSF will start to really buzz in 2006, as they move along the Moore technology adoption curve into late early-adopter phase, ready to cross the chasm. But don't burn your Spring and MVC books! I predict a marriage of MVC and the component-UI frameworks will be the short-term sweet spot, as these frameworks bring different strengths to the table. The Spring team is indeed hard at work creating integrations with JSF; e.g., JSF-Spring, Spring and JSF Web Flow. And don't forget to check out Tapestry.
For 30 years, I've bought organic produce when it's relatively affordable. Not for my own health (though a study of pesticides and antibiotics in traditional farming should give pause for thought), but rather to support organic farmers, as I've felt (without strong evidence) that it's just a better, sustainable approach. Now a recent study from Oxford indicates it's also better for biodiversity. To quote: "The organic farms were found to contain 85% more plant species, 33% more bats, 17% more spiders and 5% more birds."
I wonder what will happen if they attach a biofeedback system to men's performance with their lovers using this device?
This is a wonderful story.
Are you involved with a Java-based multithreaded highly-concurrent application (e.g., servers, telecomm switches)? If so, you know that testing for bugs related to concurrency (e.g., deadlock) is HARD. NASA has a solution. They have just released as OSS a cool and sophisticated testing tool, Java Pathfinder, that they have built and used for years (yes, NASA uses Java, including on the Mars rovers). Pathfinder is special JVM that systematically explores all potential execution paths of a program to find violations of properties like deadlocks or unhandled exceptions. This is difficult, powerful testing, so tell your friends.
Cold fusion strikes again! This time it's almost certainly real, and has passed close scrutiny. Bad news? Probably only good enough to generate neutrons, not to power a house.
Below I wrote about the interesting fact that women after WW I gave birth to more females than males, but scientists didn't if it occured at conception or by miscarriages. Now we have more clues. After the 9/11 attack, a similar pattern arose in the USA, and researchers have discovered that the difference is not in sex variations at conception, but a greater rate of miscarriages of males when the mother is in a stressed environment, presumably because males are worse best for the tribe.
An example of well-crafted careful experiments to show if an alternative medical therapy works, in this case accupuncture. Is it just a placebo effect, or something more?
Some stories just beg to be read: Mystery of German exploding toads. ... (update) News flash: Mystery solved.
This story didn't get major attention, but I predict it will if it works on humans: Scientists have, for the first time, achieved a state of near suspended animation in mice, using air laced with 80 parts per million of hydrogen sulphide. Huge implications for space travel, medical delays, parents of teenagers, ...
The most mature aspect-oriented programming technology is AspectJ, but some have perhaps avoided it because it is a language extension to Java. Now, the AspectJ project has joined with AspectWerkz, which provides an alternate solution using Java 5 annotations, JavaDoc elements, or XML, rather than a language extension.
Which reminds me, a prediction: Java 5 annotations are going to be HUGE in terms of extending Java technologies over the next few years.
Some things really inspire my sense of wonder and beauty and mystery in this universe: wave-particule duality in quantum physics, high heels, and extraordinary savant mental abilities, as in the case of Daniel Tammet. Like some other autistic savants, he can do amazing feats: recall Pi to 22,514 digits, multiply ridiculously large numbers in an instant, speak 7 languages... What is unique about Mr. Tammet is that he is the only autistic that can clearly describe his inner mental processes, and this gives us a window onto other dimensions of mind. There are several fascinating aspects of his story. One is that his powers arose after a head injury and then the onset of epilepsy. Obviously it suggests that different parts of the brain had to become engaged in "math" for example, but in ways most of us can't fathom. To quote: Since his epileptic fit, he has been able to see numbers as shapes, colours and textures. The number two, for instance, is a motion, and five is a clap of thunder. "When I multiply numbers together, I see two shapes. The image starts to change and evolve, and a third shape emerges. That's the answer. It's mental imagery. It's like maths without having to think." I think his injury+change story suggests we all have potential for such radically different mental behaviors. But more deeply, the wonder for me is that it's so "outside of the box" compared to how i do math and hints at profound wonders in our minds. It is not impossible to imagine that scientists will someday unlock a way to such transformations--without having to hit our heads against the wall.
Design-by-contract (DBC) is worth knowing, especially for safety-critical and fault-tolerant applications. Although commonly associated with the Eiffel OO language and Bertrand Meyer, the roots are much older. They start with another Bertrand--Bertrand Russell’s Introduction to Mathematical Philosophy, which introduced the great Dr. Tony Hoare to the idea of axiomatic theory and assertions (pre- and post-conditions) while he was developing an ALGOL-60 compiler in the 1960s. In 1974 at the IBM Lab in Vienna a PL/1 compiler was being developed, and the researchers desired an unambiguous formal specification of the language. Out of this need VDL—the Vienna Definition Language—was born by Peter Lucas. VDL borrowed the pre- and post-condition assertion form earlier explored by Hoare and Russel. Various solutions have been created for Java, and i'm intrigued by a recent, elegant OSS solution: Contract4J, that uses Java 5 attributes and AspectJ behind the scenes.
Speaking of DBC, unit tests that are testing DBC assertions should avoid their own duplicating "assertTrue" assertions. No point in duplicating a test! Which reminds me of my favoriate basic SW engineering principle, from Andy Hunt and Dave Thomas: Remain DRY. So much pain and suffering in software can be traced to not remaining DRY at every level.
Thinking of mad scientists, the USA military is moving seriously closer to using fighting robots. And of course, in what could be a quote straight out of a science-fiction movie on robots-gone-mad: “They don’t get hungry,” said Gordon Johnson of the Pentagon’s Joint Forces Command. “They’re not afraid. They don’t forget their orders. They don’t care if the guy next to them has just been shot. Will they do a better job than humans? Yes.” The first generation are just remote-controlled, but surely it is only a matter of time before autonomous robots are used. I feel that when Deep Blue beat Kasparov in 1997, it was a computing milestone; and when the first autonomous robot kills a human, it will be another (sad) milestone. Mark my words: We will then see police robots somewhere in the world.
In the 1970s we built CRUD apps with 4GLs such as Focus, a popular mainframe 4GL. The speed of development was faster than using imperative 3GLs, even OO imperative 3GLs such as Java or Smalltalk. The essence of the difference is declarative vs. imperative programming (what vs. how). I believe iterative and agile methods are the right solution for the human/social dimension of development efficiency, but that the next order-of-magnitude efficiency must come from the technical solution of 4GLs--declarative programming and specialized domain languages. I know there are some Java-based OSS declarative 4GL languages for CRUD web apps, but don't have a good sense of the best of breed, or where the momentum is. If you know, please contact me.
Interesting story: Research shows that men have 6.5 times more grey matter (we can call it 'processing' matter) in the brain than women related to general intelligence, while women have 10 times more 'white' matter (connections and networking of the grey matter) than men. Both sexes have equal general intelligence levels, showing that alternate architectures can lead to similar capacity. Of course, the parallel to electronic computing is clear.
Any evaluation of a diet should be backed by independent research, rather than belief. I hope the same will be increasingly true for software development practices -- that we adopt practices research shows work. I know it is wickedly difficult, but I wish we had more software studies like this recent diet study: Four popular diets were tested/comparied with four random groups over two years: Ornish (a relatively low-fat vegetarian diet), Atkins (a relatively high-fat, high-protein diet), Weight Watchers, and the Zone diet. Conclusions? One key conclusion was relevant to software practices: More influential in losing weight than the particular diet was simply sticking to it. I suspect the same for software practices: Rather than agonizing over if test-driven development is better than method X, just really APPLY SOMETHING for a while. Stick with a practice and then evaluate. BTW, diet results? Ornish dieters had the best results in terms of losing weight (3.3kg), and Atkins the worst (2.1kg); Likewise for lowering "bad" LDL cholesteral: Ornish dropped 12.6%, but Atkins 7.1%. But another conclusion was also important to software: Some diets were more followed than others. The "stickiness" of a development practice is VERY important. For example, test-driven development and continuous integration has caught on largely because developers really see a quick, useful payoff.
This following science news item did not make a big splash, but I wonder if it might eventually have a profound social effect? Scientists at Temple University have discovered some relatively simple brain activity patterns in lying versus truth telling, using functional MRI. Five activated areas of the brain were found to be unique to the "lie" condition, and two areas were unique to the "truth" condition. If a larger study corroborates this, consider the implications for law enforcement and suspicious girlfriends!
Check out Project Censored, run by Sonoma State University, that each year publishes the "the top news stories underreported by the mass media."
I can feel a meaningful trend coming on: Domain Specific Language support in IDEs. Of course, these have been used since forever, but commercial tool vendors now smell a potential value-add feature, since the common ground has been captured by free tools such as Eclipse. One example is the MSP DSL tool in IDEA (IntelliJ) from Jetbrains (Sergey Dmitriev). Microsoft is also working on a DSL tool. And from another angle, the software maven Charles Simonyi is advancing the intentional software concept, where the idea is to create a tool to define DSLs where one can express and manipulate the DSL in a domain-specific visualization, such as in mathematical formulae for a math DSL, music notation, or whatever, and being able to mix them together.
If possible, fusion power solves many problems. Massive electric power from essentially a cup of seawater, with no meaningful radiation. Consider a future with limitless and very cheap electricity, almost free, everywhere. The next major milestone in this quest is the ITER reactor project, which is due to start construction soon and will be the first fusion reactor to achieve significant sustained power generation.
Cervical cancer kills about 500,000 women each year. About 70% of these cancers are caused by the HPV virus. A new vaccine has been shown to provide 100% protection against the virus.
I've been enjoying the Firefox browser for a year. Release 1.0 is out. More usable than MSIE, with less security issues. Tabbed browsing is great.
I don't know of any statistically significant research on the subject, but for myself and the software developers I've asked, programming with two monitors feels better, more productive. Recommended! And if you use a laptop and Windows XP, XP supports Dualview; it allows you to plug in the external monitor and then extend the desktop across the laptop screen and the external monitor. Then, for example, you may have JavaDocs open on the external monitor while your IDE is displayed on the laptop.
The recently released Arctic Climate Impact Assessment is the result of a study by 300 scientists, with peer review. It endorses the prediction that all artic ocean ice may disappear during summers starting by 2060-2100, with an ocean rise btween 0.5 and 1.0 meter. It's a fact that warming is happening faster in the Artic than elsewhere. I believe changes in this region will have an impact because of a change in sunlight reflectivity (less white reflective snow/ice), a rise in sea levels as the Greenland and Artic ice sheets accelerate their melting, and because of disruptions to the thermo-haline cycle in the Gulf Stream.
Hydrogen-based (fuel cell) electric power systems could be the dominant next-generation solution, but cheap, clean creation of hydrogen is critical. There is promising research in both biomass systems and now, solar-powered photocatalytic cells coated with a nano-crystalline; it is converting 8% of sunlight energy to hydrogen. When it reaches 10%, it starts to get commercially very interesting. Another leader, in the fuel cell market, is a company from Vancouver (where I lived for many years), Ballard Power Systems.
What would you think if you saw a press release that said that physicists had some evidence that the speed of light was actually significantly different than they originally thought? Something similar has happened in the world of biology and genetics: The rate of change of genetic mutation from generation to generation (which is applied to many estimates) appears to be faster.
I found this fascinating: Did you know that after World War I, after so many million males had been killed, that for some time women in the related countries gave birth to significantly more males than females? As though nature had a way to re-balance. How could that work? Recent research (I can't find the link now...) shows that women are less likely to give birth to males when there is stress, probably because males were more of an evolutionary risk (more likely to get killed). The relationship to the WWI story doesn't make sense yet, but broadly it suggests links between a women's perception of the environment and sex selection.
There's nothing inherently wrong with a UML CASE tool, and they have some excellent uses (especially for reverse-engineering code to diagrams, to help learning) but for almost 20 years I've encouraged developers to start visual OO modeling with lots (10, not 2) of whiteboards and marker pens (and now, digital cameras), and focus on just a little (e.g., a few hours every few weeks) lightweight exploratory sketching before programming--a key part of what is now called Agile Modeling. View the sketches as exploration, not documentation. It's a shame when developers blame the UML because of an unpleasant tool experience (fighting with fussy, low-ROI drawing in CASE tools in tiny computer windows). But if you try a "low-tech high-touch" approach to the UML, focusing on "UML as sketch" (Martin Fowler's term), working on giant whiteboard spaces and ignoring unimportant design and notation details, and use it with a partner to quickly sketch and explore some OO design alternatives for the hard, creative parts, then applying light UML can be a fun and useful creative experience. I shared this pratice in the 1st and 2nd editions of Applying UML and Pattens, but didn't emphasize it, and I suspect most readers didn't notice my point because all the UML drawings were drawn neatly with a tool (for legibility). So, in the 3rd edition, which I'm writing now, I'm adding a second case study, and showing all the UML for it as digital photos from whiteboard sketches, to promote more "UML as sketch" as useful.
Speaking of giant whiteboard spaces for Agile Modeling and "UML as sketch," another great solution that I first learned about when I was working at ObjectSpace in the 1990s is whiteboard-like static cling plastic sheets. These sheets cling to walls and glass and allow you to wallpaper a room, transforming it into one big whiteboard. Great stuff! In North America, the common product is Avery Write-On Cling Sheets. In Europe, it is Legamaster Magic-Chart. I like the Legamaster product better, as it comes in a roll, making it easy to roll out and cover the walls. One last tip: There is a good side and a bad side to this stuff; the good side erases more easily.
If you are going to use a UML tool (other than lots of whiteboards), I suggesting choosing one that is integrated into your favorite text-strong IDE, rather than a stand-alone tool; developers usually find this more useful.
I recently got a very useful laptop backpack for world travellers: the APC TravelPower Backpack. It contains, built-in, all the integrated electronics for recharging your devices: laptop, mobile phone, PDA, etc. Supports AC 110-240v input, and DC 15-20V output. Has adapters for different countries, car plug, airplane plug, and a USB charging port. Brilliant!
Eat what you want, but it has always struck me as odd when someone says a vegetarian diet is unhealthy--that one needs to eat meat. Research shows that vegetarians visit hospital 22% less often, and spend a shorter time there. More important: To quote a major British Medical Association study (BMA Report, 4.11, 1986) conducted over 10 years with thousands of matched people in veg and non-veg groups: "Vegetarians have lower rates of obesity, coronary heart disease, high blood pressure, large bowel disorders, cancers and gall stones."And the more recent Oxford study of 11,000 people over 13 years (Brit. Med. Journal, 1994, 308); conclusion: "lower rates of cancer and heart disease amongst vegetarians and 20 per cent lower premature mortality."(i.e., they live longer).
Eating antioxidant foods (or supplements) to reduce oxidation (heck, let's just admit we're rusting to death) is associated with lower rates of cancers, heart disease, and Alzheimer's. A recent USDA study clarifies the most effective foods. Among fruits, cranberries and blueberries are highest (drinking juice from also works). Among vegetables (including legumes), beans are highest (lentils, etc., which are staples of protein in a vegetarian diet), and Russet potatoes. Among spices, ground cloves, ground cinnamon and oregano.
June 16, 2004 is a milestone date: Report that deterministic teleportation of quantum states of two separated atoms was achieved, in two experiments. Has implications for future-generation quantum computing that will make today's supercomputers look like an abacus. As demonstrated in these teleportation experiments (known theoretically since Einstein and Schrodinger), you can create two entangled quantum systems (e.g., two atoms), send them to opposite ends of the universe -- 100,000,000 trillion trillion light years apart -- and if you read or manipulate one of these atoms, the other atom at the other end of the universe will immediately be changed as well. How is this wonderfully bizarre fact explained by physicists? The most common is the many-worlds interpretation: that there are an infinite (or near-infinite) set of co-existing similar universes which exist in parallel at the same space and time. I sometimes think high-school science should start with this stuff, rather than the usual drill, to help inspire young people to how wondrous and bizarre the universe is -- and that science can be.
Another milestone: On June 21, 2004 the great Burt Rutan's first private-enterprise manned flight into space happened on SpaceShipOne. The software connection? Financed by Paul Allen, co-founder of Microsoft.
Back to software! My background in the early 1980s focused on AI and expert systems development (which led me to general OO development). Out of this area comes the technique of rule-based programming -- practical in a subsystem for many software applications where complex rules or constraints must be met. I think developers should be aware of RBP ideas and options. There are a variety of Java-related components worth checking out: Jess, Mandarax, Drools, OPSJ, and this long list.
Make the Subservient Chicken submit to your command!
Did you know that Java was used on the NASA Mars Opportunity and Spirit robot rovers?
Fact: Boston is around the same latitude as Rome. Same for Toronto, Canada and Turin, Italy. It's interesting to explore why the difference in warmth, and the impact of climate change. Will there be an explosion in popularity of wool lingerie in France?
In addition to Hibernate having major momentum, I have the impression from my recent travels that Spring now has the momentum to dominate the J2EE framework space. And Spring integrates well with Hibernate. But an open question is if developers will still use Struts within Spring (because of Strut's popularity) or switch to Spring's own Web MVC solution. Spring's Web MVC has the differentiating feature that it is decoupled from JSPs (in contrast to Struts) so that one can instead use Velocity or XSLT, for example.
Another way to get a sense of emerging Java-related trends are the polls at manageability.org. Not scientific, but can give a whiff of directions.
Did you know that both Eclipse 3.0 and Netbeans have a rich client platform GUI application framework (for building general apps, not IDEs)? Eclipse demonstrates that it is now possible to create beautiful, fast, native-feel UI clients with Java.
The Tipping Point has many good stories. One of my favorites (I like irony) is about religion students at a famous Divinity School who, in a secret experiment, were asked to write a Bible sermon on "The Good Samaritan." Then they were told to present it in Building X in 15 minutes time, which required them to rush across the grounds of the campus. An actor played the role of a sick man lying on the ground, in distress, on their path to deliver their sermon. None of the busy "divinity" students bothered to stop to help him!
Another story from the Tipping Point of relevance to software developers is the "no broken windows" story of how crime rates dramatically dropped in New York City. This led to naming the excellent Don't Live with Broken Windows software engineering principle, promoted by the Pragmatic Programmers, that I encourage myself and others to follow.
Electronic paper (AKA digital paper or digital ink) is going to be huge someday — a revolution in how we read. The ability to roll or fold up arbitrarily large sheets of thin, robust display "paper" (with wireless Internet) that you can stick in your pocket will spell the beginning of the end for paper newspapers and magazines, and eventually, books. Perhaps within 20-40 years. Therefore, although this particular product from E-Ink may or may not succeed, I consider it a milestone.
Mice consistently fed less calories than average have lower cancer rates, and a 25% increase in lifespan (normal avg. is 24 mo.). According to the Hitchhikers Guide to the Galaxy, mice are the smartest creatures on our planet, being hyperdimensional geniuses who leak into our dimensions. Mice have manipulated medical science to focus on curing them of diseases and make them even smarter!
A recent study of about 5,000 people showed that those taking a combination of both vitamins C and E (e.g., 1000mg of C, 1000 IU of E) were 78% less likely to show signs of Alzheimer's than those not taking the combination. There was no improvement if only one was taken; the combination was important. That's a very significant effect, easily applied.
Java 1.5 is coming soon. It has some significant changes, such as generics (like C++ templates), and the enhanced FOR loop syntax. Notice the elimination of the need to downcast, and the nice, short FOR expression (similar to C#). For example:
List<TimerTask> tasks = new ArrayList<TimerTask>(); // ... fill the list ... for (TimerTask task : tasks) task.cancel();
As an aside on Java style, notice above that I declare the ArrayList object in terms of its interface, List. That's a good habit. And if you are still using Vector and Hashtable, after they were essentially replaced many years ago in Dec 1998 by the Java Collections framework in Java 1.2, it's time to change.
I recently visited an Egyptian exhibit at the museum and learned something fascinating: they really really liked pottery back then.
The major buzz this year for object-relational mapping seems to be the open source Hibernate product. I have the impression it is supplanting Entity Beans and JDO. It isn't hard to see why, as it appears to be a relatively elegant, unobtrustive, and performant product originally from Gavin King in Melbourne. It is a Jolt finalist, and significantly, has been chosen by the JBoss team as the engine behind their OR mapping solution for Entity Beans.
Which reminds me of the original Jolt Cola slogan: "All the sugar, and twice the caffeine!"
Green tea seems to be ridiculously good for you. A recent study showed strong results that drinking it reduced the risk of prostate cancer in men by 2/3! That is an extraordinarily strong effect. A key active chemical is Epigallocatechin Gallate (EGCG) and there is now evidence EGCG stops HIV binding to cells. A variety of studies show it is correlated with lower rates of various cancers, reduces the risk of rheumatoid arthritis and lowers cholesterol levels.
Borland, in response to competition from the excellent and free Eclipse IDE for Java, is releaseing a free version of JBuilder/X Foundation, a fine IDE with many competing features and a host of third-party plug-ins.
In addition to research showing that taking acetyl-L-carnitine and alpha-lipoic acid is associated with improved cognitive function, new research shows that the protein creatine (used by body builders) is associated with improved memory and intelligence.
One of my favorite new OO modeling and design books is Domain-Driven Design by Eric Evans. Eric has a wealth of experience in creating OO domain layers, and an especially clear view of object-oriented thinking often associated with old Smalltalk developers.
Thinking of good pattern books, as always, I recommend the fine work of Martin Fowler and his new text Patterns of Enterprise Application Architecture.
HTTPUnit for GUI-level system testing is a little verbose, so check out the improved jWebUnit; less code to achieve the same result.
Of course, GUI-level system testing is always a pain due to fragility of the code coupled to particular, frequently changing UIs. It is also valuable and less fragile to write system or acceptance tests that bypass the UI layer. For web-apps, look at frameworks such as Cactus and StrutsTestCase.
The amazing Willow bark drug that Hippocrates used. You probably know that regular low doses (81 mg) of acetylsalicylic acid (aspirin) reduces stroke and heart disease risk. New research in a large study shows it reduces by 2/3 (which is miracle-level) the risk of mouth and throat cancer if taken just once a week. Ditto in another "landmark" discovery that it's been shown to significantly reduce the risk of colon and rectal cancer, the 2nd leading cause of cancer death. Interestingly, the low 81 mg dose was more effective than a 325 mg dose.
POPFile is a great open-source spam and sorting e-mail front-end tool. Once set up and trained, it will work in the background of your computer, scanning mail as it arrives and filing it as you wish.
Speaking of POPFile, it uses Bayesian analysis. This is a useful decision support method software developers will benefit from knowing to create adaptive, learning systems. It captures the idea of degree of belief, and updating that degree based on new evidence.
Fact: the body has an internal clock. Not just the 24-hour-ish cycle, but shorter growth/rest cycles too. Until this year, scientists did not know the mechanism. Now they do. There is a special protein in every cell whose two ends are different shapes. Every 12 minutes it flips over, and the reorientation of the ends causes new effects. A husband and wife research team made the discovery after 40 years of investigation, and proved it by lengthening the 12-minute cycle, and consequently altering all other cycles in the test organisms. This is really basic stuff, and has implications for many treatments: jet-lag, ...
AspectJ, and Aspect-Oriented Programming by Gregor Kiczales and the AspectJ team at Xerox PARC. AOP as a relatively fundamental paradigm of programming and design, akin to object-oriented or function-oriented programming and design. One dimension of AOP that is not often stressed is that we can look at it as a meta-programming technology (programs that manipulate /modify programs). Viewed in this light, we can appreciate ways to use AspectJ that are not cross-cutting architectural concerns (like injecting logging support in many places) but still useful, such as writing interceptors or decorators for single points. Check out www.aosd.net for the big picture.
Excellent cancer news out of Wales recently: researchers have found the mechanism by which breast cancer is transmitted to other parts of the body, and a preventative solution using tight-junction molecules that seals the cancer and stops it spreading. This may have profound implications for treating other cancers as well.
Speaking of interceptors, the very productive Rikard Oberg (who worked on the first version of JBoss, XDoclet), is working on an alternative implementation of AOP based on "interceptors" (Decorator pattern) rather than the AspectJ approach. And he was the creator of WebWork, which is now part of OpenSymphony, an OSS set of components for fast J2EE app creation. Check it out.
More breast cancer news (I have four close family members who have faced this disease): Researchers have discovered that X-rays are scattered by tumour cells in a signature pattern, especially at 9 degrees off the main X-ray beam. This will lead to earlier detection of small tumours, a key to treatment.
This just in from the cold fusion department: Hydrinos. The botton line is that it is claimed to be a way to generate energy based on a different theory of quantum mechanics, in which electrons are like bubble clouds that can be shrunk, releasing energy in the extreme ultraviolet (black light) spectrum. You may think this is hockum, but the scientist Randell Mills publishes in peer-reviewed journals, and NASA recently completed a hands-on investigation of his work and repeated his experiments--and NASA sees an energy effect as well.
Speaking of XDoclet, this is a useful doclet plus Ant task solution that allows one to place all configuration/deployment information in the source file as doclet tags (such as a session bean implementation), and autogen all supporting config/deployment files. Sweet.
Why do shower curtains billow inwards? A PhD thesis on the sociology of Canadian donut shops? All this and more honored by the Ignoble Awards. Very fun reading.
In the dynamic typed or scripting language wars, it seems to me Python has most of the momentum in terms of adoption, libraries, and learning resources. Perl 6, which fixes the awkward OO model bolted on to Perl, is several years away and will not be backward compatible with Perl 5. That puts more steam in the exodus to Python. In an interesting endorsement of Python, Mitch Kapor (Mr. Lotus 123) has founded an OSS project to crate an MS Outlook competitor, based on Python, and the excellent x-platform GUI framework, wxPython, which I think all Python GUI apps should adopt. And if you don't know about the OSS Python server-side app dev solution Zope, check it out.
The Darwin Awards commemorate those who improve our gene pool by removing themselves from it in really stupid ways, like the Houston guy who played Russian Roulette with a semiautomatic pistol.
AspectJ used to require source code files in order to apply its meta-programming/AOP tricks. But the latest release can work against bytecode files. Nice.
For server-side J2EE web app development, the OSS framework Struts has the most momentum for web presentation control. Release 1.1 is soon out. Recommended. And Ted Husted maintains a site with lots of useful Struts info.
And Struts reminds me of an observation: Too many Java web apps run in a full-blown J2EE app server such as Weblogic, Websphere, or JBoss, when all they are using is the web container (servlet/JSP) elements. Or as a variant they are using EJB beans along with servlet/JSP/Struts for no particularly good reason other than "they are there" or for "resume-driven design." I recommend more web apps rely on simpler designs and avoid unnecessary EJB beans, or just use a web container like Tomcat when they don't need other parts of an app server.
Senility finally kicking in? Eat Indian food. Here’s why. Don’t forget.
Thinking of Tomcat, how can one create a clustered Tomcat solution with synchronized shared session state that is persistent? You don't need to use a full-blown clustering app server. Rather, consider using the free OSS JavaGroups, as described here.
IBM has open-sourced their recent IDE work led by Erich Gamma: Eclipse. This is shaping up to be a fine and hugely popular (and free) IDE with excellent refactoring support; it is capturing major market share, and so it is hard to say what future there is in commercial IDEs like JBuilder, Together ControlCenter, etc. There is a very active plugin community, including plugins for AspectJ, JBoss, Struts, XDoclet, and Tomcat.
The RatBots are here. Are husbands and boyfriends next?
And now they can make old brains young again. Better start taking your acetyl-L-carnitine and alpha-lipoic acid.
Finally, the intelligent convergence of toast, Java, and TCP/IP. I knew computers were useful for something.
Even after all these years, the strange nature of reality and wave-particle duality, as illustrated in the 2-slit experiment, remains amazing. It’s not really “particles” down there... both "waves" and "particles" are just metaphors for a quantum micro-level reality that doesn't conform to our intuitions of how the macro-level world works.
Continuous integration, described by Martin Fowler, is a very useful technique for automated integration and testing. I urge all development teams to adopt it. It can be applied with the free OSS tool for Java projects, called Cruise Control, available from SourceForge, or with Anthill.
Whenever I coach a team through a short 5-day iteration ("craig's coaching package") to help with process/tool/design skill transfer, i institute and encourage the ongoing practice of the daily Scrum meeting. This is an excellent mechanism to support self-directed teams. And i add 2 question to the original set of 3: "Any tasks to add to the task list?" and "Anything you learned that you want to share with the team?".
If you don't know about wikis for internal knowledge management and sharing of project data, I suggest learning. And, installing the fitNesse wiki is an excellent choice due to its simplicity of installation, use, and support for version control. Wikis come from the fertile mind of Ward Cunningham, a very thoughtful and influential figure in the object-oriented and design patterns world, though not so well known as his old buddy Kent Beck. He and Kent used to work together at Tektronix doing Smalltalk development back in the mid 80s.