Tuesday, August 17, 2010

About C / C++ / C#: Hard Software To Write or Test or Do

If you can't see this email, click here

About.com

C / C++ / C#

Fundamentals

Tips & Tools

Going Pro



From David Bolton, your Guide to C / C++ / C#
I'm still constantly surprised by some of the open source software that I come across. Raw Therapee and dcraw are excellent, as is HoldingNuts. i suspect I'll still be turning up excellent stuff in five years time but keep sending in your recommendations. have a good week - They can't all be great!

Raw Therapee for Raw Images
Raw Therapee Screenshot

If you own a Digital SLR then it will probably allow you to capture photos in Raw mode rather than just jpg. I have a Canon EOS 450D (aka Digital Rebel XSi) that can do this and I think most modern DSLRs will. In this mode you get the raw image captured by the sensor instead of one processed by the camera. With additional information, a single image comes as 16.8 MB instead of the usual 3-5 MB jpg file. Note each camera manufacturer uses their own Raw format but there is software that can read them. The benefits of working with Raw (also called digital negatives) are that you can achieve higher quality than the jpg output by the camera. Jpg is a lossy compression and only capture 8 bits of intensity information not the 12-14 bits in the Raw. If you have the tools and time you can tweak a raw photo well beyond the normal characteristics that cameras provide. For example iPhoto on the Mac can edit Raw files as can PhotoShop since CS2. Open source software has not been slow either. The dcraw library can read many raw image formats from hundreds of cameras (there are many!) and is also used in Raw Therapee, a cross platform raw image editing application written in C. The image in the screen shot is one of my office bookcases.


HoldingNuts - Open Source Poker Table
HoldingNuts Poker Table

Working socket server software isn't that common on the web. HoldingNuts isn't just a server but a multi-player poker table with a cross-platform client as well (built on QT). Written in C++, it's actually quite easy to understand. Although it uses the STL, only Vector and Map template classes are used. The table software isn't bad at all, it includes chat with other players, sounds, six languages, very configurable and the server supports multiple games with private, password protected games. If you were developing poker bots for instance this would be an ideal way of testing your bot. I'm very impressed with this.


Best Way to Learn a Language
After four years of writing here and 29 years programming I remain convinced that the best way to learn a new language is by writing an application or converting an existing one, assuming it's not your first programming language. If it is your first language think of a simple task to program then try and implement it. Here are some ideas but your suggestions for first programming project are welcome. Please send me your ideas and I'll create a page for them. Specify which languages if they're specific.
  • Input 3 numbers and calculate the average and output it.
  • Create an array of random numbers. Save it to disk in a text file.
  • Create a class (C++/C#) to calculate stats (min, max, average) of an array passed to it.
Plus and this is a personal rule; if I write a line or a block of code, I want to see it execute in a debugger. At least once to give me the confidence that it works. It's less important if you're writing it at home than say at work but all the tutorial code is always extensively by me. I's hard enough learning and if the code has bugs, harder still! Apologies for anyone currently trying to follow tutorial listings. The download code is fine but many of the listings are messed up because the line breaks were removed. Once I republish them they will be ok. It's a few hundred pages so will take a few evenings to do. Ironically it was a programmer who either didn't test his conversion code 100% or didn't realize it had to keep line breaks in code listings. I hope he read yesterday's post and now you know why I care about line breaks!

Development Projects from Initial Design to Completed Code
Each project is a complete application with notes on the requirements, the design, the architecture, code and final project review. With full source code in C, C++ or C#.

 


C / C++ / C# Ads
Featured Articles
Reviews of Software - Tools, Compilers, Editors etc
Book Reviews
Top Tools, Utilities and Resources
Glossary of Programming Terms
Welcome to the C++ Area with Articles about C++ Development
Other Blogs You might find Interesting

 

More from About.com

Plan a Unique Vegas Wedding
The minister, music and champagne are just the beginning -- why not get married aboard a helicopter or have a pirate swing in to deliver your rings? Arrrr! More>



Join About.com's User Panel!
Share your opinions and help us make About.com more relevant, informative and enjoyable to use. More>




This newsletter is written by:
David Bolton
C / C++ / C# Guide
Email Me | My Blog | My Forum
 
Sign up for more free newsletters on your favorite topics
You are receiving this newsletter because you subscribed to the About C / C++ / C# newsletter. If you wish to change your email address or unsubscribe, please click here.

About respects your privacy: Our Privacy Policy

Contact Information:
249 West 17th Street
New York, NY, 10011

© 2010 About.com
 


Must Reads
Programming Challenges
About C, C++ and C#
C++ for Beginners
C++ Programming
Intro to OOP

Advertisement

No comments: