Thursday, July 02, 2009

ICSE peopleware panel session

Yourdon's report:
" I had the great honor and pleasure of participating in a retrospective panel session on peopleware last week at the International Conference on Software Engineering (aka ICSE 2007) in Minneapolis, with some of the luminaries in the software field: Fred Brooks, Barry Boehm, Tom DeMarco, Tim Lister, and Linda Rising. The panel — celebrating the 20th anniversary of the publication of Peopleware — was conceived of, organized by, and moderated by Steve Fraser (not to be confused with this Steve Fraser, who won the 1984 Olympics in Greco-Roman wrestling); Steve, whose “day job” is that of Senior Staff at QUALCOMM’s Learning Center in San Diego, deserves a lot of credit for putting it all together, and keeping the panel from degenerating into pandemonium … and, well, Greco-Roman wrestling."

More at:
http://www.yourdonreport.com/index.php/2007/05/29/icse-peopleware-panel-session/

Monday, May 18, 2009

Grady Booch: "The Promise, The Limits, The Beauty of Software"

In this talk, Grady Booch discusses the complex matrix of decisions and processes, both intentional and unintentional, that lead to the software designs and architectures upon which we increasingly rely in everyday life.

Friday, March 13, 2009

Your code works - but could it be better?

This is a must read for every Object Oriented programmer.

Refactoring: Improving the Design of Existing Code
by Martin Fowler; Kent Beck; John Brant; William Opdyke; Don Roberts


Amazon.com Review

Your class library works, but could it be better? Refactoring: Improving the Design of Existing Code shows how refactoring can make object-oriented code simpler and easier to maintain. Today refactoring requires considerable design know-how, but once tools become available, all programmers should be able to improve their code using refactoring techniques.

Besides an introduction to refactoring, this handbook provides a catalog of dozens of tips for improving code. The best thing about Refactoring is its remarkably clear presentation, along with excellent nuts-and-bolts advice, from object expert Martin Fowler. The author is also an authority on software patterns and UML, and this experience helps make this a better book, one that should be immediately accessible to any intermediate or advanced object-oriented developer. (Just like patterns, each refactoring tip is presented with a simple name, a "motivation," and examples using Java and UML.)

...

.”

A catalog of summaries of refactorings mentioned in the book, Refactoring:
http://www.refactoring.com/catalog/index.html


Review by Matt Stephens at:
http://www.softwarereality.com/reviews/refactoring.jsp

If you're a programmer, it's almost a dead-cert that at some point you have had to make a change to someone else's code. It's also likely that your reaction when trawling through the code was one of abject horror: "What was he thinking when he wrote this 700-line function?"

Whatever the cowboy coder was thinking about, it would have had little to do with maintainability. Attempting to change the code in that state will almost certainly introduce new bugs. It's likely that the cowboy coder was thinking about getting his code working - hacking it to the point where it works - so that he could move on to his next grand masterpiece.

It's this kind of scenario where refactoring can prove to be very useful. It's a fairly safe bet that if you spend a little time carefully tidying up the cowboy code before you start adding to it, you'll save a lot of time bug-fixing later on.

Refactoring is the practice of improving code without changing its meaning. It's the cornerstone (okay, one of the cornerstones) of Extreme Programming (XP). That's not to say that you have to be doing XP to do refactoring. The refactorings described in Martin Fowler's book are equally useful in a non-XP context.

Rest of the review at: http://www.softwarereality.com/reviews/refactoring.jsp

Scaling in Games & Virtual Worlds by Jim Waldo, Sun Microsystems Laboratories

"Online games and virtual worlds have familiar scaling requirements, but don’t be fooled: everything you know is wrong."

"What makes online games and virtual worlds interestingly different are the very different requirements they bring to the table compared with these other domains. The interactive, low-latency environment is very different from grids, Web services, or search. The growth from the entertainment industry makes the engineering disciplines far different from those others, as well. Solving these problems in this new environment is challenging, and adds to our general knowledge of how to write software on the emerging class of multithreaded, multicore, distributed systems."

