The Art of Programming

Pay Homage to Paul Baran

20. February 2009 03:43 by Scott in   //  Tags: , , , , ,   //   Comments (25)

Pay Homage to the inventor of Packet Switching in which is one of the foundations of the World Wide Web.  Along with Paul Baran, Donald Davies and Leonard Kleinrock they are the inventors of Packet Switching.  The idea and execution of packet switching is what allows the entire internet to exist in side a giant bubble.  The bubble when tested can reroute it self automatically.  Data that gets sent over the internet is not defined by a single line feed.  It is not defined by a single point of entry and exit.  It is not defined by where the phone lines come and go to.  What defines the direct of data is the whole term packet switching. 

Packet switching in its simplest sense is data transfer of small packets of data over the internet or world wide web in which each packet defines its own highway to get to its destination.  The idea behind it was to have multiple routes to send data.  Developed and designed back in the 60's.  It was to allow for communications to be made over phone lines which had a linear track.  If the soviets back in the 60's decided to bomb the United States in a critical area, they would have taken out phone lines and most likely short wave radio.  Therefore leaving parts of the country un attached to the rest of the country.  An idea had to be created which allowed transfer of information other than phone lines and other than single node transports.  The Packet Switching at that time was being invented by Paul Baran and his team. 


World Wide Webs First Server
Photo by raneko

The internet was started by Arpa which is now known as Darpa.  Arpa had the latest and greatest.  There was very little red tape with Arpa and extremely little politics.  If they wanted it, they got it.  Paul was apart of Arpa. 

Al Gore is said to have created the internet which is not entirely false.  He was a leader in providing funding to the world wide web.  If it wasn't for his funding, government funding the WWW wouldn't exist as it does today.  The WWW is still in its infancy but we are further in communication than we would have ever been without it.  So next time you talk to one of your libertarian friends talk about Paul Baran and his creation, but also tell them that if it wasn't for the Government, we wouldn't have the World Wide Web as it is today.

Thank you Paul.  I am able to type in this blog because of what you created.  I am able to make a bit of money on what you helped create.  Silicone Valley is able to exist because of you and your team.  The Global World is able to communicate a bit faster and easier because of what you created.  In the past, it was not done for fame, money or reputation points.  It was done to help the world communicate better, faster and have a more reliable Government.  If you voted for Obama in the past election, thank Paul and his team.  Obama's Presidency would have been very unlikely along with anyone knowing his name if it wasn't for the internet and what Paul helped to create.  The internet is changing the way the government communicates to its citizens.  It is becoming a more transparent system. Instead of worrying about your reputation points or money, why not focus a little more on your community because if it wasn't for the community Paul Baran might have not created Packet Switching.

 


If you liked this post, please be sure to subscribe to my RSS Feed.

Making It Big!

18. February 2009 03:18 by Scott in   //  Tags: , , , ,   //   Comments (12)

I am now 24 years old soon to be 25. I have worked for a fairly decent company over the past 2 years and have had a GREAT boss while I was in college.  Before college I was in high school where I created a few websites.  Nothing dynamic as what can be done today, but something that could have made money.  I canceled the site and never saw it again.  I created my first website over 10 years ago and what can I show for it?  I am at my current job creating web services.  I feel more capable on the web than on desktop applications.  I feel in tune with the code on the web than on the desktop.  In the beginning I was a website creator, I was a fairly new internet user in that time and I never truly implemented a business idea in that time.  I never truly made money from any idea that I had except for "the getting paid to surf programs" which were a miserable failure and put a lot of companies out of work. 

I remember when I first heard about a guy who was writing about his daily life and it was called blogging.  I didn't jump on. I remember hearing about Google adwords and adsense, yet I didn't jump on the bandwagon.  I wanted to create a large blogging community.  I wanted to use adsense in the community, yet I didn't.  I had ideas and never used them.


Photo by Daveybot

I am pretty sure there are plenty of people out in the world with billion dollar ideas but have never implemented them.  They have never tried making their ideas worth anything.  I am here today to say that I have created my first business idea.  Its not much and is my first real business idea on the internet in the past 8 years, but I still got it done.  I am tired of wasting time.  I am tired of not getting things done.  I am still working on my ideas and still heading them up.  One idea at a time.  Baby steps until I can some day quit my day job.  Work hours that I choose on time that I choose.  I commit my self to getting out of this work environment and I have a personal goal of doing it in under 2 years.  I want to move on.

