Showing posts with label history. Show all posts
Showing posts with label history. Show all posts

Sunday, February 8, 2015

The LISP Connection

"There is a history in all men's lives"
-- Shakespeare, Henry IV Part 2
Act III, Scene I, Line 76


Questions not asked


Why are there so many conference sessions about things to come and how things will get better?

Why are there so many blog posts about what is new and the 5 to 10 things you should know about them?

How many sessions are there that reflect upon the past and what we've learned along the way?

How many blog posts are there about the history of programming and the important lessons we've learned along the way?

What I like about Lisp


LISt Processing is one of the oldest computer languages (FORTRAN is older by a year).  Using LISP or one of its dialects you feel a connection to those programmers and scientist that came before you.

Randall Munroe's xkcd, Lisp Cycles

This sense of connection is an old but very important idea.

What Lisp has taught me thus far


Over the past few months I've been learning Clojure from the Joy of Clojure and now Programming Clojure, here are the things I've learned thus far:


  • homoiconic leads to fewer syntax errors and easier to read code
  • compose functionality from smaller well tested functionality
  • separate assignment of values from actions upon values
I look forward to continuing my path along the Lisp way.

Unlikely credits


Questions not asked and titled inspired by the Rainbow Connection, written by Paul Williams.



Monday, October 28, 2013

Hope Cocktails OR Why We Love Guides

"Rome, thou hast lost the breed of noble bloods!"
-- Shakespeare, Julius Caesar

Friends, coders, methodologist, lend me your ears;
I come to bury experience and knowledge, not praise it.
The work that men do lives after them,

The glories are interred with their retirement parties;
So let it be with experience and knowledge.  The noble methodologies
Hath told you that experience and knowledge are not needed.
If it were so, it was a grievous fault,
And experience and knowledge have been replaced.

Good sir, they say, have you mocked methodologies?!?  Have you gone mad?!?  We sir, like our hope cocktails and will not stand to hear your mocking!

Riddle me this methodologist, why should we follow these principles?!?  What are their genesis?!?

Sir, they say, these were handed down to us from above, we do not question them.

Friends this is a sad, sad, sad state indeed.  Drunken on hope cocktails, these methodologist come and say to us, "Follow me and I will lead you to the promise land, I have access to the secret doctrines and only I can interpret them correctly."

All these statements may be true, they may have access to the "secret doctrines", they may have the ability to "interpret" them correctly.  There is just one thing:

"Where is the master who could have taught Shakespeare?"
-- Ralph Waldo Emerson, Self-Reliance

Who could teach Shakespeare to Shakespeare?  Who taught Virgil to be Virgil?  Who told Homer the Iliad and the Odyssey?

The ancient Greeks having no history or doctrines were able to be truly beautiful.  They were able to soar to heights never reached before or since.  They did not blindly follow, they led and are still leading!

"Sing, O goddess, the anger of Achilles son of Peleus, that brought countless ills upon the Achaeans."
-- Homer, The Iliad
Book I, Line 1

Sing goddesses of men that were truly beautiful.  Men that gave us the Sciences.  Men that gave us the very idea of History.  Men that gave us hope.

"Only Hope remained there in an unbreakable home within under the rim of the great jar, and did not fly out at the door"
-- Hesiod, Works and Days, Line 96

Hope not in a cocktail, the thing itself, the authentic thing.

True experience and knowledge, the kind which builds worlds, cannot be drunken down, it can only be lived.  True experience and knowledge, my friends, becomes one with us.  It is created, not drunken in.  It is made true to oneself.  It cannot be disproven since it is part of one, it becomes one's duty.

"It is far better to discharge one’s prescribed duties, even though faultily, than another’s duties perfectly. Destruction in the course of performing one’s own duty is better than engaging in another’s duties, for to follow another’s path is dangerous."
-- Bhagavad Gita, 3:35

