Thursday, December 28, 2023

My Keebio Nyquist 46 key split keyboard

In the summer of 2020, during the height of the pandemic, I started experimenting with a new keyboard. After several optimizations, this is what I ended up with:


This is a 46 key split keyboard based on the Nyquist (rev 3) from keeb.io.

In this post I'll describe why this configuration works very well for me:

  • It has an optimized layout that very much reduces awkward finger twists, leverages my previously almost entirely unused thumbs, and frees up my right hand to reduce moving my right hand between the keyboard and the mouse.
  • The split design and angled position allows for reduced strain.
  • The compact form factor gives me more space on my desk and makes it easier to carry when using a laptop.
Let's get into some more details...

Layout

Shift and Control: reducing awkward movements

The Shift and Control keys are the two most commonly used modifiers. Yet the Shift key is operated with the pinkie finger.  This is awkward: e.g. try to do shift-A with your left hand. Instead of using the pinkie finger for the Shift, can we use another finger? The ring finger, middle finger, and index finger are already operating other keys, but my left thumb was not really used for anything: I noticed I use the space bar exclusively with my right thumb. So why not use my left thumb for pressing Shift instead? This is why the Shift key on my keyboard is at the resting position of my left thumb.

On some keyboards, you can use the side of your hand to hit the Control-key. Let's make that explicit and let's make that even easier. That's why my keyboard has a large key with a gap next to it for the Control key.

Navigation: relieve the right hand and reduce unnecessary hand movement

On most keyboards there's a dedicated "island" for cursor movements + backspace / delete. To use those keys, you have to move your hand to the island. The island is on the right side and I noticed I often found myself switching my right hand between my mouse and the "navigation island". Why not move the "navigation island" to the left hand and avoid hand movement altogether?

This can be done through "layers". Layers are a mechanism where keys can have multiple functions. For example, you can consider the Shift key as a layer for upper case letters. So Layer 1 on my keyboard is for navigation, and the layer is active when the left thumb holds the MO-1 button which is next to the Shift key:

The left keypad (Layer 0); holding MO-1 changes it into:

The left keypad (Layer 1)

The position of the MO-1 button next to the Shift key is no coincidence: like everybody I often need to hold the shift while using the cursor keys. With the two keys next to each other, the thumb can simply press them  both at the same time. This is also why these keys are wider than the other keys: it reduces the gap between the keys.

The MO-1 button also "happens" to be next to the Alt button. Because of this it's easy for me to use my left thumb to hold both Alt+MO-1 to hit alt+cursor key combinations.

Reduce reaching: Enter, Escape, Backspace, numbers

With moving more responsibility to the left hand so that the right hand can stay on the mouse for things like spreadsheet operations (heavy on navigation, editing), the Enter button also moves to the left. It takes the place of the Caps lock key on regular keyboards. Like most people, I never really use that key anyway. This key is prime real estate: it is easily reached with just one position over from the left pinkie.

The backspace is typically found just out of reach of the right pinkie. I use the backspace key a lot: my typo rate is pretty high. So I moved that key to the bottom of the right hand where the right thumb is in its rest position. (I use MO-1+R if my right hand is on the mouse)

Full layer 0

This leaves a single key for the space bar. It turns out I was hitting the space bar on exactly the same place every time anyway, so there's really no reason to give the space bar more than a single key.

Numbers and function keys: pulling them in reach

With only three rows of keys, how do we use numbers and function keys? They're simply pulled down from where they are on a regular keyboard to the home row and top row using the second layer.

Full layer 2

The second layer is activated using the key on the right of the shift key. Again, this choice is intentional: to enter a symbol like an exclamation mark, I press the Shift and the MO-2 layer keys both with my left thumb and hit the 1 key with my left pinkie.

Memorizing the positions of these keys is easy because they simply have the same x-coordinate as on regular keyboards; they're just shifted down by two rows.

Reducing the number of keys on the home row to only 6 causes a minor problem with just a few keys: F12 no longer fits. And the square bracket keys need to be relocated. In practice, I never use F12. And the memorization of the new location of the bracket keys was not that difficult. They're actually easier to reach in their new positions.

Entering many digits goes quite fast since all eight fingers can be used on the home row. As an alternative I also have a numeric keypad on Layer 1 but in practice I never use it.

Full layer 1

So while the number of keys is reduced to only 46 keys in total, there are plenty of unused keys left because of the use of layers. In fact, I put together a third layer for special keys which is reachable by holding the "Context menu" key with the right thumb.

Full layer 3

The only keys I use here are the multimedia keys and the "Right Alt". The latter makes it easy to occasionally use international characters without giving up the Alt key on the right keypad. So for the Euro sign € I hold the Context Menu key with my right thumb, roll the side of my right hand onto the right alt, press the Layer 2 button with my left thumb, and hit 5 with my left index finger.

Reduced strain

The keyboard layout reduces strain on my fingers because it eliminates the load on the pinkies and instead moves a lot of their load onto the much stronger thumbs. Almost all key combinations become very easy, e.g. Ctrl+Shift+V are easy to accomplish with only my left hand. And because of that, my right hand can stay engaged on the mouse.

Having two separate keypads also makes it easy to keep my hands straight as opposed to the angle that occurs with a straight keyboard. I like to move them a good distance apart: 10-12 inches is my preferred distance.

My preferred wrist rotation angle is 15°, so I made the inside legs of the keypads longer to match that angle.

The absence of navigation and numerical islands minimizes the space between the default position of my right hand and the mouse and hence minimizes travel between the mouse and keyboard.

Putting a keyboard together myself also allowed me to optimize the key switches. I went with Gateron White (35g of resistance force) for both pinkies and the left thumb. The latter is because it needs to often press two keys at the same time. The two keys I press with the side of my hands, i.e. the left Control key and the right Alt key, are Green (80g of resistance) and the only ones that are clicky. The other keys are all Reds (45g of force).

The two pads without key caps.

The addition of O-ring switch dampers under the key caps reduces the impact of key strokes. The rubber rings also reduce the sound a little bit.

Further customizations include reducing the space between the top and bottom plate to 8mm using M2*8mm and M3*8mm metal female standoffs.

Size

My current keyboard is a lot smaller than my daily driver that I used in the 10+ years prior:

Full size keyboard comparison

I can now have a notepad right in front of me or I can simply move the keyboard under my monitor so that I can reclaim my desk for writing.

A notepad fits easily in between

I like my current keyboard so much that I use it instead of my laptop keyboard when I'm in meeting rooms. I position the two pads on both sides of my laptop:

(Not shown: USB hub plugged into laptop)

Carrying this combo between meeting rooms is pretty simple because the keypads fit on the lid of the laptop:

(Not shown: USB hub plugged into laptop)



Postscript

I have one regret about my keyboard: why did I stick so long with the traditional keyboards? They're bulky and painful to use!

Having said that, I have no illusion that I will convince anybody to start building their own custom keyboard. But through this post I can easily share more information with people who see my weird contraption in the office.

Sunday, June 6, 2021

Regularly backing up a Google account

I've had my Google account for well over a decade and have accumulated a lot of emails, photos, etc. The risk that Google will lose my data is extremely small, but it's not unimaginable that I might accidentally delete data, or that I get locked out my account. Therefore, I periodically back up my account. Google provides https://takeout.google.com as a convenient way to do so. Here's how in more detail:

Incremental backup

