How Do You Decide Which Books to Buy?

How Do You Decide Which Books to Buy?

Being a member of Border Rewards, I tend to use the %-off coupons for books that will end up being discounted more than Amazon’s prices.

For the past few weeks I had $10 in Borders Bucks that I needed to use by the end of the month. I had been sitting on it because I could not decide on a book to buy.

My question for you is, how do you decide which books to buy?

Are there any particular web sites that you use for book reviews? Do you use a queue like an Amazon wish list to keep track of the books that you plan to buy?

1
5 Blogging Mistakes

5 Blogging Mistakes

Perhaps it’s just the Thanksgiving holiday, but recently I have been so distracted that has made it hard for me to blog. If blogging is something that you are looking to pursue, I want to make you aware of what I like to call the 5 blogging mistakes.

5 Blogging Mistakes

1. Money Cannot Be Your Only Motivation

If you are creating a blog for the sole intention that you are going to become rich by advertising income, stop right now. You first couple blog postings will be probably pretty thought provoking, then as you notice your Adsense account still says $0.00 after just 1 week, you will become so frustrated that you will start posting links to the most trendy, popular topics, contributing little value to your blog postings, after 2 weeks you will still have $0.00 in Adsense revenue and a worthless blog.

2. Don’t Blog About Something That Does Not Interest You

If you care very little about something, how can you possibly write about it day after day. This is very similar to your day job. Someone once said, “discover what you enjoy doing, then find a way to make money doing it.” This is very similar to blogging, if you enjoy a particular topic you will have no trouble coming up with ideas to write about.

3. Don’t Get Distracted

Like everything else, other things going on in your life: holidays, vacations, work, family, etc. can get in the way of your blogging habits. If at one point you have a momentum going and you are able to write many blog posts, save a couple of these for the days that your mind is not in the right place.

4. Don’t Give Up So Quickly

If money isn’t your motivator, but readership is, you need to learn to have a little patience. Especially with a new blog, it takes time for your content to propagate the search engines and for people to find you. Unless you are a celebrity, odds are nobody is going to be looking for your blog, but they just might stumble across your content. Also, the more time you give it, the more content you should have. When somebody does find your blog, they will have a reason to stay there instead of reading one post and moving on.

5. Don’t Try To Sound Like Someone Else

If I wanted to read a blog that sounded like someone else, why would I not just read the blog from that someone else? There is nothing wrong with having a blog topic or niche that is already covered by someone else, but the writing style has to be your own. You are more likely to connect with your readers if your thoughts are coming from you instead of trying to sound like someone you are not.

Since I’ve started blogging, I fallen victim to each one of these and those blogs have ended up in a black hole on the web.

If you’ve made a blogging mistake, please feel free to share.

—————————–
Technorati Code: QXG6X7QZ8KYK
—————————–

0

9 Useful Websites for Thematic Child Theme Development

You’ve may have noticed a design change here at RepeatGeek, if you’ve visited before. I have been exploring different WordPress frameworks to build my website around and I finally decided upon Thematic.

My decision to go with Thematic was that it is extensible, stable, SEO optimized, easily configurable and most importantly FREE.

In developing my child theme, I thought I would share some resources that I found useful.


A Guide to Thematic – ThemeShaper

AGuideToThematic

This is a wiki from the Thematic creator Ian Stewart that seems a little incomplete, but does contain some useful code snippets.


The Old Busted Guide – ThemeShaper

CustomThemeFramework

Before there was the wiki there was the old busted guide. This is still useful because it contains some examples not found in the wiki. Until these are moved over to the wiki, the old busted guide will remain relevant.


How To Create a WordPress Theme: The Ultimate WordPress Theme Tutorial – ThemeShaper

UltimateWordPressTheme
Also from the creator of the Thematic theme is an 11 part tutorial that walks you through the creation of a child theme.


Thematic Page Structure – Blue Mandala

ThematicPageStructure

This diagram outlines most of the areas of thematic that you can customize and style. You will want to print this one out.


Build a WordPress theme with Thematic – Wynn Netherland

BuildWordPressThematic

Wynn Netherland put together a good tutorial to get you started with setting up your WordPress environment with Thematic.


