Usenet Lives!

September 2nd, 2014

Remember Usenet from back in the day? Well, believe it or not, it’s still alive, and quite active. I have been using it for the last few months, and have been very pleased with the content that I have been able to find. Interested in checking it out? Click here and get a great deal!

On-Screen Keyboard Automation

December 4th, 2013

On-screen keyboards are such a pain in the butt. Fortunately, the Verizon FIOS remote app has a way type on the cable box’s on-screen keyboard through the iPhone’s keyboard. And Apple’s Remote app has a way to use the iPhone’s keyboard to type on the AppleTV’s on-screen keyboard. But unfortunately, the Remote app doesn’t seem to want to type when using XBMC on my jailbroken AppleTV. It is so frustrating using the on-screen keyboard to type in a search term! Right, right, right, right, down, select. Left, left, up, select. Right, right, right, down, down, select. NO! Wrong key! Right, right, right, down, down, select to delete. Left, left, left, up, select. What a pain! There has to be a better way! Introducing…. the On-Screen Keyboard plugin for Indigo!

Watch this video to see the On-Screen Keyboard plugin for Indigo in action. (coming soon)


The latest version of the plugin can be found here: OnScreenKeyboard.indigoPlugin

Version 1.0 – 12/4/2013 – Initial Release

Download the zip file and expand it on the Mac that you have Indigo running on. When you double-click the expanded plugin file, it should install into Indigo automatically. Navigate to Plugins -> On-Screen Keyboard -> Enable.

Set Up

A little pre-work is required for the On-Screen Keyboard, but if you already have Indigo controlling the device that you need to use an On-Screen Keyboard on, then you are probably already prepared to begin setting up your own Automated OSK.

In order to use an OSK, you need to use five basic functions on your remote: Up, Down, Left, Right, and Select. So, for the OSK Plugin, you need to have an Action Group configured for each one. As long as the Action Group “pushes the button”, the Plugin doesn’t care how the button actually gets pushed. Your Action Group could send a network message to the device, or it could do what mine does, and send an IR Blast to the device.

Once your Action Groups are configured, you are ready to create your OSK. Under Devices, click “New…” Choose Type: “On-Screen Keyboard”. Under Model, if you are creating an OSK for XBMC, simply choose “XBMC On-Screen Keyboard” – I have pre-configured the OSK for XBMC. If you need to control an OSK other than for XBMC, choose “On-Screen Keyboard”.

Note: To simplify the OSK setup for XBMC, I have hidden all of the details of the pre-configuration. For this guide, I will explain how to create an OSK for XBMC from scratch.

After choosing the Model: “On-Screen Keyboard”, the configuration dialog will appear. At the top of the config, you will be presented with your choices for how to navigate UP, DOWN, LEFT, RIGHT, and SELECT. For each choice, select the Action Group that is responsible for performing each of these actions.

The next section allows you to define the Variable that you wish to have the OSK “type”. You can choose a variable that you have previously created, or directly from the configuration dialog, you can create a new one (or even delete an existing one). I named my variable “xbmcKeyboard”.

The next part is the meat of the configuration. This is where you define the layout of the actual OSK. On your actual device, bring up the OSK. The keyboard layout that you are looking at first will be called the “–OSK1–” layout. This title is already pre-populated in your OSK definition (and can not be deleted or changed). Other keyboard layouts could include capital letters, special characters, number keys, and more.

The XBMC keyboard is eleven keys wide and five keys high. Each key needs to be separated by a space. I have defined the first row as:

DONE 0 1 2 3 4 5 6 7 8 9

The “DONE” key is a special key. We can call it anything we want, but it stands for the key to press when we are done typing on the keyboard. You will define this key later in the config.

The second row:

[--SHIFT/OSK1--] a b c d e f g h i j

The “[–SHIFT/OSK1–]” key definition is an instruction to change to the SHIFT keyboard layout, and return to the OSK1 keyboard layout after the very next keypress. (On XBMC, the first keyboard is all lowercase. Pressing SHIFT will display the uppercase keyboard. After choosing an uppercase letter, the keyboard returns to the lowercase keyboard.)

The third row:

[--CAPS--] k l m n o p q r s t

The “[–CAPS–]” key definition is an instruction to change to the CAPS keyboard layout (and stay there).

The fourth row:


