optionsScalper

verbose=on, snakeOil=off, pontification=on, humanIntelligence=off

Subscriptions

<August 2008>
SuMoTuWeThFrSa
272829303112
3456789
10111213141516
17181920212223
24252627282930
31123456

News

I have been having problems with comments. If you need to comment, please see the contact button at the top of the page.

Navigation

Post Categories

About Me

JJBR

Articles

Milwaukee Bloggers

"Gentlemen" bloggers

GA/GP/EC/ML

Sensible People

F#

Math, NT, GT, TOC

Security Blogs

DirectX/Game Development

Saturday, May 14, 2005 - Posts

Please tell me Relational Algebra is not dead

It seems that a lot of "database guys", i.e. software developers, architects, DBAs, etc., lack an understanding of Relational Algebra (RA) and Relational Calculus (ok, at least two kinds of RC). If you fancy yourself an architect, have experienced database performance issues, have used the word "normalization" but don't have an idea what RA and RC are, take a moment here.

Let's start with the fundamentals. If you think that you know what a function and a relation are, double check by looking here. After reading this page, you should have a clear understanding of Set, Relation, Range (or codomain), Domain, Function, Surjection, Injection and Bijection.

Let's continue. RA and RC need some formalization. I won't even attempt to provide definitions because someone else has done a great job: Relational Algebra, Domain Relational Calculus and Tuple Relational Calculus. I use Tuple RC for any work that I formalize.

E.F. Codd introduced RA and RC in 1972. Codd is generally considered the father of relational database theory and relational databases. Simply put, an implementation of a relational database receives SQL statements (RC), transforms the statements into query plans (RA) and executes the plans through the query processor. There's a lot more going on in the database than this simplified version attests to, but it is important to note that statements are made in the RC and transformed into RA. If you want more information, purchase "An Introduction to Database Systems" by C.J. Date.

It's also important to note that SQL is a less than complete form of the RC. Cunningham's wiki is a definitive source for a great deal of information, but this page distracts from the problem. I'm not sure that this is the proper way to think about SQL as well. I'm not interested in taking a swipe at Fowler or Cunningham because I learn a great deal from their work. The problem is that SQL does not implement RC entirely and completely.

I could stop here, but I think I should include coverage of normalization.

There are six common rules that define precisely a relation in relational database practice:

  1. Each attribute stored in the relation is single valued. At a row-column intersection in a database table, one and only value is held.
  2. The order of attributes (columns) is not significant.
  3. The order of tuples (rows) is not significant.
  4. All values for a given attribute (column) must be of the same type (domain).
  5. All attribute (column) names must be unique.
  6. All rows are separate and distinct, i.e. no two tuples in a relation are identical.

In Yoda-ese: "This do and have relations you will. Do it not and forever you will be haunted by the chaotic-data side". If your data in your database satisfies these six rules, not allowing for any subjective interpretation, your data is said to be a relation. For those who subscribe to the practice of normalization, these rules must be satisfied for your database to be classified as First Normal Form (abbreviated as 1NF or NF1). Please note that NF1 historically referred to database systems that followed the above rules except for #1.

Another (and more comprehensive) view of normalization can be found here.  In fact, the wiki editors have asked that this page be "dumbed down".  DON'T DO IT.  It covers the essentials.

So stop looking at your data as though it was magically allowing the database to store it. The RA and RC used to construct the database and manipulate the data are formal disciplines. These principles should be used in your applications as well. Take the time to learn these. I promise that they will make you a better person. And your mom will love you all the more . . .

posted Saturday, May 14, 2005 8:01 PM by optionsScalper with 4 Comments

Turn on your virus protection

There are a great deal of funny sites on the web and everyone has their favorites.

A good group of crypto guys have a site that has been around for awhile.

http://www.digicrime.com

But make certain that your best virus protection is enabled,

and hope its sufficient . . .

posted Saturday, May 14, 2005 1:12 AM by optionsScalper with 0 Comments

Milwaukee Bloggers

Say hello to the .Net Milwaukee gang:

brains-N-brawn.com - Mr. MVP Web Services, pocket pc, worldwind in your hand, directX, .Net for strippers, compact framework and mr lower case.

The Agile Developer - THEE pattern-happy guy, good luck with your start at ThoughtWorks.

