Thank you Mr. Musk

As a human alive on earth at the beginning of the 21st century I would like to extend my heartfelt thanks and appreciation for what you have been able to accomplish, because it has done so much to give humanity a fighting chance and to give a push to others to think of the future.  Your two companies, Tesla and Solar City are going to change humanity for the better.  Its not easy to do what you have done and as a failed entrepreneur I don’t even understand the basics of how you have done it, but, I recognize it for what it is:  akin to human evolution.

Before Tesla the idea of a main stream electric car was a footnote.  Most of of us are aware that cars were originally Electric, Steam and alternate powered and it was the oil interests who latched on to the internal combustion engine for dear life for the last 100+ years.  However, that hold was always tenuous at best and fraught with dangers for the species.  We are only now recovering for the crime wave brought on my leaded gasoline (and it is definitely a part of the chaos across the world where it is still available).  We are slowly rebuilding our public transportation system.  Shifting to electric cars is a small part of the energy picture, but, it had the effect of opening us up to the next big step: off the grid.

The massive, error prone electrical grid was another monopoly that was forced upon us to our detriment.  However, you are now showing us the way forward.  The combination of solar power and long term battery storage is going to end the municipal power industry (if hackers don’t do that first).

Thank you Mr. Tesla.  Thank you for not only showing us the way, but, also giving us a swift kick forward.  I can’t wait for what else you are working on and I look forward to all others who follow you.

Sobering details of the startup

For those who know me personally you know that I haven’t been able to shut up about this platform that I have been working on for the past few months.  Its been a lot of hard work, especially because it was happening after I would do  my 9 to 5.

Unfortunatley, a competitor has gotten to market with a product very similar to ours.  But, if you know anything about people who try things like this, thats just water on a ducks back.  We are aware that the market has changed, but, we are still convinced that we can develop a viable platform and a good company.  You see thats what we are really after, not so much to be the most well known or to be the most profitable, but, just to be sustainable and reputable.

At this point I only have the following advise:

  1. Do something you believe in.  Don’t be caught doing something that you wouldn’t want to be doing when you die.
  2. Remember that the race belongs to the dedicated and wise, not the quick.
  3. You have to be doing this for a reason other than making money, because frankly you can make money selling internet porn or as a mail carrier.
  4. God rewards those who pursue their dreams with a singular conviction.  You may not get exactly what you thought you would get, but, trust me it will be something so much more worthwhile.
  5. Don’t limit yourself to just what you can imagine.  There is a whole universe out there and you can’t imagine what the boundaries of it are and of where you might fit into those boundaries.
  6. Have a fine German Ale every once in a while, it will reboot you very quickly.

Best of luck on your adventures my friends, I am actually enjoying my own.

Starting it up, Verizon Iphone

I am as shocked as anyone that the Verizon Iphone is a reality.  Its very good news for Apple.  I am not so naive to believe that it will have any impact on the growth of Android.  Android didn’t grow because of an absence of competition, but, because of the strength of the platform. 
For those that know me personally, I’ve been working on a great platform idea.  I wish I could say more, but, eventually it will be all I will talk about.  I am happy to be back in the game, its a lot of fun being at the start of something.  Its a chance to jump into something exciting.

Google Interests launches

The first version of one of my side projects is now up on appspot.  I created this App, because I wanted a way to conduct data mining of particular subjects that interest me.  In essence the app does diffs of Google search requests over time.  It gives a way to store and visualize the Google search history of terms.  These terms become an “interest” with the inclusion of a NLP element.  Terms can just be what you choose, but, the idea is to use an NLP engine to use your search terms and create a better query using some NLP’s engines notion of taxonomy.  The NLP component has not been implemented yet, but, the search history has.  I’m still working on the guts of this App, so please be gentle.

Its my first GWT app as well so it has provided an opportunity for me to learn a lot.  This App is my focus right now since I am using such good tools to develop it and learn so much in the process.  I am looking for UI designers and HCIL experts to help me design the interface so if you are interested please drop me a note.

Computing is getting smaller

Computing is getting smaller.  Ten years ago when you would plan an enterprise system we would plan in terms of how many physical boxes we would need to serve the need of x users.  For example, we would say that to server 1000 simultaneous users we would have one application server box, one  database server box, and two load balanced presentation servers.  So if our client need was 5000 simultaneous users  then we would know that we are talking 5 times of many boxes (e.g. 20 boxes).  This was a significant aspect of solution design and it was very much a limiting factor.  It meant that there had to be time and resources for integration (installing OS, application libraries, and applications on one box is time consuming:  now imagine on 20 boxes) accounted for in estimates.  You had to factor into your solution how much it would cost for the hardware.  That’s why all shops back then usually had large it infrastructure resources on hand.  For you to create an enterprise solution you had to maintain a shop that you would only use for a small portion of your development all year round (there was little outsourcing of it back then).  I am not even talking about something at the scale of a Google or amazon either.  Medium size applications (5000 to 100,000 simultaneous users) would need these resources.  Otherwise you would not be able to create a solution quickly.

