Wednesday, July 28, 2010

John Bolz died

email post

John Bolz died in May when his car crashed into an electric pole. He was driving a 2005 Chevrolet when he crashed into a pole and died in the accident. The accident wasn’t harsh enough to actually kill someone but it seems that he was caught in a very bad and critical position during the impact. The incident was truly tragic and the whole nation got suddenly interested in the news.

There is a very strange thing about the way the accident happened. Usually in a situation where a car is found crashed into a pole or tree there is almost always the case of a drunk or disoriented driver who gets swirled out of control due to confrontation with other traffic. In this case there are skid marks on the road indicating the point of the drift. In John Bolz’s case however, there were absolutely no skid marks and according to the investigations the car simply strayed off the road and collided with the pole straight out. This is very weird because this usually happens when something happens to the driver before the accident, like losing consciousness.

It is thus presumed that John Bolz fell asleep while driving his car and collided with the pole. This presumption also supports the fact that the impact hit his critical organs with enough force to kill him, because he wasn’t able to brace himself due to the drowsiness. There are a lot of people at different forums where the news was first published and all paid their respects to John Bolz.

30 Habits that Will Change your Life

email post

Developing good habits is the basic of personal development and

growth. Everything we do is the result of a habit that was previously

taught to us. Unfortunately, not all the habits that we have are good,

that's why we are constantly trying to improve.

The following is a list of 30 practical habits that can make a huge

difference in your life.

You should treat this list as a reference, and implement just one

habit per month. This way you will have the time to fully absorb each

of them, while still seeing significant improvements each month.

Health habits

Exercise 30 minutes every day. Especially if you don't do much

movement while working, it's essential that you get some daily

exercise. 30 minutes every day are the minimum recommended for optimal


Eat breakfast every day. Breakfast is the more important meal of the

day, yet so many people skip it. Personally, I like to eat a couple of

toasts in the morning along with a fruit beverage.

Sleep 8 hours. Sleep deprivation is never a good idea. You may think

that you are gaining time by sleeping less, when in reality you are

only gaining stress and tiredness. 8 hours are a good number of hours

for most people, along with an optional 20 minutes nap after lunch.

Avoid snacking between meals. Snacking between meals is the best way

to gain weight. If you are hungry, eat something concrete. Otherwise

don't. Update: for clarification, I mean don't eat junk food between

meals, but eating real food it's ok.

Eat five portions of fruits and vegetables every day. Our body and

brain loves getting vegetables and fruit, so I highly recommend eating

as much of them as possible. Five portions is the dose that's usually

recommended by many health associations.

Eat fish. Fish is rich of omega 3 and other healthy elements. At least

one meal per week of fish should be enough for getting all these


Drink one glass of water when you wake up. When you wake up, your body

is dehydrated and needs liquid. Make the habit of drinking one glass

of water after you wake up in the morning. Also, drink more during the


Avoid soda. Soda is often one of the most unhealthy beverage you can

find. Limit your consumption of soda as much as possible and you're

body will be grateful for that.

Keep your body clean. I don't advise spending your day in front of the

mirror, but a minimum of personal care does never hurt.

If you smoke, stop it. There's no reason to smoke anymore, and quitting is easy.

If you drink, stop it. Same as above. Don't think that alcohol will

solve your problems. It never does. The only exception is one glass of

wine per day during meals.

Take the stairs. This is just a hack that forces you to do a minimum

of exercise. Instead of taking the elevator, take the stairs.

Productivity habits

Use an inbox system. Make the habit of keeping track of all the ideas

and things that comes to mind. You can use a notebook to do this, and

then sync everything on your computer.

Prioritize. If you have a list of things to do, where do you start?

One way is to prioritize your list. If you are in doubt, ask yourself:

"If I could only accomplish one thing today, what would it be?"

Plan, but not too much. Planning is important, and you should decide

in advance what you are going to do today or this week. However,

planning for more than a few weeks is usually inefficient, so I would

not worry too much about that.

Wake up early. Waking up early in the morning is a great way to gain

extra time. I personally like to wake up at 5 am, so that by 9 am I

have already accomplished what otherwise would have taken me many


Check your email only twice per day. Email can easily become an

addiction, but it's usually unnecessary to check it every 10 minutes.

Make an effort and check your email only once or twice per day, see if

the world will still rotate as before after you try this.

Eliminate unimportant tasks. Being busy all day does not mean you are

doing important stuff. Eliminate every activity that's not important,

and focus on what really matters.

Clean off your desk and room. Having a clear room and desk is

important to maintain focus and creativity.

Automate. There are a lot of tasks that you need to perform every day

or every week. Try to automate them as much as possible.

Set strict deadlines. When you do something, decide in advance when

you're going to stop. There's a rule that states that you will fulfill

all the time you have available for completing a task, so make an

habit of setting strict deadlines for maximizing your productivity.

Take one day off per week. Instead of working every day, take one day

off per week (for example sunday) where you are not going to turn on

your computer. Use that time for doing recreational activities like

going for a walk.

Personal Development habits

Read 1 book per week. Reading is a good way to keep your brain active.

With just 30 minutes per day you should be able to read one book per

week, or more than 50 books per year.

Solve puzzles. Quizzes, word games, etc. are all good ways to exercise

your brain.

Think positively. You are what you think, all the time.

Make fast decisions. Instead of thinking for one hour wherever you are

going to do something, make your decisions as fast as possible

(usually less than 1 minute).

Wait before buying. Waiting 48 hours before buying anything is a

tremendous money saver, try it.

Meditate 30 minutes per day. A great way to gain clearness and peace

is through meditation. 30 minutes are not a lot, but enough to get you

started with meditation.

Career habits

Start a blog. Blogging is one of the best way to put your word out. It

doesn't have to be around a specific topic, even a personal blog will


Build a portfolio. If your job is creating stuff, building a portfolio

is a great way to show what you are capable of. You can also

contribute stuff for free if that applies to your work.

What do you think? What are the habits that changed your life?

RCMP brass put pressure on PM to replace chief as rift deepens

email post
RCMP brass put pressure on PM to replace chief as rift deepens

Daniel Leblanc
Ottawa — From Wednesday's Globe and Mail
Prime Minister Stephen Harper is facing an unprecedented crisis in the RCMP and must choose between his hand-picked civilian leader and a group of high-ranking mutineers pushing for a new top Mountie, according to RCMP insiders and experts.
There is a growing rift in the national police force after at least seven senior officers formally complained to their bureaucratic bosses about the leadership style of Commissioner William Elliott. Sources said the conflict stems from Mr. Elliott’s abrasive and crusty personality and his frequent screaming matches with officers, often in relation to the rapid pace of reforms as the force comes under attack over its mishandling of high-profile cases.
But Mr. Elliott has his defenders within the RCMP, who describe his outbursts as examples of his passion for the force.
Sources said Assistant Commissioner Mike McDonell, who commands the Ontario division and is nearing retirement, sent a letter to Public Safety Minister Vic Toews and other government officials last week laying out a series of complaints about Mr. Elliott’s alleged dictatorial conduct. Other assistant and deputy commissioners vented their anger with the deputy minister at Public Safety Canada, and now the government has hired an outside adviser to determine the extent of the crisis.
A recently retired member of the brass, former senior deputy commissioner Bill Sweeney, said on Tuesday that tensions have steadily grown since Mr. Elliott became the RCMP’s first civilian leader three years ago.
“There was considerable discontent with the manner that the commissioner conducted himself, both around senior and junior officers. The tension was palpable, and I’m not surprised that people felt compelled to step forward,” said Mr. Sweeney, who left the RCMP on July 1 after nearly 36 years of service. “The commissioner is a man of extremes. In some instances, his conduct was unacceptable to others around him.”
The Clerk of the Privy Council responded to the crisis by launching a “workplace assessment,” hiring an independent adviser to determine the cause of the tensions and see whether there is a potential reconciliation among senior managers.
Mr. Harper’s office sent a clear message to the RCMP brass on Tuesday to calm down, saying the current exercise has “to occur expeditiously and without further rancour.”
Mr. Toews added: “Frankly, it is unacceptable for individuals in leadership positions in an organization as important as the RCMP to air internal disputes through the news media.”
Senior officials who support Mr. Elliott feel the conflict could be related to personal ambitions and rivalries between members trying to move up within the RCMP.
“The commissioner is a passionate guy,” said a member of the senior executive committee. “He expects the best out of everyone.”
Sources described the complainants as “Ottawa-centric,” saying Mr. Elliott does not face the same problems with senior leadership in the rest of the country.
But Mr. Sweeney defended his former colleagues, saying he believes their motivations are honourable.
“Many felt that the behaviours that [Mr. Elliott] was exhibiting were inconsistent with what we are asking our front-lines officers to do when dealing with the public. That contradiction was just becoming intolerable to some,” he said.
A number of RCMP watchers are questioning the government’s “workplace assessment,” arguing the rift between Mr. Elliott and his senior officials can no longer be bridged after more than a year of friction.
“This is too little, too late,” said Linda Duxbury, an expert on the RCMP at Carleton University’s Sprott School of Business.
Ms. Duxbury said the police culture is “based on trust,” and if the government insists on keeping Mr. Elliott in his position, it will have to ask, “How many of his leadership team need to be replaced?”
Liberal Senator Colin Kenny, who has studied the RCMP extensively, said the Harper government needs to act decisively and appoint a new commissioner, all the while creating a board of directors to oversee the RCMP.
Mr. Elliott did not agree to an interview on Tuesday. Reached at his home after a CBC report on the matter the previous night, he blamed the conflict on “tremendous changes” within the force. A number of senior RCMP officers are nearing retirement and are being replaced, and there is tension within the force over the need to centralize or decentralize operations.