Brian Tinkler - Outstanding sales and marketing guy and runs the Wisconsin Midwest Regional Ineta (wtg on the promotion). This guy thinks like a geek and sells like a maniac.

Gerry Heidenreich - .Net developer doing amazing things at that there lawfirm (lawyers are so easily impressed, eh?)

Scott Isaacs - Mr. TapMyMind. Local .Net developer on the rise. Also my hosting guy: www.oochie.com.

I know of others and will link them as I can.

posted Saturday, May 14, 2005 12:44 AM by optionsScalper with 0 Comments

SMC: Handling metaphors

I'll borrow a movie line here. In "As Good as it Gets", Jack Nicholson plays a writer with obsessive-compulsive disorder with extreme OCD tendencies. As he is waiting for "his" table at the restaurant where he eats breakfast every morning, he finds two squatters at this "his" table. He has to decide whether to interrupt their breakfast, or wait for his table. His OCD gets the better of him and while eavesdropping on their conversation, blurts out "People that speak in metaphors should shampoo my crotch".

I share Jack's character's opinion. I think the metaphors convey knowledge that allows for knowledge association in learning. But metaphors are usually overbearing and don't provide for original thought. So I'll try to hold the metaphors to a minimum.

Anytime you see a post labeled SMC (Shampoo My Crotch), its a metaphor post. I'm not asking the reader to "shampoo my crotch", but rather I'm expecting a BUNCH of SMC responses.

By the way, my daughter recognizes metaphors in our conversations. I'm always amazed when she moves to another level of sophistication in intelligence. As a practioner of Emergent Computation where a (nearly) daily activity is observing, hypothesizing and evaluating emergent behaviors in (high dimensionality) agent based simulations, I observe this promotion less frequently. Are my observations of my daughter's development a new insight for EC agents? Is the expression of metaphor an observable emergent event (OEE)?

posted Saturday, May 14, 2005 12:33 AM by optionsScalper with 2 Comments

Introduction to Genetic Programming

Genetic Programming (ok those that are interested in .Net GENERIC PROGRAMMING may stop reading) is a discipline in artificial intelligence and is considered an adaptive system. The research for GP can be traced back into the 1980's, but the father of GP is undoubtedly John Koza.

Adaptive systems throughout the years have been met with both optimism and skepticism. I will focus on the optimistic side of adaptive systems, i.e. I believe that adaptive systems provide beneficial opportunities in usage and application.

The formal work that I have studied and practiced is as follows:

GA (genetic algorithms) since 1993
CS (classifier systems or learning classifier systems or LCS) since 1993
GP (genetic programming) since 1994
AL (artificial life) since 1995
EC (emergent computation) since 1993
NN (neural networks) since 1993 (but only sparsely for three years over this period)

So, I’ll try to provide some insight into my usage and research of GP.

posted Saturday, May 14, 2005 12:20 AM by optionsScalper with 0 Comments

Euler's legacy

Leonhard Euler (pronounced "oiler") was a great mathematician who lived in the 1700's.

He is said to been one of the most prolific authors of mathematics in history. I'm always amazed that as I work in mathematics, many of the problems I uncover and their respective solution can be traced to Euler directly or indirectly. While I have admired many mathematicians of note, including Erdos, Gauss, Church, Kleene, Turing, Cantor, Godel, Von Neumann and MANY others, Euler is THE MAN.

This begs the question: does one need to be dead to earn respect in mathematics?

Euler bios can be found here:

e + 1 = 0

              . . . enough said.

posted Saturday, May 14, 2005 12:10 AM by optionsScalper with 2 Comments

Welcome and Introduction

Welcome to my blog.

verbose=on: I tend to be verbose in most of my posts. Many of my friends will likely paraphrase my verbose posts down to one or two sentences.

snakeoil=off: I will not publicly present opinions or debate issues that I believe I have not taken the time to learn thoroughly. If the subject is one that is of interest to me and I'm underinformed, I'll gladly state this fact and ask for direction from the readership.

pontification=on: I tend to get up on the soapbox and speak from a position of authority. If I don't belong there, please kindly ask me to step down so that I can become better acquainted with the topic.

