Google helps put a stake in the IE6 coffin, finally

If you are a web developer, you know the pain that is Internet Explorer 6. You know how hard and tedious it is to add support for IE6 to your web application and maintain it once released.ie6trash.png

All of the recent browser improvements to Chrome, Safari and Firefox give developers the opportunity to create very rich browser-based applications leveraging HTML5 and JavaScript. The recent announcement from Apple that the new iPad will not support Adobe Flash say a lot, HTML5 is the future.

When the major browser developers standardize on these technologies, our jobs as web developers will begin to get a bit easier. I received an email from Google recently which reflects their stance:

Dear Google Apps admin,​

In order to continue to improve our products and deliver more sophisticated features and performance, we are harnessing some of the latest improvements in web browser technology. This includes faster JavaScript processing and new standards like HTML5. As a result, over the course of 2010, we will be phasing out support for Microsoft Internet Explorer 6.0 as well as other older browsers that are not supported by their own manufacturers.

We plan to begin phasing out support of these older browsers on the Google Docs suite and the Google Sites editor on March 1, 2010. After that point, certain functionality within these applications may have higher latency and may not work correctly in these older browsers. Later in 2010, we will start to phase out support for these browsers for Google Mail and Google Calendar.

Google Apps will continue to support Internet Explorer 7.0 and above, Firefox 3.0 and above, Google Chrome 4.0 and above, and Safari 3.0 and above.

Starting this week, users on these older browsers will see a message in Google Docs and the Google Sites editor explaining this change and asking them to upgrade their browser. We will also alert you again closer to March 1 to remind you of this change.

In 2009, the Google Apps team delivered more than 100 improvements to enhance your product experience. We are aiming to beat that in 2010 and continue to deliver the best and most innovative collaboration products for businesses.

Thank you for your continued support!

Sincerely,

The Google Apps team

This announcement is actually huge, in my opinion, because IE6 is the single browser that haunts web developers daily. Once IE6 is gone we can settle down and forget it once and for all. Google has a nice advantage here, so many people use Gmail, Google Docs and other Google Apps everyday that they will be force to upgrade to a modern version of IE or switch to a different browser altogether, great for us.

The news here seems to finger IE6 but it also notes removal of support for other older browsers too. Good times ahead.


2010 - The Year Ahead

2009 was a very interesting year, a year of some realization and a year which helped lay the foundation for the year ahead and hopefully the future.

I decided to document here a bit of what I have on my mind for 2010, not New Years Resolutions, I hate those and never do them. I have gained a fair following of loyal readers over the years and think of you as family, so I thought I would share with my blog family.

Freelancing

As I said in my previous post, I have been freelancing for many years and in 2009 I realized the ability and desire to continue with freelancing as a full-time endeavor was difficult. I will not be pursuing freelancing full-time in 2010 and as the year progresses I see the time spent freelancing to be less and less.

I will continue to work with selected clients as I have a vested interest in their success. In time I imagine their need for my services will be less and less.

I will be open for consulting opportunities with the possibility of part-ownership in a product and/ or for projects that need help figuring out difficult problems in areas I have expertise in but not limited to .NET to Rails migrations as well as scalable ecommerce systems.

Products

Even before I was in college I have always wanted to have an idea for a product, develop it, successfully market it and support it. I have been involved in a product company in the past but not my own individual ideas. I am sure this sounds self-serving, and it is, but there comes a time when we need to decide what is important and do it.

So, my goal is to primarily be a product company by the end of 2010. The company is Still River Software Company, LLC, which has been the umbrella I have been providing freelance services for the past 3.5 years.

Things are progressing nicely in a couple of exciting areas, so new product announcements will be coming soon. Very soon, but not just yet.

Blogging

I have not blogged a lot lately, been too busy with the business side of life. I will be blogging here, mainly about technology trends and my usual odd opinions about some aspects of technology and may begin to add some business writing as well which covers certain aspects of running a software company.