As it turns out gmail and photos use most space, so it's worthwhile to do an incremental backup on these items and simply do a full backup on everything else.
  1. gmail
    1. empty trash
    2. in gmail's search bar, type "after:2021/01/01" (adjust the date)

    3. hit the selection checkbox to select all mails
    4. hit the "Select all conversations that match this search" link
    5. hit the "label" button and select "Create new label"
    6. select a descriptive string, e.g. "backup-20210101-20210307"; this label will be used later
  2. photos:
    1. create an album for all photos since the last backup, e.g. "Backup 2021-01-01 to 2021-03-07"
    2. tag all photos in the timeline after the last backup with this album; this album will be used later
  3. create an export in https://takeout.google.com
    1. select the backup label for mail
    2. select the just created backup mail label for Mail
    3. select the just created backup album for Photos
    4. select all files in Drive but uncheck the photos (if that corresponds to Google Photos
    5. choose Drive as the destination of the takout archive; zip files greater than 2Gb work fine
  4. wait for takeout to complete
  5. copy the takeout zipfiles from Drive to another medium, e.g. an external drive
  6. delete the takeout zipfiles in Drive
  7. schedule the next backup in Google Calendar as a reminder

Friday, February 26, 2016

8 things you may not know about Google Tag (Assistant) Recordings

Many people know Google Tag Assistant and use it as a tool to quickly look at their Google Analytics (and other) tags on their website. A few months ago we launched a new product: Google Tag Recordings which we integrated with Google Tag Assistant.

The idea behind Tag Recordings is that you as a GA user can record a journey through your website and then look at how GA would process the GA hits. This lets you validate that your site works correctly with GA. If there's an issue, you can troubleshoot it on the spot, make changes --for instance to the GA configuration-- and instantly see the effect of your changes.

Here is a 2 minute demo:


Here are 8 things you perhaps didn't know about Google Tag (Assistant) Recordings:


1. It’s a service!

Although integrated with Tag Assistant, Tag Recordings is a standalone service. It lives at this URL: https://analytics.google.com/tagrecordings. It being a separate service instead of javascript in the browser, lets it use some of the same GA parsing and processing code that GA normally uses.

To use Tag Recordings, you need to have a recording of a journey through your website. The recording is in the form of a HAR. The easiest way to record is to use Google Tag Assistant: just hit the record button. But you can also use the record functionality in the Chrome Devtools. You can also use Firefox or IE or construct your own HAR.


2. Dropped hits? Check hit parse errors!

If you make an error in --for example-- the number format of an event sent from your web page, the hit will be rejected when it arrives at google-analytics.com because the hit cannot be parsed. Example:
  ga('send', 'event', 'cat', 'act', 'lab', 5.2);
This fails to parse in the GA server because the last parameter must be an integer. The parse error does not make it back to your web browser, so you don't know that your hit will never make it into any reports.

While Tag Assistant does not show the error (it only does a small set of validations in the browser itself), Tag Recordings however does show the parse error: it uses the same code that the Google Analytics server uses.





3. No hits? Find the filter that is to blame

If you see no hits at all in a GA View, a filter may be to blame. Views often have lots of different filters, making it difficult to quickly see which filter is to blame. In Tag Recordings you can see if a hit is dropped for a View, and if so, which filter is responsible.


4. Mutating filters

Filters may change attributes of a hit. Also View settings may mutate hits, for example for query parameter stripping. Tag Recordings shows exactly how a hit changes after it is sent.


5. Find session breaks

Going from one domain to another domain may cause GA to start a new session. This of course will have a big impact on your GA reports. Because Tag Recordings looks at all the hits in a recording, it can figure out where GA would create a new boundary. See for an example the video above or this example report.



6. Verify your goals, filters, etc

When you create a new goal or filter, Google Analytics allows you to preview how the goal or filter will work using hits that were received and processed previously. For this to work the View already must have data, obviously. How the actual filter or goal will work, can only be seen after a day or so when new hits have come in and have been processed.

A powerful feature of Tag Recordings is that it operates on the current configuration of your property and view. So you can get instant feedback on what happens to hits if you change the configuration. That allows you to instantly validate changes to filters, goals, etc.

7. Pretend to be elsewhere

Once you have a recording, you can pretend that the recording was made from a different specific IP address, or you can pretend that the IP address belongs to a different geo. This makes for a quick approach to verify that your IP-specific or geo-specific filters work as you would expect them to work.

8. Troubleshoot GCLID problems

If you click on an ad in Google Search and you have setup autotagging, the GCLID needs to be propagated from googleadservices.com all the way to the the ads landing page. If you have redirects in between, for instance because all traffic for mobile devices is redirected to a different sub domain, the GCLID may be mangled or dropped. This results in seeing fewer sessions in your GA report than ad clicks.
Tag Recordings reports all redirects and warns you if a GCLID gets dropped or mangled in a redirect. Example report


A demo site for Tag Recordings

If you want to try out Tag Recordings yourself, you can record a journey through a sample site at http://search.kieviet.us. This site will send various types of hits and show several different problems.
Before you go there, first create a new GA property. Next, enter the UA-string on the site so that the hits will be sent to this new property. This allows Tag Recordings to use the configuration of your property and display all the information associated with the hits. It also allows you to make changes to the GA configuration of the property so that you can see what happens due to the configuration change.

More information


Saturday, June 29, 2013

Cleaning out my Google Reader Starred Items

Tomorrow is the last day of Google Reader. I went through all my "starred items". Here are some that were worth saving. Enjoy!





Mrs. O'Malley arrived in Boston from Ireland, and in no time at all her bean soup made her the talk of New England society. At a party celebrating the sale of her recipe to a fancy Charles Street restaurant, an old matron approached Mrs. O'Malley and said, "My dear girl, what is the secret of your soup?"

Mrs. O'Malley said, "The secret o' me soup is that I use but two hundred thirty-nine beans to make it."

The woman said, "Why only two hundred thirty-nine?"

Mrs. O'Malley said, "Because one more would make it too farty."




At the Olympic Games, Rhoda meets a man carrying an eight-foot-long metal stick.
"Excuse me," says Rhoda to the man. "Are you a pole vaulter?"
"No," says the man, "I'm German, but how did you know my name is Walter?"




What happened to the butcher when he backed up into the meat grinder?
He got a little behind in his orders.




What's the difference between roast beef and pea soup?
Anyone can roast beef.




"So, what do you do for a living?"
"I'm a cop."
"Honest?"
"No, the regular kind."




*The caliber of your weapon is not as important as shot placement.*
*The reliable Beretta Jetfire .22 Short pistol is a personal favorite of mine and I am never without it. It saved my life a few years ago when attacked by a Grizzly while hiking in the mountains with a family member. I was able to escape, walking at a brisk pace, after I shot my brother-in-law in the knee.*




This little Italian boy and this little Jewish boy lived about a block apart in the neighborhood and basically grew up together. The Jewish boy was the son of a jeweler and the Italian boy was the son of a hitman. Oddly enough, they had the same birthday. Well, for their 12th birthday, the little Jewish boy gets a Rolex watch and the little Italian boy gets a .22 Baretta.

The next day they are out on the street corner comparing their presents and neither is happy so they switch gifts with each other. The little Italian boy goes home to show his father and his father is NOT pleased!

"What're you, nuts? Lemme tell you something, you idiot!! Some day you're gonna meet a nice girl, you're gonna wanna settle down and get married. You'll have a few kids, all that stuff. THEN one day, you're gonna come home and find your wife in bed with another man. What the heck ya gonna do??? Look at your watch and say, 'Hey, how long you gonna be?'





Four brothers left home for college, and they became successful doctors and lawyers and prospered. Some years later, they chatted after having dinner together. They discussed the gifts they were able to give their elderly mother who lived far away in another city.
The first said, "I had a big house built for Mama."
The second said, " I had a hundred thousand dollar theater built in the house."
The third said, "I had my Mercedes dealer deliver an SL600 to her."
The fourth said, "You know how Mama loved reading the Bible and you know she can't read anymore because she can't see very well. I met this preacher who told me about a parrot that can recite the entire Bible. It took twenty preachers 12 years to teach him. I had to pledge to contribute $100,000 a year for twenty years to the church, but it was worth it. Mama just has to name the chapter and verse and the parrot will recite it."

The other brothers were impressed. After the holidays Mom sent out her Thank You notes.

She wrote: "Milton , the house you built is so huge I live in only one room, but I have to clean the whole house. Thanks anyway."

"Marvin, I am too old to travel. I stay home, I have my groceries delivered, so never use the Mercedes. The thought was good. Thanks."

"Michael, you gave me an expensive theater with Dolby sound, it could hold 50 people, but all of my friends are dead, I've lost my hearing and I'm nearly blind. I'll never use it. Thank you for the gesture just the same."

"Dearest Melvin, you were the only son to have the good sense to give a little thought to your gift. The chicken was delicious. Thank you."

Luv Ya, Mama




A public union employee, a tea party activist, and a CEO are sitting at a table with a plate of a dozen cookies in the middle of it.
The CEO takes 11 cookies, turns to the tea partier and says, "Watch out for that union guy. He wants a piece of your cookie."





Dear Rubik's Cube,

Done!

Sincerely, Colorblind




Dear Icebergs,

Sorry to hear about the global warming. Karma's a bitch.

Sincerely, The Titanic




A couple preparing for a religious conversion meets with the orthodox rabbi for their final session.
The rabbi asks if they have any final questions.
The man asks, "Is it true that men and women don't dance together?"
"Yes," says the rabbi, "For modesty reasons, men and women dance separately."
"So I can't dance with my own wife?"
"No."
"Well, okay," says the man, "but what about sex?"
"Fine," says the rabbi. "A mitzvah within the marriage!"
"What about different positions?" the man asks.
"No problem," says the rabbi.
"Woman on top?" the man asks.
"Why not?" replies the rabbi.
"How about doggie-style?"
"Of course!"
"Well, what about standing up?"
"NO!" says the rabbi....
"Why Not???" asks the man.
"Could lead to dancing!"





A couple of biologists had twins. One they called John and the other control.




A donkey had an IQ of 186. He had no friends at all though. Even in the animal kingdom, nobody likes a smart-ass.



A key ring is a handy little gadget that allows you to lose all your keys at once.



Due to a water shortage in Ireland, Dublin swimming pools have announced they are closing lanes 7 and 8.



A termite walks into a barroom and asks, "Is the bartender here?"



A gorilla walks into a bar.
He orders a beer.
The bartender says, "That'll be $10. You know, we don't get many gorillas coming in here."
The gorilla says, "At $10 a beer, it's not hard to understand."





Man driving down road.
Woman driving up same road.
They pass each other.
Woman yells out window, "PIG!"
Man yells out window, "BITCH!"
Man rounds next curve.
Man crashes into a HUGE PIG in middle of road and dies.






A member of Parliament to Disraeli: "Sir, you will either die on the gallows or of some unspeakable disease."
"That depends, Sir," said Disraeli, "whether I embrace your policies or your mistress."






An Australian travel writer touring North America was checking out of the Spokane Hilton, and as he paid his bill said to the manager, "By the way, what's with the Indian chief sitting in the lobby? He's been there ever since I arrived."

"Oh that's 'Big Chief Forget-me Not'," said the manager. "The hotel is built on an Indian reservation, and part of the agreement is to allow the chief free use of the premises for the rest of his life. He is known as 'Big Chief Forget-me Not' because of his phenomenal memory. He is 92 and can remember the slightest detail of his life."

The travel writer took this in, and as he was waiting for his cab decided to put the chief's memory to the test.

"'ello, mate!" said the Aussie, receiving only a slight nod in return. "What did you have for breakfast on your 21st birthday?"

"Eggs," was the chief's instant reply, without even looking up, and indeed the Aussie was impressed.

He went off on his travel writing itinerary, right across to the east coast and back, telling others of Big Chief Forget-me Not's great memory. (One local noted to him that 'How' was a more appropriate greeting for an Indian chief than ''ello mate.') On his return to the Spokane Hilton six months later, he was surprised to see 'Big Chief Forget-me Not' still sitting in the lobby, fully occupied with whittling away on a stick.