humanIntelligence=off: I'm a proponent of AI, particularly weak-form AI in Genetic Programming with all of its fragility. I'm also a proponent of the application of adaptive systems to "difficult" problems. I hope to cover a great deal of material on this topic, both for the novice who needs a gentle introduction and for the academic/advanced who may or may not share in my views.

I'm typically a private person, so this blog runs counter to my personal code of conduct. I have worked in capital markets for part of my career where the mantra is "Never let them see you coming". But I also believe that to find and collaborate with one's peers or to acquire new friendships and disciplines, one must communicate. Hence this blog. Furthermore, against my better judgement and against the advice of friends, I've done fine-grain categorization of my entries by interests. Since the interests are diverse and I'll likely not find others with the "same footprint", I feel that these categories help for specialized feeds. Please let me know if they are a help or a hindrance.

Quick backgrounder:

I love mathematics in (almost) all of its forms. I love the history of mathematics and learning of those who have contributed to this discipline. Number Theory, Graph Theory, Ramsey Theory, Algebras, The Theory of Computation and other areas are my interests. Hilbert, Gödel, Von Neumann, Cantor, Euler, Gauss, Erdös and others are the tip of the iceberg in my readings. I, at my best, am only a flailing, amateur mathematician.

As mentioned above, I've done work in AI dating back to 1993. This work is heavily based in the disciplines (in order of interest) of Genetic Programming, Emergent Computation, Artificial Life, Genetic Algorithms and Learning Classifier Systems. I've done work in Neural Networks, Bayesian Networks, Expert Systems, blah blah blah (for all of the strong-form AI) and have found either limited value or limited usage in these disciplines.

Cryptology is another area of interest. I have found that cryptanalysis is what I truly enjoy in this discipline. I find myself lacking the time to develop a significant competence in this area.

I am a .Net guy. I say .Net "guy", because I'm agnostic in matters of technology platform. Microsoft provides a low cost, comprehensive platform for software professionals. In recent times, I've done development in Visual C++, Visual Basic (4.0, 5.0, 6.0 please don't tell anyone), .Net C#, a bit of DirectX (3.0, 7.0, 8.0, 9.0), some of the new Longhorn/Whidbey technologies and a whole lotta BizTalk. I've worked in a lot of other .Net technologies and servers, but this isn't my resume. I have been a proponent of contract-first SOA (not everywhere in SOA, but in the appropriate layers) ever since BizTalk 2000 Beta showed me the way. Along with being a .Net guy, comes interests in SOA, AOP, Patterns and game development. I have misgivings about the state of current software design patterns and analysis patterns and their lack of mathematical foundations.

I'm a database developer. I have done significant work in SQL Server 2000, 7.0, 6.5, etc., Informix, Illustra and Postgres and Oracle. I BELIEVE THAT DATABASES ARE ABOUT RELATIONAL ALGEBRA AND (TUPLE) RELATIONAL CALCULUS FIRST AND FOREMOST. Graph theory and set theory are necessary for a comprehensive understanding of databases. PERIOD. Any other silly little studies of databases are just noise.

Finance is another discipline where I've done time. I've truly enjoyed my time in software consulting to asset management firms, hedge funds, investment banks and others in the capital markets. This time has been spent in the construction of front office and middle office software on many platforms in many financial disciplines.

I have an interest in Language, Philology and Linguistics. Most of my "upscale" friends speak more than three languages. I'm pitifully weak and am fluent in just one, American English. I've had exposure to and can read some Russian, German, Italian, Spanish and French. So, Slavonic, Germanic and Romance languages are the only exposure I've had. I'd love to find the time to become fluent in Russian, German or Italian. But my interests also lie beyond learning "foreign languages". I'm interested in linguistics, natural language processing and the "deep knowledge structure" that languages describe at the edge.

I have not had enough time to fill the void in my background in philosophy. I at heart am a Continental Rationalist, but I have empiricist tendencies. I have a significant amount of information to read and synthesize on this topic. I'll likely not address the topic of philosophy in this blog directly, but rather my philosophies will come to bear in my approach(es) to other disciplines.

Finally, I'm a single dad. I have a teenage daughter that constantly reminds me why life is both beautiful and complex. I love her dearly and she knows it.

posted Saturday, May 14, 2005 12:01 AM by optionsScalper with 2 Comments

Powered by Community Server, by Telligent Systems