ReSharper, The Better Way, Is it Readable?

While working through some client application services samples recently I was going through and doing a code review, of myself, to see how or were I might be causing myself duplication, have isolation issues, or am not testing something correctly.  As I went through I found this little nugget of curiosity.  The code started out like this:

   1:          public ClientFormsAuthenticationCredentials GetCredentials()
   2:          {
   3:              if (ShowDialog() == DialogResult.OK)
   4:              {
   5:                  return new ClientFormsAuthenticationCredentials(
   6:                      usernameTextBox.Text, passwordTextBox.Text,
   7:                      rememberMeCheckBox.Checked);
   8:              }
   9:              else
  10:              {
  11:                  return null;
  12:              }
  13:          }

The "If" in the statement above had the little straight line under it that ReSharper signifies it thinks you should change something.  I then hit Alt-Enter for the ResSharper menu to pop up.  It did and gave me an option for "Replace with 'return'" and also a "Convert to 'switch' statement".  I decided I'd select the first option, since it was given as the default option, and received the conversion below:

   1:          public ClientFormsAuthenticationCredentials GetCredentials()
   2:          {
   3:              return ShowDialog() == DialogResult.OK ? new ClientFormsAuthenticationCredentials(
   4:                                                           usernameTextBox.Text, passwordTextBox.Text,
   5:                                                           rememberMeCheckBox.Checked) : null;
   6:          }

There are a few things of note in the code.  First off, there are 7 less lines used.  Second, it doesn't really seem to be easier to read nor does it layout exactly what is going on.  It almost seems to work against behavior driven development principles.  Last thing I noticed right off is that the formatting, lines, and spacing aren't to my liking, and I fixed that by hitting a new line at the "new" keyword, did ReSharper's cleanup code option and got this:

   1:          public ClientFormsAuthenticationCredentials GetCredentials()
   2:          {
   3:              return ShowDialog() == DialogResult.OK
   4:                         ?
   5:                             new ClientFormsAuthenticationCredentials(
   6:                                 usernameTextBox.Text, passwordTextBox.Text,
   7:                                 rememberMeCheckBox.Checked)
   8:                         : null;
   9:          }

Now we're back up to 9 lines of code, not like the line count matters.  The second point though, is that it is a little easier to read.  The formatting was also a little bit better.  Overall though, I'm still not sure this is easier to read than the if then else statement above.  One thing I was curious about though, and haven't checked into further, is what this will compile to.  Does the CLR actually end up with the same compiled code?  At some point I might dig it apart, but for now I know the later examples are the suggested way to do this now, and it does remove code that is redundant (such as the "else" keyword in the first code snippet above).  For now I've grown a bit more used to reading the later two examples, but they still just don't jump out to explain what is going on.

Anybody else have an opinion on these three variances?  Got a favorite?

Digg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList

Posted by: Adron
Posted on: 9/28/2008 at 10:19 PM
Tags: , , , , ,
Categories: Discussion Points or Ideas | Just Stuff
Actions: E-mail | Kick it! | DZone it! | del.icio.us
Post Information: Permalink | Comments (2) | Post RSSRSS comment feed

Blogroll is NOT in the Database w/ BlogEngine.NET

ARRrrrrrrrrrrrrrrrrrrrrrrrrrrrrrGHGHGHGG!

I realized after doing a full push to my host again, that my blog roll is decimated!  Obviously BlogEngine.NET, even when setup to run against a database, doesn't run the blog roll against the database.

So you've been warned BlogEngine.NET users!

Meanwhile, I'm going to work on getting that list re-created again.  Ugh.

...and yeah, I should keep a backup, and I do of the database, but just not that stuff.

Digg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList

Posted by: Adron
Posted on: 9/26/2008 at 10:37 AM
Tags: , , ,
Categories: Rants
Actions: E-mail | Kick it! | DZone it! | del.icio.us
Post Information: Permalink | Comments (0) | Post RSSRSS comment feed

Code Paste Add In for Windows Live Writer

UPDATED 10/25/2008 Code Sections Formatting Fixed With CSS

What I'm using is available Plugin Collection for Windows Live Writer on Codeplex.  This comes in real useful when getting code into a blog entry.  Because straight pasting really doesn't do so well for readability.

So here are my test code pastes.  A basic view in C#.

   1:  using System;
   2:  using System.ComponentModel;
   3:  using System.Windows.Forms;
   4:  using Microsoft.Practices.Unity;
   5:  using Tsr.SeatingSystem.Controller;
   6:  using Tsr.SeatingSystem.Controller.Views;
   7:  using Tsr.SeatingSystem.WinForm.Properties;
   8:  using Tsr.SeatingSystem.WinForm.Seating;
   9:   
  10:  namespace Tsr.SeatingSystem.WinForm
  11:  {
  12:      public partial class SeatingSystemMainView : Form, ISeatingSystemMainView
  13:      {
  14:          private TsrController controller;
  15:   
  16:          public SeatingSystemMainView()
  17:          {
  18:              InitializeComponent();
  19:              Icon = Resources.Clock;
  20:          }
  21:   
  22:          [Dependency]
  23:          public TsrController Controller
  24:          {
  25:              get { return controller; }
  26:              set
  27:              {
  28:                  controller = value;
  29:                  controller.SetSeatingSystemMainView(this);
  30:              }
  31:          }
  32:   
  33:          #region View Events & Raise Events
  34:   
  35:          public event EventHandler SeatingSystemMainView_Load;
  36:          public event EventHandler ExitToolStripMenuItem_Click;
  37:          public event EventHandler TicketingToolStripMenuItem_Click;
  38:          public event EventHandler SeatingToolStripMenuItem_Click;
  39:          public event EventHandler ReservationsToolStripMenuItem_Click;
  40:          public event EventHandler OptionsToolStripMenuItem_Click;
  41:          public event EventHandler AboutToolStripMenuItem_Click;
  42:          public event PropertyChangedEventHandler PropertyChanged;

Some basic SQL.

   1:  /****** Object:  View [dbo].[tmtUserListing]    Script Date: 07/06/2008 01:27:11 ******/
   2:  IF  EXISTS (SELECT * FROM sys.views WHERE object_id = OBJECT_ID(N'[dbo].[tmtUserListing]'))
   3:  DROP VIEW [dbo].[tmtUserListing]
   4:  GO
   5:  /****** Object:  View [dbo].[tmtUserListing]    Script Date: 07/06/2008 01:27:11 ******/
   6:  SET ANSI_NULLS ON
   7:  GO
   8:  SET QUOTED_IDENTIFIER ON
   9:  GO
  10:  IF NOT EXISTS (SELECT * FROM sys.views WHERE object_id = OBJECT_ID(N'[dbo].[tmtUserListing]'))
  11:  EXEC dbo.sp_executesql @statement = N'CREATE VIEW dbo.tmtUserListing
  12:  AS
  13:  SELECT     dbo.tmtUsers.UserId, GrandCentral.dbo.aspnet_Users.UserName
  14:  FROM         dbo.tmtUsers LEFT OUTER JOIN
  15:                        GrandCentral.dbo.aspnet_Users ON dbo.tmtUsers.UserId = GrandCentral.dbo.aspnet_Users.UserId
  16:  ' 
  17:  GO

Some XAML (Which technically isn't on the list, but I formatted it via HTML)

   1:  <UserControl x:Class="SecurityAdministratorWpf.Login"
   2:      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
   3:      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
   4:      Height="225" Width="410">
   5:      <Grid>
   6:          <Button Height="23" 
   7:                  HorizontalAlignment="Right" 
   8:                  Margin="0,0,28,15" 
   9:                  Name="buttonLogin" 
  10:                  VerticalAlignment="Bottom" 
  11:                  Width="75" 
  12:                  ToolTip="Click to login.">Login</Button>
  13:      </Grid>
  14:  </UserControl>

Some HTML

   1:  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
   2:  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
   3:  <head runat="server">
   4:      <link rel="stylesheet" href="default.css" type="text/css" />
   5:      <link rel="shortcut icon" href="~/pics/blogengine.ico" type="image/x-icon" />
   6:  </head>
   7:  <body>
   8:      <form id="Form1" runat="server">
   9:      <div class="outerouter">
  10:          <div class="outer-container">
  11:              <div class="inner-container">
  12:                  <div class="header">
  13:                      <div class="title">
  14:                          <div class="sitename">
  15:                              <a href="~/" runat="server">
  16:                                  <%=BlogSettings.Instance.Name %></a></div>
  17:                          <div class="sitenameshadow">
  18:                              <%=BlogSettings.Instance.Name %></div>
  19:                          <div class="slogan">
  20:                              <%=BlogSettings.Instance.Description %></div>
  21:                      </div>
  22:                  </div>
  23:                  <div class="path">
  24:                      <div class="left">
  25:                          <ul>
  26:                              <li>
  27:                                  <asp:HyperLink ID="HlHome" NavigateUrl="~/default.aspx" runat="server">Home</asp:HyperLink></li>
  28:                              <li class="page_item">
  29:                                  <asp:HyperLink ID="HlArchive" NavigateUrl="~/archive.aspx" runat="server">Archive</asp:HyperLink></li>
  30:                              <li class="page_item">
  31:                                  <asp:HyperLink ID="hlContact" NavigateUrl="~/contact.aspx" runat="server">Contact</asp:HyperLink></li>
  32:                          </ul>
  33:                      </div>
  34:                      <div class="right">
  35:                          <a href="<%=Utils.FeedUrl %>">Subscribe to My Feed<asp:Image ID="RssIconImage1" runat="Server"
  36:                              Width="24px" Height="24px" AlternateText="RSS Feed" ImageAlign="AbsMiddle" Style="margin: 0 0 0 10px" /></a>
  37:                      </div>
  38:                      <div class="clearer">
  39:                      </div>
  40:                  </div>
  41:                  <% if (Page.User.Identity.IsAuthenticated)
  42:                     { %>
  43:                  <div class="adminpath">
  44:                      <h2>
  45:                          Admin:</h2>
  46:                      <uc1:menu ID="Menu1" runat="server" />
  47:                  </div>
  48:                  <%} %>
  49:                  <div class="main">
  50:                      <div class="content">
  51:                          <asp:ContentPlaceHolder ID="cphBody" runat="server" />
  52:                      </div>
  53:                      <div class="navigation">
  54:                          <blog:SearchOnSearch ID="SearchOnSearch1" runat="server" MaxResults="3" Headline="You searched for"
  55:                              Text="Here are some results for the search term on this website" />
  56:                          <div class="block">
  57:                              <h2>
  58:                                  Search</h2>
  59:                              <blog:SearchBox ID="SearchBox1" runat="server" />
  60:                          </div>
  61:                          <div class="block">
  62:                              <h2>
  63:                                  Tags</h2>
  64:                              <blog:TagCloud ID="TagCloud1" runat="server" />
  65:                          </div>
  66:                          <div class="block">
  67:                              <h2>
  68:                                  Categories</h2>
  69:                              <blog:CategoryList ID="CategoryList1" ShowRssIcon="true" runat="Server" />
  70:                          </div>
  71:                          <div class="block">
  72:                              <h2>
  73:                                  Archive</h2>
  74:                              <blog:MonthList ID="MonthList1" runat="Server" />
  75:                          </div>
  76:                          <div class="block">
  77:                              <h2>
  78:                                  Blogroll</h2>
  79:                              <blog:Blogroll ID="Blogroll1" runat="server" />
  80:                          </div>
  81:                          <div class="block">
  82:                              <h2>
  83:                                  Disclaimer</h2>
  84:                              <p>
  85:                                  The opinions expressed herein are my own personal opinions and do not represent
  86:                                  my employer's view in anyway.</p>
  87:                              <p>
  88:                                  &copy; Copyright
  89:                                  <%=DateTime.Now.Year %></p>
  90:                          </div>
  91:                      </div>
  92:                      <div class="clearer">
  93:                          &nbsp;</div>
  94:                  </div>
  95:                  <div class="footer">
  96:                      <div class="left">
  97:                          <div>
  98:                              Powered by <a href="http://www.dotnetblogengine.net/" target="_blank">BlogEngine.NET</a>
  99:                              <%=BlogSettings.Instance.Version() %>
 100:                              | Design by <a href="http://michael.sivers.co.uk">Michael Sivers</a>
 101:                          </div>
 102:                      </div>
 103:                      <div class="right">
 104:                          <asp:LoginStatus ID="LoginStatus1" runat="Server" LoginText="Sign in" LogoutText="Sign out"
 105:                              EnableViewState="false" />
 106:                      </div>
 107:                      <div class="clearer">
 108:                      </div>
 109:                  </div>
 110:              </div>
 111:          </div>
 112:      </div>
 113:      </form>
 114:  </body>
 115:  </html>
Digg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList

Open Beer/Coffee Days and Awesome Geek Discussion

Ben Strackany has been putting on Open Beer and Open Coffee days over the last half dozen or so months.  I often try to attend because these events have great tech talk and other topics of discussion.  I suppose that always happens when you get smart people together for caffeine or beers.

I'm aiming to attend the next Open Beer day at The Green Dragon so make a point to head out and say hello.  I'm always looking to meet new people out there in Portland and see what everyone is up to.

Open Beer Day
Thursday, October 9th, at 5pm
The Green Dragon
928 SE 9th Ave.

View Larger Map

Open Coffee Day
Last Wednesday of Every Month at 10am
Backspace
115 NW 5th Ave


View Larger Map

Coffee or beer, you gotta like one, so come down and meet us, show us what you're working on and who knows, maybe we'll just invent the next big thing.

Digg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList

Posted by: Adron
Posted on: 9/25/2008 at 5:29 PM
Tags: , , , , , ,
Categories: Discussion Points or Ideas | Just Stuff | Keeping Up
Actions: E-mail | Kick it! | DZone it! | del.icio.us
Post Information: Permalink | Comments (0) | Post RSSRSS comment feed

Interview w/ Umpqua, Review of Banking Web Sites

I spoke with the Umpqua Bank Web Development Team day before yesterday for an interview.  It was fun talking to the crew over there and discussing what they've been working on.  It sounds like a lot of things are afoot at the Umpqua.  One of the things speaking with them has led me to do was to really check out further the Umpqua Web Experience and do a little comparison check.

First off, take a look at the clean design, right front and center, of their web site.

Now take a look at Bank of America, Citigroup, and US Bank.

First off, I can honestly say Generation X & Generation Y will most likely find the Umpqua Site far superior in first appearance than any of the other sites.  Let me review real quick why.

The Bank of America site comes up, with the entire thing shifted to the left, and forced to a set pixel width.  The pixel width is fine, except on modern machines that have decent resolution, it gets really weird.  The big problem though, is the fact that one's eyes actually TURN to see were on the page the site has been painted.  Not front and center were it should be, but off to the left.  This I find nuts that anybody still does this.  On an Intranet Site it would be acceptable, but online, "very not cool".

I rarely have anything negative to say about BOA but their current site definitely needs an update - SOON.

The second site, from Citigroup, definitely comes up front and center on any browser I use.  There is one slight problem for Gen X & Gen Y though.  Their site immediately makes you think of some big wormy corporation or being accosted by a suit attempting to sell you a car.  Nice site, nice layout, wrong first impression, especially being that it is NOT the first impression Citi has been working years to achieve.  Somehow they continue to miss the mark.

The US Bank Site is just rough.  It looks very dated, hangs to the left, has an odd initial login section on the side that people do NOT trace with their eyes first, and overall is just laid out poorly.  There is too much activity on the site and...  ok, I'm done, this site is just going to frustrate me.  This is the type of site that Gen X & Y don't prefer, and anyone not in those groups usually gets overwhelmed by the busy nature of the layout.  I personally wouldn't have kept it open this long except I'm reviewing the page design.

So back to Umpqua.  First I'll hit on the very minor negatives, there aren't many to start with.  The site has good colors, but doesn't quit scale right to bigger screens.  Being this is the only site of those mentioned that even attempts to handle some scaling in a minor way, I'm impressed.  The second thing is the square corners, it is dumb to say this, but rounded corners are easier on the eyes and more oriented toward the whole web 2.0 ideal.  It's a minor thing, but it does differentiate and it absolutely makes a difference in the long term.  Yeah, I know, here I am arguing for rounded corners.  Never thought I'd be blogging about such a thing, but I stand by it.  Rounded corners are cool and important to layout.

Now for the good parts.  The Umpqua Site has good white space, the type that allows you to actually see the focal points of the page.  The white space allows you to see the priority sections also.  The colors that surround some words, the other background behind the white space, and the lower "Umpqua Extras" section has colors that do not clash, and help to bring a slightly more focused look at some of the other priority spaces without drawing you away from the important market spaces for "e-switch to Umpqua", "LocalSpace", and "earn cash back".  The sign in section is fairly easy to find, being bolded and colored with a bluish off tone.

Overall the site looks great, is easy on the eyes, doesn't cause one to look it over in an unnatural way, is easy on the eyes, and above all, attracts new users to were they should look and provides an easy to find area for returning users.

I rate it A+ for bank web site!

Digg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList

Posted by: Adron
Posted on: 9/25/2008 at 12:48 AM
Tags: , , , , , , ,
Categories: Discussion Points or Ideas | UI Design
Actions: E-mail | Kick it! | DZone it! | del.icio.us
Post Information: Permalink | Comments (2) | Post RSSRSS comment feed

The Things that Must Connect

Ideas, efforts, capital, and more than everything else, the team.  This is something I hear time and time again, and know so very well, but it seems some companies still lack that insight.  To them the idea is the idea, the effort, or just the capital, the team is a second rank priority.

Those companies I would immediately sell them short, because they've sold the most important aspect of anything short, the team and the individuals of the team.

What about when those things connect?  It's always a hard road, it is always difficult day to day in the beginning, but when all those thing connect under a good team, the company has a huge chance of success.  I'd even proffer to say far greater than the average business's chance of success.

Everything from the operational needs of a company to the capital outlay, the people with experience will always tell you team first, everything else is secondary.  The first statement in the agile manifesto is, "Individuals and interactions over processes and tools", which I can't agree with more than I already do.  The individuals of the team are of the utmost importance, without, you have no team worth any effort, capital, or ideas.

On this topic, what are good ways to get teams to connect with the ideas, efforts, and capital of a project?  How does a team really buy into the ideas, stay strong during the effort, and were does one generate solid capital for a project?

The Team and Ideas

Google has one of the best methods for assuring buy in on ideas for a team.  It is one of the simplest solutions I've ever heard, let team members work on the projects they want to.  With this simple idea you get automatic buy in on the ideas of a project because it was chosen by the individual.

The Google solution of course does not work everywhere.  In places were there are only a few team members or a few projects to work on, there is only singular focus on a couple primary ideas.

A good solution in smaller teams is to find, at least that I've personally found effective, is to break apart architectural needs and goals into stuff people want, let them pick and chose, and then the remnants that no one really wants to touch, dole it out accordingly.  This way the unmotivated is somewhat avoided by the motivated.  Result, increased buy in for the ideas behind the project.

The Team and Efforts

What motivates a team to work together well?  One of the best things that works, especially from a management perspective, is an Agile process that places individuals together on a frequent basis.  However I'll be the first person to point out that a weak team, Agile does NOT fix.  In those situations there are needs to have a strong leader, that can mitigate differences and initiate communication and assure that the individuals are working to bridge the disparate goals into the primary objective goal.  Either way, a strong leader is pivotal to assure good cohesion of the group, but things are even better by an order of magnitude if the team just works well together.

What about other forms of motivation?  What about the extra effort?  Well first off, I'm a strong proponent of not burning out team members and that means working a sustainable pace.  Unless one wants to throw away the project and start from scratch in the short term, a project needs effort from the team members in a sustainable, consistent, and smooth way.  If too much effort is expected, dire consequences are all that is left to be had, so work sustainable, and reap the good results.

So far these things mentioned are big picture things to get a team to really put together a strong effort.  The other ideas, that are far more effective than anything I've ever seen, are doing things together as a team outside of work.  I don't mean require a bowling day with the team.  I don't mean push everyone into doing something outside of work.  What I'm talking about is the good natured friendliness of people to have a beer after work, to check out a movie, to grab lunch together to discuss a few work related, or non-work related topics.  When a team is cohesive on that level, the team just naturally is more relaxed about putting forth a strong effort and especially about working a high speed sustainable project effort.

The Team Capital

The team capital can mean several different things; revenue or income related money matters, assets and equipment to work with, and any of a number of things that capital is needed to complete a project.  This major connection point is probably the second most important of all the connecting points.  Without solid capital and the tools that are purchased there is only so much a team can do without tools.  Sure they can hang out, talk, and even come up with solutions, but they can't create those with capital and tools.

A major element of motivating a team and assuring a good sustainable effort is to equip a team appropriately.  I don't mean they need a X Box in the corner and a 60" TV to play it on, even though it would be nice.  What I'm talking about is making sure team members have appropriate space or even offices maybe.  Make sure the team has monitors, good solid monitors with high quality and maybe even dual monitors.  Make sure each member has good hardware and the appropriate software for their efforts.  If they're a BA make sure they have solid specifications and analysis tools, make sure developers get the good tools like ReSharper, TestDriven, and others.  With the right tools, a project can then have the appropriate priority focus on the people and interactions, without the right tools the team just dwells on how to even finish their day.

So those are a few points I just wanted to make and also to provide a quick once over for people to read.  This entry is a kind of reference for how I like to start and work with a team on a moving forward basis.  It really is all so simple;  Individuals & The Team first, capital & tools second, find solid sustainable effort, and get buy in for the ideas of the project.

Digg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList

Posted by: Adron
Posted on: 9/24/2008 at 10:14 AM
Tags: , , , , , , , , ,
Categories: Agile, Theory, and Process Stuff | Discussion Points or Ideas
Actions: E-mail | Kick it! | DZone it! | del.icio.us
Post Information: Permalink | Comments (0) | Post RSSRSS comment feed

BlogHer in Portland? Slashdot on Sun Tzu Business Ethics! Stuff...

So as I scan through various entries, of the gazillion I try to keep up with a few news tidbits and ideas jumped out at me.  The first is the idea of getting the BlogHer Conference here in Portland, since it just lost the OSCON to... well I won't even discuss were it is going.  Hazelnut Tech Talk & Silicon Florist both mention the prospective event here in Portland, so go read up and see if you can help out, or know of anyone else who could.

A Slashdot Entry I Read, WOW!

So there is an entry about two business professors from Harvard and Stanford that published 'Divide and Conquer: Competing with Free Technology Under Network Effects' which is a somewhat interesting read.  I see it mostly as a stupid fight, as commercial software and open source can coexist, and would do even better if it learned to.  The old adage of Benjamin Franklin and his ideals of win win capitalism is much better than our current Sun Tzu crap that most of these leaders seem to go on.  I think the simple fact that Sun Tzu was writing about committing genocide against other peoples, winning wars were people would die, is lost upon many business professionals.  Many modern day business professionals would do well to learn more about the original business ideals held by the founding fathers all the way through to Lincoln even.

So really in the end, all us developers are going to transfer ideas, open source just helps us transfer those better.  Even now Microsoft of all entities even pushes for it via the CodePlex site and in other ways.  I disagree with the us vs. them idea of the Harvard and Stanford ideals in the article that are being perpetuated, but with the multi-billion dollar Microsoft even pushing the idea because of the appeal to so many developers, to the betterment of the industry as a whole, I don't think the us vs. them mentality will hold out for that much longer.

Thinking Thoughts of Improving Software and Software Returns

I've been thinking a lot lately, especially after meeting many recruiters in the Portland area, about the various aspects, values, and returns that software provides for companies and the human and office infrastructure that we have built up around that.  I'll have more entries based on these topics very soon.  The general topics that I've been batting around are all out there already, but somehow I'm starting to form a more cohesive picture of how things could create much better software and in turn much larger returns from the creation of better software.

Companies generally have a prime competency.  Microsoft makes software, so does Google, and so do other companies.  Bank of America, GM, and others like that actually, do NOT make software.  The later mentioned companies however do create a lot of software, but it is not their primary purpose.  The later companies focus on financial matters, cars, and other things.  The focus is NOT software.

So why do they spend so many millions and employ so many to build software?

So how about these companies get better at focusing on their prime motive of existence, their underlying business case, and get real software creators to build software?  Well in the past there has been many issues the biggest with the poor returns and products that so many large companies, like Bank of America and GM have received from outside software creators.  That begs the questions;

How does a company, who doesn't have a prime focus in software, get quality, fast, decent priced software today?  How do we dispel and functionally remove the bad reputation of software among CIOs and other in the non-software companies?

This is were a lot of my ideas are starting to extract and pull some interesting things together.  I hope over the next few months I'll be able to pull these ideals and effectively pull them together.

Of all these things, the primary driving force behind my conjuring ideas is that software should be better, get done faster, and especially be better priced here in America.  So stay tuned and I'll definitely have more ideas, thoughts, and discussion points brought up by these ideas.

Efficiency, Performance, and Quality.  That is what I'm talking about.

Digg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList

Jeremy Miller on Cohesion & Coupling

As usual, Jeremy Miller does a rocking job on describing what are generally high level, complex topics.  I haven't read the whole article yet, but definitely check out his recent on Cohesion & Coupling.  Definitely good topics to understand, and worth thinking through as it helps software development in many ways, for you, for me, for everyone in the field.

Summary Statement:  Go read it!

Digg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList

Posted by: Adron
Posted on: 9/22/2008 at 12:00 AM
Tags: , ,
Categories: Just Stuff | Keeping Up
Actions: E-mail | Kick it! | DZone it! | del.icio.us
Post Information: Permalink | Comments (0) | Post RSSRSS comment feed

Solution Layout for High Ball

I added a graphic of the solution layout of the High Ball Application with some basic descriptions of the various sections.  I do want to however reduce the number of projects inside the solution, but for now I've left it in the very separated out way I initially created the solution.

My next idea is to get some initial views done to use as a starting point for functionality.  I'd like to complete the security administration section soon, so the other parts of the application can be further fleshed out.  I will admit though, I'm not 100% sure how I want to setup the security, and am currently brain storming the idea.  If anyone would like to jump in on that lemme know.

Digg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList

Posted by: Adron
Posted on: 9/21/2008 at 7:34 PM
Tags: , , , ,
Categories: My Projects | Transit Engine | Highball
Actions: E-mail | Kick it! | DZone it! | del.icio.us
Post Information: Permalink | Comments (0) | Post RSSRSS comment feed

Laundry, Grocery Stores, Streetcars, and Hacking Away...

Just reading up on some thoughts being fed through twitter and I stumbled on one by @robbyrussel "today == laundry + hacking day".  I couldn't help but run through a few scenarios were I've seen people getting work done over the last few years.  Everywhere from the grocery store to the zoo bomb runs (before jumping aboard the ride).  Of course, one of my favorite ways to get work done is to jump aboard the streetcar and wire up with the SprintPCS card and work away.  For some reason, the streetcar, or MAX, is usually a great thinking place for me.

I've also read that maybe 5-15% of the people who could work remotely actually do.  A lot of that has to do with a paranoia from business interests about what an employee is doing and they are rightfully concerned.  I wouldn't want someone to work remote, not do anything, grab a check and then disappear on me.  This fortunately is easily resolved with various modern processes and communications.  Agile itself bodes fairly well to remote work even, as long as those communication channels are maintained well.  I worked for about a month with someone completing work for me in Brazil, with just a few hours of communication a day, to remove roadblocks and hurdles, he (Jay! thx for the help!) was able to knock out the work tasks for the project super fast.

That leads me into another though, meddling over into my transit interests and economics in general.  A few assumptions stated; the tech market provides a vast amount of wealth in the US, it also consumes a vast amount of resources.

Technology workers continue their move toward more social interaction at work and to continue increasing productivity and efficiencies while decreasing our vast usage of the infrastructure. With these actions the tech sector alone could begin a revival of sorts within the economy itself!  But as I look at some companies that I'll refer to as legacy companies, it is a slower move than it should be.  This shift to a more socially interactive, agile, and effective production method for software, and even hardware, in the marketplace needs to increase.

In Atlanta,Georgia and other auto-centric areas of the country the tendency for telecommuting has been increasing, but not nearly as much as it could.  In no ways would it eliminate the poor infrastructure design of Atlanta, that will take a lot of other work, but it would lead to more economic activity and allow for growth of more elaborate town centers.  Portland on the other hand, would probably benefit even more from this because it is already setup for this type of work.  Numerous individuals already work remotely in Portland, Oregon and have social interaction and efforts that make many legacy companies efforts seem arduously slow and cumbersome.

Just to name a few companies right off, that could drastically benefit from this even more are Microsoft, Intel, and other giants.  In many ways these companies have done great things with remote work, arguably their best work is done via remote effort.  They however could save millions a year on real estate and space needs by merely investing in local infrastructure and economic activity to provide places to setup these remote workers.  A coffee shop, a town center, simple meeting place for groups, are perfect for this type of effort.

The companies that have the greatest distances to cover to gain competitive advantage with remote work utilization are the real legacy companies.  These companies range from Ford, GM, Blue Cross, and other giant entities that really don't build software as a primary revenue generator, but do build a lot of software.  These companies need to improve their management capability to better leverage these remote working abilities.  The advantages are too numerous to avoid.

When looking for work, always push for this type of work atmosphere, at least push for it being reviewed.  I can promise that any company that doesn't take more advantage of remote workers will eventually lose their edge and fall to the wayside with the legacy companies that have already been put to death by inefficient and arduous old school thought.

It's time to provide this freedom on a large scale.  Get with the progress.  Cheers!

Digg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList