Wednesday, August 20, 2008

Ruby: A gem of a language

The fun factor

Another reason for using Ruby is that it really is fun. One of the goals that Yukihiro 'Matz' Matsumoto, Ruby's creator, gave for creating the language is to make programming easy and fun. Once you begin to use Ruby, you seem to recapture some of the joy and wonder that you had when you started your programming.

Tuesday, August 19, 2008

Software development Methodologies

Agile vs. Waterfall, Choosing by Risk Analysis

Agile home ground:
Low criticality
Senior developers
Requirements change very often
Small number of developers
Culture that thrives on chaos

Plan-driven home ground:
High criticality
Junior developers
Requirements don't change too often
Large number of developers
Culture that demands order

The ACID test for databases

ACID is an acronym for Atomicity, Consistency,
Isolation, and Durability.
(from http://www-128.ibm.com/developerworks/opensource/library/os-ad-trifecta2/)

Atomicity means that operations with the database can be grouped
together and treated as a single unit.

Consistency guarantees that either all the operations in this single
unit (or transaction) are performed successfully, or none of them is
performed. In other words, a database can't be in an unfinished state.
To understand why these characteristics are important, think about a
bank transaction during which money is transferred from a savings
account into a checking account. If the transfer process fails after
subtracting the money from your savings account and before it was
added to your checking account, you would become poorer, and the bank
would have an angry (ex)customer! Atomicity enables the two operations
-- the subtraction from the savings account and the addition to the
checking account -- to be treated as a single transaction. Consistency
guarantees that both operations in the transaction either succeed or
fail. That way, your money isn't lost.

Isolation means that independent sets of database transactions are
performed in such a way that they don't conflict with each other.
Continuing the bank analogy, consider two customers who transfer funds
between accounts at the same time. The database must track both
transfers separately; otherwise, the funds could go into the wrong
accounts, and the bank might be left with two angry (ex)customers.

Durability guarantees that the database is safe against unexpected
terminations. It may be a minor inconvenience if your television or
computer won't work when the power goes out, but the same can't be
said for a database. If the bank's computers lose power when
transferring your funds, you won't be a happy customer if the
transaction is lost. Durability guarantees that if the database
terminates abnormally during a funds transfer, then when the database
is brought back up, it will be able to recover the transaction and
continue with normal operations.

Sunday, August 17, 2008

The Little XMLHttpRequest Object is Huge

A little JavaScript object called XMLHttpRequest, which has actually been around in several browsers for quite a while, is the key to Ajax and Web 2.0.

Tuesday, August 12, 2008

BBC NEWS | Science/Nature | Nasa Moonship flight target slips

BBC NEWS | Science/Nature | Nasa Moonship flight target slips: "Nasa Moonship flight target slips
Orion (Nasa)
Nasa hopes its Orion ship will take it back to the Moon.



Nasa has pushed back by a year its internal target date for flying the successor to the shuttle.

Agency officials say they are now aiming for September 2014 for the first crewed mission of the Orion ship.

This is a year later than Nasa had hoped for, but still inside its March 2015 absolute deadline."

Monday, August 4, 2008

Using the Datastore - Google App Engine - Google Code

Using the Datastore - Google App Engine - Google Code: "Storing data in a scalable web application can be tricky. A user could be interacting with any of dozens of web servers at a given time, and the user's next request could go to a different web server than the one that handled the previous request. All web servers need to be interacting with data that is also spread out across dozens of machines, possibly in different locations around the world.

Thanks to Google App Engine, you don't have to worry about any of that. App Engine's infrastructure takes care of all of the distribution, replication and load balancing of data behind a simple API—and you get a powerful query engine and transactions as well."