I will also be opening up a new blog for Still River Software which will discuss very company-specific information, including product releases and such. I will announce it here when it's ready, please check it out.

Conferences

I have not attended as many conferences as I hoped to in 2009, the ones I did attend were developer-related, mainly Ruby. In 2010 I intend to attend more conferences but probably more in line with running a business or software company more specifically. I hope to see you there.

So, I hope the ride is nice and I hope I can report back great success at the end of the year, I certainly expect it.

Technorati Tags: ,

I Am Not a Master but a Solutionist

I stumbled upon an interesting essay by Zed Shaw recently titled "The Master, The Expert, The Programmer" pointed out by Avdi Grimm. One part that stuck out in my mind was this excerpt:

What I notice is that my peers are progressing to more and more complicated and convoluted designs. They are impressed with the flashiest APIs, the biggest buzzwords, and the most intricate of useless features. They are more than happy to write endless unit tests to test their endless refactoring all the while claiming that they follow XP’s “the simplest thing that works” mantra. I’ve actually seen a guy take a single class that did nothing more than encapsulate the addition of two strings, and somehow “refactor” it to be four classes and two interfaces. How is this improving things? How can more somehow equal simpler? This should never be the case.

These are the actions of an expert. These experts are very smart, capable, and skilled, but they are too busy impressing everyone to realize that their actions are only making things worse for themselves. In the end all of their impressive designs are doing nothing but making more work for themselves and everyone around them. It’s as if their work is only designed for getting them their next job, rather than keeping them in their current one.

I agree and have always thought the same. I have seen people turn something simple into something complex that will be difficult to maintain. One of my previous enterprise clients produced solution after solution which was so complex that adding a field to a form took a day with all of its levels of indirection.

So many programmers are like sheep, they follow the herd because they think they should and feel if they don't they will be left behind. In my opinion, developers should stand back from the crowd and be an individual and do those things that work for them.

Personally, I will do the simplest thing I can do to solve a problem within the constraints of the problem domain. This is my best interest because I can better maintain code later and it is the best interest of the client because it costs them less and more likely someone else can support it later.

Solutionist

I currently am working on a project that is filled with tests, some created in TDD fashion, some created after the fact. It seems to me, from someone coming in from the outside, that these tests were created for tests-sake and done for the right reasons. The tests are spread out across the project and are not complete and don't cover all of the necessary business rules. When I look at this it seems like it was a waste of the clients money. If we can't rely 100% on what the tests are actually testing, then why do them at all?

I am also working on a project with very little tests, almost none. This project works very well and shows almost no ill-effects of not having a test suite. I will not get into a holy TDD war, it's not my point. I'm just pointing out how two diverse projects from a test perspective can provide value.

I look at the work I have done over the years, some with full test suites and some without and realize what was done was done with a certain business situation in mind. We don't live in a perfect world business is not perfect, projects aren't perfect and neither are solutions.

We are solutionists and we do the best job we can from the experience we have garnered and what the client can afford. I think this is an important point here, we can't really bang our fist on the table demanding TDD from a client who may not have the budget.

I think we should be creating the simplest solutions we can to fit the needs, and budget of the client. If simple is a one form application, then do it. If simple is a 20 form application with full test suite, then do it. Simple is what gets the job done.

Technorati Tags: ,,

2009 Year in Review

Well the past 12 months have gone by really fast, again. It seems I always tell myself this each New Year's Eve. So looking back on 2009:

Ruby on Rails Consulting

I have made many changes in the past year from a business standpoint, taking on more Ruby on Rails projects and less .NET projects. I think the decision to transition to more Rails projects has been a welcomed change from .NET if only to be doing something new. I have to say the quality of potential .NET projects is a lot higher than Rails, but I'm not sure why. I tend to think it might be because Rails tends to attract too many clients with little or no money, but this is just a guess based on observations.

iPhone Development

I signed up in the later part of 2008 for the iPhone Developer Program with the intention of putting my stake in the ground and implementing some ideas I had for mobile applications I thought would be good on the iPhone.

