A site devoted mostly to everything related to Information Technology under the sun - among other things.

Saturday, September 29, 2007

2 Sites for Gadget Lovers

http://crave.cnet.com/8300-1_105-1.html&tag=blog

http://blog.sciam.com/index.php

Kannuu Text-entry

Kannuu is a new method of text entry that relies on a databse of words (possibly restricted) and a navigation wheel to enter text.

Learn about it @ http://crave.cnet.com/8301-1_105-9783298-1.html

C++0x

C++ is being updated. The update is called C++0x for now.

Find the details @ http://en.wikipedia.org/wiki/C%2B%2B0x

Worse Than Failure

Yes, Virginia, there are things worse than failure.

Check out Alex Papadimoulis Weblog @ http://worsethanfailure.com/

Why XAML Is Important

XAML was first announced publicly at the October 2003 Microsoft Professional Developers Conference (PDC) in Los Angeles as "Longhorn's X Technology." It is a declarative programming model based on a new XML vocabulary called Extensible Application Markup, code-named 'XAML' (pronounced 'zammel').

Writing an application starts with authoring a XAML file (typically through a designer) to define the layout of UI elements which can then be deployed either as a Windows Client UI or a Web UI.

But XAML's potential extends beyond graphical UI development. It is, in fact, a mechanism for instantiating .NET classes. Note that XAML is also a key technology element of the new Windows Workflow Foundation (WWF) and has many other potential uses as well. XAML is an extremely broad and versatile way to put a declarative front-end on .NET development of any sort whatsoever.

Just as there's nothing about object-oriented development that limits it to GUI objects, there's nothing about XAML that limits it to providing a declarative means of creating a richer GUI experience for users.

XAML is analogous to Language Integrated Query (LINQ) in that both are ways to evolve from a more domain-specific procedural approach of program development to a more declarative way of programming. XAML provides an adaptable declarative framework that can potentially be used in all sorts of specific application domains. It offers extensible means to build declarative front-ends over object-oriented programming, which is typically still quite procedural.

Check it out!

Insufficiency of Data Models

Malcolm Chisolm has 3 interesting articles on why data modeling alone is not sufficient for the design of databases.

They are:

"Data Models are Not Database Design" in October 2007 issue of DM Review.

"MetaThoughts:The Logical/Physical Challenge in Data Management"

"Is Data Modeling Sufficient for Database Design?"

I think they are worth reading. I specially enjoyed the first one since I had personal experience with reference data and could relate to the validity of his assertions.

BI & Gramm-Leach-Bliley Act

Please be advised that in building BI applications, as soon as you put customer account information into the analysis you trigger the Gramm-Leach-Bliley Act.

Misusing Materialized Views

Reporting and BI applications need to transform their data from raw database form into denormalized structures, dimensional model, or a cube. They also must also apply filtering, aggregation, and business transformations.

Materialized views are being misused in order to skip ETL step. This is a simplistic approach & it does not work since often the developers do not understand the data transformation needs of the business. The cost is paid in the form of a much more expansive and expensive reporting & BI development cycle.

The more cost-effective approach is to use an extended hub-and-spoke model in which the ETL step leads to further spokes in the form of data marts and cubes.

Thursday, September 27, 2007

Free Web Vulnerability Scanner Tool

The Web vulnerability scanner tool SXX from Acunetix is freely available @
http://www.acunetix.com/cross-site-scripting/scanner.htm

Wednesday, September 26, 2007

Michael Dell at CSIS

His topic is: "Simplification and Energy Efficiency: The Next Challenges for IT"

http://www.csis.org/component/option,com_csis_events/task,view/id,1385/

Tuesday, September 25, 2007

Web Usability

Interesting book on Web usability:

"Don't make me think" by Steve Krug.

Saturday, September 22, 2007

What is wrong with PowerPoint?

Peter Norvig has created a PowerPoint deck that highlights the poverty of the PowerPoint presentation style with devastating clarity. Find it @ http://www.norvig.com/Gettysburg/index.htm

Friday, September 21, 2007

Concurrency Models