"How?" said the Aussie.

"Scrambled," said the Chief.




"Doctor, Doctor! You've gotta help me! my husband thinks he's Moses!"

"Tell him to stop taking the Tablets."




I was in the restaurant yesterday when I suddenly realized I desperately needed to let off gas.. The music was really, really loud, so I timed it with the beat of the music.

After a couple of songs, I started to feel lots better. I finished my coffee, and noticed that everybody was staring at me...

Then I suddenly remembered that I was listening to my iPod.





Doctor: "I'm stumped. I guess we're just going to have to wait for the autopsy results."






Dear Diary,

Last Sunday in Church I told my wife, "I just let out a silent fart; what do you think I should do?"

She replied, "Get a new battery in your hearing aid."





Teacher: Maria, go the map and find North America.

Maria: Here it is.

Teacher: Correct. Now class, who discovered America?

Class: Maria






Two little kids are in a hospital, lying on gurneys next to each other outside the operating room.

The first kid leans over and asks, "What are you in here for?"

The second kid says, "I'm in here to get my tonsils out and I'm a little nervous."

The first kid says, "You've got nothing to worry about. I had that done when I was four. They put you to sleep, and when you wake up they give you lots of Jell-O and ice cream. It's a breeze."

The second kid then asks, "What are you here for?"

