Generation IT Bridging the gap between business and information technology

10Apr/100

Programmers learning something new: a simple guide

I struggle a lot to learn new programming languages on my own.  It's not that I'm not smart (I want to believe I am VERY smart) but it's the combination of lack of time, lack of desire and having no answer to the question: "Great, I've learned X... now what?"

I've started to learn about Django, and I believe it will be DIFFERENT this time.  Why?  Because I have created a simple guide to learning something new from a programming perspective:

STEP 1: Accept that you may burn out and ask "why bother" and figure out the answer to it before starting

I had stated before:  It's hard for me to learn something new when I expect to do precisely nothing with it.  This is what happened with me and Ruby on Rails.  Ruby is a cool language and Ruby on Rails was really awesome to build scaffolding with.  However, I didn't really know what else I wanted to do with it.  I suppose I could have learned it's cool AJAX capabilities that go with it, but really, it just didn't appeal to me.  Therefore, it went on the infinite back-burner

Back when LINQ was new, I struggled to learn it as well, because even though I do .NET professionally, I was so knee-deep into what I was doing that it would have been almost a waste of time to really sufficiently learn it.  I finally got a project in which allowed me to utilize LINQ to SQL effectively and easily and since then I wouldn't know what I'd do without it. Again, once purpose settled in, I was ready and very willing to learn.

Your 'why bother' may be different.  Your success may be dependent on how you handle it.

STEP 2: Do the tutorials

These days, it's pretty hard to find popular frameworks which have no or incomplete tutorials (I'm sure anyone could find examples where this isn't true, but in general, it's true).  Also, framework creators know that a quick and simple tutorial is the best chance for a developer to get on board, especially in the framework's early stages.  Django has a wonderful tutorial, split up into four parts building a poll system (I feel like poll systems are the hello world of the web development world).

Here are reasons why I don't like to just "dive into the code":

  • You cannot be guaranteed what you are looking at is the correct way to do it
  • Most of us are lazy, and there may be certain things hidden by shortcuts which obfuscate key basic techniques used by the framework/programming language
  • There is more impact in doing it yourself, seeing what works and what doesn't, rather than just reading through it and trusting it works
  • It's less fun!

Tutorials are the best way to get yourself acclimated, set up your environment, and ultimately help you decide "why bother?"

STEP 3: Research technology on StackOverflow

I am a HUGE fan of StackOverflow.  I've never met a bigger group of developers, all willing to write great questions and thorough yet quick responses.  The reputation system is awesome.  Any developer not utilizing StackOverflow is SERIOUSLY missing out.

StackOverflow is a great way to see what difficulties most users have, as well as to see how these user's issues are resolved.  While it's not immediately helpful, you will drill back into your head, and all of a sudden, you'll come up to a problem where you say "wow, I remember this on StackOverflow!"

StackOverflow is a great place to see how a technology stacks (get it) up.  For example, a quick search of Django immediately show questions about scalability, whether a user should use Django or X and configuration questions. A few quick searches and research will give you a sense of what type of framework Django is.

STEP 4: Think Small

I picked Django because I had an idea for a website and needed a specific framework.  I discussed the idea with a buddy of mine, a developer who uses Django, and he sold me the benefits of using Django.  I owned hosting which could support Django but not .NET, so it looked like a good choice.  Also, I was in the 'market' to learn something new.

Unfortunately, I couldn't just dive in because I needed to learn Python as well as the basics of the framework.  Therefore, I decided to table the original idea for now and decided to build a personal website for myself entirely in Django.  It took hours to do, I had to read up on a lot of how Django and Pyhton works, but the idea was simple enough to wrap my head around so I was successful.  You should see a site hopefully by the end of next week.  Because it's my own personal website (and not a large, professional site), it's okay if it has a few problems with it or if I did it incorrectly;  it's all part of the learning process.

STEP 5: Have a buddy help you learn

It's nice to be able to send code to someone, even if it is just a file or two, for them to kindly message you back and say "get out of your .NET world, here's a better way to handle what you are trying to do."  Having a human allows you to do a sanity check as well as to see if you've missed any nuances.  It's also nice to have someone to ask for help on really simple yet bothersome problems.  It's a lot harder to do this using the Internet.

STEP 6: Have fun!

