The Word And The Void By Terry Brooks

2009-06-01 by monzool

TERRY BROOKS NOVEL series “The Word And The Void” is a trilogy telling the story of Nest Freemark and John Ross fighting the battle against evil daemons. He is not an author I’ve read anything off before, nor is the urban fantasy my favorite genre, but when I by chance discovered this trilogy collection book, I found it to look very interesting. Now I’m finished reading the three books and its was not an all positive experience.

First a short resume of the novels: Each of the three books takes places in different times in Nests and Johns life. The first book “Running with the Demon” takes place when Nest is a teenager and joins forces with John Ross to fight on the side of the Word against the daemonic world of the Void. In the second book “A Knight of the Word” John Ross can no longer carry the burden of being a sworn knight of the Word. Denouncing the knighthood is catastrophic for both John and the world, so Nest must take upon her to convince John to return to his duties. The last book is 15 years from the first encounter between Nest and John and this time they must join forces against an old and wise daemon the want the magic gypsy morph John has captured.
Elaborate summaries are available at Wikipedia.

As such the books are an interesting read. It involves dangerous daemons and creatures living in our world but seldom seen by other people that those few who got magic. It has the classic clash of outnumbered good-guys fighting the casualty filled battle against an relentless and evil enemy. But, when reading the trilogy I could not help thinking that the story is a little thin to fill its many pages. Much of the text is in-between filler stuff, with many offtrack stories that bring nothing to the general story, plus some very elaborate scene description that makes an annoying long reading in between the next few grains of valuable information or plot actions.

Two distinct features of Terry’s writing struck me time and time again. 1) He really likes to use obscure words. I’m not native English, but I almost always read English/American books in their non-translated editions, and its very seldom that I have to do a dictionary look-up of unknown words or phrases (more often when reading pre-60s books though). Looking-up the words he uses reveals that more contemporary word of the same meaning often exists. 2) He gives a very detailed description of the surrounding in which the characters are staged. Actually he spends line after line after line describing the surroundings, but it is seldom that there is any significance to this in relation to the plot.

After finishing reading the books I cannot help feeling that Terry chose poorly when selecting the main character of focus. Terry mainly writes with respect to the viewpoint of Nest Freemark, and this is a shame because the other character in the books, The Knight Of The Word (John Ross), makes for so much more an interesting character. Terry missed the opportunity of writing the story of the lone knight. A knight that didn’t really wanted to be a knight due to the high personal cost, but whom had to continue his quest in order to save the world. And save it two fold by fighting daemons in the daytime, and surviving a nighttime when the price of his magics costs him to live the night in a future where he had failed to save the world from the Void.

Rating: ★★☆☆☆

Posted in Books (literature), Reviews | No Comments »

Menu Disappeared From GVim

2009-04-27 by monzool

THE MENU IN GVim suddenly disappeared?! I did not provoke this by making changes in any .vimrc, .gvimrc or in any files in the .vim directory. The menu was just gone after a boot when GVim auto-loaded the documents open before the reboot. The system is Kubuntu 8.04 and vim-gnome.

I googled for a solution and eventually found an answer at Nabble (thanks goes to mmarko). It appears that something (?) changed the Gnome setup for GVim in the file ~/gnome2/vim.


No menu:

[Placement]
Dock=Toolbar\\0,0,0,0\\Menubar\\0,0,0,0

With menu:

[Placement]
Dock=Toolbar\\0,1,0,0\\Menubar\\0,0,0,0

Posted in Software | No Comments »

Upgraded From WordPress 2.2.2 to WordPress 2.7

2009-02-08 by monzool

WORDPRESS 2.7 UPGRADE from WordPress 2.2.2 done with no problems.
I was somewhat worried that my old theme would break on the upgrade, but It appears to be working. Well, I got at little issue with the Wp-Syntax plugin. I upgraded the plugin and now my GeShi style overrides do not work anymore - guess that is things one discover when doing infrequent upgrading.

I’m looking forward to working with this new WordPress version and exploring its added features.

Posted in Personal, Programming, Web | No Comments »

Fixing VW Passat Intrumental Panel

2009-01-30 by monzool

THE INSTRUMENTAL PANEL on my 1992 VW Passat was giving some strange readouts on the electrical indicators and warning lights. At first I thought that something was wrong with the temperature censors, so I had en engine block censor changed. That helped nothing, but then other errors began to emerge. For example, the temperature gauge and diesel gauge would sometimes showing erratic values, jumping from one setting to another or just showing obviously false values. The overheating warning light would signal after just starting the engine, or having run only a few kilometers or the headlight settings would indicate the opposite of what was actually set. This recording shows how the gauges head for endpoints and the headlight indicator changes, when switching on the headlights and instrument panel lights.
All these issues turned my suspicion towards an electrical error in the instrumental panel; and sure enough it turned out to be an electrical fault. The instrument panel circuit board is connected to external components via a big multi-connector. The soldering for this connector were broken and needed re-soldering.