The result of all this is that the typical development effort would have a full complement of developers as well as a sizeable on site hardware and hardware staff complement.  It also meant that any discussion of a new solution would require hardware folks in the discussion.  Capacity planning was very much in the domain of the hardware folks.  Typically you would spec out a list of boxes needed and an expected load per box.  The hardware folks would take that and return with a hardware requirements list.  Computing back then was a big effort because even before you started there would be several servers sitting around with staff supporting them.  During the development even more hardware and staff would be added.  Once you were done there would be typically more hardware and staff as well.

Today, we still need infrastructure to support of solutions.  However, the effort is much smaller.  I can seriously say that I can plan and implement a solution on the same scale of a medium size solution from ten years ago without either consulting any hardware folks and without adding a single physical box to my infrastructure.  In fact, depending on my market goals, I may be able to do this without spending a single dime initially.

What has caused this sea change?  A few things.  The first is undoubtedly virtualization.  I can remember the first time that sysadmin and I worked on deploying virtualization software in this infrastructure where I was a team lead.  It was at my request, because I was frankly getting pissed about how long it would take for me to get hardware to just test out new software solutions.  Eventually at that site we got a huge Dell sever with 16 gigs of goodness that ran at least 4 virtual servers.  That sysadmin may not have realized it, but, the moment we got that box my reliance on him to deploy new solutions immediately became zero.  With a few mouse clicks I could configure and deploy a new box and automatically size it to whatever my application needed.  I would tell any sysadmin that if they are worried about job security don’t give a person like me a virtual server to play with as I will likely never need your help with anything ever again. 

The seond thing is cloud computing.  Actually you can think of cloud computing as an obvious extension of virtualization.  However, there is a way in which cloud computing has achieved a sort of critical mass.  With virtualization you basically end up with a bland server that still has to be configured for your apllication needs.  You still have to make that application server provide all the services needed for your application.  If you want a cron type process running in the background then if its a windows box you will have to create a scheduled task or Windows Service.  If you want access to a sql like data access layer you will have to install some db server and then set up authentication and whatever database objects that you need to exist.  The point is that a virtualized server will still need to be configured for your application and that will require additional software and configuration before you get to the point of focusing on your domain problem.  Even for some of the brilliant development tools like Ruby you still have to deploy Apache.  However, the cloud changes that.  All the cloud implementations start out by providing you all the services and abstraction layers that you could ever imagine for creating an application.  Out of the box you begin by working only on your domain problem.  No need for an authentication layer, a job monitoring layer, a message queue layer.  All of these facilities are included.  In fact the only piece of software you will spend much time with is a development tool for whatever language the cloud supports.  E.g. if its the Google cloud you will be using Eclipse running either Python or Java.  Clouds also abstract away hardware.  In fact hardware becomes an abstract concept that is only referred to in terms of CPU cycles or concurrent users.  As a developer you focus on this when it is absolutely necessary:  when your application users need more performance for an already deployed application.

The third thing that has changed can best be described as the growth of XRX.  The web is a platform.  This is also a good way to look at the components that make up a domain model based solution.  In fact this is a natural way to look at a problem in a domain based way.  I wont get into a discussion of why I think a domain model specific way is a natural way to look at problems.  However, I will say that this is exactly the basic premise of all the cloud infrastructures that I have experience with.  The focus is on getting the developer to think on their problem domain and then constructing data models and processes on those data models.  10 years ago if I was planning an application so much time would be spent on specifying hardware, bandwidth, application libraries, etc, that by the time we would get to actually writing in any domain specific way it was usually towards the end of the application effort.  By then any notion of a problem domain was very much influenced by all these other hardware and application library constraints.  Today, the problem domain can pretty much be your only consideration.  Hardware specifications and application library constraints are not a limiting factor anymore.  For a developer it is very freeing as we spend time doing what we should be doing:  problem solving.

Why do I say computing is smaller.  Well its because the effort to create something like a Facebook can literally occur at my dinner table with no more than myself and some other developers involved.  We don’t need a dedicated server team.  We don’t need to spend our capacity planning effort on speccing servers.  yes, there are still giant servers in some data center somewhere.  However, I don’t have to think about that till my app has been up and running in the cloud long enough to necessitate additional capacity that I will then hopefully have enough revenue to pay for.

Change makers