The first kid says," A circumcision."

The second kid says, "Whoa, Good luck buddy! I had that done when I was born. Couldn't walk for a year."




A wife was making a breakfast of fried eggs for her husband.

Suddenly, her husband burst into the kitchen. 'Careful,' he said, 'CAREFUL! Put in some more butter! Oh my gosh! You're cooking too many at once. TOO MANY! Turn them! TURN THEM NOW! We need more butter. Oh my gosh! WHERE are we going to get MORE BUTTER? They're going to STICK! Careful. CAREFUL! I said be CAREFUL! You NEVER listen to me when you're cooking! Never! Turn them! Hurry up! Are you CRAZY? Have you LOST your mind? Don't forget to salt them. You know you always forget to salt them Use the! salt. USE THE SALT! THE SALT!'

The wife stared at him. 'What in the world is wrong with you? You think I don't know how to fry a couple of eggs?'

The husband calmly replied, 'I just wanted to show you what it feels like when I'm driving.'






A young suitor was being led through the voluminous pages of the old family album by his girl's proud father. After seeing scores of members of the clan, the young man was finally shown the picture of a solid-looking old gentleman.

"This," said the father proudly, "is the founder of the family."

"What did he do?" asked the young man.

"He founded the family," the older man said again.

"I mean, sir," the suitor floundered, "what did he do to distinguish himself?"