To say the least I was disappointed by the way Apple has been processing app store submissions and subsequent seemingly random rejections. It would take a lot for me to spend 3-6 months writing an app *hoping* Apple is kindhearted enough to accept it into their store for someone to possibly find. Not going to happen.

I may revisit the platform at a later time if the approval process changes because I think it is a great platform for developing apps, I am just not into playing the app store approval lottery.

Freelancing

I have been doing full-time freelancing for over three years now and 2009 really was a pinnacle of the realization how difficult it can be. The year started off very well but as summer came and things slowed down to a crawl but picked up again in the Fall. It was really a feast or famine time and it has made me realize just how hard it is to juggle the "feast" portion of freelancing.

It has made me realize how much consulting or freelancing does not scale. I can't work 80 hrs a week for any number of clients, the work suffers, health suffers and overall life suffers. A freelancer can only work so many hours at full-speed but when times are tough, it gets really tough.

Unless you can juggle getting work, doing the work and getting more work in a reasonable time frame, it can be tough.

Looking Ahead

I think this is one aspect I need to change in my approach for 2010. Things are already in the works but I won't go into detail right now, but expect news in the coming weeks.

I wish every one of my readers a happy and healthy new year and look forward to 2010.

Technorati Tags: ,,

Fixing Uninitialized Constant MysqlCompat::MysqlRes Error on Snow Leopard

Recently I ran into a problem on my MacBook Pro running Snow Leopard when trying to connect to a MySQL database.  The current version of the gem (2.8.1) installed fine but when trying to use it, I received the following error:

uninitialized constant MysqlCompat::MysqlRes

When trying to spin up a Rails application on my Mac.  I am running Snow Leopard and already had the MySQL gem installed.  A bit of searching around the web led to some information that this is an issue to do with the MySQL driver, in particular mysql-2.8.1.  The explanation came from a thread on StackOverflow.com:

As it turns out, that class should not exist; the error message is caused by a problem with the latest Mysql driver. mysql-2.8.1 looked for my libraries in a directory named with an extra level of 'mysql' at the end. For instance, my libraries (under MacOS X 10.5.8), are in /usr/local/mysql/lib, but the mysql.bundle library looks for the MySQL libraries at /usr/local/mysql/lib/mysql ... which is wrong.

I tried some of the suggestions in the thread which suggested a straight install of the MySQL 2.7 gem but the result was the same.  It seems things are treated a bit differently on OS X 10.5.x and 10.6.x because of the 64-bit goodness we now have, but I was able to resolve the issue.  The first step was to uninstall my current MySQL gem:

sudo gem uninstall mysql

The command is a bit long but we basically want to install the version 2.7 of the MySQL gem and tell it where the MySQL main directory is located as well as where the configuration is located.  This command should be entered in a single line from a Terminal prompt (broken up here for display purposes):

export ARCHFLAGS="-arch i386 -arch x86_64" ;sudo gem install --no-rdoc --no-ri 
-v=2.7 mysql -- --with-mysql-dir=/usr/local/mysql
--with-mysql-config=/usr/local/mysql/bin/mysql_config
Firing up the Rails application worked like a champ after the gem installed.  I would imagine there will be a fix for the MySQL gem 2.8.1 or maybe there is already a workaround I did not come across in my search.  MySQL is working Snow Leopard for my Rails applications, so I am happy.
 
Technorati Tags: ,,

Mindscape LightSpeed an O/R Mapper Done Right

Anyone who reads this blog knows I work with quite a bit of different technologies, some I love and some I just tolerate.  One of the technologies I love is Ruby on Rails, for many different reasons, but one huge reason is the way it allows the developer to interface with a database.   When I create a Ruby on Rails application with even a single migration, I have access to my database tables as objects in my application with very little work.

Now transition to the life of a .NET developer.  Someone given the task of creating a database application with the job of simply adding, updating and deleting records from a database is faced with many choices with very few offering the elegance of a tool like Ruby on Rails.