Every blog post with steps needs a cop-out answer.  Here is mine.  Most of us are learning new languages because ultimately we want to.  You should have fun with your learning experience!

16Mar/101

My Name is Matthew Doyle, and I am Moving

So it's been a while since I have posted.  Every  blog 'dos and donts' post tell you a) stick to a schedule and b) to not apologize for your lack of posts.  Rule breaking time:  I haven't stuck to any schedule and I apologize for my absence.  I am mainly sorry to myself:  blogging makes me happy most of all, gets me focused on what I think is important.

When I started this blog, I tried to keep it mostly professional.  I am finding this to be too difficult.  Who I am as a person and my personal life is very important to me.  Therefore, I will start blogging about me;  that which makes me human.

My name is Matthew Doyle.  I currently live in Rochester, NY with my fiancee, Elise and two cats named Rupee and Craig.  I own every latest generation gaming console, but don't consider myself a hardcore gamer, and I hate online play.  I don't read books often but I read many blogs, I like to laugh, and I have a dry, offbeat sense of humor which quite frankly I think to be charming.  I am not very political, but if a gun was held to my head, I'd say I lean Republican, although I think the current divided political structure is crap and would give up any title to stop arguing and start making changes.  I am an avid fan of baseball and cannot stand watching football.  I think that's about how much I want to say about myself.  Oh, and I program.

Montauk PointI also happen to be moving.  After thinking about our situation here in Rochester, my fiancee and I have decided to pack up and move to Long Island.  We both were up in Rochester for our college years:  I went to RIT and she went to SUNY Geneseo.  We both had a lot of great experiences.  We are both employed.

I grew up on Long Island, and she grew up in a nice suburban area in Maryland similar to where I lived.  Our jobs hold us to Rochester, and we've determined that family is important to us. It's time to move on.

So what will become of me?  I don't know, and that's perfectly fine with me!  It's usually the case where I err on the side of caution and it feels exciting to try something different.  These things happen for a reason and I am ready for the challenge.

What will become of my blog?  I cannot say.  I don't want it to become purely personal as my goals are to grow professionally through it.  I also don't want it to become just another techie's blog.  I think what I will do is try to post at least 3 things monthly that relate to tech, such as current projects I am working on.  However, within those posts I will aim to post some stuff that is going on personally.  For example, I want to post about my experience trying to get movers eventually (hint:  it's a ton of work and I cannot decide if I like how it's going yet or not).

Thank you for reading, and see you on the island!

Filed under: Personal 1 Comment
28Jan/102

Where’s my iTablet!

Disclaimer:  I am not an Apple hater:  I've owned two Apple laptops, a 3rd generation iPod, and two iPhones, and loved each and every device.

I'll admit, when the rumor mill started about the Apple tablet (you know, like years ago) I was excited.  I have always wanted a tablet:  I've always wanted a device smaller than my work laptop, where I can take to meetings or on the road with me where I can jot down notes, perform simple tasks such as email and surf the web, and look at documents if need be.

I have two device types current which I depend on throughout my entire day:  my iPhone, which is a quick reference guide to my life and any information I may need no matter where I am, and my laptop, which is where I conduct business.

What is missing, from an organizational standpoint, is a middle ground.  The iPhone is just too slow for me to jot down notes throughout the day, and voice recording is sometimes impossible.   My computer is not always next to me and when it is, sometimes it's not in a state where I can easily access the information I need or where I can jot down notes.

For years I've thought that the tablet PC was the answer to this problem.  The concept of flipping the monitor around and hand writing notes and diagrams has always appealed to me.  However, I was never really comfortable with the price, especially when most of the tablets had Microsoft Windows on them (nothing against it, I just felt the computers were underpowered to handle a full OS)

Fast forward to this year, where I was practically PROMISED an Apple tablet.  I own a Macbook Pro, and love how quickly I go from opening the lid to using the computer.  I love the interface, the usability.  It's clean, usable and all in all fun. If it had tablet functionality, I'd be all set!  Finally the announcement came, and we were presented the iPad.  I guess the device is cool and has its uses, but there's one problem:

IT'S NOT A TABLET!

Aside from my opinions of the device itself (ahem, iTouch XL), it's missing key components which make a tablet PC great:  stylus functionality and multitasking.  The operating system should have been a slightly stripped down version of OS X, and not a beefed up version of the iPhone OS.