For anyone else out there with an idea, put it into motion. Make it happen.  Do good and become successful. Become the person at the party who brags about how you made it big.  I want to make it big and get out of my 9-5 job.  I hope you do it as well. Don't quit.

Elements of a Sustainable Company

6. February 2009 03:25 by Scott in   //  Tags: , , , , ,   //   Comments (7)

At Start Up School 08, Greg McAdoo spoke about some different ideas on how to get your start up out the door fast.  And what elements you will need for a Sustainable Company. The key points are his, but I try to explain it better.

  • Clarity of Purpose - One must know what your trying to achieve in order to achieve it.  Get some goals in place.
  • Spectacular Market - Once must have a very good market in which to enter. The video market is just now catching on with YouTube, there can be more competitors if it grew large enough and was able to turn it around.
  • Alleviate Customer Pain - Make sure you have something that people want or have been dieing for.
  • Team DNA - You must have the ability to work together with your company.
  • Incredible Product Focus - You must have one or two solid products before you decide to expand.  Make sure the customer is happy with your product.
  • Real Operating Margins - Someone help me out here.  Still trying to decipher what he is saying.
  • Frugality - Spend less, develop more!
  • Inferno with a single Match - Light a fire and make your one product sell like mad!

I hope these points helped, because they are incredibly valuable.


If you liked this post, please be sure to subscribe to my RSS Feed.

How to Create a Threaded Comment System with ASP.NET

4. February 2009 03:49 by Scott in   //  Tags: , , , , ,   //   Comments (1)

A few days ago I was designing a threaded comment system for Drinkingfor.com which allows users to reply back to other users directly instead of a flat comment system like you see at most other places.  I made my argument for threaded comments over here and why they should be used.  I didn't know where to start or how to write the code.  I had a pretty good idea on database design which was decently simple.  Each comment shall have an owner comment.  The treeview is the best example of what the data in the database should look like.  As for how to display this out to code is another problem.  I ended up searching on the internet and found a man who created hierarchy class which is exactly what I needed.  The Hierarchy class selects the information from the database and organizes it into a cached treeview.  I ended up talking to him and he had explained to me that he was refactoring the class which will allow it to run faster.  As for how I implemented the code to write out HTML, I ran through the hierarchy class recursively and then created html for each node found.  The class was quite impressive and I included some sample code below.  I didn't want something like this to be wasted and hope everyone can put it to good use.


Photo by jurvetson

I also wanted to give a shout out to Stefan Cruysberghs and say thank you for creating this class and posting it up on the net.  Now to keep with the current standard, I will post up my execution of his code.

ThreadedComments.cs (5.98 kb)


If you liked this post, please be sure to subscribe to my RSS Feed.

Building a Workflow To-Do List

2. February 2009 03:03 by Scott in   //  Tags: ,   //   Comments (0)

When working with workflows in software engineering, there are plenty of people that have done it before you and there will be plenty of others that come after you.  Workflows are a foundation in the corporate world and new and old workflows are coded each day into the world of applications.  So much so that Microsoft came out with SharePoint to help with your workflows and make them just a much better system and easier for developers.  Workflows allow you to pass information from one person to another most likely attached with costs and some item of priority.  Ideas and development happen all the time, but their hasn't been much innovation in workflows today just because they are exactly the way they worked 20 years ago.  No need to innovate something that works unless your in the computer industry making state of the art hardware.  When understanding a workflow, there needs to be a front page, a designed system to go through each "step" in the workflow and a ending point.  You have to be able to send emails, show the workflows entirety and show some sort of "to-do" list which shows the user what they have to complete in the flow.  It helps them understanding their current tasks.

Workflows are easy to display and configure.  You have to pass information from one step to another where the steps are not infinite, so you can display them in a bubble like format on one page of your application.  Reporting is easy as long as you capture all the data that gets entered, all the dates in which something happens and every thing in between.  The innovation for workflows has more or less come to a skreaching hault.  When you take a paper workflow and build it into an application, its hard to display your to-do list.  You need to display the tasks easy enough for the person to understand what they have to do.  Due to the screen real estate in such a high demand on the front page it is important to get that list as small as possible so you must learn to innovate a way to show them a to-do list which is small and tight.  You must allow them to see ALL the item that need to be completed while also allowing items to be sorted and let them sit stagnant for a long period of time while other items are being added in daily.  So what do we have?  Well if your keeping up, before we created the app, we have a whole pile of paper sitting on a desk ordered by how recently it has been worked on and after, items sitting in a to-do list in an application with a few hundred entries in the list.  Now, how to split those entries up or display them as fast as possible that the human eye is able to capture all in a few split seconds.

