Open Question

Everyday CS?

I expect that a lot of people who spend time reading this or other programming-related blogs are technical minded, tend to have a background in computer programming or computer science. I am curious though: In how far do you apply you CS knowledge to your personal life? Bonus question: What, if no computer is available?

What is the Ultimate Linux Development Environment?

nachmore asks: "I've been programming on Linux for a while now, always content to use vi for my editing and any debugger tools out there (gdb for C/C++, and so forth). As part of my SoC project I was working on Thunderbird (my first huge project on Linux) and I found that , although shell-based tools can do the job, they lack in easy project management, ease of debugging and other development features. I've only ever programmed with a GUI on Windows — and I have to admit that I find Dev Studio to be one of the few programs that Microsoft seems to have gotten (nearly) right. I've played around with Eclipse but find it's C/C++ support still lacking. So what GUIs would you recommend for Linux? I would like something with debugging (single step, step through, step-to-end, etc) support, CVS access and of course, support for large projects (e.g. Mozilla) and especially good support for C/C++. Is there anything really good out there, or is vi the way to go?"

CodeSnipers First Birthday Contest

Greetings and welcome to CodeSniper's First Birthday Contest.

For those of you just joining us, we launched one year ago this morning with 10 contributors. We've had some ups and downs, some changing of the guard, and some silent periods (*ahem*July*ahem*), but overall, it's been fun and educational so far. On the flip side, I know of at least three CodeSnipers who have been contacted by companies and had their contributions here referenced. Not huge, but still exciting.

Now the contest part...

European Shareware Conference

This year's European Shareware Conference will be held in Cambridge, UK, on the 4th and 5th of November.

It has already been discussed on the BoS forum here, but I thought I’d extend the conversation to Codesnipers. I’m hoping to go, and based on the forum thread it looks like I’ll get to put faces to a few familiar names.

Are you planning to go? Do you have feedback from previous conferences? Is it worth trying to stick around for the Sunday evening sessions/event?

A Googlish puzzle

It’s probably getting to the point where everyone’s a bit tired of hearing about Google’s interview process but recently heard a nice one someone was given to solve—one of those “Can you think like a programmer?” type questions. It goes like this…

You have two eggs. These are special eggs—they can take much more punishment than you average chicken egg. But the question is just how much punishment can they take?

Using a 100 storey building and only the two eggs, how would you find out which is the highest floor of the building you can drop the eggs from, before they break?

It could be the 1st floor but it could also be the 99th floor—you don’t know but to test, you need to try dropping the eggs from different floors and see what happens.

Technically there isn’t a “right” answer as such, although what was expected is an approach that requires the least number of tests, irrespective of where the result lies—an efficient search algorithm which offers consistent performance no matter what the result is. If you’re struggling for inspiration, try here—doesn’t help directly but might prompt some lateral thought.

Source Code Browsing Tools?

Marco Sanvido asks: "I often look at source code (especially C, but this question is valid for other languages as well) and I have a really hard time in understanding how it works. Documentation is often missing or quite outdated, and the only way to see how the program works is to try to understand the source code. Which tools do you prefer to use for browsing and studying source code? So far I have used LXR for Linux, Eclipse for java, and CScope, but I'm not sure that these tools are the best solution." It's tempting to flood this question with answers for your IDE, but the key thing here is _browsing_, not _development_. What decent, lightweight programs would work well as source code viewers?

Document Management and Version Control?

Tom wonders: "I am working in a medium-sized software development company. The functional analysts use Microsoft Word to document the specifications, and Sharepoint to publish the documents. However we'd like to improve our process to have better revision control and traceability. We have looked at alternatives like using Wikis, or static HTML documents with CVS. The functional analysts want ease of use, while we developers would like to see high-quality end products, revision control (i.e. tagging & branching of the document base), and traceability features. What tools and document formats do you use and would recommend?"

Holidays and the Micro ISV

On Monday, while US readers were observing Memorial Day, we had our own holiday here in the UK: the Spring Bank Holiday. Traditionally, it was for Whitsun, a moveable religious festival, but now it always falls on the last Monday in May.

I’ve been working to my own schedule for quite a few years now, so I only tend to remember our holidays if I try to book an appointment with someone. This time I said I’d call in and see a customer early this week, and they were kind enough to remind me not to come on Monday.

Starting an Education in IT?

AriaStar asks: "It's overwhelming to start trying to learn all the different technologies needed to go into programming. It seems that every type of technology assumes knowledge of a different one, which in turn requires knowledge of another, until it's gone full circle. I am interested in everything from Unix to AJAX to Perl. Things like HTML, Javascript, and SQL are like English, but then again, they're basic. Where is the best place to start? What is a good path for someone who learns quickly and easily, but who is simply too overwhelmed, to take?"

It's Better To Look Good Than To Be Good

It's hard to swallow, but here it is: Nice looking things are perceived as more usable by users, regardless of whether they actually are. And what's more, nice looking products get a lot more tolerance from users when things go wrong.

For software, this means that you can build a great, usable interface that looks a little shoddy, and you could be ignored in favor of a flashy, "Web 2.0" application that doesn't do half of what you do, and is of mediocre usability.