Am I asking for too much from Apple?  I don't think so, because I, like the rest of the world was anticipating a tablet.  An Apple tablet would have been awesome.  Knowing Apple, they would have refined the handwriting detection, it would be a dream to use, and I would be excited to get my hands on one.

I guess I will have to wait for that day to come... I will NOT be getting an iPad.  Sorry Apple.

Tagged as: , 2 Comments
25Jan/102

College Education: Why we Go

Penelope Trunk is the author of "The Brazen Careerist" and in my opinion has one of the most well written blogs out on the Internet.  I also find myself not agreeing with a lot of her posts.  She is what I like to call a great blogger:  One that you can really get into her writing, even disagree with, and yet still go back and read more.  She has an interesting life and perspective.

I caught one of her recent blog posts: How to manage a college education.  It is an interesting read, which discusses how obtaining a traditional liberal arts degree is elitist and overpriced.  She mentions how the Internet already has places for learning and discussion, and all that needs to be supplemented is experience.  She tells us that career centers are generally terrible, and concludes that prospective students should pick a college based on a good track record for getting student jobs.

I didn't graduate with a Liberal Arts degree, so I cannot speak to this this mentality directly.  My gut tells me it's missing two important advantages college offer which work experience right out of high school doesn't: trying new things in a safe environment and it's difficult to find a first job in a field you desire when the employer generally requires a degree, such as application development.

I graduated with a degree in Information Technology from RIT three years ago.  When I was 18, I was convinced I wanted to build circuits and design computer chips.  I was accepted into the Computer Engineering program.  After 18 months however, I decided engineering was not what I wanted to do.  I then was convinced I wanted to be in network administration where I would help set up routers, learn the OSI model, help decipher IP address and sniff packets.  I joined the IT department at RIT in hopes of doing this.  What do I do now?  I am a lead web developer, developing and maintaining a platform for Brand Integrity -- far from networking, and I am STILL searching for my career path!

I've changed my career path 3 times in the 5 years I was at RIT.  I could have gotten all the information for my current path online.  There are millions of resources out there that teach and discuss web design and database architecture.  But being part of the student body, seeing my peers go through exactly what I was going through was invaluable.  Making mistakes in class planning would at worst make for an uncomfortable 10 weeks (at least at RIT).  Having access to teachers to reach out to was also a perk, one I don't think a majority of the student body really appreciates as much as they should.  Guidance from those teachers really helped me figure out where I was going.

So the question to ask is, "Which is more useful-- four years of education, or four years of experience?"  In my field, the former is true.  Sure, we can all come up with the raising stars-- those who have not gotten formal education.  Steve Jobs and Bill Gates are always good examples... but how many of us are a Steve Jobs or a Bill Gates?  It's a great goal to strive for, but we ALL cannot be Steve Jobs!

Penelope does bring up a great point in her post however... schools need to learn how to get their students great jobs. The relationship shouldn't end with education.  Schools need to become more aggressive in alumni affairs, teach how to effectively network, and provide networking events.

So in conclusion, why do we go to college?  Because, at least for us in IT, it's required by most desirable entry level job postings, and it's a safe environment to experiment on what you THINK you want to do with your life.

9Jan/100

Support: Not just for Fixin’

As the sole IT person for the company I work for, my responsibilities are to make sure the nine employees have working computers, back up solutions, and can come to me for any questions or problems that may arise.

We have a humble back up solution.  It involves a server and an external drive which gets switched out every week.  While it's not perfect, it has worked great for years... until that faithful afternoon, December 31st 2009.

Because my schooling is not in server administration or networking and quite frankly, I have no time to research the problem, I called Dell.  After two separate calls (the problem was intermittent, so it was hard to nail down and test), Dell decided the motherboard was fried on our server.  Ouch.

Then came one of Dell's consultants the following day to our humble set up.  He determined that it was my backup drive which was causing all the issues! What was worse was that the drive was not purchased from Dell, so it wasn't under warranty.  Even bigger ouch!

What happened next was the unbelievable.  He could have left.  He could have reported back the problem and perhaps, made my life a little harder with Dell.  Instead, he took a look at the backup solution and advised me on how to strengthen it.  He told me about how inexpensively I could configure redundancy, and which particular hard drives I should look to purchase.  While this was all stuff I've dabbled in on a personal level, it was very educational to learn on a professional one.

