dhirschl
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?
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
—————————–
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.
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?
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:
4556/ <—- This is what you input
Sum of 4556 = 21
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.
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
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
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
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
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
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
The DevNetwork forums are a resource for those developing in PHP. Some of the topics covered:
- General
- Programming
- Design
- System
- Business
Ruby on Rails
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)
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
The Python Forum is a resource for those developing in Python. Some of the topics covered:
- Python Coding
- Forum Activities: Contests & Challenges
Perl
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
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 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
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 is a link sharing community specifically for developers. Developers can submit, share, vote and comment on links.
Proggit (Reddit Programming Subreddit)
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 is a Q&A site for programmers. Users can ask questions related to any programming language and submit answers, vote and comment.
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.




































