We might have to make a few exception this year to our decision not to go the theater anymore…hopefully won’t have experiences like the last time…
Tag Archives: Links/News
Software Pick: SyncMyCal
With the acquisition of a Blackberry I wanted to be able to sync both my work and home Outlook setups to the Blackberry (and to each other). I tried a number of free tools (though they aren’t that easy to find) and quickly concluded I would need a better solution.
Enter SyncMyCal. It’s easy, it’s cheap (only $25), and you can try for free. I rarely have duplicated events, and I don’t have to think about it ever–it just WORKS.
How it works: SyncMyCal synchronizes an Outlook calendar with a Google calendar. First I created a Google calendar, then I set up SyncMyCal on both work and home computers. I set the home computer to take priority in conflicts, but at work I set the Google calendar to take priority over Outlook–this way there’s a hierarchy of priority that helps to prevent unresolvable conflicts and duplicates.
I bought it days before Google released their Outlook sync tool, but SyncMyCal can do a lot more and I don’t regret the purchase one bit.
The latest version also syncs contacts, but I haven’t used that yet.
Need some new audio cable?
Get it from Blue Jeans. Awesome.
How to work an 8-hour day
One of the things I decided when I started working was that I was not going to be one of those guys who worked 12 hours a day for a company (if I ever become an entrepreneur, all bets are off since I’m working for myself). So far, I’ve been pretty successful, and I’ve noticed a few things that may help others. Some of these are more observations than practices.
1. Understand reality: Work Load
The first thing to realize is that the amount of work to do will always exceed the time available. This is why effective management is important. If you are being ineffectively managed, it may be difficult to force a change in some of the following areas.
Just because there is always more work to do, this is no reason to kill yourself trying to get it all done. Or even overexert yourself (except in rare instances). Don’t misunderstand: I’m not saying you have an excuse to slack. Giving all of your time and attention to your employer/projects/job is the baseline here. I am saying that just because you have a lot of work is not a valid reason to work 12 hour days.
Unless you enjoy it…in which case you’re reading the wrong article. If you’re a workaholic, sacrificing your health, family, and free time to get ahead, knock yourself out. You can stop reading now.
There are always special circumstances, though. If you operate in an environment that runs 24/7 services and Something Bad happens–well, then you need to fix it if takes you 24 hours. Hopefully, you’ll get corresponding time off in return. If it’s the last week before release of a project and a major bug comes up–get it done.
I’m talking about normal days, normal work.
If you are working 12 hour days and you don’t like it, then change. No excuses. Change the job or change jobs.
2. Don’t waste time
I knew someone who always complained about having so much work to do, working 60-70 hour weeks, always been pressured, etc. I know he did have quite a bit of pressure to do a number of things, but I eventually stopped feeling empathy for him because I constantly saw him talking to so many people (friends, not direct co-workers) during work.
If you’re so busy working long hours, why do you waste so much time? Why is it that the people who complain loudest about being overworked mostly create the situation themselves?
Don’t wander the halls looking for distractions–chances are you’ll find them.
There is a balance to strike here between enjoyable work environment, having friends, being part of a team, and actually getting things done. There is also something to be said for the difficulty of concentrating on challenging topics for a long time at a stretch. Breaks are definitely needed.
There are trade offs to everything. If you spend an hour or two every day reading blogs instead of working on your projects, you’ll pay for it in time later. If this is a trade off you’re willing to make, so be it, but make sure you understand your priorities and the consequences of your decisions.
I know someone else who used 100 words to say something when 4 would do. This made meetings long, tortuous affairs (unless strong ground-rules were created, endorsed, and enforced). Even simple questions were avoided because nobody wanted to sit there and endure a longer-than necessary answer about the history of the universe. Don’t waste people’s times, and don’t stand for people wasting yours.
Be wise, what can I say more?
3. Don’t micro-manage
The topic of micro-management is something that could take up other blog posts and books dedicated to the subject, but I just want to focus on aspects of it related to time.
This is an inverse of wasting time on trivialities. I once had another boss who spent unbelievable amounts of time responding to every trivial e-mail (and he insisted on being CC’d on every topic of course) and he also complained about working extremely long weeks. And he worked all weekend. He checked on the status of things constantly and was usually the first to spot potential problems. (There were other reasons for this, too: he was usually a main point-of-contact for customers and he had more domain knowledge of everything we were doing). He was very, very smart and usually not wrong, but he did spend a lot of time doing things that were arguably someone else’s job. We never felt invested in these aspects of work, though, because he just did them.
If you find yourself with your fingers in every aspect of your organization, you have a problem, and need to take some time out for consideration:
- Why do you feel the need to be connected to everything going on? Is it because you have to feel in control, or do you not trust others to do a good job?
- Do you not trust your employees? If not, why not? Do they really do a bad job?
- If they do a bad job, why? Are they fundamentally lazy, unqualified, dumb? If so, why are they still working there? Why are you paying them and doing their job anyway?
- Would better training help?
- Maybe expectations aren’t clear. Instead of you picking up the slack, review the expectations you have for them and go over deficiencies. Make them responsible and give them ownership. Don’t undermine their jobs by taking it away. Check on them in the future to make sure things are improved, but don’t involve yourself day-to-day.
- Is it necessary to involve yourself in every discussion or can you just ignore until it reaches a level you need to get into? Resist the urge to comment on things you weren’t asked about.
If nothing else, micro-management always breeds resentment.
4. Set boundaries
I have tried to make it clear to my bosses over the years that when I’m working on a task, I am not to be bothered on a whim. When I’m concentrating, don’t bug me. This is a somewhat loose rule for me, because it really depends on what I’m working on. However, it is more true than not.
The context switching that can happen with interruptions is dangerous for productivity. Eric Gunnerson wrote about “flow state” years ago. Flow state is a zone you get in where your brain is completely engaged–you’re firing on all cylinders, fully committed and involved–pick your metaphor. It’s hard to get into and easy to leave.
I have a nice pair of Bose QuietComfort 2 Noise Cancelling Headphones. These are essential for me now. The whole topic of listening to music while programming is a separate one, with some debate, but I find it usually beneficial. Sometimes I put them on to block sound without listening to music. This also minimizes casual interruptions. I rarely listen to music while trying to create a new solution for something–only when I’m coding something I understand.
Also make sure to enforce a work/life boundary. I have made it clear in my job that I am not be called unless it’s an emergency that needs to be fixed RIGHT NOW. I ignore IMs and e-mails (unless I’m in the mood to answer something, or it’s trivial, or I know it would make somebody happy to know the answer to). If there’s a critical problem, I’ll get a phone call.
I also communicate vacations and just how far out of reach of civilization I will be well ahead of time.
5. Limit Meetings
There is an abundance of resources out there for effective meeting management. I’m more in favor of limiting the occurrences of meetings in the first place. How well you can do this depends a lot on your organization and the projects you’re working on.
Pointless meetings are a waste of everyone’s time. They can be demoralizing, energy-sucking vortexes. Recovering from a bad meeting can take further attention away from actually getting things done.
In my case, we have mercifully few meetings–only when the entire team needs to give input, we need to brainstorm about a tricky problem, or general status updates (yearly or quarterly).
Much of what goes on in meetings can be substituted by effective individual planning, e-mail, issue tracking, or planning better in the first place.
6. Know your tasks
Spinning your wheels is death. Don’t be wasting your time unconsciously (If I’m going to waste time, I’d rather do it consciously with Desktop Tower Defense).
If you’re stuck on a task, get help, change gears, do something else. Make sure you have a process to detect when you and others are stuck so that you don’t waste time.
Always know what you’re supposed to be working on. In addition to have issue-tracking software, make sure priorities are communicated clearly and often. Once you finish something, you should know what the next task is, whether you do it then or not. Whenever I have a problem of knowing my priorities, I ask my manager. It’s his responsibility to know and set them. I don’t have to worry about it.
There is usually a list of “nice-to-haves” that you can work on once high-priority stuff is done. Don’t let that list get lost, but track it the same way you do regular issues.
7. Effective Information Management
This means all sorts of data: e-mail, documents, data, scheduling, task lists. Simplify, automate, streamline. I won’t go into specific techniques–you can find them elsewhere.
Just a few simple points that I use:
- Don’t read what you don’t need to
- Don’t respond when you don’t need to
- File away or delete ASAP
It’s easy to get buried in information these days–and consequently it’s easy to think it’s at all important. Don’t fall into that trap.
8. External Motivations
A little obvious, this one, but important to ponder. None of this will work if you don’t have strong outside motivations. You have to really enjoy being outside of work–and I don’t think the satisfaction of doing nothing is enough. You’ll get bored of that eventually. Sitting in front of a TV every night “unwinding” for three hours is not a motivational experience (quite the opposite, usually).
Hobbies, projects, sports, exercise, cooking, family, church, books, culture, service are all part of life and should be enjoyed.
I usually schedule my evenings to some degree–whether it’s working out, moving ahead on personal programming projects, building my latest LEGO model, watching a movie with Leticia, or reading a book–I’ve got a long list of things I enjoy doing. If I don’t follow the schedule exactly, or can’t fit everything in, I don’t sweat it–as long as I’m enjoying myself, that’s what matters.
Work isn’t everything–in fact, it isn’t even the greatest part of anything. Be well-rounded.
Unfortunately, not every job can be forced into a neat 8-hour work day. My wife, for example, works for a news wire service. She works 8-hour days most of the time, but quite often she ends up staying late to take care of things. Unfortunately, when your job depends so much on other people, it can be a bit hard to plan days, and it’s very possible that work comes up right when you leave, or there is too much work to fit in in a day. However, this is unsustainable in the long run. Either more efficient processes have to be introduced, the work load decreased, or more people hired.
A word or two about politeness as well: it’s difficult in some environments to enforce better behaviors without being considered rude, grouchy, or holier-than-thou. Sometimes firmness has to give way to politeness. The carrot usually works better than the stick anyway in the long term.
How to catch a NetFlix thief
Via Geekologie comes the hilarious tale of a man (boy, really) caught stealing NetFlix DVDs from a mailbox. The comments are funny, too. Some seem like they’re obviously written by the neighbor.
One issue I didn’t really see addressed in the comments on the post is the overall issue of mail safety. People need to consider the seriousness of stealing mail. There’s a reason the fines for it are so severe. A reliable and trusted mail system is the foundation of a good portion of our society and its communications mechanisms.
Having lived overseas, and having had many family members live all over the world, I can personally testify to the need for a secure mail system. There are countries I would not mail a package to–it would just be a waste of money. The security of our system *HAS* to be enforced harshly or people will lose faith in it and it becomes a system of corruption and scamming. This kid got off lucky. If he were older or there were stronger evidence he were stealing more valuable items, or he were being less discriminating in what he stole, I think he could have gotten a far worse punishment.
The Bugle podcast
I just discovered this gem of a podcast. The Bugle is a podcast published by the Times Online. Better writing than the Onion, and funnier than the Daily Show. It’s basically two Brits being witty about the week’s news. I’ve only listened to episode one so far, but found myself laughing too hard to concentrate on anything else.
How to file good bug reports (from Frank Kelly)
This is an issue I run into constantly at my job.
Frank Kelly wrote up a good summary of some items. They’re simple, easy to understand, easy to follow, even for non-programmers. 😉
In fact, I’m sending this link out to everyone in my group here at work.
Technorati Tags: testing,programming,bug reporting
Fighting Brain Rot
Alex Shalman has a great post at zenhabits about how to avoid letting your brain decay into apathy and atrophy. It’s a great call to action, to find ways of self-improvement. I think the behaviors listed here dovetail very nicely with the attributes of highly effective programmers.
By continuing to do as we always have, the quality of results will be the same as always. Only when we step out of our comfort zones, and push ourselves to improve, will we gain useful new experiences, knowledge, and ideas.
I think the methods of expanding the mind are highly applicable to software developers. I just have a little bit of commentary on each one.
11. Reading – I think I would have put this at #1. It’s the easiest way of cramming information into your skull. It’s the most efficient method of information transfer, and that’s our bread-and-butter as programmers, so we should become expert at it.
10. Writing – We write code for a living, not necessarily prose, but communication is key to so many areas in life, that learning how to write effectively is critical to most careers. For myself, I definitely find it easier to express myself in writing than in-person. Doing this well becomes a critical ability.
9. Puzzles – Developing a large software project is in many ways like an enormous software project. It’s so large, though, that we can’t comprehend it all at the same time. But practicing other types of puzzles can train our brains to look for patterns and to develop new, creative ways of thinking. My favorite offline puzzle is the New York Times Crossword, but I enjoy the occasional sudoku.
8. Mathematics – a good understanding of boolean logic, prepositional calculus, discrete mathematics, asymptotic notation, etc. are great things for developers to have. A general understanding of algebra, calculus, trigonometry, and statistics also comes in handy more-than-occasionally. Another valuable idea that comes out of mathematical understanding is the idea of precision in thought and rigorousness in testing or understanding your software–think loop invariants.
7. Painting – I am definitely not an artist by any means, but the underlying principle of some kind of artistic self-expression is important. The creative side of your brain must be regularly exercised. For me, this is in the form of building Legos.
6. Cooking – I initially found this to be a peculiar choice, but it makes more sense when I ponder it. Cooking is at once creative and precise. Not only does it use all the senses, but it requires you to think on your feet and be very, very organized and detail oriented, especially when you start cooking for more people. Planning and execution both become huge issues.
5. Music – I wholeheartedly agree, and I’ll even go out on a limb and say that you need to listen to lots of genres of music, especially classical. Why classical? Because it exhibits more musical complexity than all others. It doesn’t minimize various musical aspects (variation, melody, harmony, tempo, timbre, i.e.) for the sake of a single one (i.e., rhythm).
4.Poetry – I used to write fiction and poetry in high school and earlier, but it’s been quite a while. I do remember it being quite the exercise to compose sonnets–it forces you to be extremely creative with grammar, syntax, meaning, vocabulary, and more.
3. Meditate – This is an art I need to learn more about. I find I do this automatically in some situations where I’m not otherwise preoccupied (the shower), and I can solve a question I’ve had. I find that NOT doing something is as important as doing something in many cases. When I’m faced with an especially thorny problem at work, it really helps to just write down my thoughts about it and let it sit for a few days while I think about it in my off moments. Most of the time, I can come back and have a better solution than if I had started right away.
2. Learn a language –
A language that doesn’t affect the way you think about programming is not worth knowing. – Alan Perlis
The original article obviously means foreign spoken languages, which I definitely agree with. I speak Italian, and the insights it’s given into my own native English are quite valuable. If you’re a careful student, knowing two languages definitely forces you to think about the meaning of words and constructs. It’s much harder to take things for granted.
I think the same is true of programming languages–knowing more than one helps your mind think about a problem in different ways. Once you understand functional programming, for example, you will never look at programming the same way again.
1. Question Everything – This is analogous to love of learning in my Effective Programmers essay. It’s not being a jerk and denigrating everybody else’s ideas. It’s asking yourself continual “Why” questions in order to understand the issue.
Technorati Tags: programming,self-improvement,music,language,learning
Multiple-Item Clipboard a good idea?
Jeff Atwood laments the single-item nature of the Windows clipboard, and points out utilities that can expand the capabilities to multiple items. I think that’s a great power tool to have, but I’m not sure having a multiple-item clipboard is really the best thing.
I think one of the strengths of the clipboard is its single-mindedness. You always know that the thing you’ve copied is what you’ll paste (even if it is stored in multiple formats in the clipboard, it’s al conceptually the same). Once you expand the clipboard to contain multiple items, will the average user be able to handle a menu popping up asking which item to paste? No, probably not. That’s why the utility he mentions only pops up that menu when you hit it’s special shortcut. That’s the way it should be. It’s a great thing for advanced users, but I think of little benefit to the average.
For me, the simplicity of the clipboard is a good feature. Even if I had the extended capabilities of a clipboard that held multiple items, I probably would still use the basic functionality most often.
Technorati Tags: clipboard,coding horror
Podcasts I listen to
I got a 4 MB blue iPod Nano 2nd Genfor my birthday last June, and while I do have a few music playlists, I almost exclusively listen to podcasts. I can’t believe I went so long without one of these. Putting together the list below led me to some others that I might give a try, but for now here’s my list:
- In Our Time – A weekly BBC production discussing various events, people, or ideas in history (recent or ancient). Always interesting. About 45 minutes long.
- Philosophy Bites – A weekly interview with someone about a specific philosophical topic. About 15 minutes long.
- Talk of the Nation: Science Friday – Weekly show about all sorts of issues relating to science. It’s in a very easy-to-listen-to format. Broken into segments. About 1hr per week.
- Science Talk from Scientific American – I don’t think I like it as much as Science Friday, but it’s still very interesting. It’s usually focused on one or two topics per episode, sometimes recording of lectures by prominent scientists. Weekly, about 30 minutes.
- Grammar Girl – Nice and short, answers to tricky grammar questions. Often plays off current events. Weekly. 5 minutes.
- Get-It-Done Guy – I’m a fan of Getting Things Done, as I kind of discussed in my entry on Outlook. This is a nice, short podcast with simple ideas for efficiency in your life. Weekly. 5 minutes.
- Legal Lad – Answers to interesting legal questions. Weekly. 5 minutes.
- Fundamentals of Piano Practice – really just somebody reading out loud the online book of the same name. I play piano, and I’m learning a ton of fundamental principles from this book that help. The hands-separate method? I’ve played for 8 years and never had it explained to me so clearly. It’s obvious in retrospect, but that’s the kind of good thing you learn in this book. Unfortunately, new readings haven’t been added since October. Varying length and frequency.
- Learn Jazz Piano – I haven’t listened to any of these yet, but I’ve always wanted to play jazz. Infrequent (but still being updated!). 30m.
- WordNerds – Interesting discussion of words and language. I always learn something interesting. Every three weeks. 30-60 minutes.
- MarketPlace – I like to follow the business news, and their format is really good. Entertaining, informative. Daily. 30 minutes.
- MarketPlace Money – Their weekly show that goes into more depth on topics, discusses more “timeless” issues, answers questions. I really like this one. Weekly. 1hr.
- Entrepreneurial Thought Leaders – Forums at Stanford with lecture and questions by famous entrepreneurs. These are frequently interesting, especially if you want to start a business someday. Weekly. 1hr.
- Car Talk – how can you not have this on the list? They’re hilarious. And I do learn something about cars. Mostly, just fun, though. Weekly. 60 minutes.
- LAMLradio: LEGO Talk Podcast – Interviews with LEGO builders, and others in the online LEGO community. I like it, but you probably have to be familiar with the community to follow it. Weekly 15 minutes.
- MunchCast – A weekly show about junk food! I’ve only listened to the first episode, but I’m hooked. It’s more interesting than it sounds. Weekly. 30m.
- .Net Rocks – Very well put-together show about .Net development, upcoming technology, interviews with industry pros. Twice weekly. 1hr+
- This Week in Tech – Casual discussion of the week’s computing news with Leo Laporte. Highly entertaining. Has the cranky John C. Dvorak on often, but the panel rotates. Weekly. 60-90m.
- Windows Weekly – Covers Windows-specific news (mostly) with Paul Thurrott and Leo Laporte. Also interesting stuff. Weekly. 1hr
- Security Now – With Steve Gibson and Leo Laporte. They talk about all sorts of security-related topics. Very interesting, very well done. They have a knack for explaining difficult concepts in a way that’s easy to grasp. One of my favorites. I am not a security guru, but this is fascinating stuff. Weekly. 1hr.
- HanselMinutes – with Scott Hanselman who now works at Microsoft. Discusses various technical topics, usually related to programming. To be honest I don’t like this one as much very often, but I still listen to it occasionally. Don’t know why…a little dry?
- NPR Technology News – stories culled from various NPR programs into a 20-30 minute collage. Weekly.
- The Tech Guy – another Leo Laporte show, in a longer format, with interviews, callers, and more.
- The Restaurant Guys – Discusses “food, wine, and the finer things in life.” If you like food, you’ll probably enjoy this podcast. I was probably interested in about half of their shows but something about them bugged me so I’ve dropped them for now in favor of other things. I may add them back soon. Daily. 1hr.