The “[–SYMBOLS/OKS1–]” key definition is, again, an instruction to change to the SYMBOLS keyboard layout, and return to the OSK1 keyboard after the very next keypress. Now, the keyboard on the screen only shows one BACKSPACE key, but since the keyboard needs to be eleven keys wide, we need to define four BACKSPACE keys to keep the width the same.

The fifth row:


The “[–IPADDR–]” key definition would take us to the IPADDR keyboard. You’ll see later that we don’t bother defining this special keyboard, but we need to define the key anyway. “[SPACE]” is a reserved key name, and defines a space. Notice how there are many [SPACE] keys, as well as two [LEFT] and two [RIGHT] keys. Again, the multiple keys are defined to preserve our keyboard width.

This completes the primary keyboard layout. Now we need to define the other layouts for this keyboard, starting with the SHIFT/OSK1 keyboard.

DONE 0 1 2 3 4 5 6 7 8 9
[--OSK1--] A B C D E F G H I J
[--CAPS--] K L M N O P Q R S T

Pretty much the same as the OSK1 keyboard, but with uppercase letters.

DONE ) ! @ # $ % ^ & * (
[--SHIFT/OSK1--] [ ] { } - _ = + ; :
[--DONOTUSE--] ' " [COMMA] . < > / ? \ |

The SYMBOLS/OKS1 keyboard is a bit different, but not really. “[–DONOTUSE–]” is really just a placeholder that won’t match any keyboard input, meant to use as a spacer to keep the eleven by five keyboard layout intact. Notice how I used [COMMA] here for the comma. I could have typed in an actual comma (,), and OSK would have converted it to [COMMA] automatically.

I defined the “–IPADDR–” keyboard layout header, but I didn’t bother defining what that does. If I end up needing to type in an IP address, OSK will just use the numbers from the upper or lowercase keyboards, and the dots from the SYMBOLS/OKS1 keyboard.

That defines the keys on the OSK.

Next on the configuration dialog is to define the Starting Key and the Submit Key. For XMBC, this is the “DONE” key, so just type DONE in each field.

Vertical and Horizontal Multi-Keyspan Priority Modes take a little bit of research to figure out how to set. Let’s say I wanted to use the OSK to type “cats and dogs”. After navigating to the “s” key, I need to go three left and two down to get to the spacebar. I then need to get to the “a”, but how does the keyboard work to get there? If I push the UP button, do I go back up to the “z” key, which is the key I came down to the spacebar from? No, I go up to the “u” key, which is the left-most key above the spacebar. This is what the Vertical and Horizontal Multi-Keyspan Priority Modes are for. For XMBC, Vertical should be set to “Top”, and Horizontal should be set to “Left”.

Finally, there is the Spirit Board Mode checkbox. When the checkbox is checked, the OSK will be in “spirit mode”. While in this mode, the keys will be navigated to, but the SELECT button will never be pressed. So, what you will see will be the cursor navigate to each key that would be pressed, pause for a short period of time, and then move to the next key to press. You should make sure that your keyboard will work before turning off “spirit mode”. If you don’t, who knows what keys the OSK will press. That is, heaven forbid that when you submit your text to type on the screen that the cursor somehow navigates to something that you don’t want it to go to, and magically presses all of the keys in the right order to delete all your pictures, or buy a pay-per-view package, or whatever.

Putting it All Together

Now that your OSK has been defined, we need to set things up so you can make it type. Create a new Action Group. Choose Type -> On-Screen Keyboard Options -> Do On-Screen Keyboard. Device -> Choose the device you defined. Click OK. Running this Action Group will invoke the OSK Automation keypresses against the text in the variable that you have defined.

Assuming you have a Control Page, add a new control to display the variable value for the variable that you have defined. Client Action: Popup UI Controls. Do not put a Server Action here, as that will kick off the action before the variable has been set. Instead, create a separate button that will invoke the do-on screen keyboard Server Action.

It is also possible to use a Trigger that will fire the server action when the variable changes. I didn’t set it up that way for fear that I set the variable and then didn’t want the OSK to fire for whatever reason.

Future Enhancements/Wish List