"He was the founder of the family," the father rasped in exasperation.

"I understand that, sir," the suitor sighed. "I just wondered what the old gentleman did during the day."





Q: Did you hear about the dyslexic who tried to commit suicide?
A: He threw himself behind an oncoming train.




Last night at the Pub somebody told a joke disparaging Italians, by purporting them as stupid.
I was really offended and shouted, "Hey you! I'm Italian and I don't like you telling those Italian jokes!"
Then I pulled out a razor and everybody was quite concerned, until they realized I couldn't find a place to plug it in.




I was so depressed last night thinking about the economy, wars, jobs, my savings, Social Security, retirement funds, etc., I called the Suicide Lifeline. I got a call center in Pakistan , and when I told them I was suicidal, they got all excited, and asked if I could drive a truck.



Charles Dickens goes into a bar: "I'd like a martini, please."
Bartender: "Certainly, sir. Olive or twist?"




"As good as this Pub is," said the Scotsman, "I still prefer the pubs back home. In Glasgow, there's a wee place called McTavish's. The landlord goes out of his way for the locals. When you buy four drinks, he'll buy the fifth drink."

"Well, Angus," said the Englishman, "at my local spot in London, the Red Lion, the barman will buy you your third drink after you buy the first two."

"Ahhh, dat's nothin'," said the Irishman, "back home in my favorite pub, the moment you set foot in the place, they'll buy you a drink, then another, all the drinks you like, actually. Then, when you've had enough drinks, they'll take you upstairs and see dat you gets laid, all on the house!"

The Englishman and Scotsman were suspicious of the claims. The Irishman swore every word was true.

"Did this actually happen to you?"

"Well, not meself, personally, no," admitted the Irishman, "but it did happen to me sister quite a few times."





This guy is in the emergency room after a car accident. When he wakes up, the surgeon is at his bedside and says, "I have some good news and some bad news."

The patient says, "Give me the bad news first."

"OK," says the surgeon, "We had to amputate both legs."

"What's the good news?"

The surgeon says, "I really like your shoes; I'll give you $300 for 'em."




A young American tourist goes on a guided tour of a creepy old castle. At the end of the tour the guide asks her how she enjoyed it. She admits to being a bit worried about seeing a ghost in some of the dark cobwebby rooms and passages.

"Don't worry" says the guide, "I've never seen a ghost all the time I've been here."

"How long is that?" asks the girl.

"About three hundred years."




The devout cowboy lost his favorite Bible while he was mending fences out on the range.

Three weeks later a cow walked up carrying the Bible in it's mouth.

The cowboy couldn't believe his eyes.

He took the book out of the cow's mouth, raised his eyes heavenward and exclaimed, "It's a miracle!"

"Not really," said the cow.

"Your name was written inside the cover."




"Anyone with 'needs' to be prayed over, come forward, to the front at the altar," the Preacher says.

Leroy gets in line, and when it's his turn, the preacher asks, "Leroy, what do you want me to pray about for you?"

Leroy replies, "Preacher, I need you to pray for help with my hearing."

The preacher puts one finger in Leroy's ear, and he places the other hand on top of Leroy's head and prays and prays and prays, he prays a blue streak for Leroy. The whole congregation joined in with enthusiasm.

After a few minutes, the Preacher removes his hands, stands back and asks, "Leroy, how is your hearing now?"

Leroy says, "I don't know, Reverend, it ain't 'til next Wednesday."





The pastor asked if anyone in the congregation would like to express praise for answered prayers. Suzie Smith stood and walked to the podium.

She said, "I have a praise. Two months ago, my husband, Tom, had a terrible bicycle wreck and his scrotum was completely crushed. The pain was excruciating and the doctors didn't know if they could help him."

You could hear a muffled gasp from the men in the congregation as they imagine the pain that poor Tom must have experienced.

"Tom was unable to hold me or the children," she went on, "and every move caused him terrible pain. We prayed as the doctors performed a delicate operation, and it turned out they were able to piece together the crushed remnants of Tom's scrotum, and wrap wire around it to hold it in place."

Again, the men in the congregation cringed and squirmed uncomfortably as they imagined the horrible surgery performed on Tom.