The to-do list is easy to see if it is a huge stack of papers, but hard to keep organized.  The application allows for much less paper to be involved, but forces you to innovate in which the user sees the stack of paper(in the app).  I currently am working on how to innovate a "to-do" list and I must say that there aren't many examples of the list in the world.  What sits in the users queue could be only a few items or a few hundred items.  Here is where the problem lies.  How to display and organize a 100 plus items in a to-do list with the ability to sort through them in a few split seconds with the human eyes.

 
Taken by theps.net

Items that are a must have:

  1. Very Little Scrolling.
  2. Sorting.
  3. Split second reactions to what is seen.
  4. Fast Loading - Is taken care of with the language your using and the hardware your on.


Very little scrolling, Sorting and Split second reactions go hand in hand.  If you can sort fast, people will have a much better understanding of what they have to do, while sorting gives us the ability to make those split second decisions.  The question though is how to get all three into one application of the front page where screen real estate is very important?  Split second reactions need extremely relevant information up front.  This information will need to be sorted along with little scrolling.  Well how do you Sort 100 objects with no scrolling on tight screen real estate?

  • Options that came to mind are grouping them into tables when a user clicked the group. 
  • The default way is to just show a table of information with sort buttons up top which seems to be standard, but when you have to go through 100 items, it gets tough for the split second reaction times and which still requires scrolling.
  • Another Option would be to show the user which items they have already viewed for the current step its at.  Then create a new list which contains the "already viewed" items.  This will allow for a lot less scrolling, because the items were on an entirely separate list and unless the user had an action for that item, they wouldn't need to scroll down. But the fact that you still need to show the user the list would force you show them all together, but once the user clicks a sort button for "Already Viewed" they would then separate into two lists.

Which type of to-do list shall I go with? Well, I am going to go with the third one.  Even though it involves a bit more programming on my part, I think it is the "to-do" lists of the future.  The next question is how to make this happen in such a small tight place of screen real estate.  Hmm.

Got any other ideas on how to show to-do lists?  Show them in the comments, I would love to see them.

If you liked this post, please be sure to subscribe to my RSS Feed.

GoDaddy, ASP.NET and Discount ASP

30. January 2009 03:38 by Scott in   //  Tags: , ,   //   Comments (30)

Seriously, sometimes I wonder why I stay with GoDaddy.  Here I am developing a cutting edge app over at DrinkingFor. I just installed URL Routing on the app from the ASP.NET SP1 release.  I get to the point where I upload my changes to the site and what do I get?  I get a freaking Error.  SP1 for ASP.NET has been out for over 3 months now and GoDaddy still has yet to support it.  Why do I stay with them?  Sometimes I will never know.

I decide to take action.  So I call up GoDaddy support to ask them when do they plan on supporting SP1.  I waited on the line for about 10 minutes, and then someone finally answered.  The problem was that he was actually SNOOTY with me.  It was just plain sad.  I decided to go ahead and ask him when they expect the update.  Now being such a LARGE company, you would expect they would have roll out dates and times set up as to when they would start supporting a software upgrade.  Well, I talked to them and he said specifically they don’t.  They don’t have any kind of time line for SP1 or any other release.  I was just plain frustrated so I quickly hung up the phone with him and went to check out their competitor Discount ASP.  I come to find out that GoDaddy has a superior control panel than DASP.  I also found out that DASP is about double the price of GoDaddy.  I am a poor developer and I just really don’t make enough money to move my stuff over to a double the price hosting service. 

But, If Discount ASP was able to come down on their price a bit and upgrade their control panel, I would have moved over no questions asked with 20+ websites and customers.

Now as for GoDaddy, I am putting out a warning that if you don’t change your service and make software upgrades faster and let your developers know when its made, you will begin to see a mass exodus of your service.  I will make the promise that when I am able to pool enough funds together for about 20 websites, I will be moving.  I have had enough of the Big Daddy in the room.