If somebody really wants/needs any of these, I can be persuaded to work on them (I will absolutely work for food!). These are some ideas I came up with that I consider “nice to have”, but don’t really impact the effectiveness of the plugin for my use. Sure, some of them may make the act of “typing” more efficient, but do I really care about saving another two seconds when I use the plugin? Not really. Plus, it’s entertaining to watch the way it is now.

1. Might be nice/required to configure the sleep time for Spirit Mode. Other users may need to have a longer or shorter sleep time between key presses. Not sure. I guess I will find out if I get any feedback on this.

2. Somehow, compute the most optimal way to make use of the keyboard. For example, if I’m trying to type a word that starts with an upper-case letter and is followed by a lower-case one, it’s probably better to make use of the Shift Key. However, if the word I’m trying to type has two consecutive upper-case letters, maybe it’s more efficient to use the Caps Lock key.

3. Add “Keyboard wrapping” as an option. That is, if you went left on the left-most key on the keyboard, the cursor may jump to the right side of the keyboard. It might be less keystrokes to wrap around the keyboard than to travel all the way across it.

Using My Gifts to Make Life Easier

December 4th, 2013

God has blessed me with the gift of solving problems by means of software development. In my career as a programmer, I find most of my joy in writing applications that make peoples’ lives easier.

At home, I have never written anything for the purposes of making a living – it has always been because I had a need, or I envisioned a better way of doing something. For example, a very long time ago, I enjoyed playing darts. I hated doing the math for playing 301, so I wrote an app for the Palm Pilot called “Oh-One!” The app not only kept track of the score, but it also displayed a real-time chart that showed you the most optimal way to win the game. I released the game as “postcard-ware”, requesting people send me a postcard if they found the app useful. I got thousands of downloads, and about five postcards from around the world. My app appeared in some Palm Pilot Apps magazine in Japan, too, which was neat to see “David Garozzo” in the middle of a sea of Japanese characters.

With life happening, I rarely get the chance to complete my pet projects. At least, not to the point where it’s worth distributing. In the event that I do write something that I feel is worthy of making pubic, I will share the details with you. Hopefully somebody out there will be able to enjoy using something I have put together. If that ends up being you, please let me know about it!

Trip Independence

June 28th, 2012

Journal Reflections on today’s trip. Are you ready to try a trip like that yourself? Why or why not?

We were taking a train trip to the city, AKA Philadelphia, today on a SEPTA train, and we had to be at the train stop by 8:30am. Ugh, ugh, ugh! I think this was the earliest day yet! IMcLean and I did make it on time, and the train was scheduled for not until 9:10am. Not only, did we wait for the SEPTA train, we made many pit stops along the way, making

Our trip much longer at 1 ½ hours. It was not only a super long trip, there was no bathroom on the SEPTA train. I love Amtrak!

I sat in a seat across from other seats, which gave McLean enough room, barely! He is a much bigger dog than Showbo. J When we arrived to Market East, McLean had a list of service skills to perform between there and the Reading Terminal Market. I discovered my cell phone missing immediately, which totally distracted me from the whole trip,especially having McLean do service skills. I did settle down a little and was able to give commands to McLean, and we performed a lot of his service skills in the train station. Dave used the locator on my cell, and it was found at the information desk in the station. Praise God!

We, again, waited in the station and then finally walked the dogs to a semi-decent area for them to do their business. McLean peed there, but he also wanted to pee on every bush, or at least lift a leg at every bush.

We ate a delicious lunch at the Reading Market and went afterwards back to the train station. Not having much time to shop at the Gallery, we just waited at the train station for our 3:10pm train home. I had a regular seat on the train home, and McLean just would not fit. He is a large dog! I had to take off his harness and keep it next to me. 1 ½ hours later, we were getting off the train and into our cars. Yea!!!

And the journal question… This whole trip was a waste of a day, in my opinion. McLean and I are very ready to take a train trip together, which we will do in August. However, there will be a bathroom on this train! As far as going to a city, I/we will never do this alone. There are too many opportunities to get lost, not to mention a cell phone getting lost! Thank you to the honest person who found my phone!

Tired now. Good night.

Bored Dogs?

June 27th, 2012

Journal Looking at your lifestyle, when are the times your dog is most likely to get bored? How will you keep your dog from being bored and why is that important?

McLean had no poop today. Ugh! He has gone from diarrhea to constipation. When is his stomach going to go back to normal?