It would be better to be destroyed than to follow!  For blindly following is worst than not existing, it is not even being.  To follow another's life, to not be authentic, is to not even exist.  Live your life, your experience, your knowledge.

Fellow developers, do you know why you do a daily stand up?  Is testing first part of who you are as a developer?  Is continuous integration part of your definition of done, even if it is not required by your team?

Beware my friends for it is far easier to drink down hope cocktails than to gain true experience and knowledge.  It is often hard to tell at first who is buzzed on hope cocktails and who actually has true experience and knowledge.  You can tell a drunkard when they pererrat to another cocktail and quote new sages, this herd will be moving to new pastures, grazing on new hope cocktails, worshipping new idols.

"Man is timid and apologetic; he is no longer upright; he dares not say 'I think,' 'I am,' but quotes some saint or sage."
-- Ralph Waldo Emerson, Self-Reliance

Sunday, October 6, 2013

A View on Perfection in Software

"For those that could speak low and tardily
Would turn their own perfection to abuse
"
-- Shakespeare, Henry IV Part 2
Act II, Scene III, Lines 26-27

Perfection, the enemy of all.  What, did I just call the most glorious search of all the enemy of all?  What am I mad?

I have bad news for you, that glorious search for perfection, those months modeling and modeling the perfect enterprise solution.  You know that perfect solution which will allow for enough flexibility so that it will last for thousands of years!  It does not exist!!!

There is no such thing as perfect in this world. That may sound cliché, but it’s the truth. The average person admires perfection and seeks to obtain it. But, what’s the point of achieving perfection? There is none. Nothing. Not a single thing. I loathe perfection! If something is perfect, then there is nothing left. There is no room for imagination. No place left for a person to gain additional knowledge or abilities. Do you know what that means? For scientists such as ourselves, perfection only brings despair. It is our job to create things more wonderful than anything before them, but never to obtain perfection.
-- Tite Kubo, Bleach, Chapter 306, Pages 4-6
Wait did I just quote from a manga, a cartoon?!?  Worst, that quote from a cartoon has said that our enterprise solution which cost millions to model and design.  The solution that will last for ever!  That very solution was a waste?!?

In one almost word, yep!

Here I'll give you a quote from a well respected [sic] man, which more less says the same thing.

"In his writings, a wise Italian
says that the best is the enemy of the good
"
-- Voltaire, La Bégueule

Good sir, this is no laughing matter, you sir have stated that our pride and joy is nothing.  Even worst than nothing sir, you say that it was pointless, that it was unscientific, that it was a journey to the deep realms of despair.  You sir are a scoundrel and a ruffian!

Give me a minute or so to explain myself.

Let us take a look at the distribution of matter in the early universe (I know, it will be worth it, trust me).

Here is a picture from NASA which shows us what is believed to be the distribution of matter in the early universe.


OK, what do you see?

Maybe this picture which is also from NASA will help.


What we have here is the timeline of the universe as we currently understand it.

What do we see?  In the first image of the early universe we see that the distribution of matter is not even.  If it was even it would all be one color.  Now the differences are not large but they are there.

And birds go tweet, what else do you have for us sir?

Just that this uneven distribution of matter in the universe is what has brought about everything.  Yep, everything!  Looking at the second image showing the timeline of the universe, we see that this unevenness in the distribution of energy is what allowed for the formation of stars, galaxies, planets, humans, ... everything!

That is all well and fine sir, but what does this have to do with modeling and enterprise architecture?

Well, the early universe was imperfect!  In fact, the universe now is not perfect.  If the universe was perfect, we would not exist.

I'll repeat that.

"If the universe was perfect, we would not exist."
-- Me, paragraph above

All fun and wit aside, we find that we are standing on the edge of a deep chasm.  Perfection cannot exist in imperfection.

What?!?

You cannot create something perfect out of something imperfect.  If you were to be able to create perfection using imperfection you would need something from outside of the imperfection.  See also Gödel's Incompetence Theory (which does not in any way state that, but I believe it will be show as a conclusion that can be made from it, some day).

