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:
  • 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!
There are quite a few more things, but I just happened to come across these in my day to day work.

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?

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:
  • Allows profiling itself
  • can handle writing to the logger after it's been destroyed
  • easier implementation of logger_holder
Also, update the docs quite a bit. So, feedback is quite welcome.

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

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!

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...

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.

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:

Wednesday, January 9, 2008

New Hosting - done...

Well, the torjo.com hosting has been successfully changed. Back to the regular email traffic ;)

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

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:
All in all, I've added quite a few features - so, take a look!

Bad UI : Persisting application settings (Windows)

This is the sad truth: too many applications forget the fact that things are changing:
  • 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
Thus, people could even automate the process of exporting/importing settings. Am I dreaming?