<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>Garbage In, Garbage Out</title>
    <link rel="alternate" type="text/html" href="http://gigo.com/" />
    <link rel="self" type="application/atom+xml" href="http://gigo.com/atom.xml" />
    <id>tag:gigo.com,2007-08-20://1</id>
    <updated>2009-12-24T03:58:46Z</updated>
    <subtitle>Jason Fesler&apos;s Blog, and gigo.com system announcements</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type Publishing Platform 4.0</generator>

<entry>
    <title>Hard drives upgraded</title>
    <link rel="alternate" type="text/html" href="http://gigo.com/archives/announcements/hard-drives-upgraded.html" />
    <id>tag:gigo.com,2009://1.233</id>

    <published>2009-12-24T03:56:40Z</published>
    <updated>2009-12-24T03:58:46Z</updated>

    <summary><![CDATA[Dec 22-23 2009: &nbsp; Hard drives replaced; now 678 gigs usable free space for home directories and web sites.Note, access may be a bit slow for the next 48 hours as mirroring and other activities bog the machine down. &nbsp;However,...]]></summary>
    <author>
        <name>Jason Fesler</name>
        
    </author>
    
        <category term="Announcements" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="maintenance" label="maintenance" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://gigo.com/">
        <![CDATA[Dec 22-23 2009: &nbsp; Hard drives replaced; now 678 gigs usable free space for home directories and web sites.<div><br /></div><div>Note, access may be a bit slow for the next 48 hours as mirroring and other activities bog the machine down. &nbsp;However, at this time I don't anticipate any further reboots or crashes.</div><div><br /></div><div>-jason</div><div><br /></div>]]>
        
    </content>
</entry>

<entry>
    <title>Maintenance started</title>
    <link rel="alternate" type="text/html" href="http://gigo.com/archives/maintenance-started.html" />
    <id>tag:gigo.com,2009://1.232</id>

    <published>2009-12-22T20:11:09Z</published>
    <updated>2009-12-24T00:57:39Z</updated>

    <summary><![CDATA[First drive has been replaced; now copying the OS drive to it, ~200 gig for the first pass.During this pass, services will remain up. &nbsp;The second pass I'll have to bring the system down.Update: Wed 5p: Expect more service and...]]></summary>
    <author>
        <name>Jason Fesler</name>
        
    </author>
    
    <category term="maintenance" label="maintenance" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://gigo.com/">
        <![CDATA[First drive has been replaced; now copying the OS drive to it, ~200 gig for the first pass.<div>During this pass, services will remain up. &nbsp;The second pass I'll have to bring the system down.</div><div><br /></div><div>Update:<b> Wed 5p:</b> Expect more service and host downtime the rest of this evening. &nbsp;The first pass of copying is finally done, and things _should_ be in good shape to do the final sync + new vs old drives.</div><div><br /></div><div>The status page at http://status.gigo.com/ is where I'm putting all the real updates.</div><div><br /></div>]]>
        
    </content>
</entry>

<entry>
    <title>GIGO.COM Maintenance - Dec 22, Dec 23</title>
    <link rel="alternate" type="text/html" href="http://gigo.com/archives/announcements/gigocom-maintenance-dec-22-dec-23.html" />
    <id>tag:gigo.com,2009://1.231</id>

    <published>2009-12-21T16:59:49Z</published>
    <updated>2009-12-21T17:03:50Z</updated>

    <summary><![CDATA[Sometime Tuesday afternoon on Dec 22, gigo.com will be going offline, to upgrade the hard drives.Unfortunately, I can't do this with a live system. &nbsp;Downtime will be a maximum of 24 hours, however, I expect it to be far less...]]></summary>
    <author>
        <name>Jason Fesler</name>
        
    </author>
    
        <category term="Announcements" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="maintenance" label="maintenance" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://gigo.com/">
        <![CDATA[Sometime Tuesday afternoon on Dec 22, gigo.com will be going offline, to upgrade the hard drives.<div>Unfortunately, I can't do this with a live system. &nbsp;Downtime will be a maximum of 24 hours, however, I expect it to be far less - perhaps a few hours.</div><div><br /></div><div>I will maintain status info at http://status.gigo.com .</div><div><br /></div><div><br /></div>]]>
        
    </content>
</entry>

<entry>
    <title>Check book ledger, Excel style</title>
    <link rel="alternate" type="text/html" href="http://gigo.com/archives/source-code/check-book-ledger-excel-style.html" />
    <id>tag:gigo.com,2009://1.230</id>

    <published>2009-12-12T17:36:50Z</published>
    <updated>2009-12-12T17:38:59Z</updated>

    <summary><![CDATA[My kids needed a decent ledger, and I'm too cheap to buy them Quicken, especially when we already own Excel. &nbsp;After looking around at what I could find on the net, I wrote my own instead.BankLedgerTemplate.zip...]]></summary>
    <author>
        <name>Jason Fesler</name>
        
    </author>
    
        <category term="Source Code" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://gigo.com/">
        <![CDATA[<p>My kids needed a decent ledger, and I'm too cheap to buy them Quicken, especially when we already own Excel. &nbsp;After looking around at what I could find on the net, I wrote my own instead.</p><p><a href="http://gigo.com/ftp/pub/src/BankLedgerTemplate.zip">BankLedgerTemplate.zip</a></p><div><br /></div><p></p>]]>
        
    </content>
</entry>

<entry>
    <title>Partial HW update over xmas</title>
    <link rel="alternate" type="text/html" href="http://gigo.com/archives/announcements/partial-hw-over-xmas.html" />
    <id>tag:gigo.com,2009://1.229</id>

    <published>2009-12-11T19:50:56Z</published>
    <updated>2009-12-11T20:33:30Z</updated>

    <summary>File space usage has grown significantly since our last server upgrade. I expected the current disk space to hold us for 4 years, which is about what I budget for the overall hardware. Alas, it is looking like perhaps I...</summary>
    <author>
        <name>Jason Fesler</name>
        
    </author>
    
        <category term="Announcements" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Services" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="maintenance" label="maintenance" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://gigo.com/">
        <![CDATA[File space usage has grown significantly since our last server upgrade.  I expected the current disk space to hold us for 4 years, which is about what I budget for the overall hardware.  Alas, it is looking like perhaps I should upgrade the storage sooner.

The fun part is, gigo.com currently is comprised of 5 disks, but realistically only 250 gig usable space to end users.  We spend a fair bit on redundancy, in case of catastrophy.  Here is how it is broken out:

<ul>
<li>disks 1+2: main system, this is where the main files are stored, and served from.  Anything we do happens here. This is continously mirrored, so that if either disk fails, the system can quickly recover and keep running.  And, I can put in a replacement to restore redundancy "hot".
<li>disks 3+4+5: Backups.  At any given time, 2 disks are hot and mirrored; and 1 is cold (offsite, my house).  Periodically, I take the cold disk, stop at the colo, swap out one hot disk for the cold one.  The server will resync the mirror, and the disk I have in my hand goes back home - with a copy of several days worth of our files.   And, total time in the colo is <10 minutes to sign in and swap a disk.
</ul>

With that in mind, if I do upgrade storage, I'm not upgrading just one disk, but realistically all 5.  Ooof!

What I'm looking at doing is:
<ul>
<li>2 enterprise class SATA 1GB disks - $160 each + the governor's ransom - matched set for mirroring.
<li>3 desktop class SATA 1.5GB disks - $120 each + the governor's ransom - matched set for mirroring.
</ul>

The backups can be desktop class; they get hit with less work, don't need to be as fast, and we can afford a failure there without a serious panic.    They should however be larger than the main system drives, since we backup multiple days worth of changes (currently we back up ~20 days worth of changes; this number varies based on space available and number of changes made in a day).

I'm looking to try and help raise about half this cost - so a target of $375.  If you're a <i>significant</i> user of gigo.com and can help, please contact me.  Lady Visa will be covering the gap; I'm aiming to do this hardware changeout over the xmas break.]]>
        
    </content>
</entry>

<entry>
    <title>Beijing</title>
    <link rel="alternate" type="text/html" href="http://gigo.com/archives/blog/beijing.html" />
    <id>tag:gigo.com,2009://1.227</id>

    <published>2009-11-10T17:39:01Z</published>
    <updated>2009-11-10T20:46:48Z</updated>

    <summary> I spent 5 days in Beijing, at the start of November. Most of this was for business purposes; but I did have evenings plus a full day of paid time off. What follows is a brief trip report. No...</summary>
    <author>
        <name>Jason Fesler</name>
        
    </author>
    
        <category term="Blog" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://gigo.com/">
        <![CDATA[ I spent 5 days in Beijing, at the start of November.  Most of this was for business purposes; but I did have evenings plus a full day of paid time off.  What follows is a brief trip report.  No pictures, just Wikipedia or Flickr links - most of my pictures didn't really turn out so well, and most of my time was spent gawking and walking.

Getting there: In this case, I opted to use the hotel's car service.  They met me at the gate, and escorted me through the quarantine check.  At this point they take a survey card that says what flight I was on, where I was sitting, and what symptoms I may have recently been exposed to.  They check your temperature via thermal camera, and make a decision whether to quarantine you or not.  After passing this, was the immigration and passport stamp; and customs.  The hotel rep helped me with my packages as well as currency exchange; then took me downstairs where a private car was waiting.  Total cost for the service, including the ride to the hotel: 580元, or about $90 American. 

Staying there: I stayed at the Shangi-La, Kerry Centre.  This hotel is in the Central Business District of Beijing, near the CCTV studio building.  On arrival, I was met as I walked through the front door by name, and escorted directly to my room to sign the paperwork.  Classy.  They also came to freshen the room several times a day (including replacing the fresh fruit that was kept stocked, and the bottled water).  If you're going to nap, it is well advised to find the button next to the light switch that indicates "do not disturb" (lights red when pushed).   

Places I saw:

<a href="http://en.wikipedia.org/wiki/Tiananmen_square">Tiananmen Square</a>; at least, the north end of it.  I did not explore the square so much; but instead viewed it from the <a href="http://en.wikipedia.org/wiki/Tiananmen_gate">Tiananmen gate</a> area.  The square is absolutely huge.  In front of the gate, being a whitey tourist, I was a magnet for quite a few pairs of Chinese girls who would approach asking if I spoke English.  The word "yes", to the Chinese, means "Sucker", at least in this area.  The standard MO is to have a small conversation with you, then encourage you to have dinner or tea with them in some overpriced place.  They'll expect you to then pay for it.  The worst part is, that they all follow the same script.. it gets old.  To the point where you may have someone legitimately just want a chance to converse, but you're rude and just say "no".

To the north, is <a href="http://en.wikipedia.org/wiki/Forbidden_City">the Forbidden City</a>.  I did take up the services of one of the people offering tour services.  (100元, or about $15, to be paid if I was happy with her services, at the end).    After the Forbidden City, we also visited (again, north) <a href="http://en.wikipedia.org/wiki/Jingshan_Park">Jingshan Park</a>.  This is an artificial hill made from the dirt that was excavated from the moat around the Forbidden City.  This was turned into a park, with a temple at the top that gives quite a great view of the surrounding areas.

At the end of this day, I ended taking a motorized rickshaw back to the hotel.  A few things that I'll caution you about here.  One, they don't use meters.  Two, the price the driver and I agreed on, was effectively null once they changed drivers.  And, you can't argue with taxies or drivers in Beijing - they effectively always win against tourists.  So, I got taken for 300元 ($46) instead of 30元.  (Compare this with a *metered* taxi, that runs about 20元, or about $3.50).   Three, these bastards have strange ideas when it comes to traffic rules and simple laws of physics.  (see "getting around", further down).  In hindsight, I'd rather have the protection of a real car than the rickshaw should anything happen.

On a different day, on the prowl for food after the conference I was at, I found.. an <a href="http://www.outback.com/locations/int_china.aspx">Outback steakhouse</a>. Walking distance from the Forbidden City, located inside the <a href="http://www.chinabeijinghotel.com.cn/en/index.html">Beijing Hotel</a>(main entrance: go up a flight of stairs, then veer right).  The menu was a subset of a full Outback but was quite suitable; the decor, standard Outback.  So were the prices, no Beijing discount for eating here.  But was it worth it?  Hell yes.  

<a href="http://en.wikipedia.org/wiki/Wangfujing">Wangfujing</a> is the Times Square of Beijing.   Not much traditional here.  You'll see lots of name brands that you'll recognize here.  Very much a Western outdoor shopping mall.  About the only thing really to notice here is that at 10p at night, the place was packed.  One of the stores had what looked like a pickup by armored vehicle service (and it took *two* of them to pick up everything).  The folks guarding wore fatigues (similar in square patterning to our American modern ones, but in jungle colors instead of city colors).    Lots of shotguns and automatic rifles (as compared to the American services that just carry pistols).

Through the large paifang in the Wangfujing, you'll find what looks like an alley leading into the <a href="http://en.wikipedia.org/wiki/Donghuamen_Night_Market">Donghuamen Night Market</a>.  This place looks like it is out of Hollywood.  Packed with people, both buying and selling.  For 3元 you can get most any critter on stick, freshly deep-fried if you wish.  Critters range from lamb meat or beaf meat, to crickets and scorpions, to sheep penis.  I even found starfish on sticks.   Other touristy crap was for sale here as well, not just food.  Here, I will note, that culturally it seems "ok" for vendors and other types of solicitors to tug/hold your sleeve or arm to get/keep your attention.  If you're claustrophobic and/or don't like people grabbing you, stay away from here.  If you can stomach the conditions, however, it is worth a trip through this area; quite a sight to see.   While my pictures didn't really turn out, you might instead browse what people have boosted to <a href="http://www.flickr.com/search/?q=Donghuamen">flickr</a> - skimming through these, they really are fairly indicative of the wares sold.

Back to the Wangfujing, I approached the taxis that were idle.  They wanted to pre-negotiate a price for the ride back to hotel; and wanted 70元 (whereas by meter it would have been 20元).  I declined.  They asked what I would pay; however, since it wasn't metered, and I'm at this point pretty wary of anything negotiated, I decided to walk up to the metro.

Getting around..

Taxis: insist on using a meter.  Dirt cheap, and if you carry a GPS, you won't get scammed (much).  If they start trying to rack up the distance, just remind them where you're going, in case they didn't "understand", and they'll correct.   Negotiating a price beforehand is bad; any argument at the end of the ride you have with them, they will win when it comes to the local constabulary.  

Subway: Cheap - 2元 (or $0.30).  However, don't expect any helpful maps inside the station.  Get a map before hand that shows station names, so that you know which direction you want to go.  Also, even at 10p, the subway was packed - this is not an option for the claustrophobic.  However, if you're able to deal, the price is right.  Just count the number of stops.  Also, the names of stations (in roman characters) is quite easy to see from inside the train.

Walking:  Doable.  Not quite as walkable as other cities I've been to.  Additionally, street crossings are very dangerous.  In Beijing, these are the things I personally have had to deal with.  Cars will drive down the left side of the road if it suits them.  They don't fully pay attention to red lights or green lights.   Bike lanes are great for cars, as it turns out, since bike lanes are so big...  Laws of physics, not man, apply here:  Pedestrians get the hell out of the way of any vehicle that's running a red, or making a turn through a pedestrian crossing.   Ever play "Frogger"?  Good, that will help you get prepared.   Also, watch out for cars traveling on sidewalks - parking is done on the sidewalks.

Additional problems with walking:  Being targeted for various scams ("see our art show", "lets practice english; lets have tea/dinner to warm up") in the more touristy areas.  Remember, when asked "Do you speak english?" the proper answer is "Parlez vous francais?" or "Habla espanol?".  And if saying "No" a few times doesn't work, "boo shuh" ("no") should work.    Lastly, while walking in the Central Business District 10 minutes to dinner, I had 5 different people stop me to either solicit "girly bars" or gals directly.  This was only a problem on Friday night; not the other weeknights I was there.

Food:  Suprisingly, lots of Chinese food around!    Alas, I'm a terribly picky eater.  (Most green vegetables to me are extremely bitter, like the taste of bleach).  And I'm not an adventurous eater.  And, I don't speak a lick of Chinese.  So, I avoided the local cuisine entirely here (I'll eat Chinese back in America, where I can clearly read a menu and special order dishes in a way I can eat them).   Within 10 minutes of the hotel (in the CBD), I found several Western style places to eat.  I found a BBQ place (the meat was texas BBQ; the accompanying stuff was local).  I found a Mexican place (could not do that in Paris!).  I found a french bakery.  McDonalds and Subway were easy to find (and they had picture menus to order from - can't special order that way, but.. it is good enough to be useful).   KFC's are highly revered here; they have some of the normal KFC stuff plus plenty of local dishes as well.  Lastly, I found a Pizza Hut, which is apparently catering to the upper middle class here.  Fine dining.  One thing to note here: You order, you pay, you get serviced.  Tips are discouraged in China; so there's no reason for them to wait on giving you the bill till the end.   

Getting back to the airport was uneventful.  The hotel staff warned me that traffic is worse on weekends (since the driving restrictions are not in effect; anyone with any license plate can drive if they have a car).  Therefore they warned that the 20 minute trip to the airport might be 2 hours.  In my case, it was 20 minutes..   so I got to the airport nearly 5 hours before my flight was due out.  Checkin opened 3 hours before boarding time; that's when I (again) found the hassle that having a code-share eticket can be.  They could not find me in the system; and had me go to the ticket counter.   They eventually found it, and sent me back to checkin (where they *again*, despite a printout fro the ticket counter, could not find me).  Eventually with enough people they figure it out, and I'm on my way.

Next stop: San Francisco, and drive back home.  Yay!]]>
        
    </content>
</entry>

<entry>
    <title>Paris</title>
    <link rel="alternate" type="text/html" href="http://gigo.com/archives/blog/paris.html" />
    <id>tag:gigo.com,2009://1.226</id>

    <published>2009-11-10T17:36:33Z</published>
    <updated>2009-11-10T17:38:42Z</updated>

    <summary> I spent 6 days in Paris at the end of October. Half that was for business purposes; the other half paid time off. What follows is a brief trip report. No pictures, just Wikipedia or Flickr links - most...</summary>
    <author>
        <name>Jason Fesler</name>
        
    </author>
    
        <category term="Blog" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="travel" label="travel" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://gigo.com/">
        <![CDATA[ I spent 6 days in Paris at the end of October.  Half that was for business purposes; the other half paid time off.  What follows is a brief trip report.  No pictures, just Wikipedia or Flickr links - most of my pictures didn't really turn out so well.


Getting there:   Rule 1, never use a "codeshare" booking for the airline flight.  It totally screws with your ability to select seats.     Rule 2, don't use PariShuttle.com .  They have you meet in a vague area for pickup.  Actually, it is quite explicit, but when you wait for pickup, you'll wonder if you're in the right place.  Next time I go, I hope to have less luggage, and instead take the train into Paris.

Staying there:  The Hotel Concorde La Fayette is where I stayed.  Nice place; great staff; small rooms.  It is attached to the Palais des Congrès (a high end shopping mall and conference/event venue).  This is on the west side of central Paris, with the metro M1 line and the RER C line.  This is just a couple metro stops from <a href="http://en.wikipedia.org/wiki/Place_Charles_de_Gaulle">Charles de Gaulle</a> - <a href="http://en.wikipedia.org/wiki/Charles_de_Gaulle_-_Etoile">Etoile</a> ("hub", pronounced "eh-twaw" to my ear), which provides connections to the M2, M6, and RER A lines .  Above ground at this hub, is the <a href="http://en.wikipedia.org/wiki/Arc_de_triomphe">Arc de Triomphe de l'Ètoile</a>.

Things to see:  (lots)

<a href="http://en.wikipedia.org/wiki/Eiffel_tower">Eiffel Tower</a>:  Very impressive in person.  The tower is approximately 1000 feet, with the upper visitor deck above 900 feet.  The view is pretty awesome from up there, especially as there are no buildings of significance nearby to impede on the view.  At night, the tower periodically puts on a light show, timed to music.   You can easily make out the light show (but not the sound) a few km awe.  (Getting here: the RER C or the M6).

<a href="http://en.wikipedia.org/wiki/Arc_de_triomphe">Arc de Triumph</a>: Fairly impressive; probably more so had I gone inside.  Getting to the monument can be a challenge at first - there is no street crossing that will reach it.  Instead, you have to go to one of the metro tunnels; and follow the signs underground until you come up in the middle of the circle.  Underground, this is home to Charles du Gaulle - Etoile. 

<a href="http://en.wikipedia.org/wiki/Notre_Dame_de_Paris">Notre Dame</a>: Beautiful structure.  They do allow visitors to go inside; however, I didn't feel right to go in on a Sunday when services were being held. (That didn't seem to stop many people; I'm not sure if the tour is separate from services, or if services just puts up with the tourists).  Just south of here, is quite touristy - tons of eateries and tourist schwag. 

<a href="http://en.wikipedia.org/wiki/Louvre">The Louvre</a>:  Huge place.  Some of the works I saw from the Renaissance were impressive.  The medieval exhibit, not so much - lots of space devoted to it, but few artifacts.  Alas, I showed up late in the day, so I did not get to see much of this museum.  Note: There is a metro station that directly takes you inside the Louvre; I recommend instead the palace exit, and get a good view of the place from the outside.

Getting around:  Try the Batobas (water taxi).  The view is quite scenic.  Runs 90 minutes to go round trip up and down the Seine river; and has on/off privies so you can use it throughout the day.  A few major stops would be near the Eiffel, the Louvre, and Notre Dame.   Rail alternatives include the Metro (BART or DC Metro like; crowded, runs often, flat rate inside and outside the city centre); and the RER (heavy rail, more like Amtrak but with much older trains; fewer stops).  Either one will get you through central Paris for 1,60€.  Or, a book of 10 tickets (un carnet), for 11.60€.   I never once took a regular taxi - getting around was too easy with the public transit options.

Food: Paris is supposed to be a food lover's paradise.  Sadly, I'm not a food lover (too damn picky).  Mostly French food, plus some Thai and Italian.  Common advice is avoid the places that readily speak English.  Where I did look at menus, the common entres were some type of fish, duck, and steak tar tar.  The steak would be a lot more appealing *cooked*...   Most of what I ate was instead the street food of Paris - the Crepe.  Jambone, Fromage, et Oeuf, svp!   Unfortunately, 5 times is too many over 6 days to go for this option.

Nearby places:  Paris is in a central location compared to many parts of Europe, with tons of locations accessible by <a href="http://www.eurorail.com">Eurorail</a> in hours (up to a day away).  If you have the time take a look at the rail maps.   I considered a trip to London by high speed rail; the trip is fairly fast (a couple hours).  If you consider such, *plan ahead* and reserve tickets on <a href="http://www.eurostar.com">Eurostar</a> ahead of time.  Otherwise, it becomes quite cost prohibitive.  I nearly went _anyways_  but backed out at the last minute due to weather.  

Getting back to the hotel airport: Another vote for not PariShuttle.com.  I mentioned I wanted to be at the airport 3 hours before departure time.  They scheduled instead for 2 hours.  Worse, they were late.  I got to the airport, where they had problems finding my ticket (did I mention, avoid codeshares?).  Then, their computers went down, causing a 40 minute delay on checkin.  I finally got to the gate as they were boarding - no chance to get an edible meal before the 10 hour flight..

Next stop: Beijing!]]>
        
    </content>
</entry>

<entry>
    <title>Our Home PBX</title>
    <link rel="alternate" type="text/html" href="http://gigo.com/archives/blog/home-pbx.html" />
    <id>tag:gigo.com,2009://1.225</id>

    <published>2009-10-23T02:42:45Z</published>
    <updated>2009-10-23T03:49:55Z</updated>

    <summary>Preface: I really hate solicitors calling....</summary>
    <author>
        <name>Jason Fesler</name>
        
    </author>
    
        <category term="Blog" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="asterisk" label="asterisk" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="voip" label="voip" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://gigo.com/">
        Preface: I really hate solicitors calling.
        <![CDATA[<strong>Our house gets all sorts of junk calls, multiple a day</strong>.  The common ones are ones you expect - robodialers calling to announce that our auto warantee needs replacing, or the SF Chronicle trying to sell us the paper, or political calls, or "polls", or all sorts of other crap.  Additionally, bill collectors have been getting more and more aggressive at finding their prey.  I get calls for people with the same last name as me all the time now.  Plus the calls for previous owners of my phone number, despite them not having had this number in a few years.  We've even had people call asking us to contact our neighbors!

Now, factor in these calls are when we're eating, working, or even trying to sleep, after having worked all night.  None of these calls are for -me-. It is all crap.

In the past, we've owned a box that would listen to caller ID, and either ring the house (if it was a local phone number) or go to the answering machine.  Unfortunately, that box died, and there is no alternative on the market.  That led to my setting up a PBX system to handle the house calls.  (To see the hardware and software involved, go to my <a href="/archives/blog/going-voip.html">Going Voip</a>  page).

<strong>Asterisk, the open source PBX system</strong>

All of our calls are now routed into the PBX.  When you call our house, your caller ID is checked.  Based on a number of factors, we decide what to do with your call.  

<ul>
	<li><strong>Local callers</strong> ring through directly - local callers generally don't notice any change in our phone system behavior.  We also allow some distant callers to be treated as local, based on their name (such as our medical provider)</li>
	<li><strong>Distant callers</strong>, are given a menu.  If the caller can listen to the menu and understand the simple prompts, they can ring through to us.  If not, they'll end up in the voicemail system and can leave a mesage.  We generally want real live human beings to be able to reach us; and have made it fairly easy to do so if they understand plain simple English.</li>
	<li>Callers who don't have caller ID, we tell them how to enable caller ID; then treat them with the menu.</li>
</ul>

Now, the above things, several commerical providers of voip services (such as <a href="http://www.voipo.com">Voipo</a>) have the above capabilities, roughly.  At minimum you can say what area codes are allowed to ring you, and what area codes go direct to voicemail (no menu).

<i><strong>I wanted more out of the system</strong>.</i>  I wanted to be able to allow specific callers through (whitelist them).  More importantly, I didn't want to spend any effort on it.  Our system watches all calls we make to the outside world, and <strong>automatically</strong> marks them as whitelisted.  If we call a family member on the east coast, and they call us back, they'll ring directly through without any hassles.

I also wanted the ability to <strong>blacklist</strong> callers.  Some callers do successfully leave voicemail spam or otherwise waste our time.   I've added a feature that lets us get the phone number of the last caller; to whitelist them; to blacklist them (force them to always hit the menu); or to send them to the <strong>monkeys</strong>.  This last option causes the phone system to answer if they call with a 'hello' (to trip the robo-dialers); pauses a few seconds, then plays 30 seconds worth of screeching monkey sounds.  

<strong>One phone number reaches me, period</strong>.  When callers do reach us (whitelisted or humans), our phones ring.  That is, the cordless phones ring.  As well as the cell phone.  Even the voip phone, when I'm at the hotel.  Whatever phone answers first, wins - the other phones will stop ringing.  The only limit to the number of places we can have ring in parallel, is internet bandwidth.  

<strong>Vacation handler</strong>:   Yes, you heard that right.  If I indicate I'm on vacation, I can say what time zone I am in, and where I am at.  The voice system tells the caller what time it is where I am at, emphasizing "early" and "late" times carefully.  It then gives them a slightly different menu, with different numbers, offering to ring me *only* if it is an emergency.  I will be out of the country on business, I just want to avoid people who don't know what time zone I'm in from waking me, or costing me international roaming charges.  Default action is to leave a voicemail - I'll get it whenever I'm awake and at the hotel or otherwise have internet.

<strong>Voicemail</strong>: dull and simple... and emailed to us.  In a format the iphone can play, as well as any web browser.  We can get the message from anywhere without calling the system.  Considering I hate answering messages anyways, this is quite accessible enough.

<strong>As to outbound calls</strong>:  We've got two VOIP providers defined, plus a fallback to the analog line.  The primary provider, lets us set caller ID to whatever we deem appropriate.   Analog calls are used for all 3 digit number calls (and in particular 911); and are also used when both voip providers fail.  I'm not a fan of voip based 911 calls... not when my <em>life</em> depends on it.

One last stupid trick:  We can <strong>customize greetings</strong> based on the caller.  For example, when my coworkers call from an office number that's associated with the company, not only are they automatically bypassing the menu system, they hear a company-appropriate jingle, before it rings through to my office and cell phone..]]>
    </content>
</entry>

<entry>
    <title>Going Voip</title>
    <link rel="alternate" type="text/html" href="http://gigo.com/archives/blog/going-voip.html" />
    <id>tag:gigo.com,2009://1.224</id>

    <published>2009-10-23T01:29:27Z</published>
    <updated>2009-10-23T03:50:46Z</updated>

    <summary>For a variety of ranty reasons, we are moving our phone services to voip, with the free Asterisk software based PBX server. This covers the equipment/software/providers being used, and what we&apos;ve done with the system....</summary>
    <author>
        <name>Jason Fesler</name>
        
    </author>
    
        <category term="Blog" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="asterisk" label="asterisk" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="voip" label="voip" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://gigo.com/">
        For a variety of ranty reasons, we are moving our phone services to voip, with the free Asterisk software based PBX server.  This covers the equipment/software/providers being used, and what we&apos;ve done with the system.
        <![CDATA[<strong>Hardware:</strong>

<ul>
	<li><a href="http://www.amazon.com/Cisco-SPA3102-NA-Voip-Single-Gateway/dp/B000FKP55U">Cisco SPA-3102</a>  (formerly Linksys)</li>
	<li><a href="http://www.amazon.com/Siemens-Gigaset-Cordless-Landline-A580IP/dp/B002DEMELO">Siemens Gigaset A580 IP</a> + bundled handset; plus three extra <a href="http://www.amazon.com/Siemens-Gigaset-Cordless-Landline-S67H/dp/B002DYIXGY">S76H handsets</a>.</li>
	<li>Mac Mini (not dedicated - this is on my desktop currently, and fairly low CPU).</li>
</ul>

<strong>Software:</strong>

<ul>
	<li><a href="http://www.asterisk.org/">Asterisk</a> PBX server</li>
	<li></li>
</ul>
<strong>VOIP providers</strong>

<ul>
	<li><a href="http://flowroute.com">FlowRoute</a></li>
	<li><a href="http://voipvoip.com">VoipVoip</a></li>
</ul>

<strong>Siemens Gigaset A580 IP</strong>

This is a wireless phone system (DECT6 standard) that handles both landline and voip.   This system can handle 2 voip calls and one landline phone at the same time, with up to 6 handsets, using a common base.   In our configuration we are only using voip; all calls are routed through to the phone system.  

Call quality is quite good; and very few audio dropouts due to the wireless.  I've been able to use this phone next to 2.4ghz systems without interference.  We have noticed that when calling out, there are a few seconds where the phone is syncing up with the voip provider and no audio is heard.  I've compensated by having our pbx delay outbound connections by 3 seconds.

The user interface on this phone is a bit awkward.  For the most part, if you treat it like a cell phone, it will do the right thing.  However, if you have a second call come in, you have to use the cumbersome menuing system to answer the call or to switch calls.  The flash button is useless, at least when using Asterisk as your PBX.   One neat feature is if you do have a second call, whether inbound or outbound, you can join it to your first.

Ring tones:  The stock A58H handset has a nice pleasant "ring" tone.  The other 3 handsets (S67H) we purchased, are either loud and annoying and shrill, or are soft muted music tones.  Not thrilled here, but it isn't a deal breaker.  We chose the S67H handsets for the wired headset capability - we depend on this feature.

Speaking of ring tones and UI:  You can choose which SIP providers ring which extensions.  You can have one SIP phone number ring all of your phones, or just one.  However, there is a catch:  Since these are not hardline phones, you can't just pick up a random extension.  And the phone only lets you answer a call if the phone is ringing.  Handsets that are set to not ring for a given phone number, are useless when you want to answer your spouse's line.  Furthermore:  No distinctive ring; the ringer on the phone applies to all numbers, and not just "yours'.

Battery life: Darn good so far.  Even better:  AAA NiMH batteries are replaceable, no special battery packs.

Opinion after 1 week of use:  Decent system but a handful of quirks.  None of them deal breakers yet; and even if they were, I don't have any other multiple handset wireless system that would be suitable. Especially in the consumer price point category.

<strong>Cisco SPA-3102</strong>

This is what is known as an "ATA".  This will translate an analog phone line from the phone company, and allow incoming calls to be routed into your voip based PBX.  Similiarly, your PBX can use this line for outgoing calls.  Additionally this device has a port for your analog phone.    This device is flexible - you can use it to convert your regular phone line to voip; or, you can use it to convert a voip account from a SIP based provider, into something your regular phone can use.

Ultimately, playing with voip can be a lot cheaper _without_ this box (see "Voipo" further down).  However, I am keeping this box primarily for 911 purposes.  We will keep one analog phone line active in this house.  I have more faith in a landline based 911 call than I do with any voip based one.    We will also use this as the line of last resort, in case the voip providers are not accessible (ie, internet is down).

Here are the things I dislike about this box:

For incoming calls, you need to let ring a good solid ring and then some (To get the caller id signal from the telephone company).  Your callers don't know that you missed this ring; you've effectively lost time to answer the phone.

For both incoming and outgoing, it is real easy to have calls that have a lot of echo on the line. There's a lot written up on this; and suffice it to say, dealing with the echo is hard.  However it is only there if you have this analog/digital conversion thing happening on your landline;  voip based calls don't have it.

<strong>Mac Mini</strong>

I'm using my desktop mac - nothing special here.  Not even dedicated. 

On my todo list:  Set up a linux virtual machine, move the whole setup into that.  Sync it nightly to another Mac and make it trivial for the wife to start it on that other host, just in case this rig dies when I'm unavailable to fix it.

<strong>Asterisk - Open Source PBX server</strong>

This is the heart of the beast.  An overkill heart, at that, considering that our phone system could have just as easily spoken directly to our voip providers.  The main reason we're running it is for flexibility, and will be the subject of a followup article about <a href="http://gigo.com/archives/blog/home-pbx.html">our home pbx</a>.  The short gist of it is, we're using it to filter incoming calls.

I first tried FreePBX, which is Asterisk with a web based GUI on top.  Unfortunately, the UI is too confusing; the documentation too lacking.  This really would make sense for some folks - once they knew how Asterisk worked underneath.

Now I'm using Asterisk 1.6 built from source, without a gui.  Just plain old config files for everything.

The programming language for this is quite arcane.  However, it is mostly functional.  More importantly, you can have it call an outside script, one you can build in whatever language you want.  Your script can issue commands, watch for responses, and otherwise intelligently do whatever you want with it.  If you're a hacker/tinkerer, this is quite handy.  You could, if you so wished, actually handle all dialing features from within your own scripts, and just use the primitives that Asterisks provides.

Asterisk comes loaded with professionally created sound files - you can do almost anything you want with it, at least for typical business use (and then some).  If you find you need something created, that matches the system's voice, you can hire that out to Digium (the makes of Asterisk).  Short sound files are $12 for up to 15 words.  I've been quite happy with the service :-).


<strong>FlowRoute - voip provider</strong>

FlowRoute's main usefulness to us is as a very cheap pay-as-you-go voip provider, with no monthly minimums.  They are prepay only (using Amazon's payment system).  So far, voice quality has been pretty good - better than I expected, actually.

Outbound calls are a penny a minute.  Additionally, they let me set caller ID to whatever I see fit.  In my case, calls that are forwarded retain their original caller ID; and any calls outbound, I can advertise my prefered phone numbers.  International rates are pretty cheap (5.5c to India, 1.3c to China; 1c to 25c for London, depending on landline or mobile).

Inbound calls require you to purchase one or more incoming phone numbers.  For my line, I'm paying 1.2c/minute with no monthly commitment.  For the wife, a $7/month with unlimited incoming calls.  

Depending on how much my wife actually does use the phone, we may switch to a different provider (Voipo); but we won't do that until we are ready to cancel her land-line and can "port" the phone number over to the voip provider.  (Voipo does not let us set caller-id to whatever we wish).

<strong>VoipVoip</strong>

This was the first provider I picked up; this is another pay-as-you go provider.  This provider does only outbound calls.  I originally planed to have the Cisco SPA-3102 handle analog calls for incoming; but based on voip quality (And lack thereof, on the cisco box) things changed.

VoipVoip does not allow setting caller id (all calls appear to be from "unknown caller").  The only thing I'll probably continue using them for, is to call India (3c a minute to Bangalore).


Up next: <a href="http://gigo.com/archives/blog/home-pbx.html">our home pbx</a>.]]>
    </content>
</entry>

<entry>
    <title>MBP and the keyboard/trackpad problem</title>
    <link rel="alternate" type="text/html" href="http://gigo.com/archives/mbp-and-the-keyboardtrackpad-problem.html" />
    <id>tag:gigo.com,2009://1.222</id>

    <published>2009-09-06T18:15:00Z</published>
    <updated>2009-09-06T18:17:03Z</updated>

    <summary><![CDATA[http://jasonrobb.com/2008/11/24/macbook-pro-unresponsive-keyboard-trackpad-solution/ (update):&nbsp;&nbsp;6+ weeks have passed now; the fix (rolling a sticky up, taping against the ribbon cable underneath the mbp battery) has worked pretty well. Unfortunately, I can't swap batteries any more (it prematurely wakes up the computer, runs out...]]></summary>
    <author>
        <name>Jason Fesler</name>
        
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://gigo.com/">
        <![CDATA[<a href="http://jasonrobb.com/2008/11/24/macbook-pro-unresponsive-keyboard-trackpad-solution/">http://jasonrobb.com/2008/11/24/macbook-pro-unresponsive-keyboard-trackpad-solution/</a> 

(update):&nbsp;&nbsp;6+ weeks have passed now; the fix (rolling a sticky up, taping against the ribbon cable underneath the mbp battery) has worked pretty well. Unfortunately, I can't swap batteries any more (it prematurely wakes up the computer, runs out of juice, during the battery swap). &nbsp;But, for normal day to day operation, no more gaps in keyboard/mousepad.<div><br /></div><div><br /><div><br /></div></div>]]>
        
    </content>
</entry>

<entry>
    <title>Regex Help for OS X</title>
    <link rel="alternate" type="text/html" href="http://gigo.com/archives/blog/regex-help-for-os-x.html" />
    <id>tag:gigo.com,2009://1.223</id>

    <published>2009-08-24T20:26:11Z</published>
    <updated>2009-08-24T20:27:52Z</updated>

    <summary>For those of you playing with regular expressions, and want to dynamically try patterns against text, the Regex Doctor in Komodo IDE rules. However, that&apos;s commerical. A product that comes somewhat close is RegExhibit.. and worth trying at least a...</summary>
    <author>
        <name>Jason Fesler</name>
        
    </author>
    
        <category term="Blog" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://gigo.com/">
        <![CDATA[For those of you playing with regular expressions, and want to dynamically try patterns against text, the Regex Doctor in Komodo IDE rules.  However, that's commerical.  A product that comes somewhat close is <a href="http://homepage.mac.com/roger_jolly/software/">RegExhibit</a>..  and worth trying at least a bit.
]]>
        
    </content>
</entry>

<entry>
    <title>Mac CLI copy and paste - use with unix pipes</title>
    <link rel="alternate" type="text/html" href="http://gigo.com/archives/mac-cli-copy-and-paste-use-with-unix-pipes.html" />
    <id>tag:gigo.com,2009://1.221</id>

    <published>2009-05-12T17:30:48Z</published>
    <updated>2009-05-12T17:32:55Z</updated>

    <summary> ls | pbcopy man pbcopy man pbpaste http://developer.apple.com/DOCUMENTATION/Darwin/Reference/ManPages/man1/pbcopy.1.html...</summary>
    <author>
        <name>Jason Fesler</name>
        
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://gigo.com/">
        <![CDATA[<ul>
	<li>ls | pbcopy  </li>
	<li>man pbcopy</li>
	<li>man pbpaste</li>
</ul>

<a href="http://developer.apple.com/DOCUMENTATION/Darwin/Reference/ManPages/man1/pbcopy.1.html">
http://developer.apple.com/DOCUMENTATION/Darwin/Reference/ManPages/man1/pbcopy.1.html</a>]]>
        
    </content>
</entry>

<entry>
    <title>A ride in a B-17</title>
    <link rel="alternate" type="text/html" href="http://gigo.com/archives/a-ride-in-a-b17.html" />
    <id>tag:gigo.com,2009://1.220</id>

    <published>2009-04-18T21:38:32Z</published>
    <updated>2009-04-18T21:42:33Z</updated>

    <summary>Today, Danae and I got a nice ride in a restored B-17 bomber. What a hoot! See the pictures here. My favorite: Don&apos;t !@$!@ with Mom!...</summary>
    <author>
        <name>Jason Fesler</name>
        
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://gigo.com/">
        <![CDATA[Today, Danae and I got a nice ride in a restored B-17 bomber.  What a hoot!  See the <a href="http://gallery.gigo.com/flying/index.cgi?d=b-17-liberty-belle">pictures here</a>.

My favorite: Don't !@$!@ with Mom!

<span class="mt-enclosure mt-enclosure-image"><a href="http://gallery.gigo.com/flying/index.cgi?d=b-17-liberty-belle""><img alt="dfwm-b17.jpg" src="http://gigo.com/images/dfwm-b17.jpg" width="612" height="406" class="mt-image-left" style="float: left; margin: 0 20px 20px 0;"/></a></span>
 ]]>
        
    </content>
</entry>

<entry>
    <title>SSH server abuse</title>
    <link rel="alternate" type="text/html" href="http://gigo.com/archives/announcements/ssh-server-abuse.html" />
    <id>tag:gigo.com,2009://1.219</id>

    <published>2009-04-07T04:06:42Z</published>
    <updated>2009-04-07T04:11:46Z</updated>

    <summary><![CDATA[Something started about 2 hours ago here; ssh scans for user "root" hitting all public IP's for gigo.com.Looking at it with a packet sniffer, all IP's get hit in parallel; sometimes without port randomization from the other side. &nbsp;Looking at...]]></summary>
    <author>
        <name>Jason Fesler</name>
        
    </author>
    
        <category term="Announcements" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://gigo.com/">
        <![CDATA[Something started about 2 hours ago here; ssh scans for user "root" hitting all public IP's for gigo.com.<div>Looking at it with a packet sniffer, all IP's get hit in parallel; sometimes without port randomization from the other side. &nbsp;Looking at the hosts, looks like they all have old sshd's running. &nbsp;Can't even blame windows this time.</div><div><br /></div><div>Expect connections to gigo.com to be spotty - sshd is getting overran. &nbsp;gigo.com users: &nbsp;I'd like your feedback on whether or not moving the SSH port would be a big impact to you. If it would be.. what if port 22 was open to specific subnets (ie where you work); or having a web CGI that re-enables port 22 for your current IP?</div><div><br /></div>]]>
        
    </content>
</entry>

<entry>
    <title>tsocks on the mac</title>
    <link rel="alternate" type="text/html" href="http://gigo.com/archives/tsocks-on-the-mac.html" />
    <id>tag:gigo.com,2009://1.218</id>

    <published>2009-03-13T02:37:52Z</published>
    <updated>2009-03-13T02:40:02Z</updated>

    <summary>At work, we use socks proxies a lot.  I&apos;m hoping to run some unix-y apps on the mac, &quot;soxified&quot; (where the app does not know it is being sent via socks).   Tonight I installed tsocks using the macports collection....</summary>
    <author>
        <name>Jason Fesler</name>
        
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://gigo.com/">
        <![CDATA[At work, we use socks proxies a lot.  I'm hoping to run some unix-y apps on the mac, "soxified" (where the app does not know it is being sent via socks).   Tonight I installed tsocks using the macports collection. This was my final working config (after beating my head on DNS being broken over and over):<div><br /></div><div><div>local = 127.0.0.1/255.255.255.255</div><div>local = 192.168.1.0/255.255.255.0</div><div>server = 127.0.0.1</div><div>server_port = 1080</div><div>server_type = 5</div><div>tordns_enable = 0</div><div><br /></div><div><br /></div><div>tordns_enable had a crappy default; once I found and set it 0, things started to work over my socks tunnel on 127.0.0.1:1080.   I can now run "tsocks alpine" to run my mail client, for example.</div><div><br /></div></div>]]>
        
    </content>
</entry>

</feed>
