“An agnostic, dyslexic, insomniac stays up all night wondering if there’s a dog.”
I just ran across autopep8, which automatically detects and changes code to be PEP8 compliant. It does not do everything, but it does a lot and can work in batch mode. Run it with the “-d” option first to see if you like the changes.
I’m not a big phone talker. It always amazes me how people can burn through 1000 minutes/month. I was on the cheapest plan at Verizon, no texting, 2GB data and I still never reached the limit. However that cheapest plan still cost me ~ $80/month and that was after a 20% discount which I received through my company affiliation. Even if I wanted to, there was nothing I could cut from the monthly bill.
I started to look for alternatives and found one in GIV Mobile.
GIV Mobile is one of those no-contract resellers that have popped up in the recent past. Under the covers they use the T-Mobile network. For $50/month I get a no-contract, unlimited calls, unlimited SMS, unlimited international SMS and 2GB at 4G speeds plan. After using up 2GB of data, speed automatically switches to 3G. T-Mobile’s coverage is certainly not as good as Verizon’s, but it is good enough for me: I have service at my home and all the other areas I care for. Besides the fixed cost under no contract I was also attracted to the new provider, because GIV Mobile donates 8% of your monthly bill to charity: from now on I’ll donate $4/month to charities I selected.
I got a Nexus 5 (because my Samsung was locked to Verizon) and activated GIV Mobile in January. My old number was ported to the new provider and once I was convinced that everything worked, I called up Verizon to cancel service there.
They gave me the “… valued customer … long time … see what I can do …” talk. The lady on the phone offered to cut $10 from my monthly bill (why do I have to threaten to leave before you’re offering this?) if I signed up for another year of service. I told her that even with the $10/month reduction, I would still be paying about $20 more a month than at GIV Mobile. She knew that there was nothing to be rescued in my case. I was hit with an early termination fee, because my 2-year contract was not over until July – but I had already factored that in and in the end I save some money. And knowing that I’m no longer feeding Verizon makes up for any additional costs …
Last week I was greeted with a yellow blinking light on the front of the Dell Desktop PC that hosted kahunaburger.com and some other domains. It sat there in the in the cool garage (not a thermal problem) with both disks spinning (not a disk problem) and would not restart. For a few days I tried to make things work again, but the PC remained silent with no indication of the failure condition on the screen – in fact, I did not see anything on the screen. I cleaned it, blasted air through, all to no avail – it was dead (10+ years is not too bad). This weekend I embarked on resurrecting the sites on the PC and went through a number of stages of frustration: 1) I tried to move the disks to an AMD desktop I had around, but the thing would not turn on, 2) I tried to move the disks to another old PC, but it would not go beyond the initial boot stages of FreeBSD, because the architecture was too different.
No local hardware to run the old sites – sigh.
Plan B: create a new virtual FreeBSD instance in VMWare and at least extract all the data from the disks. In VMWare Fusion Mac I created a new instance from a bootonly-FreeBSD-image and was able to mount the disks in no time afterwards. I installed the correct version of mysql in the VM and dumped the data to another volume. Now I had a database dump as well as the dump for the filesystem and could proceed.
Where do I spin up the new servers? I had long hoped to move the server’s responsibilities to Amazon Web Services and now seemed to be the right time. An “m1.small” instance later I had the skeleton of a Linux, Apache, Mysql, Perl server and started to restore files. You should have seen how surprised I looked when the first hits were answered correctly and I saw something else but “500s”. It just took a bit more tweaking until most of sites’ content worked again. Pretty impressive (until I get the next bill from AWS – then I’ll decide how to allocate reserved instances) ..
PS: “sudo resize2fs /dev/sda1″ is your friend if you’re using the Amazon Linux AMI and have allocated more space for the root volume than what seems to be available …
The last time I renewed my German passport (almost 10 years ago), I sent it and support documentation to the General Consulate in Houston, paid my fee and a few weeks later I had a new passport delivered.
Things have changed since then and made yesterday’s renewal the most expensive ever.
Germany adjusted the rules in the past years and now requires citizens to travel to the Consulate in order to renew passports. So I packed Pia on Wednesday evening and went with her to Albuquerque to stay at a hotel for the night. We didn’t want to miss too much of school/work and decided to do a one-day trip to Houston. That required taking a really early flight out to make the appointment at the Consulate and be able to fly back home to Albuquerque the same day.
Our day started at 4:50am when the alarm rang. I was awake way before, because of the insomnia of the guy above us at the hotel: he was trampling around most of the night and his weight combined with the less-than-sound-absorbing ceiling told me whenever he was doing his rounds. We got changed and left the hotel just after 5:30am. Our flight to Houston at 6:30am was on time and uneventful. At Hobby airport we grabbed a taxi and drove about 25 mins to the Consulate.
My passport appointment was set for 10:45am and we were there some 20 mins before.
Thanks to detailed preparation work, it was all smooth sailing and within less than 15 mins my renewal was done. I was asked to pay the renewal fee ($130) in cash, because the Consulate had recently issues with credit card payments. After checking how much Pia’s renewal would cost ($80), I left my daughter alone at the Consulate (she’s a big girl now and the woman helping us was really nice) and went down to an ATM to pick up enough cash. Just 20 mins later, Pia’s renewal was also done and we left a bit over an hour after we arrived at the Consulate – not bad at all!
We had a few hours to kill before our return trip and walked 15 mins to “The Galleria” in the heart of Houston. The Galleria is a huge shopping center and I mean really huge. We knew about it, because the taxi driver had mentioned it and he had dropped the magical keyword “ice skating rink”. Since the temps were in the 80s and we were both dressed for Santa Fe’s 30s it was only logical to venture there to cool down. Pia skated for almost an hour and afterwards we had a snack and walked around for a while.
At 2pm local time we took another cab back to the airport and waited for our return flight, which, of course, had to experience technical difficulties and was delayed for 1.5 hrs. After a quick stop in Dallas and exchanging passengers there we arrived back home a little bit over an hour late.
Come 8:30pm Pia was in her own bed and it was quiet soon after.
If I sum up all the costs for plane tickets, passport fees, hotel, food, taxi, etc. our passport renewals clock in at $1300!!!
Just recently I told Verizon to port my Home Phone Connect number to Google Voice. Home Phone Connect used to be my “land-line”, which in fact was a stationary 4G connection. It is a 4G device, but it’s supposed to be used stationary. Home Phone Connect worked fine for me for a couple of years, but there were a bunch of things that were annoying me:
1) Unsolicited calls: I hate getting these calls (who doesn’t?) and I felt that Verizon did not give me the necessary tools to avoid them. My phone number has been on the National Do Not Call List since its inception, but that does not seem to stop anybody. My wireless phone inside the house had the ability to block certain numbers, but what do you do when there’s no Caller-ID information and thus no number to block?
Since I switched to Google Voice, it’s a lot more quiet. The same unsolicited calls still arrive, but instead of making even a single ring on any of my phones, calls with no Caller-ID, fake Caller-ID or from known spammers are sent directly to voice-mail. I also added a few, legit numbers manually, which now get the same treatment: if it’s important that you get in touch with me, you sure will leave a message – nobody ever does.
Oh, and here’s my friend “Unknown”. He’s been calling for the past 6 months like clockwork around 10am every day! No number, no name – nothing to identify the caller. Prior to Google Voice I would just left the phone ring and now I see his entries under “Missed Calls” in Google Voice, if I care to look there:
2) International Calling Rates: I call Germany quite regularly. For a monthly access fee ($3.99) Verizon gave me access to lower rates via their “International Long Distance Value Plan”. Calls to a German landline are $0.07/min using the Value Plan and $1.49/min without it (no, this is not a typo). Talk for an hour and it’ll set back $4.20, which is not too bad.
Then I ran across Google Voice’s International Calling Rates … Their standard rate without having to sign any gimmicky Value Plans is $0.02/min! For the $3.99 access fee at Verizon, I can talk already 3.5 hrs with Google Voice. Do I need to say more?
For a long time now, CNSP was my ISP. I switched to them about 3 years ago, because they offered good speeds at a reasonable price. The first years everything was fine and I was happy with the service. Early last year the service went downhill: connectivity was bad and I would hear from my colleagues about it during video/audio conferences. Every attempt to have CNSP fix the situation was fruitless. In April last year I finally had enough and installed a 2nd wireless link through Cybermesa. I configured my router to do load-balancing and fail-over using the two Internet connections. That same router is constantly pinging the two ISPs to determine whether a link is up and usable: every few seconds packets are sent and the router collects information about the transition time and packet loss. Here’s the chart for typical day (10/14/2013 to be precise):
The grey stuff on the top represents the response times. The bloody red stuff on the bottom means packet loss. Packet loss occurs when something between me and CNSP goes wrong and data sent from my location does not get a response from the ISP. What’s graphed here are pings, but what it means in reality are websites not loading, Netflix pausing and other weird situations. Very often I would instruct my router to completely switch off CNSP, because I could not get a reliable connection.
Cybermesa and CNSP are using almost the same wireless equipment. CNSP’s radio tower is closer to my home than Cybermesa’s. To contrast things, here’s the same quality chart for my Cybermesa connection on the same day:
Uniform response times which are a fraction of CNSP’s and virtually no packet loss.
Things got really bad in May/June last year with service becoming unavailable completely. Despite my emails/calls, I was always told that the problem was on my end and when they finally sent somebody to take a look at my wireless equipment, it turned out that I was right all along and that my radio needed to be replaced.
A few weeks ago I sent email and asked them to fix the constant issues with my connection, otherwise I would have to cancel service with them. When I did not receive a response after 4 days I pulled the plug.
Work on my home finally started on 5/6/2013. I hear they are almost done with the plaster work and then they need to attack the floors. I moved temporarily to a rental house at the end of Las Campanas. Here’s the situation at my house as of a few minutes ago:
Just a little while ago I told you that I had left Adobe and joined Aquacue full-time.
Well, guess what? I have yet another, new employer.
Soon after I started at Aquacue, the company was bought by 100+ y/o Badger Meter Inc of Milwaukee, Wisconsin. I’ll be doing the same thing that I did for Aquacue, just under a different company name. This week I had the distinct pleasure to meet Richard Meeusen, Badger Meter’s CEO. He explained his philosophy and vision for the future. He also shared the following video with us, where he explains how a water meter is made:
I know I write a lot about my pfsense router, but one can’t write enough about it given the rock-solid performance and awesome feature set.
Yesterday and this morning I installed a new package on the router which implements a transparent proxy to scan downloaded files for viruses.
Remember this is sitting on the router, which means that every single device in my home is automatically protected. Each and every request is now scanned using the Clam Antivirus scanner, no matter whether those requests come from Macs, PCs or handheld devices. The package is configured to download new virus/malware signatures every few hours. That, combined with AV software on individual machines leaves a warm and fuzzy feeling.
I waited a while with this post, because … I don’t know why. December 31st marked my last day at Adobe and January 15th was my first official day at Aquacue. It’s time to jot down some details before I forget them.
In late 1993 I received a call from a German headhunter. She told me that there was an interesting position at the European headquarters of an American company. She could not provide a lot of details and suggested that I should just for an interview. At that time I still worked for Siemens in Munich through another consulting company. Things were slowing down there and rumor had it that Siemens wanted to cut down on all those “expensive” consultants. The time was right to make a move and I decided to go for an interview at the German subsidiary of Adobe Systems Inc.
I remember the interview vividly: then head of European operations, Micha Moses, interviewed me to the point where I was convinced that I did not stand a chance for the job. I recall getting out of the room half an hour later and telling myself: “What the f*ck was that?”
Needless to say I was even more surprised when the headhunter called me again and told me that I was invited for a 2nd round of interviews in Amsterdam, because I made a good impression during the first interview. I knocked out quite a number of other candidates and got the job. Early 1994 I took a one-way trip from Munich to Amsterdam.
For the next 3 years I would live in an amazing apartment on Brouwsers Gracht in Amsterdam (if it wasn’t for the stairs) and work at Adobe’s headquarters south of town. The years were filled with Postscript training classes, helping European printer manufacturers to implement Postscript on their devices and working on the Postscript codebase in general. I don’t know how much I traveled, but it was a lot. Almost every week I was on the road to one or another European city. I most cherish the time I spent in Barcelona working with Hewlett-Packard. I helped them with their Postscript implementations while they helped me to understand Barcelona’s night life (remind me about the time I met some of the HP workers for dinner at midnight).
In 1997 I arrived at a point where I could not see myself advancing in the flat organization of Adobe Europe. I told my manager that I needed something “more” and that Adobe Europe could not provide it. He agreed and allowed me to start looking for a new job. It took a few hours before I received a call from Adobe’s HQ and was asked whether I would be willing to relocate to the US and work for the company there. I thought about the offer for a while (well, hours) and accepted it.
Early 1997 I took another one-way trip, this time from Amsterdam to San Jose. I still remember Amsterdam disappearing below the clouds as we departed from Schiphol Airport, sipping a glass of Champagne (thank you, Royal Wings, for the complimentary First Class upgrade).
For another 4 years I would work on Postscript and create Adobe’s first pay-for online service (https://www.acrobat.com/createpdf/en/home.html). In 2001 I had enough of the Bay Area and decided that I needed a more quiet, open environment. I told my manager that I would move to Santa Fe, NM no matter what. Adobe was willing to give tele-commuting a trial and I was allowed to work from my home here.
Things seemed to work out and I was granted permission to work permanently from my home(s) in the desert. For 10 years I worked in a number of different roles on Adobe’s online offerings. All I needed was a fast, reliable Internet connection to do my work (“reliable” is still hard to come by, even in 2013, as far as NM is concerned).
Over the past few years I came to the conclusion that my time at Adobe was coming to an end. I was doing the same stuff over and over again under different code-names. I started to get bored and I did not see a way out of it. I was in long-term relationship that gave me everything I needed, but I did not feel satisfied.
Luckily I had kept in touch with ex-colleagues and one of them offered me a position at a start-up company in Los Gatos.
In September 2012 I told my manager at Adobe that I would leave the company at the end of the year. I always hated it when others left from one week to the next and I thought it was fitting to give my employer enough notice about my departure. That allowed me to clean up behind me (well, almost) and transfer knowledge where necessary. 12/31/2012 marked my last day.
Adobe was good to me, very good in fact. I learned a lot there and met some incredible people. If you ever get a job offer from them, please accept it – you won’t regret it.
Now I’m working with just a handful of people passionate about water conservation and I feel I can make a real difference in areas that matter in this world …
Last year’s premium: $1076.00
This year’s premium: $1428.00
That’s a 33% increase year over year. I called up MetLife and asked them what the reason for the increase was. I was told that 1) 6-7% account for inflation and 2) insurance premiums in New Mexico were “adjusted”. Funny that they are always “adjusted” upwards and never downwards.
Yes, I admit it openly: I’m a hoarder – data hoarder that is.
Weeks ago the 3 terabytes in one of my servers were 90% consumed. Yes, there is lots of junk on it, but also a lot of data that I want to keep. The server is accessible from all devices in the home network and I make good use of it. I always eyed a Network Attached Storage (NAS) device as a remedy to my storage requirements. With the new job (more on that in another post) I also get to juggle with more data than ever before. Just to give you an idea: the main database I’m dealing with on a daily basis is around 9GB and I have multiple versions of it around.
My employer agreed to purchase a Drobo 5N NAS for me. All I needed to do was to fill it with disks. I purchased 4 3TB Seagate disks (Barracuda ST3000DM001 to be precise) and stuffed them into the unit. Because of the way that the Drobo handles disks and disk space, I ended up with a bit over 8TB as usable space. After some spring cleaning I also shrunk the data from the server down to a more manageable 1.5TB.
So far the NAS has been working flawlessly and I get close to the maximum transfer speed I can get on a Gigabit network.
My main router in the garage has two network interfaces. One of them receives the Cybermesa connection and the 2nd interface is serving the home network. This router is also running pfSense.
Up until this morning the CNSP connection ended up serving a wireless access point, which I could reach from the house.
At any time you could either be connected to Cybermesa or CNSP, but not both of them at the same time.
The router happens to have a wireless card built-in. This card is usually used to create an access point directly on the router. I never used it, because I already had a different wireless network setup. However that card can also be run in “Infrastructure” (BSS) mode, which allows pfSense to use a wireless signal just like another cable, DSL, etc. connection.
That coupled with pfSense’s “gateway grouping” allows me now to connect to both ISPs at the same time from the same router. The result is a load-balanced dual connection with fail-over capabilities or in other words: when one connection is busy, the other one is used. If one connection goes down, then all traffic is automatically routed over the other connection.
And the most beautiful thing is that it happens for all devices in my home without any further modifications.
Yep – I’m a geek sometimes …