Useful Thematic Filters – WordPress Theming

ThematicFilters

A collection of several useful code snippets for adding filters and actions within Thematic.


How to Create Your Own WordPress Theme in Just 3 Hours – Matteo Stagi

WordpressTheme3Hours

Matteo Stagi has a multi-part tutorial that walks you through the customization of a Thematic WordPress child theme from scratch.


So You Want To Create WordPress Themes Huh? – Spicy Web Design

SpicyTheme

The Spicy Chef has an 11 part (10 Official parts and 1 Unofficial part) tutorial on creating a Thematic child theme from scratch.


ThemeShaper Forums – ThemeShaper

ThemeShaperForums

If all of your questions cannot be answered via tutorials and websites I listed above, there is always the free support forums at ThemeShaper.


0
What I’ve Learned from Teaching Programming

What I’ve Learned from Teaching Programming

I am not a teacher, professor, trainer, etc. but I recently was afforded the opportunity to teach programming to my co-workers.

At work we started doing more and more development in .NET. I previously acquired skills in .NET from a previous employer. My co-workers had minimal exposure to .NET and object-oriented programming.

My boss approached me to ask if I’d liked to teach ASP.NET to the rest of my co-workers. Naturally, I accepted because I thought teaching would help reinforce my skills.

The Setup

Lesson Planning

I got started learning .NET from studying for my MCTS, so I decided to prepare 10 one-hour lessons based on topics from the Microsoft Press books:

MCTS Self-Paced Training Kit (Exam 70-562): Microsoft® .NET Framework 3.5 ASP.NET Application Development

MCTS Self-Paced Training Kit (Exam 70-536): Microsoft® .NET Framework Application Development Foundation

Since many of my co-workers had not been exposed to object-oriented programming, I made the first lesson an overview. I knew that this would be vital to understanding the .NET framework. For this I just used Wikipedia as a resource.

The conclusion of each lesson was a “homework” problem using the techniques explained in the lesson.

Teaching Environment

Many of my co-workers work remotely, so teaching via the web was the best means. To facilitate this, I used the services of Dimdim for web conferencing in combination with a teleconference bridge.

Successful or Not?

I ended up delivering teaching all of my lessons. There were times where I had technical difficulties where the web conference experience lag time or my lesson samples wouldn’t produce the expected results. Through preparing each week’s lessons I reinforced my .NET knowledge and studied beyond what I was teaching to make sure I could explain any questions that may have been asked.

So my delivery was (mostly) successful and I learned a lot, but are these the criteria in which to measure success?

Feedback

What was missing from my teaching methods was the feedback of my co-workers. I never took it upon myself to ask them if they were learning. When you are teaching in a corporate environment it is difficult to gauge the progress of your “students”.

It would’ve helped me if I knew my lessons were heading in the right direction. I’ve asked my co-workers at the end of all the lessons what they got from my teaching, but by that time it was too late.

A couple of the responses I received were:

It’s difficult to learn a new programming language unless I’m using it for a project.

I tend to get distracted when learning via webinar.

Things I Would Do Differently

I think a classroom setting would be the ideal environment for teaching/learning. This may be costly especially if you have remote employees. Given this experience with teaching via webinar, I sometimes wonder about the quality of some online degree programs.

I also could have given an exam to ensure my co-workers were paying attention and/or grasping what I was teaching, but I think asking a more effective way would be to get them involved by asking specific questions or having them work hands-on in a classroom.

By becoming a teacher (if only through work), I know understand the importance of feedback/evaluation. In academia, most teachers and professors will require an evaluation at the conclusion of a class, but I think continual evaluation would be most beneficial for the student and the teacher.

The teacher can adjust his/her teaching style to adapt to the students and the students will be able to comprehend what they are learning.

3
6 Books Every Programmer Should Own

6 Books Every Programmer Should Own

I’ve seen many lists about the best programming books and I am sure there are a lot of books that are specific to a programming knowledge or technology – that I have not included in my list.

The books I have chosen are those that are meant to inspire, increase productivity and improve your programming design skills.

Note: This list has no particular order.

Code Complete 2

Steve McConnell

The main focus of this book to help you improve your programming design skills.