"Now," she announced in a quivering voice, "thank the Lord, Tom is out of the hospital and the doctors say that with time, his scrotum should recover completely."

All the men sighed with unified relief. The pastor rose and tentatively asked if anyone else had something to say.

A man stood up and walked slowly to the podium.

He said, "I'm Tom Smith."

The entire congregation held its breath.

"I just want to tell my wife the word is sternum."





When weeding, the best way to make sure you are removing a weed and not a valuable plant is to pull on it. If it comes out of the ground easily, it is a valuable plant.




I lost the pub quiz last night by 1 point.

The last question was "where do most women have curly hair?"

Apparently the correct answer is Africa...






We must believe in luck. For how else can we explain the success of those we don't like.





Darryl and Harold were in a mental institution. The place had an unusual annual contest, picking two of the best patients and giving them two questions. If they got them correct, they were deemed cured and free to go.

Darryl was called into the doctor s office first and asked if he understood that he'd be free if he answered the questions correctly. Darryl said "Yes" and the doctor proceeded. "Darryl, what would happen if I poked out one of your eyes?"

Darryl said, "I'd be half blind."

"That's correct. What if I poked out both eyes?"

"I d be completely blind." The doctor stood up, shook Darryl s hand, and told him he was free to go.

On Darryl's way out, as the doctor filled out the paperwork, Darryl mentioned the exam to Harold, who was seated in the waiting room. He told him what questions were going to be asked and gave him the answers.

So Harold went into the doctor's office when he was called. The doctor went thru the formalities and then asked, "What would happen if I cut off one of your ears?" Remembering what Darryl had told him, he answered, "I'd be half blind."

The doctor looked a little puzzled, but went on. "What if I cut off the other ear?"

"I'd be completely blind," Harold answered."

"Harold, can you explain how you'd be blind?"

"My hat would fall down over my eyes."




In 1986, Peter Davies was on holiday in Kenya after graduating from Northwestern University.

On a hike through the bush, he came across a young bull elephant standing with one leg raised in the air. The elephant seemed distressed, so Peter approached it very carefully.

He got down on one knee and inspected the elephant's foot and found a large piece of wood deeply embedded in it. As carefully and as gently as he could, Peter worked the wood out with his hunting knife, after which the elephant gingerly put down its foot. The elephant turned to face the man, and with a rather curious look on its face, stared at him for several tense moments. Peter stood frozen, thinking of nothing else but being trampled. Eventually the elephant trumpeted loudly, turned, and walked away Peter never forgot that elephant or the events of that day.

Twenty years later, Peter was walking through the Chicago Zoo with his teenaged son. As they approached the elephant enclosure, one of the creatures turned and walked over to where Peter and his son Cameron were standing. The large bull elephant stared at Peter lifted its front foot off the ground and then put it down. The elephant did that several times then trumpeted loudly, all the while staring at the man.

Remembering the encounter in 1986, Peter couldn't help wondering if this was the same elephant. Peter summoned up his courage, climbed over the railing and made his way into the enclosure. He walked right up to the elephant and stared back in wonder. The elephant trumpeted again, wrapped its trunk around one of Peter legs and slammed his stupid ass against the railing, killing him instantly.

Probably wasn't the same elephant.




One winter morning a husband and wife in Denver were listening to the radio during breakfast. They heard the announcer say, "We are going to have 8 to 10 inches of snow today. You must park your car on the even-numbered side of the street, so the snowplows can get through."

So the good wife went out and moved her car.

A week later while they are eating breakfast again, the radio announcer said, "We are expecting 10 to 12 inches of snow today. You must park your car on the odd-numbered side of the street, so the snowplows can get through."

The good wife went out and moved her car again.

The next week they are again having breakfast, when the radio announcer says, "We are expecting 12 to 14 inches of snow today. You must park...." Then the electric power went out. The good wife was very upset, and with a worried look on her face she said, "Honey, I don't know what to do. Which side of the street do I need to park on so the snowplows can get through?"

With the love and understanding in his voice that all men who are married to blondes exhibit, the husband replied, "Why don't you just leave it in the garage this time?"




One day an old German Shepherd starts chasing rabbits and, before long, discovers that he's lost. Wandering about, he notices a panther heading rapidly in his direction with the intention of having lunch.

The old German Shepherd thinks, "Oh, oh! I'm in deep doo-doo now!" Noticing some bones on the ground close by, he immediately settles down to chew on the bones with his back to the approaching cat. Just as the panther is about to leap, the old German Shepherd exclaims loudly, "Boy, that was one delicious panther! I wonder if there are any more around here?"