After journal readings, we learned about bathing, cleaning ears, emptying anal glands and cleaning teeth. We brushed the dogs’ teeth before lunch, which was not too bad for McLean and me. A discussion about anal glands turned my stomach a little, especially before lunch. What timing!

I volunteered to bathe McLean right after lunch in the first group. We had to go to a Pet Supply store, because there is still kennel cough in the kennel, where all CPL’s bathing equipment is stored. I bathed the large dog, but it was difficult to reach some of him due to his large size. He needed to turn around and get tied to the other side of the tub, for rinsing, too! Some body parts had too much shampoo, and the rinsing process took a very long time!

When he was finally rinsed thoroughly,I had to dry him with the pet blow dryer. Actually, this process took even longer than rinsing, because he has a lot of hair to dry! He looks fantastic now, but he looked like a drowned, skinny little dog when he was wet. J Before I dried him, I had the joy of squeezing his anal glands to be sure they were empty. I did wear gloves for this nasty task! Fortunately, they were mostly empty, and I only got a little on one glove, which was a little stinky. Sorry, McLean, but it hurt me more than it hurt you!

McLean now had clean teeth, empty anal glands and was bathed, but now I had to clean his ears. He hesitantly allowed me to put ear cleaning drops in an ear, which he did not like, and then I used a cloth swab to wipe the inside of the ear. Lucky for McLean, he has two ears, and I had to clean his other ear. Yea! I did the same thing as the first ear, but the second ear was a little dirtier. The inside of his ear was about the same cleanliness as the other, but there was dirt externally. No problem! One of the trainers helped to see, and clean, it.

After a long time at the pet store, we returned to CPL, an hour and a half later.

Back at CPL, McLean and I had to perform several skills from a list, and 1 thing was to do 2 hard retrievals. He easily picked up the broom, but he had much difficulty taking a bucket. I should say :he had no interest in taking a bucket! McLean finally took the bucket, held it and gave it to me. It took him over an hour to do this service skill, and he got a lot of click and treats! Unfortunately, this was the day when trainees and their dogs got to leave and go home as soon as they finished the service skills and the bath. So not fair, because McLean and I sat through multiple issues with other teams. Ideas, encouragement and cheers would have been great. Anyway, McLean performed the other service skills great, but he is a slow tugger. He had to tug a laundry basket for a distance, but he decided to tug about 6″ at a time. This skill seemed to take forever, too! We were the last team still there. Not right!

Believe it or not, our dogs do get bored.:) I can think of 2 instances right now when McLean would be bored. Actually, 3. Times on my computer, watching Phillies games, i.e TV, and when I am playing in Texas Hold ‘Em tournaments. A good number of things could entertain our dogs. Chew toys, AKA nyla bones, frequent attention/pets, treat toys and even giving them little jobs to do. I do not know how bored McLean might get during some things, though, as I constantly use him to take me to the bathroom. J

Well, McLean and I need to get some rest for our trip tomorrow. Good night!

Self Evaluation

June 26th, 2012

Journal What are the biggest gains you have made so far during this training? What areas do you need to focus on the most?

Yesterday was an off day for CPL’s team training, but I did not just rest. I mentioned in yesterday’s journal entry some of the other things I was able to accomplish. I currently have little motivation, and desire, to write a detailed entry, but I will definitely answer the journal question, briefly.

We had journal reading in the morning, discussions about our personal articles given to us last week, followed by a discussion about health care, which was mostly a review. A delicious lunch was provided by a nice volunteer, as usual, but then we had a very long skill of carrying. We carried a doubled bag item in a relay format, and this relay took a lot of the afternoon. Some dogs, especially Bob’s dog, wanted nothing to do with taking, or carrying, this item. Bob won in the long run, which shows Bob’s endurance! I wanted to hurt his dog, though! JA discussion about access proceeded, and we were at CPL longer than expected.

Now my answer to the journal question, one of the biggest gains has been matching paces with McLean and me. He has also struggled with curbs, up or down, but he is learning to pause at most curbs. I still have 2 feet with all 10 toes! J

We will be using the same vet as with Showbo and our cat, Cyera. A visit to the vet might be soon, depending on McLean’s bowel issues. I am worried about my teddy bear boy!!!

I know this is a short entry, but My concerns about McLean outweigh my writing ability right now.

I am’ however, concerned about my ability to manage this big dog occasionally, and I am perplexed about the fitting of his harness.

Live From The Field

June 26th, 2012

Journal: reflect on today’s field trip. What was the most challenging aspect of today’s trip?

I took McLean out this morning, so as not to have an accident in the house, and then I gave Showbo and him each some breakfast consisting of mostly rice and a little bland chicken. What is wrong with their stomachs, anyway? After breakfast, we went back to sleep in preparation of a long, tiring day at the zoo!

A short time later it was time to start on our trip, but McLean had to do his business again. He almost pees as much as I do, but this time he also had diarrhea. Ugh! Diarrhea is so grose, to clean-up and smell! We gave him some Immodium AD and were to give him a half pill if he has diarrhea again. Don’t forget this issue. J

Oh, boy. We finally arrived at the zoo, after construction and much traffic, but some trainers were not there yet. We were not last and could not be lectured about being late. I do not mean lectured, I mean hassled! Ha, ha.

We first used our service dogs to pay for our zoo tickets. The pay counter was behind glass, and the payment had to be dropped into a groove under the glass for the cashier to grab. McLean had some trouble with my “large” wallet, so he used just my credit card. He easily put in his mouth and put his paws up on the counter, but he had no understanding about how to place the card in the groove. Eventually, I took the card from him and handed it to the manunder the groove, but really? That task was difficult, and probably the most challenging.

We all stopped at the monkey house when we first entered the zoo, where McLean showed some interest in actually watching the monkeys. This interest was one of only a few times he showed any interest in the any of the zoo animals. He also liked the peacocks and the turtles! J

The tiger and a strange bird really wanted to get McLean, but the trainer thought we should walk away before any creature got too scared or stressed.

Ok, so McLean needed to use a half Immodium pill. He had a little diarrhea when we left the cat area, but Dave saw some blood in it. Again, ugh! Fortunately, McLean is not as particular as Showbo, making it much easier to give him medicine. I just mixed the pill with a couple treats, and his big tongue licked it all in one swoop. J

During lunch we had our dogs retrieve something, and McLean easily retrieved a grocery bag, while others were not as lucky. The group was there until closing time but we only did one final task. The service dogs had to use their door hooks to open the doors to the primate reserve. No problems there.

Overall it was an uneventful day, and we managed to get home in time to get the girls from child care. Yea!

Well, other than diarrhea being an interesting, and disgusting, challenge, McLean put up a good fight when we tried to clip his nails this evening. Clipping his nails is very, very difficult! I used the click and treat method, as suggested by a trainer, but he wanted nothing to do with the clipping of his nails. He is a strong dog, and he can easily pull his paw away from the nail clippers! What should we do?

Ok, I am now really tired. Until tomorrow.

off day June 24, and 22 continued

June 24th, 2012

I did not finish writing about my exciting day on Friday, because the mall and Petco trips made me exhausted. Even though we had no ttraining today, June 24, I used the free day to catch-up on housework. I also had the chance to semi-rest, as well as spend time with my little girls! Laundry was pretty large, too. J

Friday morning McLean had an upset stomach, maybe from the heat, and he had his first incident with diarrhea. Yuck, yuck, yuck! He also got sick orally twice while we were outside, and I brought him back inside when he seemed finished. He wanted nothing to do with his breakfast, but Showbo wanted his breakfast. Sorry, Showbo, it goes back in his dog food bag for another meal! J

Anyway, at the mall all the teams had to use door handles to open the inside and outside doors of the front of the mall, and then we eventually went in small groups to the elevator. McLean did a great job with both skills, but he cannot read. It was between these skills when I had to use the bathroom. Who decided to put the restrooms directly beside each other, separated only by going left or right? Well, McLean found us a toilet just fine, but he chose to take me to the men’s room. He might be a man, but I, the one using the toilet, am a woman. J

McLean surprised me when we were at lunch. We needed to do a food refusal, and I used a Chic-Fil-A French fry. He looked immediately but went back to “sleep” when he heard the “leave it” command. I said this firmly, too! I love Chic-Fil-A French fries and could never resist them. Go, McLean!

