This teacher talks about the evils of learning Java as a first language.
I completely agree!!!
Computer Science Education: Where Are the Software Engineers of Tomorrow?
Who Killed the Software Engineer? (Hint: It Happened in College)
Wednesday, January 30, 2008
Tuesday, January 29, 2008
An Explorer with tabs...
Firefox has tabs. IE has tabs. Trillian has tabs.
So why shouldn't Explorer have tabs? Because Windows Explorer sucks... It's slow, has weird initialization routine, doesn't remember the last places I browsed, and every now and then it crashes unexpectedly.
I've been using xplorer2 Lite lately, and so far I'm impressed. The first thing I loved about it, is that it has tabs. And it remembers them!
It's got quite a few other cool things. Here's what impressed me:
All in all it seems quite a good product, and I think I'll definitely buy it...
So why shouldn't Explorer have tabs? Because Windows Explorer sucks... It's slow, has weird initialization routine, doesn't remember the last places I browsed, and every now and then it crashes unexpectedly.
I've been using xplorer2 Lite lately, and so far I'm impressed. The first thing I loved about it, is that it has tabs. And it remembers them!
It's got quite a few other cool things. Here's what impressed me:
- New Tab (Ctrl Ins) - just like Firefox, you can start a lot of tabs, which are automatically remembered next time you start it.
- File Rename (F2) - yes, it got it right - when doing rename, only the file name is selected (not the extension). Oh, it it doesn't ask me: "If you change the file name, the file could become unusable". Who came up with that question anyway?
- New File (F7) - yes, finally it's sooo easy to create a new file: just press F7. A file is created, and the file name is selected, so you can rename it anyway you like. Unlike the stupid Explorer, where: first, no file should be selected (otherwise, it will not have any way to create a new file) and you have an extra step: the file type.
- Fixed column sizes - finally I don't have to resize my "Name" column every time I enter a directory - it's always the same (if I resize it once, it will remember it). Kudos guys!
All in all it seems quite a good product, and I think I'll definitely buy it...
Thursday, January 24, 2008
Converting between strings
If I were to have a std::string and wanted to convert it to std::wstring, I usually wrote a function that simply took each character from the source string, and added it to the destination string.
Until someone pointed out to me the obvious solution. It was right in front of me!
std::string s;
std::wstring w = "test";
s.assign( w.begin(), w.end() );
// the vice-versa works too ;)
Now, ain't that easy?
Until someone pointed out to me the obvious solution. It was right in front of me!
std::string s;
std::wstring w = "test";
s.assign( w.begin(), w.end() );
// the vice-versa works too ;)
Now, ain't that easy?
Monday, January 21, 2008
Boost Logging v2 - v0.21.1 (profiling and other goodies)
Hi all,
Major release - for reviewing on 4th of Feb this year.
Features:
Best,
John
Major release - for reviewing on 4th of Feb this year.
Features:
- Allows profiling itself
- can handle writing to the logger after it's been destroyed
- easier implementation of logger_holder
Best,
John
Boost Logging v2 - the only lib allowing full profiling
Oh well... This is a very nifty feature - I thought a lot about implementing it, and finally I found the time to do it.
The Boost Logging Lib v2 is soooo flexible, that I could add profiling to it, without changing the library code (ok - actually I did add one word - virtual - to on_dedicated_thread::write_array).
In other words, it's very easy to find out exactly how much time is spent logging - all of it. For instance, assuming you log using stream' operator<<, you can find out the time spent gathering the message. I've updated the docs.
You can get the latest code from SVN, and see an example.
As far as I know, this is the only logging library that allows for this ;)
Best,
John
The Boost Logging Lib v2 is soooo flexible, that I could add profiling to it, without changing the library code (ok - actually I did add one word - virtual - to on_dedicated_thread::write_array).
In other words, it's very easy to find out exactly how much time is spent logging - all of it. For instance, assuming you log using stream' operator<<, you can find out the time spent gathering the message. I've updated the docs.
You can get the latest code from SVN, and see an example.
As far as I know, this is the only logging library that allows for this ;)
Best,
John
Sunday, January 20, 2008
doxygen - applause, again!
Yes, doxygen rules. The more I use it, the more I like it!
Every now and then, I regenerate the docs for Boost Logging Lib v2. Today, I just discovered a very cool feature. For classes/functions, if you specify a brief description (using @brief command), when that class/function is referenced in the docs, the brief description will appear as a tooltip.
Kudos guys! Thanks for the great work!
Every now and then, I regenerate the docs for Boost Logging Lib v2. Today, I just discovered a very cool feature. For classes/functions, if you specify a brief description (using @brief command), when that class/function is referenced in the docs, the brief description will appear as a tooltip.
Kudos guys! Thanks for the great work!
Friday, January 18, 2008
Up for sale...
Yup, I'm up for sale...
The guys at SourceForge tried something new - the Marketplace - it's where people involved in open source projects post their price - so that other companies can hire/contract them.
I decided to give them a try...
The guys at SourceForge tried something new - the Marketplace - it's where people involved in open source projects post their price - so that other companies can hire/contract them.
I decided to give them a try...
Tuesday, January 15, 2008
Night Buyers - monitoring for email
The Night Buyers, glad you asked, we're doing quite fine ;)
However, since we're at the beginning, there are periods (around 2:30-6:30am) when there are few orders. So, I said, let's help our drivers.
Which I did - I made a small program that monitors an email server. When a new email arrives (in our case, an order), a very loud sound is played continuously until the driver acknowledges the email.
Also, in case the internet connection is lost for more than 5 minutes (which in our case is critical), another sound will be played.
So far, the drivers are pretty happy with it - they can take a nap in those times, and if an order comes by, they're suddenly awake.
As libraries, I've used:
Feel free to use my program - it's configurable. Here's the source code. I might add new features as my drivers ask them.
However, since we're at the beginning, there are periods (around 2:30-6:30am) when there are few orders. So, I said, let's help our drivers.
Which I did - I made a small program that monitors an email server. When a new email arrives (in our case, an order), a very loud sound is played continuously until the driver acknowledges the email.
Also, in case the internet connection is lost for more than 5 minutes (which in our case is critical), another sound will be played.
So far, the drivers are pretty happy with it - they can take a nap in those times, and if an order comes by, they're suddenly awake.
As libraries, I've used:
Feel free to use my program - it's configurable. Here's the source code. I might add new features as my drivers ask them.
Friday, January 11, 2008
Night Buyers - we're getting more and more known
Indeed! ProTV has taken an interview for Night Buyers and got only positive feedback!
Here are more details:
Here are more details:
Wednesday, January 9, 2008
New Hosting - done...
Well, the torjo.com hosting has been successfully changed. Back to the regular email traffic ;)
Best,
John
Best,
John
Tuesday, January 8, 2008
New host(ing)
Hi all,
I am moving torjo.com to a new host. Thus, it might be unresponsive for a few hours - 24 at the most.
Also, some emails might be lost - so in case you get an error - please resend after one day. Thanks for understanding!
Best,
John
I am moving torjo.com to a new host. Thus, it might be unresponsive for a few hours - 24 at the most.
Also, some emails might be lost - so in case you get an error - please resend after one day. Thanks for understanding!
Best,
John
Monday, January 7, 2008
Boost Logging v2 - new version (v0.13.6)
The Boost Logging Lib v2 is getting closer and closer to its review (Feb 4).
I've just released a new version, lots of new features:
I've just released a new version, lots of new features:
- added tags (attributes a logged message can have, like : line & file, function name, time, etc.)
- scoped logs
- caching messages before logs are initialized
- high precision time (as tag as well)
- added spacer formatter - you can specify what goes before and after your formatter
- new formatter: named_spacer : Allows you to contain multiple formatters. You have a spacer string, and within it, you can escape your contained formatters
- new destination : named - like named_spacer, but for destinations
Bad UI : Persisting application settings (Windows)
This is the sad truth: too many applications forget the fact that things are changing:
Most apps just took for granted "Persist thy settings in the registry", and went on doing it.
This is not a bad idiom per se, the only problem is that those settings should be easily exported to some other medium, like a text file or so.
Reinstalling Windows is a pain in itself, you'll have to reinstall a lot of applications - and on top of that, you need to reset each application to give it the feel you've been used to. Reinstalling an OS or whatever I outlined above should be a much easier process.
Most applications (especially those non-trivial ones) should be able to import/export their settings. Most languages already have libs to deal with settings - however, exporting/importing could be a bit difficult, but hey, shouldn't be too difficult to come up with your own lib. And for C++, you can use my lib for free.
To make it even easier for users, there should be 2 global WM_ events:
- a user could change his computer,
- could reinstall Windows,
- could upgrade to a different version of the OS,
- could need to match the same settings on 2 different machines,
- and so on.
Most apps just took for granted "Persist thy settings in the registry", and went on doing it.
This is not a bad idiom per se, the only problem is that those settings should be easily exported to some other medium, like a text file or so.
Reinstalling Windows is a pain in itself, you'll have to reinstall a lot of applications - and on top of that, you need to reset each application to give it the feel you've been used to. Reinstalling an OS or whatever I outlined above should be a much easier process.
Most applications (especially those non-trivial ones) should be able to import/export their settings. Most languages already have libs to deal with settings - however, exporting/importing could be a bit difficult, but hey, shouldn't be too difficult to come up with your own lib. And for C++, you can use my lib for free.
To make it even easier for users, there should be 2 global WM_ events:
- one for export settings to file
- one for import settings from file
Subscribe to:
Posts (Atom)