I was hired recently to create a new web application which required it to be written in ASPNET with C#.  This gave me the opportunity to look at all the key aspects of the application and the first to get stuck in my mind was data access.  Which tool to use on .NET?

I write both Ruby on Rails and ASP.NET applications and transitioning between the two is often difficult when faced with the plethora of ways to access data in .NET, most seem to be more complicated than necessary. 

Microsoft Data Access

Technologies created by Microsoft only seem to make it to market if they are complicated and cumbersome to use, these include:

ADO.NET – Using stored procedures for example.

LINQ to SQL – In my opinion, a real clumsy attempt to give a way to access almost anything by a query language implemented in C# or VB.NET.  You can see by example that no one should have to write these things all day:

var q =
   from c in db.Customers
   where c.City == "London"
   select c;
foreach (Customer c in q)
   Console.WriteLine(c.CompanyName);

Entity Framework – Oh please.  I have only given this technology a cursory look and just have to shake my head in disbelief that Microsoft would create such a mess of complexity, but they do complexity best.

Non-Microsoft Data Access

There is hope though for developers wanting something better.  Technologies like SubSonic and NHibernate offer very different solutions to Microsoft’s vision of how data access should be done.  Both of these are open source projects and have their strengths and weaknesses, and both have their own learning curve.  I have spent some time with SubSonic and it is good product with active development.  I can’t say I have done very much beyond the experimentation stage with NHibernate but I know many folks who love it.

I had been a bit oblivious to work being done with data access and object relational mapping (ORM) in the .NET space.  I came across one tool from Mindscape, a New Zealand based company, with an ORM tool called LightSpeed.  I was a little reluctant because of my assumed learning curve and could not have been more wrong.  This is a commercial product but Mindscape offers a free version that is full-powered but only allows for up to 8 database tables, which would be fine for smaller projects or to try it out.

After speaking with some other developers who have been using LightSpeed I decided it was the right tool for the job.

LightSpeed in Action

The project I had in mind was indeed a new project but I inherited an existing SQL Server 2005 database full of tables.  This application will consume many of the existing tables read-only but we create new tables to store our application-specific data.

This is not a tutorial on how to use LightSpeed but how I am using the tool.  I am sure there are many ways to configure the tool to use the data most efficiently.  I am sure the purists will complain about doing model-driven design, but I don’t care.   I was looking for a tool to get up and running with the least effort, we will tweak later.

LightSpeed comes with a really nice designer which allowed me to pick and choose various tables I wanted to use in my application.  Notice how the designer picks up the existing relationships from the database:

LightSpeedDiagram

Once the designer is saved it quickly creates some very clean C# to represent the schema in code.   A few entries in the web.config and everything is ready to write some code.  Mindscape has a nice Getting Started screencast which shows how easy it is to go from zero to code.  The screencast is just over 11 minutes long and is enough to get up and running.  

Setup Code

A bit of setup code in my application gives us access to our database and a place for our objects to interact with:

        private LightSpeedContext<UnitOfWork> _context;

 

        public LightSpeedContext<UnitOfWork> Context

        {

            get

            {

                if (_context == null)

                {

                    _context = new LightSpeedContext<UnitOfWork>

                                   {

                                       ConnectionString =

                                           "Data Source=.;Initial Catalog=terminal_link;User Id=dbuser;Password=xxxx;",

                                       PluralizeTableNames = LightSpeedContext.Default.PluralizeTableNames,

                                       IdentityMethod = LightSpeedContext.Default.IdentityMethod

                                   };

                }

 

                return _context;

            }

        }

 

Once we have a Context property setup this will be the basis for all database access.  Notice it is created only once.

Retrieving Entities

All the code is very simple but does a lot.  We need an entity here for a certain ID and we are using the LightSpeed method of query, you could just as easily use LINQ queries.  I choose to stay away from them and use the cleaner method of retrieving an entity object.

        public TltForeman GetForemanByWorkId(string workId)

        {

            using (UnitOfWork uow = Context.CreateUnitOfWork())

            {

                return uow.FindOne<TltForeman>(Entity.Attribute("ForemanId") == workId);

            }

        }

Creating Entities

Passing in an instance of our entity, adding to what is referred to as a UnitOfWork and just calling SaveChanges does the job.

        public void AddForeman(TltForeman foreman)

        {

            using (UnitOfWork uow = Context.CreateUnitOfWork())

            {

                uow.Add(foreman);

                uow.SaveChanges();

            }

        }

Deleting Entities

Deleting is as simple as adding, pass an instance of our entity and remove from the UnitOfWork and SaveChanges and the entity is gone.

        public void DeleteForeman(TltForeman foreman)

        {

            using (UnitOfWork uow = Context.CreateUnitOfWork())

            {

                uow.Remove(foreman);

                uow.SaveChanges();

            }

        }

Finally

This tool is really a pleasure to use.  I don’t know if I am partial to it because of my work with Ruby on Rails or just the beautiful simplicity, but it is worth a look.   Don’t get me wrong, it does not lack features but its features don’t get in your way.  I can tweak all I want, something the Rails community refers to as convention over configuration.

The amount of time to go from database to working application was cut probably almost in half.  No stored procedures were created in the making of this application.  This fact alone should be a good enough reason to move from traditional designs to using an ORM to avoid stored procedures and save some time.

Why should managing data from an application in .NET need to be such a task, which is one we repeat over and over.  Using LightSpeed has eased the pain to get an application done rapidly and is a welcomed tool to my toolbox when I need to get .NET work done.

 

 


Enabling Wireless on a Dell Mini 9 Running Ubuntu 9.1 Netbook Remix

I have had a Dell Mini 9 for quite some time now and played around installing various flavors of Linux on it, more as an exercise than anything else.  The recently release of Ubuntu 9.1 which has a distribution configured especially for netbooks, piqued my interest.   The download is called Ubuntu Netbook Remix and is available as an ISO.  There are various instructions for installing, including a thumb drive, but I decided to burn to CD and boot off of an external USB CD-ROM drive I have just for this occasion.

The installation goes pretty quickly and is uneventful, until booting up the OS for the first time; no wireless care detected.  It seems this is a known issue with Broadcom wireless and has a variety of solutions. 

I fixed the problem in a couple of steps:

1. The Dell Mini has a wired Ethernet port, so I grabbed a cable and plugged into my router.  Internet connection established.

2. The restricted Broadcom driver needs to be installed so I ran these commands:

sudo apt-get update
sudo apt-get --reinstall install bcmwl-kernel-source

3. Setup connection to wireless network, with proper security and pass phrase.

4. Done!

It was all pretty easy but pretty annoying little issue with this distribution only on certain hardware.  Overall Ubuntu 9.1 on the Dell Mini is a really nice experience, very well done.


The Solid-State Drive (SSD) Experience in a MacBook Pro

I recently purchased a late model 2009 Apple MacBook Pro which came with a 500G 5400 RPM drive.  After many years of using a laptop on a daily basis I quickly came to realize that one of the biggest factors in laptop performance was a slow hard drive.  I think Apple ships their laptops with 5400 rpm drives because the average user would never know the difference and it helps keep the heat down and the laptop quiet.

I upgraded my last MacBook Pro to a 7200 rpm drive not long after having it and noticed a great speed improvement but also a pretty significant amount of heat being transferred through the aluminum body when the drive was working over time.  I wanted to avoid that this time.

I decided to pursue a Solid-State Drive (SSD) as they are really fast compared to a traditional hard drive and with no moving parts, very cool.  My research started with a couple articles from AnandTech, The SSD Anthology and The SSD Relapse: Understanding and Choosing the Best SSD.  I think as far as technology goes the OCZ drives look like the best-bet right now against the Intel X25-M drives, the only real downside, the capacity.  Intel has a 160G drive versus the OCZ 120G and when going from 500G on my MacBook Pro, I decided the extra 40G would be better than the slight advantage OCZ has from a technology standpoint.  Maybe down the road when OCZ has some bigger drives, I may revisit them.