The best part of the day came in the evening when it came to carrying an item upstairs for me. Showbo still has an instinct to work, and McLean still needs to register commands faster to his brain. He took the item, held it but went upstairs without it. Showbo was right there watching and immediately did McLean’s job for him. Typical big sister syndrome! However, I tried again upstairs with McLean. He only had to carry the item down the hallway and give it to me. The same thing happened between the 2 dogs as happened downstairs with carrying the item up the stairs. Twice Showbo only gave McLean 1 chance and then did it herself. Thank you, Showbo! I then held back Showbo and persisted that McLean take it, hold it and hold it and hold it while he brought it to me. He managed this for a short distance,but short distances are better than nothing. We need to all take baby steps to our long-term destinations. J

Ok, I think that concludes enough extras from Friday.

My girls are asleep, and I have to put the last load of laundry into the dryer and go to bed. Talk to you tomorrow.

The day from McLean’s point of view.

June 24th, 2012

Journal Write about the day from your dog’s point of view.

This morning was “rough” for me, and my Mommy. We had the chance to get some extra sleep, but I really wanted to stay home! Mommy took me outside and then gave me breakfast, but Showbo wanted to join us for both. I wish she would leave Mommy alone! The little people were getting ready the same time as us, and things got crazy. The bigger little person, named Domino, was not a good listener. I might have bathroom accidents in the house, but I think of myself as a better listener than this little girl. Well, Mommy harnessed me, and eventually we started on our trip. I had to wait in a laying position until these people read stuff, and then I finally had a break to go outside. It was nice to relieve my new urge to poop. J

After Mommy peed, of course, we all went back into the big building, and we were gonna play a game, I think. The people were putting tiny carpets onto the floor in a circle, like the size of 1 x 1 each, and expected us dogs to sit on one. My bottom is not that small! Then a lady turned on some fun music, but we were expected to walk in a circle. Really, walking in circles? We had to stop when the music stopped and sit on a carpet. A carpet was directly behind my paw, and I was not permitted to sit there. Weird! For some reason, thankfully, Mommy and I did not have to walk in the circle anymore.

Now, Mommy peed again.

I then had to wait under a table while these people were eating some yummy food. I was hoping the small little girl,named Carolena, would drop something for me to eat. Nope!

Mommy peed again.

Mommy and Daddy now wanted me to do all these service skills for them, but all the other dogs were doingother service skills. That was something different. We always had to be like each other in the past, for the most part. The people then took us into a circle, and I had the chance, again, to lay down. Doing all those service skills made me tired! After while Mommy and Daddy wanted me to do these same service skills again, but why? I was confused, and it felt monotonous. I really did not want to do my skills again, especially with everybody now watching only me. How weird!

After Mommy peed again, we got to go home. Yea!

I accompanied Mommy and Daddy and the 2 little girls somewhere within a walking distance. Poor Showbo stayed home, though. Mommy tied me to an umbrella post, and then she left me. What was she doing, and where was she going?Oh, she went into this thing of water, along with Daddy and the 2 girls, and I think she was having fun. She came back to me after a little bit, but I did become a little stressed during this scenario. My body finally caught up with me at 4:30am, when Mommy awoke me for her to go potty. I really tried waiting to go outside, but she was slow. I got near the front door, and it just exploded out my bottom. Sorry, Mommy! We did go outside, though, and I finished what I started inside and threw up twice. I did not feel well. Ugh! Ok, going back to sleep. Good night.

What were your greatest challenges during this very tiring day? What were you most proud of you and your dog accompli shing? Share a funny story about today’s trip.

June 22nd, 2012

Journal What were your greatest challenges during this very tiring day? What were you most proud of you and your dog accomplishing? Share a funny story about today’s trip.

I am exhausted! I will write more details about our trip to the Exton Mall and Petco later. Sorry!

A funny story, which I hope only happens just this once, was when McLean took me into the men’s restroom. Oops!

Our greatest challenge was McLean trying to pay for our purchases at Macy’s. He is definitely tall enough to pay, and his paws reach the counters easily. When he drops the wallet or method of payment, he takes a while retaking it. He sometimes bumps me, loses grip on the item, and wants to be done. Not done yet!

We accomplished the carry command with a breeze. McLean carried the Macy’s bag from Macy’s many stores until we almost reached our destination. He was getting a lot of compliments on this job!

Ok, an answer to the journal questions is all I want to write tonight. Stay tuned for more details later.

Good morning, good afternoon and good night. J A quote from the Truman show.