Steps take to make the instrument panel work correctly

To get the instrument box out, the steering wheel has to be unmounted first. The rim around the panel box can be awkward to pull out, but start but pulling the right side first and when that detaches the other side follows easily. The panel box is top mounted with a couple of screws.


When pulling out the panel box the speedometer cable will detach from the box. When refitting the panel box, position the lower part panel box in an outwards angle, and the panel can then be tilted into upright position with the speedometer cable guide right into place.


The speedometer guide is unscrewed in counter-clock wise direction. At the right side of the back cover is a multi-connector. When removing the internal circuit board, this connector has to be unlocked by prying a thin screwdriver (or other fitting tools) into each of the two locking mechanisms.

After opening the box, the gauges are removed. The speedometer is corner screwed while the two other can carefully be pulled of their mountings.


The problem in this case, was the multi-connector slot (here seen from the connector side)


Visually inspecting the pin soldering revealed that most of the pin soldering had gone bad. To fix the instrument panel the soldering had to be redone.


This panel, or variations of, is common to most VW’s of late 80’s and 90’s models and apparently this type of error is not an uncommon failure in these circuits prints.

Posted in Personal | No Comments »

Speedway On A Cold, Windy And Rainy day

2008-10-07 by monzool

COLD, WINDY AND rainy would describe the weather this past Saturday evening. Not that that kind of weather uncommon in Denmark, but this particular day I was at the outdoor Speedway event “Denmark vs. The World” at Vojens Speedway Arena. Speedway is one of the most exiting motor sport types, and its a fantastic experience to watch it live. This event was a special event where two teams, with Danes on one team and non Danes on the other, would race each other for the price.

Here’s a movie that I recorded with my IXUS 50 Canon camera: Speedway - Denmark vs. The World. Not the best quality, but captures the excitement pretty well.

It was a fantastic evening apart from the fact that the event was canceled after heat 11 out of 18 heats due to bad weather. As this picture will show, we all got a bit surprised on the weather. Here sits my brother, my sisters husband and my father with his Easton cap, all hoping it would stop raining.


I’m somewhat glad that I’m not on the picture - we ain’t looking to stylish I guess. lol.

Posted in Personal, Travel | No Comments »

TheCamp 2008

2008-07-27 by monzool

THE-CAMP 2008 WAS a repeat of the success from last year. Again this year 40 people, in all ages, from all over Denmark (plus an North America from Norway, plus a Dane from Holland) rallied for 7 days of of open source. TheCamp is the perfect opportunity for doing some serious nerding and spending time with others of same interest.

Again this year I had a lot planned for this year, but as expected I didn’t get though it all. Firstly I downloaded the latest Subversion revision of Boost 1.35.1 and did some Asio socket and thread programming. I’ve been using Mercurial for a while but planned a switch to Bazaar, so I got that install and moved my projects to a new (local) repository. I’ve bought a new Lenovo 3000 N200 laptop and planned for getting wireless lan up and running on it. That however, was surprisingly easy as everything was supported right out of the box on a Debian Unstable installation. I finally managed to check off a long time waiting TODO item of learning how to use CScope from Vim. I installed Aros on my spare laptop, an old Asus A1000, but Aros kept crashing on me, so I gave that up. Wednesday was more a chill-out day with drinking a few cold beers, taking to people generally enjoying that the sun had finally appeared ;-). I did get some Python programming done with libnotify though. Otherwise I played around with some programming with the Clutter-project toolkit along with it’s Python bindings Pyclutter. Additionally I also tried a bit of Docbook, but decided that LaTeX was better.

As per tradition at TheCamp there was plenty of guest speakers. There was three presentations a day, but of course attending was voluntary.

Sunday, the highlight was when Vim guru Preben Guldberg reran his Vim/regular-expressions presentation from last year. Preben is an expert user in Vim and is also seriously proficient in regular expressions (I think he’s got the black ninja belt in both categories). This year I grasped somewhat more that I did last year, so a great rerun ;-).

Monday Poul-Henning Kamp of FreeBSD/phkmalloc/Varnish fame gave a presentation on developer habits and tools. In essence his was tired of things like having to write linked lists or decide what hash-trees to use. He wished that the software industry would do for them selves, what they have done for all other industries - make the computer do the work. As always an interesting PHK speech, but I think the audience didn’t fully agree; as one argued: “There are being made progress with tools like Eclipse and frameworks like Ruby On Rails, but if you insist on using Vi and writing low level C, then your not really making it easier on your self”. In the evening, Linux multimedia enthusiast and game graphics designer, Rene Jensen held a Blender workshop where he gave a live introduction to Blender.