- Jim Waldo, Sun Microsystems Laboratories

Read more at:
http://queue.acm.org/detail.cfm?id=1483105

Friday, March 06, 2009

Over 100 million video views per day -- Ever wondered about How You Tube architecture scales?

YouTube grew incredibly fast, to over 100 million video views per day, with only a handful of people responsible for scaling the site.

How did they manage to deliver all that video to all those users? And how have they evolved since being acquired by Google?

More at:
http://highscalability.com/youtube-architecture

Some amazing stats I learnt:
  • Supports the delivery of over 100 million videos per day.
  • Founded 2/2005
  • 3/2006 30 million video views/day
  • 7/2006 100 million video views/day
  • 2 sysadmins, 2 scalability software architects
  • 2 feature developers, 2 network engineers, 1 DBA

Couple of Key points:

Keep it simple!
Simplicity allows you to re-architect more quickly so you can respond to problems. It's true that nobody really knows what simplicity is, but if you aren't afraid to make changes then that's a good sign simplicity is happening.

Shard! ( http://en.wikipedia.org/wiki/Shard_(database_architecture) )
Sharding helps to isolate and constrain storage, CPU, memory, and IO. It's not just about getting more writes performance.

For the ORM/Hibernate enthusiasts

Hibernate uses various cache implementation to optimize data read/write performance. This can lead to substantial performance gains. If used the wrong way it can however result in serious performance problems.

As seen in many real world use cases, Hibernate caches are often used inappropriately due to missing understanding of their inner workings and dynamic behavior.

A current series on the dynaTrace Performance and Architecture Blog discusses this topic and provides deep insight into Hibernate Cache behavior.

http://www.theserverside.com/news/thread.tss?track=NL-461&ad=689530&thread_id=53716&asrc=EM_NLN_5941652&uid=2966464

The eBay Architecture - Lessons from history

Architectural evolution to handle the present load of 26billion SQL executions a day.

It’s a complex engineering problem to address requirements of: Availability, Reliability, Massive scale, security and flexibility..

http://www.addsimplicity.com/downloads/eBaySDForum2006-11-29.pdf

Food For thought

Most of the stuff listed below is learnt by many of us after going through some painful experiences.

Good - someone collected them!

Following are a few that resonate with many of us for sure:

· If there is only one solution, get a second opinion

· Take responsibility for your decisions

· Record your rationale

· Dont Be Clever

· For the end-user, the interface is the system

· Great software is not built, it is grown

· Shortcuts now are paid back with interest later

· Control the data, not just the code

I would say, these are food for thought for every one of us – not just software architects.

http://97-things.near-time.net/wiki/97-things-every-software-architect-should-know-the-book

Egoless Programming

Most of us heard of it -- Good to remind ourselves.

If you haven’t – Welcome to the world of Peer Reviews!

http://www.mikebernat.com/blog/Egoless_Programming_-_Developing_Without_the_Attitude

Tuesday, August 07, 2007

DesignStaminaHypothesis

--By Martin Fowler
This leads to a consequence for Technical Debt. Technical Debt is a fantastic analogy and I use it frequently. But the design payoff line reminds us that taking out a Technical Debt is only worth doing up to a certain point. Not just do we have to consider whether delivered value is greater than the interest payments, we also have to judge whether the delivery is above the payoff line in the first place.

Monday, August 06, 2007

Guide to Hiring Programmers: The High Cost of Low Quality

From Revolution Systems Blog:

When you work in an environment with experts things simply work. They are easier to use and require less initial training. The software is easier to modify. Requested changes happen more frequently and easily. Things just flow. It is the difference between Apple and Microsoft. It's the difference between the iPod and a 400 disc CD changer with 50+ buttons.

Monday, April 23, 2007

Debate on building web services

Tuesday, March 13, 2007

Realtime Garbage Collection

By David F. Bacon, IBM Research

Java is now an option for realtime application programming.

http://acmqueue.org/modules.php?name=Content&pa=showpage&pid=454

The Parametric Singleton Design Pattern

By Douglas Lyon and Francisco Castellanos

The parametric singleton design pattern combines the singleton design pattern with a parameter that enables unique creation of instances of a class. These instances are cached in a table. When a user asks for an instance with these parameters, the table is checked and instances are created conditionally.
Lazy instantiation is not new, nor, for that matter, is the singleton design pattern. However, parametric lazy instantiation is new and so is the parametric singleton.
http://www.jot.fm/issues/issue_2007_03/column2

Tuesday, February 27, 2007

TypeInstanceHomonym

For those who care for stuff like this:

"
...
In the first sentence 'book' refers to a literary work, one that's been with us for over a hundred years. In the second sentence 'book' now refers to a physical object that's probably been around for a lot less. I can easily destroy the latter in my fire, but the former isn't touched by my flames and will doubtless last longer than I will. I can put the former on my hard disk with many siblings that collectively weigh less than the latter.
"

Thursday, February 01, 2007

First-class relationships in an object-oriented language

By Gavin Bierman and Alisdair Wren

"In this paper we investigate the addition of first-class relationships to a prototypical object-oriented programming language (a “middleweight” fragment of Java). We provide language-level constructs to declare relationships between classes and to manipulate relationship instances. We allow relationships to have attributes and provide a novel notion of relationship inheritance. ..."
http://homepages.inf.ed.ac.uk/wadler/fool/program/final/4/4_Paper.pdf

Tuesday, January 16, 2007

Fear of Trying: The Plight of the Rookie Project Manager

Author: Roger S. Pressman

A front-page article in The Wall Street Journal (April 4, 1997) noted that "... many [technical] people don't want to be managers, and many people who are managers are, frankly, itching to jump off the management track - or already have." Describing a phenomenon that it called "management phobia", the Journal noted that sentiment against moving into management positions is the highest it has been in over two decades. The article profiled young technologists, who in another era would have gladly moved toward project management, but today are shunning such positions. Most cited the "Dilbert Factor" as their primary reason for staying put.

>>http://rspa.com/commentary/SEarticle5.html

Ignored Architecture, Ignored Architect

This paper aims to help architects and other project participants find out what is going on in the project and to explore whether and why the architect or the architecture is being ignored. A variety of counter measures are available, some of which should be applicable even in the most difficult situations.
>>http://hillside.net/europlop/europlop2004/Papers/wwa/A5.pdf

Wednesday, October 18, 2006

Elegance and Other Design Ideals

In this 2004 interview, Bjarne Stroustrup talks with Bill Venners about many aspects of software design, including growing small applications into larger ones, avoiding class distinctions between designers and users, the dangers of premature generalization, and the essence of elegance.

Tuesday, October 17, 2006

The Calculus Formally Known as Pi

ACM Queue vol. 4, no. 4 - May 2006 by Stan Kelly-Bootle, Author

Wednesday, September 27, 2006

Review Secrets: Asking Better Questions By Payson Hall

Payson Hall broke onto the software development scene as a maverick programmer, but his penchant for imposing his ideals onto others created more enemies than allies and sometimes detracted from product quality. In this column, a more experienced Payson recalls how he exchanged hubris for humility and shares lessons learned during his transformation that help him craft constructive reviews.

Friday, September 22, 2006

And The Origin Of The OSI Model by Douglas Comer

Some fun stuff from Doug Comer.

Thursday, September 21, 2006

Test Team Paradox By William Echlin

Successful testers need to be continually critical of other people's work. Yet this critical approach can spill over into other aspects of our work. Therein lies the paradox within every test team. How do we prevent that continual criticality from denting our own motivation and leaving the test team dispirited? In this article, William Echlin helps us look to the bright side of testing.

Sunday, September 17, 2006

Dynamic Clustering with Jini Technology by Frank Sommers

Clustering emerged in recent years as the most important system architecture supporting highly available and scalable systems. This article, part of Artima's ongoing Innovative Architectures series, describes how Jini technology lays the foundation for dynamic clustering, while also reducing ongoing cluster maintenance and system administration.
http://www.artima.com/lejava/articles/dynamic_clustering.html

Wednesday, September 13, 2006

OMG SysML: System-level design language arrives

Richard Goering
A modeling language that can represent every aspect of an electronic system--including software and electrical or mechanical hardware--has long seemed an impossible dream. But advocates of the System Modeling Language, which took a major step toward standardization in late April, say that vision is now at hand.
http://www.eetimes.com/news/latest/showArticle.jhtml?articleID=187200782

Tuesday, September 12, 2006

Over-Architecting Via Pure Fabrication and Indirection to Reduce Coupling

From David Hyden's blog
The more I learn about new tools, techniques, patterns, and principles of software development, the more I try to use them even though I have been living "fine" thus far without them.
http://codebetter.com/blogs/david.hayden/archive/2006/08/26/Over_2D00_Architecting-Via-Pure-Fabrication-and-Indirection-to-Reduce-Coupling.aspx

C++: The Making of a Standard by Chuck Allison

Bjarne Stroustrup, a Dane with a Ph.D. from Cambridge University (England), had used the Simula language for distributed systems simulations in his research. He was disappointed with its poor performance, however, and in 1979 when his new employer, AT&T Bell Labs, said "Do something interesting,'' he decided to infuse the C language with some Simula features he had grown accustomed to -- most notably classes -- and thus "C with Classes'' was born. It caught on within AT&T, was dubbed C++, and then proceeded to become a support burden for its inventor.
http://www.ddj.com/showArticle.jhtml;jsessionid=v?articleID=184403233

Monday, September 04, 2006

Mashing Deadly Myths by Scott Ambler

Sometimes, those "inevitable" constraints plaguing your project aren't so inevitable after all. These myth-mashers kick-start new ways to ensure your project's success.

More >> http://www.ddj.com/showArticle.jhtml;jsessionid=JQ15FKJVAJFAEQSNDLPCKH0CJUNN2JVN?articleID=184415114

Saturday, September 02, 2006

Challenges of keeping one of the Web’s largest and oldest Internet services running 24/7

In the landscape of today’s megaservices, Hotmail just might be Mount Everest. One of the oldest free Web e-mail services, Hotmail relies on more than 10,000 servers spread around the globe to process billions of e-mail transactions per day.
...
To understand how they do it, and to learn more about what it takes to manage such an enormous service, we invited Hotmail engineer Phil Smoot to speak with us.

Read More .. http://www.acmqueue.com/modules.php?name=Content&pa=showpage&pid=353

Wednesday, August 30, 2006

Review: The Best Ajax-Based Apps

By Preston Gralla and Barbara Krasnoff
With Ajax, we'll no longer need desktop applications. Our data will be available to us everywhere we go, because it will all be stored on Ajax-based Web sites. Who needs Microsoft or other makers of desktop software? We're finally free!
We've scoured the Internet for the best Ajax-based applications in six categories to see how they stack up against Google's online offerings. Find out the winners, challengers and runners-up.

More >http://www.ddj.com/dept/architect/192203368?cid=RSSfeed_DDJ_ArchitectDebug

Thursday, August 17, 2006

Free ITU Documents? Data Compression, Serial Communications, Standards by Mark Nelson

Industry standards can be a handy--but expensive--resource
Read more>>http://www.ddj.com/dept/architect/192201183?cid=RSSfeed_DDJ_All

A Fundamental Turn Toward Concurrency in Software by Herb Sutter

The face of hardware is changing, impacting the way you'll be writing software in the future.
Your free lunch will soon be over. What can you do about it?
....
The Free Performance Lunch
There's an interesting phenomenon known as "Andy giveth, and Bill taketh away."
Read More >>http://www.ddj.com/184405990