In the pursuit of anything noble the only true success is when things are done that remain true to the visions of the leaders.  Watered down and compromised actions offer little benefit to those who are looking for a change.  It is better to do nothing than to do just a little.  At least if a need is still there a future leader with stronger conviction will be able to do something about it.  In a lot of the arguments you hear when there is weak leadership a common theme is a lack of conviction.  If you don’t truly believe in the change you want to achieve then don’t bother attempting it.  An important corollary to this is that you must seek out things that have been successful for other leaders in order to guide you on your path.  No two good solutions will be exactly alike, however, there is much inspiration in seeing how others deal with slings and arrows. 
True change comes from those who stand up with conviction in what they believe in and do something that improves life for other people.  Everything else is side show and not worthy of dedicating a life to.  I have never seen a true change maker have it easy and not face stiff opposition.  I have also seen many with weak kneed conviction crumple before even timid stresses.  I encourage all who want to change things to stand firm and make their cases heard in simple language.  Otherwise don’t waste our time with foolishness.

Beautiful Things

For those folks who know me, I hope you still consider me a friend since I have pretty much disappeared off the face of the earth in the last six months.  It seems a lot has changed in my life in the last six months.  Someone has entered my life that has really made a difference.  I have been keeping a low profile for the last 3 years, but, I am really low profile nowadays.  I basically save all my time for work, her, and school.  Really its all about her.  We are coming up on six months now and I am trying real hard not to seem to talk about nothing but her.  This past week I have been reminiscing on how things are different for me now and how much I love having her in my life.  I know I usually talk about software in this blog, but, this post is a little different.  I love her.  She makes me as happy as any well written code.  These things are not comparable I suppose, but, when I think of things that make me smile she always comes to mind.  There was a time in my life when software was all that came to mind.  Looking back I can see how I must have missed the point of a lot of things.  Believe me when I say the right person can truly change your life.  I don’t know the audience for this blog, but, if she sees this I just want her to know that I care for her deeply and want to have other things to say about her another 1000 six months from now.

Thoughts on software

.Net web development frameworks


Why no one uses webforms

Castle Framework   Who gives a damn about viewstate

Went through the usual suspects.  I was looking for something that supported MVC, TDD, domain driven design and had nhibernate support.  Castle handily has support for all this.  Took a look at the spring project, but, I’m not that into aspect oriented (Can you name one major aspect oriented developed project?).  Are there too many frameworks and methodologies out there?  There is one train of thought that anything worthwhile is necessarily simple in its makeup and explanation.  I agree with this except I don’t think the proper methodologies are emphasized in computer science.  People are very caught up in buzz words, but, they don’t realize that there are a lot of people working on ways of making their work easier and worthwhile.  That it comes out in a variety of shapes and forms, is not an indication of merit, but, a reflection of how many smart people there are working on all this.  A few things that can help the development of maturity in software engineering:

  1. The cathedral and bazaar conflict has to leave the software engineering mindset.  This is a concern that is outside of our work.  We make the products.  Let the bankers, financiers and the like figure out how to sell it.  Software Engineers can no more impact the software engineering marketplace than automotive engineers can impact the automotive marketplace:  sure, we can design new forms and create new trends, but, when it comes down to it, its all about what some individual wants and how much they are willing to pay for it.
  2. The software engineering licensing movement has to move forward.  There are too many kids with bazookas out there.  In the last 60 years we have managed to create a wasteland of broken promises and even more broken systems.  A certain seriousness has to enter into the approach to software development.  Every day, system criticality increases as IT drives more and more of human endeavor.  We have to get serious about creating good software and to do that we need good software engineers.
  3. Intellectual property has to be recognized as an asset of the species rather than as corporate asset.  This may seem to contradict point one, but, let me clarify.  I said nothing about making all software free.  I believe developers should be paid for their work.  However, there must be a new model for what happens to software once its developers have received payment for their work.  Perhaps, we should all agree on some fair use clause that kicks in after X amount of years.  I am very opposed to the idea of perpetual copyrights to software.  Software has to be seen as a human intellectual product.  As such, it should only be protected for a limited amount of time and then released like all other human intellectual products.  The benefits to humanity of fair use far outweigh any financial incentive that any single developers every see in their lifetime (Bill Gates included).  Of course, this may mean a radical adjustment to the economic model for software.  However, this is happening as we speak anyway.  Software as a Service is the latest incarnation of transformations that are already happening. 

Got my subtext blog up

Subtext is Live


Why your isp sucks

While working on thesis first post   Virtual Dedicated Hosting

Subtext is a nice little project The wysiwyg kinda sucks though. I guess they want you to use IE to use this.  No way thats gonna happen.

Anyways, had to install SQL Server Express Advanced Services.  That is some nice software.  Like everyone expects MS is forced to go more and more open source/free with everything.  If I can get Mysql for free, I should definetly be able to get a version of MS SQL for free. 

I can’t stand these old things that people are used to using forever, but, never look into why and how. connection strings is an example of that.  Rather than fix the inconsistencies, MS prefers to make them dumber and dumber for each release.

At some point I am going to take a good look at boo (especially if I use it for my views for monorail).   Dudes write up on his site sounds like an old fashioned communist manifesto:)