The Pragmatic Programmer: From Journeyman to Master

Andrew Hunt and David Thomas

This book focuses on the best practices of programming (i.e. what you should and should not do).


Pragmatic Thinking and Learning: Refactor Your Wetware

Andy Hunt

From the author of The Pragmatic Programmer, this book takes one-step back from programming and focuses on your everyday thinking and problem solving skills.


The Productive Programmer

Neal Ford and David Bock

This book will teach you different tools that you can use to make your programming life more productive.


Algorithms in a Nutshell

George T Heineman, Gary Pollice and Stanley Selkow

Unless you’ve memorized the implementation of every algorithm, this book is a handy desktop reference with pseudocode examples.

Alternate: Introduction to Algorithms

Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein

This book has become a staple in many undergraduate computer science programs. Containing much more information and details on algorithms.


Head First Design Patterns

Lisabeth Freeman, Eric Freeman, Bert Bates, and Kathy Sierra

The people at Head First have a way of explaining things in a straight-forward, non-technical approach – a good tutorial and desktop reference.

Alternate: Design Patterns: Elements of Reusable Object-Oriented Software

Erich Gamma, Richard Helm, Ralph Johnson, and John M. Vlissides

Also a common computer science textbook by the Gang of Four (GOF), this book has much more information and more detail on design patterns.


If you are interested in exploring other programming books and reading reviews, check out ProgrammingBooks.org.

What book inspires you to be a better programmer?

36
How to Enter Standard Input in Xcode Debugger Console

How to Enter Standard Input in Xcode Debugger Console

I was having an issue when I ran a program in Xcode Debugger Console that utilized scanf() the program would just hang.

The program would work correctly when run directly from the Terminal.

The only solutions that I could find online were to install a previous version of Xcode.

Solution

When entering standard input, you need to terminate your string with the forward slash ‘/’.

Example:

Enter an integer:

4556/ <—- This is what you input

Sum of 4556 = 21

0
Top 5 Things that are Important to Me as a Programmer

Top 5 Things that are Important to Me as a Programmer

No matter what your field of work, we all have areas where we want to succeed.

I’ve tried to identify the top 5 things that are important to me in life. These are areas of my life where I want to be successful.

5. Professional Development (Non-Technical)

As a programmer, not everything is technical all the time. We will have to give presentations, have meetings or communicate with end-users. For these reasons, I try to focus attention on improving my soft skills as well.

Toastmasters

To improve my speaking and leadership skills, I’ve joined a local Toastmasters group. Toastmasters has helped me immensely by offering opportunities to speak, lead meetings and network – skills which are rarely taught in academia or in the workplace. See Enhance Your Skills By Belonging to Professional Organizations for more information about what takes place during a Toastmasters meeting.

Reading books

Reading technical books all the time gets boring. I will try to mix in a non-technical book into my reading schedule every so often such as biographical or interview books to understand about how other people think and do things (e.g. The Presentation Secrets of Steve Jobs: How to Be Insanely Great in Front of Any Audience) or fiction (e.g. The Lost Symbol).

4. Professional Development (Technical)

Since technology changes so frequently, I placed my technical development on a higher level than social skills. Most of you reading this blog might categorize this similarly.

New Languages and Technology

Keeping up with the latest and greatest technologies can be a difficult task for most programmers. Not only does it take time to learn a particular technology, but you really don’t start to appreciate its usefulness until you start using it in a project.

My primary resource for acquiring knowledge on technology is my subscription to the Association for Computing Machinery (ACM). One of the many subscription benefits is being able to access Safari Books and Books 24×7 – this allows me to read and reference over 1,000 books online.

Sharing of Knowledge

I believe that the sharing of knowledge is just as important as the acquisition of knowledge. This blog’s purpose is just that – to share my insight and know-how with you. If you don’t have a blog or the time to keep up with one, there are plenty of websites that you can visit where you can answer questions asked by your peers or read about the latest advancements in technology see 17 Websites for Sharing Programming Knowledge.

3. Health

One of the topics that seems to never go away and revived each year with New Year’s resolutions is health. I know many people take their health for granted (I’m guilty of it too). One of the first and easier steps that you can take to living a healthier lifestyle is to become aware of what you eat and review your exercise habits.