Tuesday Jørgen Olsen from Sun Microsystems Denmark presented OpenSolaris 2008.5 (sprinkled with Solaris comparisons as a few of the audience run Solaris at work). Jørgen may be an old guy that looks like a hippie with his headband and log grey hair - but he definitely know his Solaris/OpenSolaris stuff. We got a demonstration of the SMF (Service Management Facility) that is an attempt to replace the old system initialization scripts. Other topics was ZFS, Containers, virtualization and DTrace. Later that day Bjarke Walling gave a demonstration of Lego Mindstorm. It was a great run though of Lego Mindstorms hardware, software and historic. He had built a couple of robots and created a program upon feature request from the audience.

An interesting speech Wednesday was Flemming H. Sørensen’s presentation on the Syllable operating system. Flemming had been in the Syllable core group for a couple of years, having responsibility of the locale system. He, and a group of fellow Syllable friends, just forked Syllable to do development that they’d felt had been neglected far too long.

Thursday Preben Guldborg held another session of Vim tricks where one could ask questions or get help with.

All in all this voluntary driven TheCamp was just perfect again this year, and I will surely return next year.

Posted in Personal, Travel | No Comments »

Thanks For Your Time Toshiba T2000SX Laptop

2008-06-24 by monzool

MY T2000SX LAPTOP had been a trusty computer for many many years, but all good things come to an end, and now with mixed mind I’ve tossed it out.

My dad brought it home from work where it, after many years of usage, had depreciated to be worth nothing for a busy corporate business. But for me it was perfect for things like writing homework assignments, playing a game of Gorilla or Pacman, do some programming or connecting homemade electronics to its various ports.

It was a fine machine. It had no color screen or big harddrive or lots of RAM, but it was quite small, handy and low-noised. Some specs. can be found on the Toshiba site about the T2000SX.

In the beginning I mainly ran DOS on it, PC-DOS 5.0 I think, but later it was perfect for experiments with FreeBSD or Linux. I’ve mostly run Linux on it, but lastly it ran a multi-boot between the famous combo installation of PC-DOS 7 + Microsoft Windows 3.11 and an installation of Minix 2.0.0. Fun stuff, and both boots in a few seconds.

Posted in Hardware | No Comments »

Word 2007 Learn From Vi

2008-06-24 by monzool

MICROSOFT WORD 2007 was in todays pool of software upgrades at work. Our previous edition of Word was the 2003 edition, and I must say that the UI and MMI has been changed to a whole new concept. It looks fine and all. And its actually pretty easy to navigate the new “Ribbon”, but the direct keyboard shortcuts are not visible in the (non-existing) menu’s anymore - so I forget them.

Complementary to the normal direct shortcuts, Microsoft has introduced a feature known from e.g. both the Opera and Konquerer browsers. When pressing the Alt key, every menu, group and function gets assigned one or more keys which activates the item… wait. That sounds familiar…

Skimming though Microsoft’s Word 2007 navigation tutorial a funny quote emerges: “In other words, you need to get out of text entry mode and into command mode.

That sounds like something taken right out of the Vi/Vim manual - lol.

Posted in Software | 1 Comment »

Blade Runner - Final Cut

2008-05-21 by monzool

BLADE RUNNER HAS been one of my favorite movies since the first time I saw it.


I’ve always hoped that I would get chance to see Blade Runner on the big cinematic screen, but hadn’t really believed that an old 1982 movie would get big screen time. But suddenly the chance came up, as BioCity in Århus arranged a special marathon, dedicating one show room for continuously playing Blade Runner - Final Cut at all time slots for almost an entire week. The sensation was enhanced by the fact that the movie was projected from a digital copy with a high resolution projector. What a fantastic picture quality! This was the first time I’ve seen a digital movie projected at the cinema - and what a debut experience with such a picture-beautiful movie as Blade Runner. This is how movies should be seen.

Definitely worth the almost 150 kilometer drive.

Rating: ★★★★★



Posted in Entertainment, Movies, Personal | 1 Comment »

Numbers To Strings And Back Again - Standard C++ vs. Boost

2008-05-06 by monzool

CONVERTING NUMBERS TO strings or the opposite of converting strings to numbers, is an operation that is far from as trivial as one would expect from such an obvious task - at least when it comes to C++ programming using standard libraries. The converting can be performed by the iostringstream classes in the standard library. When searching Google for the C++ way of converting between numbers and streams, the stringstream library classes appears not to be the that well known, and especially its features of the number and string operations seems generally to be unknown by many.