Intel X25-M

I purchased the Intel SSDSA2MH160G2C1 X25M from ZipZoomfly.com, who had the best prices at the time.

IMG_1225

There are no real deals out there right now since these drives are in such demand.  It is hard enough finding them in-stock, never mind a great deal.

Upgrading

The first thing to do before attempting to do something like this is to do a full backup which will later be used to restore from and be up and running quickly.  I use a great external Firewire 800 enclosure from Other World Computing with an old laptop drive inside, just for this type of situation.  The software I use for backup is SuperDuper from Shirt Pocket, which does a great job.

The process of upgrading the hard drive in the new unibody MacBook Pros is so much easier than in the older Pros from 2006 with a lot less screws and hoops to jump through.  Apple actually provides pretty clear instructions on the process of physically changing out the hard drive in the MBP Manual on their website.

Removing ten screws on the underside of the case and the cover pops right off with the drive exposed.  Two additional screws removed and the drive is out, unplugged and new SSD in place.  Pretty easy indeed.

Once the system is powered up with external Firewire drive installed and booting up into OS X from a previous complete system backup done with SuperDuper, format the SSD with Disk Utility and perform a restore with SuperDuper to the new SSD and you’re done.  The original backup took just under an hour, the restore just over 1/2 hr. 

Finally and Most Important

Rebooting OS X from the new drive really shows how snappy these drives are, but booting is not the key differentiator.  I decided to go about my business and do the things I do everyday; email, bringing up a web browser, loading RubyMine as well as a half dozen other tasks.  After about a half day of use I could really notice the difference when doing these tasks, no spinning beach ball, minimal bounce of application icon when loading and an overall smoother experience.

I don’t have benchmarks to show as I don’t really care how much faster the SSD is than the traditional hard drive, I only care the SSD has removed the pause.

When these small pauses are removed from my workflow, everything goes smoother.  I feel more efficient, I am getting more done.  This time savings and overall efficiency will pay for the drive in no time.  It would certainly not be fair to compare gigabyte per dollar of SSD vs. traditional drives, it goes much deeper and the benefits much greater with SSD.  Yes, I am an SSD fan boy.


New Laptop Purchase Harder Than Expected

I have been running on a couple of very old laptops, one a Dell Latitude D820 and my main laptop is an Apple MacBook Pro (Intel, pre-unibody).  These laptops still work but have been feeling a bit slow over the past few months, never repaved the MacBook Pro but kept adding software and updates from Apple.  I am sure a fresh install on the Mac would do it well but I figured it was time to replace it instead.

Unlike many web developers, I write applications for both Ruby on Rails and ASP.NET, which puts me in a rather difficult position with regards to buying hardware.  Currently, writing Ruby on Rails applications on Windows is less than ideal.  The Mac is really the perfect environment for Ruby on Rails development.  On the other hand, the Mac is not really much of an option to write ASP.NET applications which leverage Microsoft SQL Server.

Thought Process

I started considering my options:

  1. Have two laptops, one for Ruby on Rails and one for .NET development.
  2. Buy a new Dell (or some other brand) which included the new Intel i7 processors (mobile quad core and really fast), set it up for .NET development and run VMWare Workstation with a Linux VM for Ruby on Rails projects.
  3. Buy a new MacBook Pro with the mainstream Intel Core 2 Duo processor, set it up for Rails development and use VMWare Fusion to run Windows 7 in a VM for .NET development.

The decision was a lot harder than I thought it should be, going back and forth many times between getting a new Dell XPS 16 which had an Intel i7 processor on it with gobs of RAM and high resolution screen to the MacBook Pro, which I have really loved.  I have to admit the price difference was a real factor because I could get a state-of-the-art processor along with all the RAM I wanted and great screen real estate for the price of 15” MacBook Pro with 4G RAM and average screen resolution.  The 17” MacBook really put the price out of my budget for now.

The Dell XPS 16 is really a great system and would probably serve me very well but the nagging feeling of writing Objective-C in the future or a solid system for Ruby on Rails work kept swinging me back to the MacBook Pro.

The Decision

I spent several weeks going back and forth on the best decision with the technology at hand, keeping in mine the new i7 processors coming out by Intel, and hoping Apple might announce a new i7-based MacBook Pro but to no avail.

It really came down to what I really wanted to do with the new system and what I needed to do.  I want a first-class environment for writing Ruby on Rails applications, sadly Windows does not offer this at the time.  Running Rails on Windows is just a mess and not a challenge I am willing to take on.

The decision came down to a new Apple 15” MacBook Pro, 2.8Ghz, 4G RAM, 500G HD.  I can continue to run VMWare Fusion with Windows VM’s and have very adequate performance.

UnibodyMBP

Additional factors which led to the MacBook Pro purchase is the ability to have a great environment for exploring other languages such as:

  • Clojure
  • Scala/Lift
  • Python/Django

I can easily have support for these languages on the Mac OS X.

Upgrades

One upgrade to the MacBook Pro coming in the near future will be a nice fast Intel SSD.  This should top off a great, fast machine for the future.

IntelSSD

I will also be upgrading to 8GB of RAM in the future, as soon as prices come down a bit for DDR3 4GB sticks.  The only time I really get tight on RAM is when running VMWare Fusion but the faster processor and SSD coming should make up a bit for some sluggishness in OS X when running a VM.

Finally

Overall the MacBook is more expensive than pretty much any comparable system but the quality of product is second to none.  When combining this with the flexibility OS X offers for developing Ruby on Rails and .NET applications either natively or a Windows 7 VM, it is a hard combination to beat.

I think I knew the decision before making it but I was hoping for that latest and greatest (i7) and save some money from the prices Apple charges for the MacBook Pros but realized how good a system the MacBook Pro is compared to everyone else in flexibility and design.

Technorati Tags: ,

43

Today is my 43rd birthday.  I have since my late 30’s, really disliked thinking about being another year older, I mean, it’s really only another day older than I was yesterday but acknowledging the fact that an additional year has past put me in a somber mood.  Maybe it is the realization of middle-age that makes one think about their place.

In prior years I spent the day reflecting on the past 365 days and wondered if I had made the best use of my time and taken advantage of the right opportunities.

Reflection

This birthday is no different in as much as reflecting on the past year but taking a different view of it.  I realized that I am damn lucky!  I have a great family, I work from home and do the work I choose to do.  I get up everyday and don’t take the dreaded commute to the cubical farm.  I get to see my family every morning a take my daughter to school.  I know many people wished they could have this life because I dreamed of it myself when I was commuting and wasn’t home when I wanted to be.  It is easy to miss too much.  I have reached aspect of my life that I can stand and be proud of.

I am truly happy and at a peaceful point even with the state of our economy and the climbing costs of everything.  Keeping our head above water and moving forward, certainly means success.

Inspiration

I read a lot of blogs, some I read every detail and some I don’t.  I find myself looking for something different now than I used to, so the sources of information have changed.

I find those people that are taking the same path I am taking or are where I want to be are the ones I find so much value in.  My goals are not to be rich or famous but to provide for my family, feel good about the work I do and help others find what inspires them.  It’s not always easy to be able to explain things as one might, therefore some source of inspiration.

It is so true, passion and inspiration mean so much.  I know too many people who have a 9 to 5 “job” they never really enjoy.  I think something we spend so much time doing, we should be happy doing it.  It doesn’t have to be working for yourself, it can mean anything as long as it adds value to your life. 

Projection

It seems part of my career always seemed to be chasing something that I knew existed but I wasn’t exactly sure I would know when I got to it.  I can honestly say that I know what that goal is and I have a fairly good idea how to get there. 

I won’t go as far as lay out the path to the next goal but I do have it laid out in my mind.  I will blog about it here when I feel comfortable talking about it, but I will say that things will change for the better.  Stay tuned, good things to come.

Technorati Tags: ,