The meaning of name: John

email post
The meaning of name: John

The boy's name John \
hn\ is pronounced jahn. It is of Hebrew origin, and the meaning of John is "God's grace". Biblical: the name of the longest-lived of the 12 apostles, who was especially loved by Christ. Also the name of John the Baptist, who baptized Christ in the Jordan river. Dozens of variant forms, given names and surnames, male and female, have been created in almost every language. For a few examples, Jan is a Dutch and Slavic form; Janos is Czech; Joao is Portuguese; and the Johan variants are German and Swiss. Possibly the most popular name in history; kings, popes, saints, heroes, villains, and men of every degree between have borne the name. A contemporary trend seems to be to hyphenate Joh, Jean, Jon, Sean, and Shawn with various other names. Actors John Gielgud, John Barrymore, John Wayne, John Cusack, John Leguizamo, Johnny Depp; American Presidents John F. Kennedy, John Tyler, John Adams, John Quincy Adams; poet John Donne; Beatle John Lennon; composer Johannes Bach; football player John Elway; lawyer Johnnie Cochrane.

open office hack

email post

My first hack

So - we've built and run OO.o, and we want to prove to ourselves that it is in fact possible to hack on it. So in a new terminal do this:
cd build/src680-m66
. ./
cd vcl
Now have a hack at vcl/source/window/menu.cxx (Menu::SetItemText); (near line 1770) I suggest manually applying this change:
-               pData->aText = rStr;
+               pData->aText = String(rStr).Reverse();
Then save. ( You can find more sensible things to hack in the Tutorials )
You're still in vcl/ yes ? then type 'build debug=true'; wait for the scrolling text to stop; (5 seconds?). Now re-run soffice -writer. You should notice the effect in the menus. If not, ensure the previous soffice.bin was dead with killall -9 soffice.bin
Note: for day to day hacking you want to just run 'build' inside the source tree. It is also highly recommended to work inside a copy of the build tree, and generate / test patches in an un-hacked version. To copy just the build/src680-m66 directory elsewhere, you need to use the relocate tool.
There is also documentation here on it.
deliver, deliver.log and prj/d.lst The syntax of d.lst is more comprehensible than build.lst, it omits some default actions, such as copying build.lst into
inc/<module>/build.lst. A line is of the form:
       [action]: [arguments]
       mkdir:    %_DEST%\inc%_EXT%\external