If he just replaced the motherboard as Dell sent him out to do and left, without checking how everything was working?  I would be calling Dell back, 3 weeks later, with the same problem.

The Chinese proverb:

Give a man a fish and you feed him for a day. Teach a man to fish and you feed him for a lifetime.

Comes to mind.  It's absolutely true in this case.  I am glad to have my server back and set up with redundancy (as it should have been in the first place).  However Dell was the true winner in this case:

  • I personally have further trust in Dell and am more likely to pick them for buying new equipment in the future. (more profit)
  • They've avoided another support request from a disgruntled customer (doesn't matter whose fault it is!) (less cost)
  • I've told multiple people of my story, thus giving more positive awareness to Dell. (more positive exposure)

What can be learned from this experience?  Focus on what the client/co-worker/customer is looking for before fixing the problem.  Sometimes, the problem is over the user's head, and you cannot explain the fix.  That doesn't mean you cannot help them change their usage and perhaps curb them from getting themselves into the problem again!  This empowers the user to accomplish their goals, while lessening your support requests.

16Dec/090

Mini Post – DotNetNuke and web.config problems

I could have Twittered this but I wanted to put it here: Every now and again I find myself refreshing my developer's copy of my project on my local computer from source control.

The way I have source control is primitive and probably incorrect. I tend to save ALL of my project (DotNetNuke included) into source control, so when I get a clean setup, I can basically run it out of the box.

This particular time, I was working with a different database than I normally do. Because of this, my source control wrote over my web.config and copied the wrong database settings, which resulted in the web.config pointing to a no-longer existing database.

When I loaded up my website, I was greeted with the installation wizard from DotNetNuke. "Okay," I thought, "Perhaps I forgot to update this particular database with the new DNN version." I clicked on next a few times and realized it was just the wrong database being referenced. I changed the web.config to be the correct database and credentials and all was well...

Or was it?

I loaded up my project and I was getting rather unhelpful "I need to put a ScriptManager on the page in order to use AJAX.net" error. I just couldn't figure it out! It worked before! Long story short, the DNN install wizard messed around with the web.config and broke a few things configured specifically to my install. Once I pulled up an older web.config, everything worked perfectly.