None of today's popular programming language is inherently parallelizable. No compiler for Java, C# and Visual Basic - much less C or C++ - will suddenly distribute the application's computations across multiple processors.

The current model of threading used in mainstream programming languages—the model of programmer-controlled threads and locks—is fundamentally broken since this is a model where callbacks are inherently unsafe.

There are other concurrency models, however, worth considering.

There is “message passing” (“shared nothing”) based on the principle that data stored inside objects should always be thread-local and that access from another thread should always be mediated by a method call that can be made responsible for synchronization. .NET’s ThreadLocalAttribute is using this model. The downside is that it requires an appreciable amount of “everything is an object” overhead on exactly the type of large data set most amenable to data-parallel performance benefits (for example, multimedia data).

The “software transactional memory” (STM) is basically optimistic concurrency for RAM. Essentially, the programmer becomes responsible not for controlling threads and locks but for identifying sequences that require atomicity. STM systems have an external component (some combination of library and compiler-generated code) that checks the validity of an atomic sequence and retries invalidated transactions. While such checking introduces some amount of overhead, it’s less than that of “shared nothing.” The performance of STM varies with the number of collisions and retries that are triggered.

There are a few C# libraries for STM, including one from Microsoft Research @ research.microsoft.com/research/downloads/Details/6cfc842d-1c16-4739-afaf-edb35f544384/Details.aspx

and another by Ralf Sudelbücher @

weblogs.asp.net/ralfw/archive/tags/Software+Transactional+Memory/default.aspx