Hearing this, the young panther halts his attack in mid-strike; a look of terror comes over him, and he slinks away into the trees. "Whew!" says the panther, "That was close! That old German Shepherd nearly had me!"

Meanwhile, a squirrel watching the whole scene from a nearby tree figures he can put this knowledge to good use and trade it for protection from the panther. So, off he goes. The squirrel soon catches up with the panther, spills the beans, and strikes a deal for himself with the panther.

The young panther is furious at being made a fool of and says, "Here, squirrel, hop on my back and see what's going to happen to that conniving canine!"

Now, the old German Shepherd sees the panther coming with the squirrel on his back and thinks, "What am I going to do now?" but instead of running, the dog sits down with his back to his attackers, pretending he hasn't seen them yet, and just when they get close enough to hear, the old German Shepherd says... "Where's that squirrel? I sent him off an hour ago to bring me another panther!"

Moral of this story...

Don't mess with the old dogs... Age and skill will always overcome youth and treachery! BS and brilliance come only with age and experience.




Gracie Allen's Classic Recipe for Roast Beef:

1 large roast of beef

1 small roast of beef

Take the two roasts and put them in the oven.

When the little one burns, the big one is done.




A man was driving down the road and ran out of gas. Just at that moment, a bee flew in his window.

The bee said, 'What seems to be the problem?'

'I'm out of gas,' the man replied.

The bee told the man to wait right there and flew away. Minutes later, the man watched as an entire swarm of bees flew to his car and into his gas tank. After a few minutes, the bees flew out.

'Try it now,' said one bee.

The man turned the ignition key and the car started right up. 'Wow!' the man exclaimed, 'what did you put in my gas tank'?

The bee answered, 'Bee Pee.'




When I was young my intent was to go to medical school, but I didn't pass the entrance exam. One of the questions was:

"Rearrange the letters P N E S I to spell out an important part of human body that is more useful when erect."

Those who spelled SPINE became Doctors...

The rest of us ended up working for the government.

Wednesday, March 14, 2012

blog.sun.com/fkieviet became Oracle, and then…

When Oracle took over Sun, the idea was that employee's blogs would survive the acquisition. They did, sort of. Right now, a lot of pictures on my blog at Oracle have disappeared.

Time to finally move my blog to blogger where I have full control over it, and where I don't have to worry that some day it will disappear altogether. There are a few entries on here (about memory leaks) that still draw a few hundred hits per day.

Missing pictures:

bytespersecond cmstates-access cmstates-enlist gcleakservlet gcsimpleservlet gflifecycle hat1 hat2 hat3 hat4 messagespersecond simpleservlet speakingatjavaone2008 writespersecond

leakservlet

Saturday, July 31, 2010

GlassFish Security

Pact Publishing was kind enough to send me a copy of the book "GlassFish Security" that was released very recently.

image

It's tough to find the time to read a book cover to cover. In fact, it's been a while since I've read a book from beginning to end. Typically I'm only interested in a few chapters which I then read. Later, when the need arises, I may get back to other chapter. It's like treating a book like an encyclopedia or a dictionary. I bet that most people read technical books that way nowadays. So it's important that a book lends itself to be read that way.

Security is a very broad field with many many different topics, e.g. user authentication and authorization in web applications, integration with an external security server, web services security, and so on. Fortunately, very few people will have to deal with all these aspects at the same time. GlassFish Security covers many if not all of those aspects, and that's another reason why it should be possible to read this book like an encyclopedia.

I went back in time and tried to remember all the times that I have had anything to do with security in GlassFish and checked what the book had to say about it. For instance, to start simple, there's the issue of configuring realms and users. There's the time I tried to get JSPWiki to work on GlassFish using declarative authentication and authorization, something that goes through server.policy. More advanced, there's the time we tried to integrate GlassFish with AccessManager. On all these topics, the book delivers. There are many other topics (e.g. integration with OpenSSO, securing JMX, etc), all described in detail without wasting much space on repetition or endless code or XML listings. The book would have saved me a lot of time had I had it at the time when I needed it.

If you're using GlassFish, this book belongs on your bookshelf!

Wednesday, April 28, 2010

Google TV Ads

On Tuesday I went to the Google office to talk about what I might be working on. It's likely going to be Google TV Ads. What is that? Here is a 3 minute video that explains it.