Tuesday, August 13, 2013

Kenya Government Customs Denys Poor Children an Education

Two and a half weeks ago, I sent a shipment of 13 laptops from the US to Kenya. The laptops are
destined to classrooms with children from Kibera and children from an orphan home in Ngong.

Customs officials to my complete shock and disbelief are demanding taxes worth 200% of the value
all laptops. Total cost of the laptops is $1000.00. They want $2000 in taxes. One of the laptops has already been stolen. (No surprise there)...but still, its hard
to understand why someone can be so souless and heartless.

This is for POOR CHILDREN.. Kids who have lost BOTH parents due to HIV.. Why! I would love an explanation. It truely saddens me that there is
someone at the KRA who has no heart. Don't you have kids of your own? You were once a kid. Would
you steal from a child?

I told the clearing agent , DHL, that I am done. I have no hope anymore in these Kenyan officials.
Seriously, does none of them have a heart, even care about those way less fortunate then them.

So the laptops are gone. Who knows what they are going to do with it.  Maybe give it their cousin
in the rural area. THe laptops basically hold little value in the open market. They don't run windows.
I put Linux with Wikipedia, educational games and 4000 khan academy videos.

I remember coming to america. The first thing that totally overwhelmed me was the knowledge. The
university library just blew me away. I couldn't stop learning. I thought. If I had this growing up
I'd be an Einstein.  I just want some children to who would not get this opportunity ordinarily
to have access to this kind of information. It is just so liberating...

Good luck Kenyan Official. I hope you are happy! Now you can go and try and sell these laptops, which hold little value. See how much money you get.. Not much I tell you.

I am mad, but I written this post, because I want to let go of this anger. Give this up to God.
Let God deal with their selfishness and lack of compassion.

I thought after 20 years of being out of Kenya, things have changed. I saddened to see, nothing
has changed


Thursday, April 15, 2010

Hdhomerun_config scan of cable channels.

In my area, my local cable provider likes, on occassion, to change the frequency and/or program number for a channel.  Recently WRAZ, channel 13 stopped working.

When I ran the command


hdhomerun_config FFFFFFFF scan /tuner1 scan_output.log

it said something like this

SCANNING: 803000000 (us-bcast:69)
LOCK: none (ss=72 snq=0 seq=0)
SCANNING: 797000000 (us-bcast:68)
LOCK: none (ss=96 snq=0 seq=0)

us-bcast, I thought. That's wrong. When I did this last year, it selected us-cable channel map by default. I didn't have to change anything. I searched and searched the web for an answer. Finally I decided to hunt for the Silicondust config guide. I found the hdhomerun development guide. In there you can set the channelmap and change it from us-bcast to us-cable.


hdhomerun_config FFFFFFFF set /tuner1/channelmap us-cable

Now when I ran the "scan" command, I got the new frequency and program number for WRAZ.

I manually scan for channels instead of relying on mythtv's channel scanner cause I map my channels differently then the channel scanner would. I've used this config for years and would hate to jack it up.

Saturday, February 20, 2010

Grub woes with my 2 TB disk

This is my first time using a 2 TB disk. After performing a Ubuntu Karmic Update on it, it upgraded the kernel and it asked "Configure GRUB using the package maintainers version". What made me do this I don't know, but I think this totally messed me up. It seemed like it deleted the bios partition.

When the disk booted, it printed the following on the screen and then just hung


GRUB GRUB GRUB GRUB


The fix for this whole mess, I loaded the Ubuntu bootup USB stick, and recreated the BIOS disk partition. After doing this, I executed /usr/sbin/grub-install /dev/sda, then everything started working.

LVM2 error: Cannot add 16th partition using pvcreate

Got a 2TB disk that has 48 raw partitions that I want to add to LVM.
When creating the partitions, I thought it wouldn't let me do more then 16 partitions. I was delighted to know that I could go beyond this 16 partition limitation. I guess maybe with new disks this is not a problem?? Don't know why.

Go this error message when I was in the process of upgrading my hard disk.


#sudo pvcreate /dev/sdc16
Device /dev/sdc16 not found (or ignored by filtering).