Sir, you say, what does this have to do with our modeling?

"Have no fear of perfection - you'll never reach it."
-- Salvador Dali

Your modeling will not be perfect, in fact you should do just enough to get an understanding, if any is done at all.  When all is said and done, we need working software not "perfect" pictures.  This is the 2nd principal of the Agile Manifesto, "Working software over comprehensive documentation".  As Brian Marick quotes from Anonymous (which I must say, I have never seen both Brian and Anonymous in the same room at the same time).

"[S]oftware people ... seem [to be] embarrassed to admit that, at some point in the proceedings, someone competent has to write some damn code."
-- Brian Marick quoting Anonymous

It is embarrassing to admit, we need working software not "perfect" documentation.

Do not go looking for perfection, it does not exist.  Instead look for the good and usable, it is much more fruitful.

"If you look for perfection, you will never be satisfied"
-- Leo Tolstoy, Anna Karenina, Part VII, Chapter IV

Saturday, September 28, 2013

A View on Software "Best Practices"

"He is noble, wise, judicious, and best knows"
-- Shakespeare, Macbeth
Act IV, Scene II, Lines 16

Being in the software industry for a few years now, I've seen my fair share of "Best Practices" come and go: RUP, UML, CMM, Scrum, Agile, Lean, ITIL, ...  What you say, "Sir we have just starting using one of those 'Best Practices' you have said have come and gone and we have never been better!"  Perhaps.

"In his writings, a wise Italian
says that the best is the enemy of the good
"
-- Voltaire, La Bégueule

But sir you say, "What does a dead French man have to do with our newly implemented 'Best Practice'"!  Everything!

The best is the enemy of the good, in fact as Sir Robert Watson-Watts say, "Give them the third best to go on with; the second best comes too late, the best never comes"!  Surely I jest, the third best, why not just the worst or the worst worst, why even brother at all?!?  How could any enterprise live with the third best?!?

Question, do you even know what the third best would be for you?  Do you know yourself well enough to know if something is even the third best for you?
As the Temple of Apollo says, Know thyself!  Know thyself, one of Apollo's most deadly arrows.  I know you do not have time for philosophical crap, but the question is still valid.  If you actually know yourself, as you are now not as you want to be, it would be easy to chose practices that work for you.  Practices that work for you as you are now, as you are as a being in this time, at this place, in this context in history.

I know, no philosophical crap!  The point is that truly knowing, you cannot lose.

"If you know the enemy and know yourself, you need not fear the result of a hundred battles. If you know yourself but not the enemy, for every victory gained you will also suffer a defeat. If you know neither the enemy nor yourself, you will succumb in every battle."
-- Sun Tzu, The Art of War, Chapter 3

As Sun Tzu says, knowing yourself is not enough to truly find a best practice (yeah, I just used that term again), you must also know the context in history.  What is the situation, who are the players, what is needed, what do you have, ...  In less words, the context in history.

"A very popular term within the IT community is 'best practice'. It's a wonderful marketing term, how could someone possibly argue about adopting a best practice, but does the concept really make sense? I'm not so sure. There are many examples where a practice that is considered "best" in one context is questionable within another."
--Scott Ambler, Questioning "Best Practices" for Software Development

Scott Ambler is championing context in history and knowing thyself.  There are many different ways to see things.




From one point of view, four 2x4s on the ground next to each other is the number 4, but from another point of view there are 3 open spaces created.  Seeing both points of views at the same time, one is able to chose which point of view is best for them in their current historical context.

Have we gone off the topic at hand?  What about Software "Best Practices"?  Today's "Best Practices" as a colleague of mine, Dave Smith pointed out,  "Today's 'Best Practices' are just the currently generally acceptable practices".