This wasted about 2 hours of my time (which I don't really have) and was easily avoidable if I was paying attention.

Lesson learned: Always be methodical with processes which you perform regularly.  If something strange goes wrong within the process, it probably doesn't belong and should be approached very, VERY carefully.

9Dec/093

Opening to a New Window – Why Isn’t the Target Attribute a Valid Tag?

Ever since I was a young web developer going through college, it has been drilled into me to be standards compliant when developing for the web.  In fact, it went as far as being 20% of your grade just to be XHTML 1.0 Strict standards compliance.

Just to be clear, I am talking about XHTML 1.0 Strict.  Transitional, while it has its uses, doesn't capture the essence and spirit of why we want to be standards compliant.  Creating your web sites to be standards compliant is something as web developers we should strive for.  It promotes standardization of markup, it helps to separate layout from content, and it creates the ability for all modern browsers to display the site same way... sort of.

One thing that really gripes me is the target attribute for the <a> tag.  This was marked as obsolete, and in the strict specifications, it's invalid.  Why is this the case?  It's very helpful,  unobtrusive, and works really well with tabbed browsers.  I can understand every other valid XHTML 'no-no' such as not using align attributes or a center tag, just this one just kind of escapes me.

<a href="http://www.google.com" target="_blank">Why is this invalid?</a>

So why is it invalid? As far as I can tell, it's because we shouldn't assume it is what the user intended and that it should be left up to the user.  I really hate this explanation.  It makes me think whomever thinks it has never dealt with a real world user.  Most people outside of the technological world are not savvy enough to right-click and open a page in a new window.  For us that do know how to do it, it's actually quite annoying.  Besides, when I link to a webpage outside of my domain, how often would we want the user to navigate away? It is not very user interface friendly in my opinion.

Another reason is the page loses the effectiveness of the back button.  Okay, I can buy this, but it's packed neatly on a new tab on all new modern browsers.  It's easy to navigate back to the original site.

A last reason I can discover is because of screen clutter.  This is becoming a moot point due to the fact that almost every popular browser uses tabs rather than opening a new window.  In fact, the only browser which doesn't utilize tabs is IE6, and it's popularity is quickly dying.

The standards compliant solution: Use Javascript. Bah!  That's just something else I have to test.  target="_blank" works fine in all cases.  Using Javascript to do something the browser does natively feels silly.  I know the code is pretty compact and with jQuery you could literally do it in one line, it's not nearly as clean and understandable as target.

My user experience friendly solution: In order to appease the target-hating standards compliant gods, my solution is this:  Provide a setting on the top of the page which asks "Open all links in a new window" and "Open all links in the current window."  This way, you allow the user to decide how it works, it's standards compliant, and it's fairly simple to implement.

Perhaps help is on the way. Doing some research on the topic, I came across the spec document for CSS3 Hyperlink Presentation (yes, this opens in a new window!) which describes using CSS to determine target parameters.  I can easily get on board with that!  Hopefully we can see CSS3 implemented across all major browsers in the not-to-distant future.

In Conclusion: I will still be using target="_blank" to pop up new tabs on my blog.  The blog is validated in Transitional anyway.  My belief is that any hyperlink in a blog post will be clicked on to allow further reading of the topic.  That is the experience I want to provide for my readers.

7Dec/091

Mini Post: Tags and Categories

I was helping my fiancee set up her blog, when she asked the question:  "What is the difference between tags and categories?"

I explained that categories were used for organizing your posts in a hierarchical manner, whereas tags can be used more for searches.  I tried to show her using my blog, to which I discovered:  I don't use either correctly, at all!  I think my tag cloud is weak, and my category structure is non-existent.

Fortunately, Google, as always, is to the rescue.  I did a quick search on the topic, and discovered this blog post: Categories versus Tags – What’s the Difference and Which One? The blog post describes that categories are primarily for internal navigation on your site, should be fairly well defined and are hierarchical, whereas tags are better suited for searches on other sites such as Technorati. It's also important to note that categories are not tags, but tags can be categories.

Over the next few weeks, I'll be looking to incorporate a better category structure on my blog and work on creating better tags. It's always fun to learn new things when trying to teach others.

6Dec/094

Social Media Myths

When we think of social media, we think of Facebook, LinkedIn, Twitter and MySpace primarily.  Some call social media 'Web 3.0.' Truth be told, social media has been in existence ever since people could connect to an ISP.  We have forums, newsgroups, mail lists, chat rooms and even guest books.  In fact, we still have these grandparents of social media to this day, and still have great uses.

But I digress.  I read an article from WebWorkerDaily on six common myths which people not in the know believe.  The author, Aliza Sherman, attempts to dispel all the myths and does a great job doing so.  The myths and her explanations are straight forward and clear, but here are some that I had opinions on:

You can easily use your Facebook profile for both your personal life and work.
Aliza discusses that it's hard to manage your facebook profile for both work and personal life, because it is difficult to have a healthy balance of work and personal life status updates.  I agree that this myth is false, however one thing should be pointed out:  you never know when a friend will turn into a business contact.  My suggestion is to keep work away from Facebook, but to update Facebook with big professional changes/events that happen in your life.  If your friends are truly your friends, they would be interested to know anyway.

LinkedIn is just a resume site.
I believe that LinkedIn is the best 'social media' site you can be a part of for your professional career. Making professional contacts and being introduced to 2nd degree contacts is a great way to get to know people and form a healthy network of potential clients, merchants, and yes-employers. While I agree that LinkedIn isn't just a resume site (the author does a great job explaining this) I don't think we should be blind to the fact that we ARE essentially putting our resume up for the LinkedIn world to see. Recruiters use LinkedIn to find candidates for other jobs. If a current employer is worried about such a 'problem,' they should focus less on where their employers are putting their information and focus more on being a great place to work.

Social media is the new advertising platform.
I am not sure how I feel about this myth and whether I agree it's false or not. The author explains that with this old mentality of "hey, we can advertise on this!" is what caused the boom and bust of the 'bubble' back at the turn of the century, that we'd be foolish to apply the same methods of advertising on the social media platform because it's supposed to bring the power back to the people.

If the myth read, "You can be successful using tried and true methods of advertising on the social media platform"  I would be inclined to agree that it is not true.  However, there is plenty of advertising going on in the social media world.  The ones which are most successful are those which don't look like advertising at all.

Take a look at Twitter, and at some of the more prolific followers you have.  You've followed them for 6 months, they've always had interesting things to say, and you agree with most of it.  Then they post a link to their book.  If you've been following them and agreeing with them for a while, you're inclined to go and at least check it out and see if you'd be interested.  You wouldn't immediately unfollow them because they advertised--if you do, shame on you... stop being so pompous and take it for what it is!

Is this advertising?  YES, and it's pretty effective!  It's establishing trust before the purchase, something which is very difficult to do.

In conclusion
The article is very good. I've always thought what was missing from the social media world is a clear purpose. This article shows me that there are people thinking about it.

Oh and for my own myth:
Sites such as Facebook and Twitter will eventually be the death of blogging
This is false. Blogs are only enhanced by the usage of Twitter and Facebook. Blogs will always be important because:

  • Easily customizable
  • You can set your own rules and policies on your own blog
  • RSS feeds are a great way to aggregate and read blog posts
  • Much more adaptable to prose writing, which is missing from status updates.

What are your thoughts on social media and some of the misconceptions about it?

21Nov/090

Apple and the app store: Are they doing it wrong?

Rotten AppleRecently I read an essay from Paul Graham titled "Apple's Mistake" (if you've never read any of Paul Graham's essays, I strongly suggest you check his web page out, http://www.paulgraham.com) which describes why the app store is not designed with the developer in mind, and that Apple is selling the apps a lot like how they sell their music and movies.   Paul indicates that if this problem isn't fixed, developers will flock to other devices and companies once the market for them becomes bigger.

I've personally never submitted an app to the App store.  I have, however been involved in an App project which was rejected by Apple.  We submitted the app somewhere in the middle of October and did not get the app on the store until November 19th.  As far as I have been told, Apple rejected the app because it was sending too much data through the network, and wouldn't disclose how much an app was allowed.

I am interested in mobile development because it's becoming a major player in the communication and technology world.  If it were to take me a month to get an app released, it would make me think twice about developing it.

Apple claims that they have a review process for security purposes.  If done well, it benefits us, the developers, because if our apps are given the 'seal of approval' we will not have to sell security to our clients.

Here are four changes Apple needs to do in order to fix their process:

1. Provide a way to test the app against the approval process to the developers. Generating automated test cases and unit tests for applications should be done for ANY application you plan on releasing, but Apple should provide an ability to test your application based on their approval guidelines.  This way, a developer can be more confident in their submission

2. Rules and guidelines need to be more visible to the developer world. Giving developer's access to all of the guidelines Apple uses to determine whether or not an app is accepted may result in them designing their apps just to avoid the apple hammer.  This aside, visibility enables developers to design with 100% compliance to what Apple's needs are.

3. Developers should have more information about why their app was rejected and be able to challenge the decision. There needs to be a better process with facilitating rejections.  In the case of the app I was involved with, simply stating that we are sending too much data and not disclosing how much you are allowed to send is a terrible experience.  This means that our developers had to go back, find what was taking up most of the bandwidth, design it so it wouldn't use as much, and hope it is enough.  This... is simply ridiculous.  Imagine it took an hour each time you compiled, found a bug and fixed it?  You'd quit your job in less than a week!

I also believe a developer should be allowed to contest a decision to reject an app. Suppose in our case, we had good reasons for sending so much data?  What if it truly enhanced the usability of the iPhone?  What if the data was being sent for a good cause?  It should at least be up for discussion.

4. Allow a private store area where you can release apps to a subset of users (perhaps by company) and loosen (or get rid of altogether) the approval process. It's going to become more and more important for companies to come up with custom applications that only they will use in their own business.  Suppose a company had a large team of technicians and wanted to provide a logging program for their iPhone.  How would they be able to do that easily?  I know you can provision separate phones for an application, but that seems clumsy.

I love Apple, and I am hugely impressed with the amount of professional looking apps are being released in the store these days.  However, other phones are going to become real competitors.  If Apple doesn't want to lose their user-base, they need to keep the app store thriving.  In order to keep the app store thriving, they need to make their developers happy.