where if '[action]:' is omitted, it defaults to the 'copy' action. Typical actions are copy, mkdir, touch, hedabu, dos and linklib.
The 'hedabu' action is particularly interesting, inasmuch that it cosmetically re-formats the header to shrink it on install and adds the module name to the include path (#include "my_header.hxx" becomes #include <my_module/my_header.hxx>). Otherwise it's much like the copy action.
     During the action, various macro variables are expanded some of which are:
  •  %__SRC% — distribution directory name eg.</li>
  •  %_DEST% — absolute path into solver eg. /opt/OpenOffice/OOO_STABLE_1/solver/641/
  •  %_EXT% — (unusual) way of having minor updates eg. 641.1, typically used to version every base sub-directory.
Typically then, if indeed you need to add a rule (cf. implicit directory copies), it will be of the form:
       ..\%__SRC%\inc\sal\*.h %_DEST%\inc%_EXT%\sal\*.h
NB. relative paths are relative to the 'prj/' directory.
Sometimes you might run into the situation where you'd like to remove the delivered files from solver. Your configuration might have changed and they are no longer needed. "deliver -delete" does just that, however you might still need to delete "deliver.log" files manually as well.

Can I get a char *, please?

Just barely. OO.o has at least six string wrappers, although the C implementations are of little interest:
  • rtl_String — sal/inc/rtl/string.h
    "Normal" string plus reference counting. rtlstring->buffer is useful, as is rtlstring->length. This object encapsulates an generic 8bit string - of unknown encoding. Feel free to treat rtlstring->buffer as your beloved char *. If you really want to look at the implementation of some rtl_String function and lxr nor grep can help you, have a look at sal/rtl/source/strtmpl.c.
  • OString — sal/inc/rtl/string.hxx
    Simply a rtl_String wrapped inside a class; you can use ostring.pData to get at the rtl_String (it's public). OString has reasonably useful methods for if you need them.
  • rtl_uString — sal/inc/rtl/ustring.h
    "Normal" Unicode string, similar to rtl_String, and refcounted as well. However, this one always comes in UCS-2 encoding, presumably to be compatible with Java's questionable choices. See rtl_String above to find where the implementation of some rtl_uStringfunctions is hidden.
  • OUString — sal/inc/rtl/ustring.hxx
    An rtl_uString wrapped inside a class. This is what most of the OO.o code uses to pass strings around. To convert an OString to an OUString it is necessary to specify the character set of the OString see; sal/inc/rtl/textenc.h — the only interesting case is RTL_TEXTENCODING_UTF8
  • String — tools/inc/string.hxx
    This is an obsolete string class, aliased to 'UniString'. It has a number of limitations such as a 64k length limit. You can have the buffer with GetBuffer(), but it's Utf-16 encoded.
A couple of conversion functions are really useful here, particularly:
rtl::OString aOString = ::rtl::OUStringToOString (aOUString, RTL_TEXTENCODING_UTF8);
And the reverse:
rtl::OUString aOUString = ::rtl::OStringToOUString (aOString, RTL_TEXTENCODING_UTF8);
If you just want to programattically print out a string for debugging purposes you probably want define a macro like :
and use it like :
printf ( "SvXMLNamespaceMap::AddIfKnown : %s / %s\n", CHAR_POINTER(rPrefix), CHAR_POINTER(rName) );.
For the obsolete String class, aliased UniString, it's like :
printf ( "rGrfName : %s\n", ByteString( rGrfName, RTL_TEXTENCODING_UTF8).GetBuffer() );
To print the value of rtl::OUString directly in the debugger, you can use dbg_dump(). It is intended to be called interactively from the debugger, in both debug and non-debug builds of OOo. You can see the definition in sal/rtl/source/debugprint.cxx.
Some code snippets about manipulating those objects can be found on the codesnippets service page : [1]

Linkoo & Limitations

Linkoo is the tool that implements the -l functionality of bin/ooinstall. It essentially sym-links files of similar names into your local tree, allowing a fast development iteration.
It is however slightly limited - some of the modules cannot be linked for various reasons; these are: cppuhelper and configmgr, thus in the rare case that these are altered, they must be copied manually into /opt/OOInstall/program.
In addition symlinks cannot be used for soffice.bin, and this is more commonly altered - it has to be installed from desktop/ NB. with an appended '.bin'

Read the Fine manual

With the power of C++ comes the ability to shoot yourself in the foot all the more easily; (and implicitly), cf. Holub, Rules for C and C++ programming, McGraw-Hill, 95.
The best way to prepare yourself for battle is to read the OpenOffice coding guidelines, and for the easily confused c'tor / d'tor is short for constructor / destructor.
Also, there's an extensive list of recommended literature about C++ - but that's of course no prerequisite to start coding.

Sending patches

The toplevel structure of the OO.o source code is not the same as the layout of the CVS repository [ a good rational for this strange state of affairs is absent ]. Thus to work out what real module a file is in you need to do eg.
       cd binfilter
       cat CVS/Repository
This shows you that the 'binfilter' directory is part of the 'framework' project.
These days there is a hackers bug filing page that will assign bugs to the correct project, and the correct owner to get rapid attention.

Starting the right app

As you start soffice.bin, there are several useful parameters to use to accelerate your debugging experience; particularly -writer, -calc, -draw, and (the wizardly painful) -impress arguments.

Understanding D' make (man)

While the build system is in similar to many other systems, it is also perhaps slightly different. The overview is that each module is built, and then the results are delivered into the solver. Each module builds against the headers in the solver. Thus there are a few intricacies.
  • build — this perl script solenv/bin/ is used in conjunction with prj/build.lst to ensure that every module that is needed is built first.
    build then un-winds internal module dependencies, and builds each module with a chdir, dmake pair.
  • deliver — this perl script solenv/bin/ installs headers, and libraries (etc.) into the solver, as informed by prj/d.lst. Crucially deliver ensures that the date stamp on any file that is installed to the solver is the same as that in the module's directory. This ensures, that (particularly for headers) that there is no dependency cascade triggering re-builds in other modules.

Standard directories

There are various standard directories and files in most of the modules that make up OO.o, here are some of the more useful:
  • prj
    • build.lst — this lists directories to be made, '^#' comments are allowed, the order of the list is immaterial see detail, it is dictates build's operation.
    • d.lst — this file describes the deliver process, see detail.
  • util — typically the util directory is charged with glueing together the sub-libraries for each sub-module into a single large library, adding system library dependencies, building GUI resource files etc. All the work is described in, this is usually the last directory to be built in a project.
  • inc — public headers are typically separated into an 'inc' directory, these will be installed into the solver by the 'deliver' phase (using prj/d.lst)
Build's mode of operation is to invoke 'dmake' in each of the projects' directories with a given dependency order. dmake then executes the rules in


On first view build.lst looks scary:
vc      vcl : NAS:nas FREETYPE:freetype psprint rsc sot ucbhelper unotools sysui NULL
vc      vcl                      usr1   -       all     vc_mkout NULL
vc      vcl\source\unotypes      nmake  -       all     vc_unot NULL
vc      vcl\source\glyphs        nmake  -       all     vc_glyphs vc_unot NULL
vc vcl\mac\source\src  nmake - m vc__srcm vc_unot NULL
vc vcl\util   nmake - all 
vc_util vc__plug.u vc__appa.u vc__appm.m vc__appu.u vc__appw.w vc__gdim.m 
vc__gdiu.u vc__gdiw.w vc__srcm.m vc__srcu.u vc__srcw.w 
vc__wina.u vc__winm.m vc__winu.u vc__winw.w vc__du.u 
vc__gtka.u vc__gtkw.u vc__gtkg.u vc__kde.u vc_app 
vc_ctrl vc_gdi vc_hlp vc_src vc_win vc_glyphs NULL
so we need to try and un-pack what's going on here, which is in fact not as odd as it might seem at first glance. Firstly lists are terminated by the 'NULL' string. Every line is prefixed by a shortcut which has to be unique, no two modules are allowed to have the same shortcut.
  • First active line contains a ':', this describes the fact that this project (vcl) depends on these other modules 'nas', 'freetype', 'psprint' etc. to be built first. This is for inter-project dependencies.
  • Some modules have a CAPITALS:lowercase arrangement; the first segment is a conditional, driven by a space delimited list in the BUILD_TYPE environment variable at build time.
  • Then we have a redundant line 'usr1' [ for fun ? ], in fact only lines containing the magic string 'nmake' are valid after this.
  • The next lines describe internal project directory dependencies and look like:
    [shortcut] [path to dir to build] nmake - [flags] [unique-name] [deps...] NULL
    vc           vcl\source\glyphs    nmake -   all     vc_glyphs   vc_unot   NULL
    shortcut is not used; flags determines which platforms this builds on; usually single char platform codes: 'dnpum' 'u' being Unix. The higher up the system, the more stuff is flagged 'all'.
    unique-name this is a magic name, used by other lines to describe an internal dependency. deps... any number of names of other directories in this file, that must be built before this one. If such prerequisite dir is built for special platforms only, the platform code has to be appended to its magic name.
So we see in the vcl case that vcl\source\unotypes (vc_unot) has to be built before vcl\source\glyphs (vc_glyphs). For Mac vcl\mac\source\src (vc__srcm) has to be built before vcl\util (vc_util) It is important to understand that the order of the list is ~immaterial, and instead of a simple ordered list, we have a more complex internal dependency system — this contrasts with most other make systems.

[2010/07/24] CrystalDiskInfo 3.7.0 Beta2

email post

[2010/07/24] CrystalDiskInfo 3.7.0 Beta2

Improved SandForce's controller support!!