Has anyone else had this bad of service?  What do you think of Discount ASP?

If you liked this post, please be sure to subscribe to my RSS Feed.

The Hackers of the Past

28. January 2009 03:54 by Scott in   //  Tags: , , ,   //   Comments (12)

The Hackers of the past are a dwindling group of people.  The hackers of the future have a bright journey ahead of them.  The whole culture behind a hacker has shifted and is evolving over time.  The new culture is taking over a dwindling past time.  Phrack and 2600 both talk about the hacking underground changing and morphing.  They both don't see the light at the end of the tunnel, but I will to show them a new tunnel.  The hacking underground is still alive and well, but in a different format.  Hackers of the past were for freedom of information and to some, open source software stated by Richard Stallman.  Both Phrack and 2600 are looking for new outs and ins.  They both talk about how hackers have left the underground and joined the computer security job.  While security is important, it has basically ripped through the underground and taken a big chomp out of its culture.  No one knows how long the underground will stay active and they are of course looking for another course of action, but who will provide?  At this moment, there could be three type of hackers in the world.

The first type of hacker is your old school underground hacker.  It isn't your script kiddies, but the ones of the past.  The kind of hackers that ethically or unethically broke into computer systems for the freedom of information. To open the world to more information.  This is the hacker of the past.  The underground hackers still exist today, but their culture is falling to the floor with its last foot on the step. I hope to revive the culture in the coming years.

The second type of hackers are the ever failing computer security hackers.  This type of guy left the underground years ago to earn some money for doing what they love.  These hackers, left a large gaping void in the underground culture and have stopped the true ideal of a hacker.  They no longer hack.  They now prey on the underground for security secrets to divulge to the world.  About 6 months ago, a huge flaw was found in the basic dns of computers.  It was the security hacker who released the flaw before it was patched.  It was the security hacker who put the entire world at risk just for a little more publicity.  Why does this type of hacker need the publicity?  Because their jobs are turning into nothing.  They are losing work, though staying very busy, they are no longer having as much fun as they were sitting in front of a computer at 3am in the morning working on the next system and show them it has a flaw to the world.

 


Taken by Ted Percival

 

The third type of hacker has been around for years and years.  It was supposedly started back in the 1950's with amateur radio enthusiasts.  Looking for a new way to improve performance, which they coined the term hacking.  They have come from MIT in 1959, Stewart Brand in 1972 when he publishes SpaceWar.  It was made popular around 1982 when Tron and WarGames came out.  The third type of hacker is the hobbyst.  The guy that goes home after working a 9-5 job and working on some piece of software or hardware.  This is what hacking and the culture has turned into.  The type of person that enjoys solving real world problems.  The person that might choose to make a few bucks with their new gadget they just created or release it to the open source market which Richard Stallman and the creator of Linux Linus Torvalds strive for.  The term hacking has even morphed and created user groups such as Ycombinator and Hacking News.

The culture has changed a bit, but the underlying ethical ideals are still their.  Open up to the world. The Homebrew Computer Club started it all, hackers of the underground kept it going and now hackers of the future will have continued the legacy.  The security consultants though, will die off as the software of the future hackers get better.

The computer and the idea of software engineering is still in its infancy.  We have yet to see what new changes can be made, but I do know this.  The culture changes, but the ethics remain the same.

Which type of hacker were you?  Do you feel upset by this culture change?

If you liked this post, please be sure to subscribe to my RSS Feed.

Goals for 2009 and Beyond!

26. January 2009 03:00 by Scott in   //  Tags: , ,   //   Comments (17)

I know its about a month late for me to post something like this, but I wanted to document my ideas and goals for the new year.

My 2009 Personal Goals are:

  1. To Release two Web Applications this year! - This does not include drinkingfor.com, but it would count at the end of the year if I found another website that just worked really well for me.
  2. To improve apon DrinkingFor.com. I have about 8 more tasks that I want to complete with it, but after that I will need to make a decision whether to carry on with the site or throw some advertising on it and start a new site.
  3. To write better blog posts.  I have been on the down side of how informational my posts are and I want to change that.  So here I am prepared to be more informational on my posts.


My Current Long Term Goals:

  1. Acquire Boomers.com.  I hope to one day have a company called Boomers, so I will of course need to buy Boomers.com.
  2. Be a keynote speaker at a convention.  I first have to start speaking, but after that all things should rise to the top.  (Hopefully)
  3. Live off the money made from my web start ups.  The road could be long and hard, but I hope to make enough money each month to go home and work instead of going to work and work.


Now, Lets see how many I accomplish!

If you liked this post, please be sure to subscribe to my RSS Feed.

Best Practices for CSS Style Sheets

23. January 2009 03:10 by Scott in   //  Tags: , , , , , ,   //   Comments (23)

A while back Microsoft released a program called "StyleCop".  StyleCop is almost like a style guide for code, kind of like what CSS is for HTML.  It gives the rules for how HTML should be setup and react.  Now I only wish someone released a stylecop for CSS.  In my many years of dealing with CSS I had to come up with a best practice or thought on how I would like all my Style Sheets to look and feel.  This would help me determine exactly where to look over each sheet.  I realized that this guide was in my head and I had never put it down on paper.  So here today, I won't put it down on paper, but will post it here for all to see.  I have seen many style sheets and this is the guide that I use when I start to build my sheets.

  • Style sheets should always have the basic essential styles which are things like underline, bold, italics, predefined h1, h2, and h3 fonts, colors, link variations, and sizes of fonts.  This allows for a similar look and feel on every page of the site.
  • Style sheets should be downloaded as fast as possible from the server and therefore must have the least possible white space while still allowing for the ability to separate styles with the human eye.  This is where a one line per style should come into practice.  For each style used, it should only take up one line of the style sheet.  No longer should you use one line per declaration of style.  This new way is an easy way of looking over each feature of the style while still allowing for fast downloads of the sheet. For Example:
body { margin:0px 0px 0px 0px; background-color: #0077b3; background-image: none; vertical-align: top; text-align: center; font-family: Arial; font-size: .8em; text-decoration: none; }

  • Style names should be camel cased starting with the name/abbreviation of the tag the style applies to and then the name of the div tag/style. 
    • For Example:  I have a Div tag with an id of userName, I should name the style divUserName. 
    • If I have no name for the tag, I should name a type of ID for the style.  For Example: divPageInformation. 
    • Unless it is a standard id like .bold, .italic, etc... I will not declare what the style does, rather I would declare where the style belongs. For example for links: aPageTitle
  • Style grouping is a way to organize your sheet for better readability and navigation of the sheet.  In the past, people used to just put styles up on the sheet and forget it.  Not thinking that they would have to later come back to the sheet for editing.
    • If the style is generic through out the entire site, I group it at the top of the sheet with all the other generic styles.
    • I then group all the styles by page and then control/object it styles.  I then alphabetize the styles in each group for a fast skimming rate.

For Example:  I have an accordion that is generic along the entire site, so I would group the entire accordion together and then alpha sort the tags.

/* Accordion */
.accordionContent { border: 1px dashed #2F4F4F; border-top: none; padding: 5px; padding-top: 10px; }
.accordionHeader { border: 1px solid #2F4F4F; font-family: Arial, Sans-Serif; font-size: 12px; font-weight: bold; padding: 5px; margin-top: 5px; cursor: pointer; text-align: left; }
.accordionHeader a { text-decoration: none; }
.accordionHeader a:hover { text-decoration: underline; }
.accordionHeaderSelected { border: 1px solid #2F4F4F; font-family: Arial, Sans-Serif; font-size: 12px; font-weight: bold; padding: 5px; margin-top: 5px; cursor: pointer; text-align: left; }
.accordionHeaderSelected a { text-decoration: none; }
.accordionHeaderSelected a:hover { text-decoration: underline; }

For another Example:  I have a reports page.  I group the reports page together separated by one line and then group the report styles together while sorting them.
 

.liReportChkbxs { list-style: horizontal; margin: 0 5px 0 0; display: inline; }
.ulReportChkbxs { float: left; margin: 0 5px 0 0; }

.liReportsList { list-style: none; padding: 5px 0 5px 5px; }
.liReportsListHorizontal { display: inline; }
.ulReportsList { text-align: left; display: block; list-style: none; }

I hope that helps in your style sheet endeavors.  I sure do wish I didn't have to go through the learning phase of this type of style.  I would love to hear my readers thoughts on this guide and how they differ from it.

If you liked this post, please be sure to subscribe to my RSS Feed.

My 2 Year Anniversary

21. January 2009 03:36 by Scott in   //  Tags: , , , , ,   //   Comments (11)

Today is my two year anniversary at my job.  I haven't been congratulated, appreciated or even thanked for the work I have done with my company.  (Was congratulated the day after with cup cakes and a card...) I guess you have to speak up and let people know what is going on before it happens.  I have learned a lot at my job and have taken very little to do so.  These days that go by feel tiring and sad.  I am in a supporting role now after I built an application from the ground up.  The SQL database, the documentation and the code.  I came out of college knowing very little about databases and even less about coding.  I develop in ASP.NET and C# which I had to learn from the start with this job.  I have barely had a lick of C or C++.  I was a computer Engineer, yet this job took me in to build a web app for the customer.  The project was built by me and it is my little baby.  Now I am in a supporting role in a team of 4 which I am the only one working in .NET while my other co-workers work in coldfusion.  My job was interesting when I first started building the application, learning things for the first time.  Now most of my time is spent experimenting with new technologies and research (cough, cough surfing) the internet in search for more.  Trying to learn new things and doing my damnedest to learn more of C#.  I have a firm grasp on the easy parts of C#, I just started using classes about a year ago and have figured out methods and code reuse when I was just starting out.  I remember the day I figured it out.  I must have deleted 1000's of lines of code.  It was nice.  It was a good day. I am just now picking up expressions and actually have my own personaly framework sitting at home.  I have a vast collection of extensions, methods and classes that I have written 90% my self.  I love the term "code reuse".  I used my framework in every application I make and it sure does come in handy when I want to do something really fast without having to re-invent the wheel. Having your own framework makes life a lot easier when you want to shell out code fast for a customer that you have already used before.

I remember my co-worker first pointing me to CodingHorror and I was just flabbergasted.  There were people out there who had way more experience than I.  It was an entire community.  I was so impressed. I wanted to join it, and be apart of it.  I talked to my boss about attending my first conference Dev-Connections where I again was so impressed.  I loved it.  I got to talk with some of the most appealing ASP.NET guru's.  I learned a lot from that conference and now I want to go back as a public speaker.  I went to see how to do it finding that I needed to submit a few ideas about what to present.  I missed the deadline the first time by a few days and the second time by 2 months.  I have signed up to the list to know when they decide to ask for speakers and one day I will be a presenter.  I have been known to be a great speaker in my time and can present upon a subject well.  I just stink sometimes at writing about it.  Thats why I started a blog a bit before DevConnections. I wanted to write better and be able to put my thoughts down on paper.  So now on the spare time I have I write a blog post or two.  I enjoy blogging and hopefully one day I will become a .NET MVP.  That day will be here before I know it hopefully.

I built my own bug tracker for my application and I usually get one or two fixes a day I get to work on.  By 12:00 Noon, I have my work down for the day and need to find another 6 hours to use up.  After I came back to the job from DevConnections, I presented my boss with an ideal for an admin assistant program.  They couldn't give me funding so they told me to work on it on my off time.  I haven't truly touched it in about 6 months.  I find my self getting bored way to fast with nothing to do.  I have told my boss during my meetings with him that I have nothing to do and he told me to present the customer with this and see what he says.  

After two years, I have tried to move up the latter a bit, but since I am located in Melbourne, Fl it is hard to find another programming job around the area.  I am here and can't move because the woman I love is going to school.  I have been called by Microsoft a couple of times to come interview, but sadly and respectfully decline not wanting to waste their time because I wasn't able to move.

After two years, I enjoy my time because I get a lot of free time with little to no dead lines, but it does get boring.  I wish I could find a better job in my area, but don't see that happening any time soon.  I am trying my hardest to build applications during my off time at home and have been decently successful.  As you can see from my Profile, I have done a bit and am still working on DrinkingFor.  I hope to have that finished in the next month and be working on another few ideas I have very soon.  Time will only tell how far I get.

I got this job straight out of college and I feel it is time to move on, hopefully to one of my Startups but I could be happy with another company for now. The future is bright with my startups, hopefully I get to work from home by my third year.

Thanks for Listening.  

Happy two years to me!


If you liked this post, please be sure to subscribe to my RSS Feed.