The stringstream offers a large range of manipulating stream data, although if used for e.g. special formatted textual output, the implementation steps tends to be somewhat more cumbersome than the old printf family.

The example below takes a few more lines that doing e.g. a atoi or snprintf kind of operation, but depending on the situation, simple conversion scenarios do not require many lines of code.

Standard Input / Output Streams Library

The main function is extracted here, just not to obfuscate the picture of the actual converting. Note that stringstream is defined in the <sstream> header.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <sstream>  // stringstream
 
// Prototypes
void Std_StringToInteger();
void Std_IntegerToString();
 
int main(int argc, char *argv[])
{
  std::cout << "Std_StringToInteger:" << std::endl;
  Std_StringToInteger();
  std::cout << "Std_IntegerToString:" << std::endl;
  Std_IntegerToString();
}

The function below handles conversion from strings to integers. First a simple conversion is done, then followed by an example of testing whether the conversion operation was a success. Last is shown how to enable exceptions on conversion errors.

15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
void Std_StringToInteger()
{
  std::string str = "1976";
  int val;
 
  // Load stringstream with text to convert
  std::istringstream is(str);
  // Convert by streaming to integer
  is >> val;
  std::cout << "  Val: " << val << std::endl;
 
  // Clear stream for another input
  is.clear();
 
  // Load stream with a non numeric convertible data
  is.str("Monzool.net");
  is >> val;
 
  // Test if conversion failed
  if (is.fail())
    std::cout << "  Conversion failed!" << std::endl;
 
  // Enable exceptions on conversion errors
  try
  {
    // Set failures to be thrown as exceptions
    is.exceptions(std::istringstream::eofbit  |
                  std::istringstream::failbit |
                  std::istringstream::badbit);
  }
  catch(std::istringstream::failure& e)
  {
    std::cout << "  Exception: " << e.what() << std::endl;
    std::cout << "  Conversion failed!" << std::endl;
  }
}

As the naming stringstream indicates, input and output is done by streaming measures. If not quite confident on stream directions, think of how functions cout and cin is used. Using stringstream is no different.

Last function is for converting from numbers to strings.

51
52
53
54
55
56
57
58
59
60
void Std_IntegerToString()
{
  int val = 1976;
 
  // Create empty stringstream for number to convert
  std::ostringstream os("");
  // Convert by streaming integer
  os << val;
  std::cout << "  Str: " <<  os.str() << std::endl;
}

Boost lexical_cast

To put it simple: when dealing with libraries for converting between numbers and strings the Boost library smokes the standard C++ library ditto.

The conversion features of Boost is located in the lexical_cast library and is embedded by including the lexical_cast.hpp file (most Boost libraries are implemented in header files and can be embedded by including the appropriate hpp file.).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <boost/lexical_cast.hpp>
 
// Prototypes
void Boost_StringToInteger();
void Boost_IntegerToString();
 
int main(int argc, char *argv[])
{
  std::cout << "Boost_StringToInteger:" << std::endl;
  Boost_StringToInteger();
  std::cout << "Boost_IntegerToString:" << std::endl;
  Boost_IntegerToString();
}

Instead of using streaming functionality, Boost has chosen a much more obvious concept. Boost has added the functionality of simply casting between numbers and strings. Casting functions are already a familiar concept in C++, like casting between data types using static_cast or manipulating const’ness with const_cast.

The lexical_cast template function makes converting from string to integer trivial. The example below also shows how to handle conversion errors by exception handling.

15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
void Boost_StringToInteger()
{
  std::string str = "1976";
  // Cast string to integer
  int val = boost::lexical_cast<int>(str);
  std::cout << "  Val: " << val << std::endl;
 
  // Load string with non numeric convertible data
  str = "Monzool.net";
  try
  {
    // Non convertible values throws exceptions
    val = boost::lexical_cast<int>(str);
  }
  catch (boost::bad_lexical_cast &e)
  {
    std::cout << "  Exception: " << e.what() << std::endl;
    std::cout << "  Conversion failed!" << std::endl;
  }
}

Converting the other way from integer to string is just as trivial.

35
36
37
38
39
40
41
void Boost_IntegerToString()
{
  int val = 1976;
  // Cast integer to string
  std::string str = boost::lexical_cast<std::string>(val);
  std::cout << "  Str: " << str << std::endl;
}

When it comes to simple conversion between numbers and strings, Boost is far superior in simplicity. However note that the design goals have also been very different for the two libraries. The C++ Standard Input/Output Streams Library has been designed for flexibility. And flexible it is indeed, but sadly this side effects to complicating its usage even for obvious tasks that ought to be trivial to perform.

Posted in C++, Programming | No Comments »

« Previous Entries