I reran the command with the "-vvv" option. It failed because of the following error message


/dev/sdc16: Skipping: Unrecognised LVM device type 259


After much web searching I found that this type is known as blkext

So I added the following line to lvm.conf

types = ['blkext', 50]


After doing this, I can now add all the remaining 40+ partitions to LVM.

This setup is for my mythtv production box. I use the same PC as a backend and frontend. Its not advisable I think but I have to do it this way. I use a Logical volume to store recordings. I found that my performance is greatly improved if the physical partitions are small. My thought is that this reduces seek time. I saw improvements after doing this when my PC is taping 2 HD shows and I'm watching a HD show at the same time. Maybe my theory may be wrong, but this works for me.

Monday, November 2, 2009

Convert an encoded URL query string into a nested hash in a Rails App

On my work with churchservicefinder.com, I wanted to parse out the following string, and produce a nested hash of the query part, just like rails does.

I search the web and found no answer. So I searched through the rails source code and found the answer in the Rack gem.

The command is Rack::Utils.parse_nested_query

Here is my example:

Loading development environment (Rails 2.3.4)
>> ab = "http://localhost:3000/churches/list/address/27713/5?fr[ed]=0&fr[ed]=1&fr[d]=0&fr[tz]=1&fr[et]=0&fr[et]=1&fr[tw]=0&fr[t_opr]=before&fr[t_opt(4i)]=9&fr[t_opt(5i)]=00&commit=Filter+Results"
=> "http://localhost:3000/churches/list/address/27713/5?fr[ed]=0&fr[ed]=1&fr[d]=0&fr[tz]=1&fr[et]=0&fr[et]=1&fr[tw]=0&fr[t_opr]=before&fr[t_opt(4i)]=9&fr[t_opt(5i)]=00&commit=Filter+Results"
>> c = URI.parse(ab)
=> #
>>
?> d = Rack::Utils.parse_nested_query(c.query)
=> {"commit"=>"Filter Results", "fr"=>{"t_opt(4i)"=>"9", "t_opt(5i)"=>"00", "tw"=>"0", "et"=>"1", "d"=>"0", "tz"=>"1", "t_opr"=>"before", "ed"=>"1"}}
>> d = Rack::Utils.parse_nested_query(c.query).symbolize_keys
=> {:commit=>"Filter Results", :fr=>{"t_opt(4i)"=>"9", "t_opt(5i)"=>"00", "tw"=>"0", "et"=>"1", "d"=>"0", "tz"=>"1", "t_opr"=>"before", "ed"=>"1"}}
>> e = d[:fr].symbolize_keys
=> {:tz=>"1", :d=>"0", :"t_opt(4i)"=>"9", :ed=>"1", :et=>"1", :"t_opt(5i)"=>"00", :tw=>"0", :t_opr=>"before"}

Saturday, October 3, 2009

Upgrading my 1st Gen Jailbroken IPhone to Version 3.1

Last week I followed the usual instructions to update the 1gen phone from 2.x to 3.1. I've listed the steps I followed. Details on each step can be easily found from web searches.

  • Backup the Iphone settings using Itunes. Jot down all the apps downloaded via 3rd party installers like Cydia. You'll have to install these later after the upgrade.
  • Download PwnageTool 3.1 via bittorrent
  • From Itunes download the 3.1 software update
  • Use PwnageTool expert mode to create a custom 3.1 .ipsw file. Keep all the default options, except make sure not to select Ivy app from the Custom Packages section. Failure to do this will mean Cydia Installer will fail to work.
  • Take out the SIM (not sure if this helps)
  • Put the IPhone in DFU Mode using PwnageTool
  • Install the custom 3.1 .ipsw file using Itunes
  • Restore the Iphone settings using Itunes
  • Reinstall apps installed via 3rd party installers like Cydia. My favourites are BossPrefs and OpenSSH.
Surfing the web using EDGE stopped working after this upgrade. Modifying the carrier.plist file on the Iphone reveals the configuration option to edit APN/Username/password information.

Thursday, April 16, 2009

Switching to PostgreSQL

After watching the podcast , I realized that mysql is not a truely free product.
My goal is to always use open source