Exercise

I typically don’t like to exercise, especially when I don’t see instant results. However, when I do, I usually feel less tired and more motivated to do other things. Many people will make excuses saying that “I don’t have the time”. You need to make it a habit – make it a part of your daily routine, just like showering and brushing your teeth.

Eat Healthy

When people think of eating healthy, they probably think of eating salads and vegetables all the time – this is not the case.

“The virtue of justice consists in moderation, as regulated by wisdom.” – Aristotle

Just like this quote by Aristotle, you can eat healthier without giving up the foods that you love – just have them in moderation. I’m not an expert on nutrition, but I always make sure to eat breakfast, lunch and dinner. By becoming aware of how many calories that you consume daily, you can start to make your own choices about what you should and shouldn’t eat.

2. Career

Work is important, after-all if you don’t count time spent sleeping, you probably spend more time at work than at home. We were all hired for what we are able to contribute to the company, but what can your company contribute to you?

Staying Challenged

Is your assigned work keeping you challenged? This has been a red-flag for me in the past when I considered finding a new job. If your day-to-day tasks aren’t challenging, is there something else you can do in your spare time to keep you challenged? Try ask your manager if there is a project that you can work on that uses a different technology or if you can work to improve any existing processes.

Training

I would recommend taking advantage of any type of training (both internal and external) that your employer offers. Most employers will continue you pay you your hourly wage while you are attending training, as long it benefits the company. If you want to advance your career with an advanced degree, look into a tuition reimbursement program if your employer offers it.

1. Family and Friends

I’ve saved the best for #1. Whether you are single, married, have children, etc. we all need someone in our lives that reminds us that there are other things that important in life.

Support

Who do you rely on when you have personal problems? Similarly to what I was mentioning earlier about sharing technical knowledge, the same is true for personal knowledge – try help out emotionally if your friends and family need advice or someone to talk to.

In the future, hopefully your friends and family would return the favor to you, if you needed their assistance.

Appreciate Your Time

There is a time to be serious and a time for just letting go and having fun. Have fun spending time with your family, since it is one of those things that can be hard to come by. Everything else I’ve mentioned: professional development, health, and career are controlled entirely by you and your goals.

I would like to hear about your top 5 important things in your life. Please share in the comments below.

3
Is Troubleshooting an Art or Science?

Is Troubleshooting an Art or Science?

“What do I always say? Anyone can cook.”

I am often reminded of this quote from Disney Pixar’s Ratatouille when I think about troubleshooting. But is it true that anyone can troubleshoot computer problems or debug code?

The Troubleshooting Process

Much like cooking, troubleshooting follows a simple recipe that anyone can follow. Troubleshooting can be broken down into 4 steps:

  1. What are the symptoms?
  2. Can the problem be reproduced?
  3. What changed since the last time the system worked?
  4. Find a solution to the problem.

1. What are the symptoms?

This step will usually be completed by the end users of your application – their complaint will be the catalyst in starting the troubleshooting process. You want to identify any symptoms that are occurring, to help narrow down the problem:

  • Is the application crashing?
  • Are you receiving an error message?
  • Are you getting unexpected results?

2. Can the problem be reproduced?

Sometimes an error can be a one-time occurrence (these can be a little bit more difficult to troubleshoot) – such as a connection to an external database is not available temporarily, but after waiting an unspecified amount of time the system works correctly.  Sporadic errors are more difficult to troubleshoot as there might be several things wrong (at the same time) and may require a problem process of elimination.

For other issues, you want to identify a predictable pattern to the error occurring. For example, if I enter a zero into this field and press calculate, I receive a divide by zero error message.

3. What changed since the last time the system worked?

A program should never change its behavior on its own (unless you are programming A.I.). Something must have changed somewhere in the system, it could be code related, hardware related, operating system related, etc. The change may resulted from something that was done unintentionally, such as Windows installing automatic updates or malicious code.

Many applications and operating systems will have logs that will identify any that may have happened, these will be your primary source for determining changes.

4. Find a solution to the problem.

This is the step where troubleshooting becomes more of an art.

Steps 1 – 3 are really a discovery process – the answers can usually be obtained by asking end users some basic questions.

Occasionally, the solution to a problem is a relatively simple fix and the troubleshooting process ends here. If the solution is not inherent after the discovery process, research needs to occur.

The difficulty lies in knowing where to look. This, unfortunately, is something that will only come with experience. One of the first things that new programmers confront is, “how do I know what data types are available or which one to use?” If you look at it, different variations of this question can be used no matter what profession you have:

Chef: “How do I know what ingredient to use?”

Doctor: “How do I know what to prescribe for those symptoms?”

Baseball Player: “How do I know how to swing the bat for the most impact?”

After you’ve tried a solution, did you fix the problem? Troubleshooting may become a recursive process – because you may inadvertently introduce new errors and will need start the troubleshooting process again finding a solution to the new problem.

The good news is there are plenty of resources (see 17 Websites for Sharing Programming Knowledge) where we can seek out expert advice and find answers to our questions.

Experience is what sets apart the beginners and the masters.

Whether it’s cooking or troubleshooting, anyone can do it – However, each person will have varying degrees of success depending on the experience level.

Photo courtesy of http://www.flickr.com/photos/kiaura/ / CC BY 2.0

1
How to Choose your Next Domain with Visual Thesaurus

How to Choose your Next Domain with Visual Thesaurus

You have an idea for a blog or a website but how do you go about choosing the right domain name with the highest possible impact?

The Rules

When it came to choosing my domain name for this website, there were a few things I was looking for -

  1. The name had to be short enough to memorize.
  2. The name didn’t contain any non-dictionary words.
  3. The name had to be descriptive of the web site content.
  4. The name didn’t contain any hyphens.
  5. The .com needed to be available.

The Discovery Process

I know I wanted the word geek in my domain, since it was my intention to gear my blog towards computer geeks as my readers, as well as, categorize my blog with others in my niche.

Other blogs catering to geeks:

The Missing Link

Now that I’ve decided on part of my domain name, I needed the right word to append to my chosen word: geek, but would also fit within my subscribed set of rules.

There are a few sites that will generate a domain name for you based upon user-specified keywords or categories.

Domain Generator Websites

I started to compile a list of keywords that would best represent the content of this site: ideas, improvement, success, planning, achievement and learning.

Using these keywords along with geek, I looked at the availability of possible domain names. Although the domain generation sites are great resources for checking the availability of a domain name and discovering preliminary results – the results generated didn’t always adhere to my list of rules.

Discovering Visual Thesaurus

Dictionary.com will provide a list of synonyms (for most keyword searches) at the bottom the keyword entry page. I noticed a new visual representation during my keyword searches – which proved to be a valuable tool: The Visual Thesaurus.

The Visual Thesaurus recursively connects your keyword to all related synonyms and allows you to interactively rebuild the synonym tree by choosing different words.

Manipulating the tree is both fun and useful, you can quickly drill-down on relevant keywords without the need to perform additional searches.

Note: Visual Thesaurus only allows you to use the interactivity functionality on a trial basis; however, you are able to drill-down to six levels using the free trial. If you find the tool useful you can subscribe for as low as $2.95/month. Most keyword searches will allow you to view a static representation of the Visual Thesaurus tree at no cost.

Overall, the Visual Thesaurus is a great resource for quickly identifying keywords for your domain name.

After a few passes looking at related words with the Visual Thesaurus, I decided upon repeat as the word to append to geek.

Compile Your Short-List

By using a combination of site content keywords, domain name generators and the Visual Thesaurus, you should have a comprehensive list of possible domain names choices.

Compare each against your list of rules and decide which one will become your next domain.

1
17 Websites for Sharing Programming Knowledge

17 Websites for Sharing Programming Knowledge

Whether you are trying to drive traffic to your own blog or are looking for assistance when developing – it’s sometimes useful to participate in programming forums and blogs by sharing knowledge.

I’ve compiled a list of 17 websites where you can share your own knowledge or search for help on a problem.

Apple

Apple Discussions – Developer Forum

AppleDiscussions

Apple Discussions are a resource for everything Apple: iPhone, OS X, Hardware, etc. One of the categories is the Developer Forum, which is a resource for developers using the Apple OS X platform.