Another model is the pure-functional programming (look at .Net's F# or Haskell) in which all state is passed through function parameters.

And the less ascetic model in which variables are immutable after their initial assignment. Such (along with message-passing) is the model of Erlang.

Thursday, September 20, 2007

Free Software - Alice

Alice is a free, easy-to-use, interactive 3D graphics software tool for the WWW. Find it @ http://www.alice.org/

I would like to mention here that Randy Pausch, a Carnegie Mellon University computer-science professor who has been deeply involved in the development of Alice has been diagnosed with incurable pancreatic cancer.

In his last lecture on Tuesday 09/18/2007 to 400 students and colleagues, Professor Pauch stated:,

"Like Moses, I get to see the Promised Land, but I don't get to step foot in it. That's OK. I will live on in Alice."

Multimedia User Interface Design

An interesting take on GUI design :

http://www.portabledesign.com/article?article_id=75

Some of this could be accomplished on the Windows platform by using Shell Extensions but that approach was not a cohesive one like the one above.

Friday, September 7, 2007

Microsoft XNA Game Studio Express

Microsoft XNA Game Studio Express is a set of tools based on Microsoft Visual C# 2005 Express Edition that allow students and hobbyists to build games for both Microsoft Windows and Xbox 360. Find it @ http://msdn2.microsoft.com/en-us/library/bb200104.aspx

There is also this MSDN article @ http://msdn.microsoft.com/msdnmag/issues/07/05/XNA/default.aspx

Check it out!

Free Lite Programs

Here are some free less resource-hungry programs that I've found useful whcih perform the same tasks or at least the most commonly used tasks:

• Foxit Software's Foxit Reader 2.0 (http://www.foxitsoftware.com/): This PDF reader is 1.67MB, needs about 5MB of RAM, and starts up almost instantly. An .msi file is available for download, so you can deploy this program through Group Policy.

• PDFCreator (http://sourceforge.net/projects/pdfcreator): PDFCreator provides an easy way to create PDF files from any application. It creates a virtual printer named PDF creator. Whenever you want to create a PDF file from a document, you just send the document to this virtual printer. You can deploy this program through Group Policy.

• 7-Zip (http://www.7-zip.org/): This program opens all popular compressed files (e.g., .zip, .iso, .rar, .arj). Plus, it provides a new compression format (7z) that, according to the Web site, provides a compression ratio that's up to 10 percent better than the ratio provided by PKWARE's PKZip and WinZip Computing's WinZip. One of my favorite features is that you can compress and decompress files in the background. You can deploy this multilingual program through Group Policy.

• Media Player Classic (http://sourceforge.net/project/showfiles.php?group_id=82303&package_id=84358): Although Media Player Classic looks like Microsoft's Windows Media Player (WMP), Media Play Classic is faster and requires less memory than WMP. Media Player Classic is highly extensible.

Interface Design

These are neat examples of user interface design from Japan. We need to be able to deliver analogously for the application software that we develop.






























Thursday, September 6, 2007

Introduction to Quantum Computing

Here are 2 introductory essays on Quantum Computing:

http://www.laserfocusworld.com/display_article/298397/12/none/none/Feat/PHOTONIC-FRONTIERS:-QUANTUM-COMPUTING---Quantum-computing-poses-challenge

and

"A Bird's Eye View of Quantum Computers" @ http://www.quantumbionet.org/admin/files/QBS1%2021-30.pdf

Software Wars

Notice how the Dark Lord (a.k.a. the Dominion, a.k.a. IBM) is absent from this picture? I would not be surprised if this came out of IBM's Counter Intelligence Unit.

http://mshiltonj.com/software_wars/current/current.png

Crime in Second Life

The Second Life social computing site apparently is experiencing a serious virtual crime wave; theft, assault by gangs, rape, and murder.





Read all about it @ http://www.pcmag.com/article2/0,1759,2177593,00.asp

[On August 10, 2007, the Wall Street Journal ran a story titled "Is this cheating?" about a married man whose virtual self got married to another Second Life participant - fortunately a woman.]

Wednesday, September 5, 2007

Recommended Reading

Recommended reading with a few observations:

1. “Dreaming in Code” by Scott Rosenberg (Crown) because of its importance as a cautionary tale for anyone in a position to define or contribute to a nontrivial software project.

Three very intriguing books that help look forward and ponder what programming might have the capabilities to accomplish in the near future:

2. “The Meaning of the 21st Century” by James Martin (Riverhead),

3. “The Extreme Future: The Top Trends That Will Reshape the World for the Next 5, 10, and 20 Years” by James Canton (Dutton)

4. “The Singularity Is Near: When Humans Transcend Biology” by Ray Kurzweil (Viking).

Next we have:

5. “The Wiki Way” by Bo Leuf and Ward Cunningham (Addison-Wesley arguing convincingly that the technology is sound, and what implementations like Wikipedia primarily lack is simply adult supervision.

6. “The Tomes of Delphi: Algorithms and Data Structures” by Julian Bucknall (Wordware) because of its adept explanations of algorithms and data structures for Borland’s Delphi programming language, also known as Object Pascal.

7. The desktop PC is a topic of the book “Building the Perfect PC” by Robert Bruce Thompson and Barbara Fritchman-Thompson (O’Reilly), which talks about the advantages of building a PC for one’s exact specifications and needs.

8. “Blink: The Power of Thinking Without Thinking” by Malcolm Gladwell (Little, Brown and Company) relevant despite the fact it wasn’t written specifically for software professionals since it demonstrates why developers and testers need to both pay attention to their instincts, while at the same time being wary of them while evaluating the quality of software.

9. “The 4-Hour Workweek” by Timothy Ferriss (Crown) is more of a lifestyle book that discusses ways in which people can eliminate 50 percent of their work using principles of European economists and get the most out of their workweek. The stated goal is extreme, but it makes you stop and think about what you do to generate value, versus what you do that just takes up time.

10. “The Technology Garden: Cultivating Sustainable IT-Business Alignment” by Jon Collins, Neil Macehiter, Dale Vile and Neil Ward-Dutton (Wiley). which is an excellent book on ‘Big SOA,’ the transformative power of the newest paradigm in enterprise software on how businesses are operated and the future of enterprise architecture.

11. “The Systems Bible: The Beginner’s Guide to Systems Large and Small” by John Gall (General Systemantics/Liberty), the third edition of “Systemantics,” a series created by Gall in which he proposes several “laws” of systems failure, such as “new systems generate new problems” and “the total amount of energy in the universe is constant”. The book takes a fairly satirical look at systems behavior.

A trio of must-read books for anyone involved in Web site and Web application development is:

12. “Developing Rich Clients with Macromedia Flex” by Steven Webster and Alistair McLeod (Macromedia),

13. “Designing Visual Interfaces” by Kevin Mullet and Darrell (Prentice Hall)

14. “Web Pages That Suck: Learn Good Design by Looking at Bad Design” by Vincent Flanders and Michael Willis (Sybex).

The Webster and McLeod’s work is the only significant nuts and bolts book on Flex, while Mullet and Sano provide a great discussion on the simplicity in visual elements used in software, with emphasis on the difficulty on iconic communication.

15. “The Design of Sites: Patterns for Creating Winning Web Sites” written by Douglas K. van Duyne, James A. Landay and Jason I. Hong (Prentice Hall) is a very good Web site design book.

The O’Reilly’s “Missing Manual” series, which are casual and easy-to-read manuals for popular consumer software and hardware products, are quite useful for developers because of their organization and readability.

16. “Programming Erlang: Software for a Concurrent World” by Joe Armstrong (Pragmatic Bookshelf), which is focused around teaching the Erlang programming language. The language is designed for building parallel, distributed systems. Developers might want to get involved in learning Erlang because of the advantage it offers using the concurrency inherent in multi-core processors.

17. “XSLT & XPath: A Guide to XML Transformations” by John Robert Gardner and Zarella L. Rendon (Prentice Hall) is a useful book because it provides a great education in understanding both XSLT and XPath and their relationship to each other, and continues to serve as a reference to both languages. It’s a must-have for Web 2.0 and SOA-focused developers today, and should probably go on the ‘should read’ list for network- and security-minded folks as well.

18. “An Introduction to General Systems Thinking” by Gerald M. Weinberg (Dorset House), written more than 30 years ago, is an introduction to systems theory and computer science applications, and is frequently used in university courses and professional seminars. While the thought process Weinberg describes can seem bizarre at first, but when read with an open mind, it can be very satisfying.

19. Tim Koomen and Martin Pol’s “Test Process Improvement” (Addison-Wesley)

Three books by Robert Grady on the process side:

20. “Discovering REAL Business Requirements for Software Project Success” (Artech House)

21. “Successful Software Process Improvement” (Prentice Hall PTR)

22. “Practical Software Metrics for Project Management and Process Improvement” (Prentice Hall).

Next:

23. “Refactoring: Improving the Design of Existing Code” by Martin Fowler, Kent Beck, John Brant, William Opdyke and Don Roberts (Addison-Wesley) for its advice on making object-oriented code simpler and easier to maintain.

24. “Compiler Design in C” by Allen I. Holub (Prentice Hall)

25. “Working Effectively With Legacy Code” by Michael C. Feathers (Prentice Hall)

26. “Operating Systems Design and Implementation” by Andrew S. Tanenbaum (Prentice Hall). This is where Linus Torvald began Linux.

27. “The UNIX-Haters Handbook” by Simson Garfinkel, Daniel Weise and Steven Strassmann (Wiley) is a vivid reminder that even hard-core techies are perfectly capable of confusing each other.

28. “Applied Cryptography” by Bruce Schneier (Wiley) is a very useful book on data encryption.

29. Randall Hyde’s “The Art of Assembly Language” (No Starch).

30. “Introduction to Algorithms” by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein (MIT Press) is a gigantic and very thorough book of algorithms is indispensable in learning and understanding everything from the most basic to the most complex algorithms.

31. A newer book that will have a lasting effect on developers is “Lessons Learned in Software Testing” by Cem Kaner, James Bach and Bret Pettichord (Wiley). The book presents only realistic solutions and real-world answers to problems.

32. “Rapid Development” by Steve McConnell (Microsoft Press), which offers rapid software development strategies in addition to mistakes to avoid for rapid development projects.

33. “Design Patterns: Elements of Reusable Object-Oriented Software” by Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides (Addison-Wesley). The book offers solutions to design problems through describing patterns for managing object creation, composing objects into larger structures, and coordinating control flow between objects.

34. “Code and Other Laws of Cyberspace” by Lawrence Lessig (Basic Books)—offers a valid argument for guiding the still-developing regulatory process of the Internet, calling for a way to regulate the Internet that pleases both government and business.

35. William Gibson’s “Pattern Recognition” (Putnam) contains futuristic tales and a science-fiction style that offer an exciting perspective on modern consumerism. The ‘unevenly distributed future’ of Gibson’s ‘Neuromancer’ is still quite far away, but the world of ‘Pattern Recognition,’ with its massive disruptions of conventional models of markets and media, is where some of us are living now, and where all of us will be living quite soon.

36. “PHP Phrasebook” by Christian Wenz (Sams) serves as a guide to PHP phrases frequently used by PHP developers. It presents short code snippets that illustrate PHP language features.

37. Nassim Nicholas Taleb’s “The Black Swan: The Impact of the Highly Improbable” (Random House) is a new book worth reading for its examination of improbable and unpredictable events that have massive impact. The idea of bracing for unforeseen events is something that could help software developers.

38. The automated testing guide “xUnit Test Patterns: Refactoring Test Code” by Gerard Meszaros (Addison-Wesley).

39. “Continuous Integration: Improving Software Quality and Reducing Risk” by Paul M. Duvall, Steve Matyas and Andrew Glover (Addison-Wesley).

40. “Groovy in Action” by Dierk König, Andrew Glover, Paul King, Guillaume Laforge and Jon Skeet (Manning) is tutorial on Groovy.

41. “I Am a Strange Loop” by Douglas Hofstadter (Basic Books), which examines the concept of a strange loop that the author developed. A strange loop arises when one finds oneself back where one started, involving either self-reference or paradox.

42. “Beautiful Evidence” by Edward R. Tufte (Graphics) is a masterpiece in graphical presentation of complex data and will change how data presenters and designers sense, interpret and display data.

ANTLR

ANother Tool for Language Recognition (ANTLR) is the name of a parser generator that uses LL(k) parsing. ANTLR is the successor to the Purdue Compiler Construction Tool Set (PCCTS), first developed in 1989, and is under active development. Its maintainer is professor Terence Parr of the University of San Francisco.

It is the best modern tool for parsing and can handle a very wide range of grammars by generating arbitrarily deep LL look-aheads and by memorizing them for future use.

There is an IDE for ANTLR called ANTLRWorks and a text generation library called StringTemplate.

ANTLR and ANTLRWorks are written in Java but code generation is abstracted with the StringTemplate library, and lexers and parsers may be generated in a large number of target languages.

Why is ANTLR useful?

Consider the case of handling a quite complex mainframe output with decades of accreted special-case quirks and codes that has locked a client in to a supplier who charges them tens of thousands in annual license fees, confident that no one will breach the barrier to entry of parsing the mainframe data.

With ANTLR and a unit-testing framework you can develop a compiler for the mainframe output in a short time frame by unit-testing both your front-end analysis and your back-end generation from the bottom up, snapping them together as you go and relying on your lower-level tests to catch any mistakes.

You have liberated the client!

Saint Isidore of Seville & Semantic Networks

Saint Isidore of Seville was the first Christian writer to compile for his co-coreligionists a summa of universal knowledge, in the form of his most important work, the Etymologiae with 448 chapters in 20 volumes.

The text was structured on the principle that the meaning of everything could be traced to the source of its name. These etymologies took the form of a series of "trees" (semantic networks in our contemporary parlance), rather like modern "branched learning" techniques, whereby from one one source, or word, the reader could follow the various extensions of what the root word implied, through all its "factual" meanings.

Lovely Scenes

Click on the pictures to view an enlarged one.











































Night Lights


Oakland



Singapore



Vienna



Cologne Cathedral



Los Angeles



London



Copenhagen



Moscow



Washington, D.C.



Toronto



Cleveland



Las Vegas



Chicago



Rio de Janiero



Denver



Petersburg



Paris



Niagra Falls

About Me

My photo
I am a senior software developer working for General Motors Corporation.. I am interested in intelligent computing and scientific computing. I am passionate about computers as enablers for human imagination. The contents of this site are not in any way, shape, or form endorsed, approved, or otherwise authorized by HP, its subsidiaries, or its officers and shareholders.

Blog Archive