A Software "Best Practice" is often just something that can broadly work and has been attempted to be generalize and sold to different companies.  If you know yourself and know the context in which you exist, then you would be able to pick and chose the best bits of different practices that are applicable to you and your current context.  If you find that one does not work as you thought it would, then do as the old joke goes, "Doctor it hurts when I do this.  Then stop doing that"!

Sunday, September 22, 2013

A View on New Software Projects and Run the Business Work

"He'll shape his old course in a country new."
-- Shakespeare, King Lear
Act I, Scene I, Line 187

"The thing that hath been, it is that which shall be; and that which is done is that which shall be done: and there is no new thing under the sun. Is there any thing whereof it may be said, See, this is new? it hath been already of old time, which was before us."
-- Ecclesiastes 1:9-10

Somehow most of my professional career has been spend doing new software projects.  To me a new software project is one in which at least one thing is brand new which is being brought into the organization by IT.

Examples of new software projects

  • new middleware
  • new release tool
  • new business system

From my point of view, for even if I could say to have an understanding of someone else's point of view it is still my understanding of their point of view and not there actual point of view.  From my point of view, new software projects are a bit like asking someone to order lunch for a meeting and giving them a couple thousand dollars (obscene indeed).



For a couple thousand of dollars that lunch better be really good and it better be there on time or a bit early.  O-and there will be hell to pay if there are any olives or if it is not from that new place down the street that just got a 27 from Zagat!

New projects typically have some type of tight deadline, which more often than not is self imposed.  There may or may not be a real reason for the deadline, but it will typically be tight.  Sometimes someone very high up wants to make a good impression (and get a promotion after the project is done) or there is some feeling that since you are using this new magical tool everything will be done like "that"!

If you are on a very large new project you'll more likely than not will bring in outside help.  As Niccolo Machiavelli tells us this is dangerous.

"Mercenary and auxiliary troops are useless and dangerous. Mercenaries are “disunited, undisciplined, ambitious, and faithless.” Because their only motivation is monetary, they are generally not effective in battle and have low morale. Mercenary commanders are either skilled or unskilled. Unskilled commanders are worthless, but skilled commanders cannot be trusted to suppress their own ambition. It is far more preferable for a prince to command his own army."
-- Niccolo Machiavelli
The Prince, Chapter XII

The people you bring in to help in general do not really care about you, your project, or company; they are simply there to get paid!  It is rare, but there are some consultancies that seem to care, but this is the exception not the rule!

That is one of the biggest advantages with run the business work, the people doing the work will have to live and breath in the same environment which they are creating.  If you have people who really care they will follow the Boy Scout Rule:

"Always leave the campground cleaner than you found it."-- as quoted by Uncle Bob
Clean Code

This means the more people who really care work on a legacy system, the better it will get!

Working with run the business type of system is like have a meeting over lunch because one of the key stakeholders is not available any other time in the next two weeks because they are going on vacation.  The person setting up the meeting is really sorry, in fact they are so sorry they bring in lunch for everyone.



No one expects much more than keeping things going from run the business type work.  Meaning you'll get to do what you think makes the most sense for the work at hand and often they are understanding if things take a little longer because the system is a little quirky.

The non-conclusive conclusion is that both types of work have there pros and cons, but if you understand what type of work you are doing and what the world will be like doing that kind of work you can fully throw yourself into it and make it the best it can be.


Saturday, July 11, 2009

Is 0 positive, negative, or neither?

Zero as an idea that has a history of not being well liked (e.g. How can nothing be something?). You see people throughout history dislike the idea of nothing. Nothing is a scary and uncomprehensive idea for humans.

Despite all this, zero is said to be neither positive nor negative, instead it is neither (none of the above). Why is this? You see the idea of zero is that zero is a position on the number line. If you extended the number line out from negative infinite to positive infinite, zero would be in the exact middle. The best way to think of zero is as a place holder (in fact this is believe to be how zero got it start) between positive and negative numbers.