Java

Sun Forums

SunForum

The Sun Forums are a resource for Java developers and other Sun software and hardware. Some of the Java topics covered:

  • Java Essentials
  • Core
  • Database Connectivity
  • Desktop
  • Developer Tools
  • Security
  • Java HotSpot Virtual Machine
  • Enterprise & Remote Computing
  • Real-Time
  • Java Mobility

Microsoft

ASP.NET Forums

ASPNET

The ASP.NET forums is a resource for those developing web applications in Microsoft ASP.NET. Some of the topics covered:

  • General ASP.NET
  • ASP.NET AJAX
  • Visual Studio
  • Data Access
  • Advanced ASP.NET
  • Migration to ASP.NET
  • Starter Kits and Source Projects
  • Microsoft Downloads
  • Development Tools
  • Windows Hosting
  • Community
  • .NET Languages

IIS Forums

IIS

The IIS forums are a resource for those developing on the Microsoft Windows Server platform. Some of the topics covered:

  • IIS 5.x & 6.0
  • IIS 7
  • 64-bit Editions of IIS
  • General

MSDN Forums

MSDN

The MSDN forums are a great addition to the MSDN Library, for those developing in .NET. Some of the topics covered:

  • .NET Development
  • Visual Studio
  • Visual Studio Express Editions
  • Visual Studio Team System
  • Visual Basic
  • Visual C#
  • Visual C++
  • Visual J#
  • Visual FoxPro

PHP

PHP Developers Network

PHPDev

The DevNetwork forums are a resource for those developing in PHP. Some of the topics covered:

  • General
  • Programming
  • Design
  • System
  • Business

Ruby on Rails

Ruby Forum

RubyForum

The Ruby forum is a collection of forums related to the Ruby language and the Rails framework. Some of the forum topics:

  • Ruby
  • Ruby Core
  • JRuby
  • IronRuby
  • Rails
  • Rails Deployment
  • Rails I18N
  • Rails Engines
  • Rails Core (r/o)

Rails Forum

RailsForum

The Rails Forum is for those developing in Ruby on Rails. Some of the topics covered:

  • Starting Out
  • Planning
  • Programming Rails
  • Extending Rails
  • Production
  • Web Development

Python

Python Forum

PythonForum

The Python Forum is a resource for those developing in Python. Some of the topics covered:

  • Python Coding
  • Forum Activities: Contests & Challenges

Perl

Perl Guru

PerlGuru

The Perl Guru forums is a resource for those developing in Perl. Some of the topics covered:

  • Perl Programming Help
  • Fun with Perl
  • Custom Perl Written Program Requests

General – Web Development & Design

Coding Forums

CodingForums

CodingForums is a resource for those developing in a variety of web technologies. Some of the topics covered:

  • Client-Side Development
  • Server-Side Development
  • Computing and Sciences
  • Web Projects and Services Marketplace

Web Design Forum

WebDevForums

Web Design Forum is a resource for both web developers and web designers. Some of the topics covered:

  • Web Design
  • Graphic Design
  • Scripting Languages
  • SEO
  • Marketing
  • Hosting
  • Business

General – Various

Code Guru

CodeGuru

CodeGuru Forums are a resource for all types of developers. Some of the topics covered:

  • Visual C++ and C++ Programming
  • Visual Basic Programming
  • .NET Programming
  • Java Programming
  • Other Programming: AJAX, Scripting, Database, XML

DZone

Dzone

DZone is a link sharing community specifically for developers. Developers can submit, share, vote and comment on links.

Proggit (Reddit Programming Subreddit)

Proggit

Reddit is a link sharing community, where users can submit, share, vote and comments on links. Reddit Programming is a category of Reddit specifically for links related programming.

Stack Overflow

StackOverflow

Stack Overflow is a Q&A site for programmers. Users can ask questions related to any programming language and submit answers, vote and comment.

Tech Republic

TechRepublic

TechRepublic is a community site for IT professionals containing blogs, forums, white papers, videos, photos, etc. All topics related to IT are covered in one of the above formats.


Please share any programming forums or blogs that you frequently visit in the comments.

13