Thursday, December 1, 2011

more US wireless money-saving options

while doing research for my own clean break with verizon, I stumbled upon some great deals with various US wireless carriers that I thought I'd share with others out there who are looking to save some money:

  • simple mobile: $40 unlimited everything
    simple mobile's $40/month plan now includes unlimited 3G data. so that's unlimited talk, text, and 3G data for just $40 per line. that's nearly the cheapest deal you'll find anywhere in the US right now.


  • walmart family mobile: unlimited talk and text, free data for 3 months
    the first line is $45/month, so this isn't the cheapest plan for those who only need one line. but every line after that is just $25/month, so this can end up saving a lot of money if you need multiple lines.
    data is free for the first 3 months (for those who sign up before the end of 2011), and after that it's pay-as-you-go, which means this is also for those who need little or no data. note that the unlimited data offer doesn't include picture messaging, but each new activation gets 100M free data anyway, so the picture messaging will probably come out of that.


  • t-mobile: $30 unlimited text and data
    this one's kind of strange: you get unlimited data (the first 5 gigabytes are at 4G speeds, the rest will be slower) as well as unlimited texts, but you only get 100 minutes of talk. I suppose if you text and use the web a lot, but hardly talk, this would work for you. another possibility would be to use this with a service that lets you make free data calls, such as whistle phone.


  • virgin mobile: $35 unlimited text and data
    much like the t-mobile plan, this one gives you unlimited texts and data (the first 2.5 gigabytes at 3G speeds), but only 300 minutes of talk.


  • republic wireless: $20 unlimited everything
    yeah, you read it right. $20/month (technically $19) for unlimited talk, text, and data. there is a pretty big catch though: republic wireless enables prices like this by offloading your mobile traffic over wifi. what this means is if you do most of your cell phone usage (whether it be talking, texting, or web) within distance of a wifi signal you have access to (for instance at home and work), then republic wireless can save you a hefty amount of money. if you can't meet that requirement, however, I wouldn't recommend it. the best part is you get 30 days to change your mind and get your money back.




these plans all do require you to buy your phone up front, but with the money you'll save paying these kinds of rates (the most expensive plan mentioned here is $45/month), you'll be able to afford a nice phone. the best part (other than saving a lot of money, of course), is that all of these plans are contract-free. no more dealing with crummy customer service or paying more than you like because you're locked into a contract.

what are you waiting for? stop reading and go save some money!

Friday, November 4, 2011

saying goodbye to verizon :)

I cannot wait. in just a few weeks, I'll be saying goodbye to verizon wireless for good. I'm essentially following my own advice, starting at step 1 (don't renew your contract), and I couldn't be happier, for several reasons:

  1. Verizon (and the other major carriers) forces you to have a data plan if you have a smartphone.
    okay, so I thought they did this so they would get their money back on subsidized phones. wrong. they're just greedy. I say this because you can't even go out and buy a used smartphone on craig's list and put it on one of the major networks without having a data plan. you can feel free to try, but when you take a look at your next bill you'll have a nice new shiny data plan added.


  2. Verizon is CDMA-based
    I like to travel, and I'd like to be able to use my phone when I travel. Verizon uses a wireless standard (CDMA) that is limited to the United States and just a few other countries. if you use a provider that's based on GSM (the global standard), all you have to do is unlock your phone, which is cheap, and you can use your phone worldwide.


  3. last, but most certainly not least, price!!
    these plans are all based on 2 lines, with at least 1500 minutes and 500 texts per line. first up, the 4 major carriers:










































    carrierplanpriceminutestextdata
    at&tnation 1400 familytalk + family messaging unlimited$1301400unlimitednone
    verizonnation family shareplan 1400 + 500 messages/line$1101400500/linenone
    sprinteverything messaging family 1500$1001500unlimitednone
    t-mobileunlimited value - talk + text$80unlimitedunlimitednone

    these aren't even an option for me, because the major carriers all require contracts as well as a data plan with a smartphone. plus, Verizon and Sprint are CDMA-based.

    but thankfully those aren't my only options. there are many smaller carriers that don't require a contract, and use the same networks as the larger carriers, all at a fraction of the price. I won't include CDMA-based ones like MetroPCS, Cricket, Virgin, or Boost, but here are few GSM-based ones:

































    carrierplanpriceminutestextdata
    h2o wirelessh2o unlimited$80unlimitedunlimitednone
    simple mobileunlimited talk, text, and 3g web$80unlimitedunlimitedunlimited
    walmart family mobileunlimited talk & text$70unlimitedunlimitedunlimited for 3 months, pay-as-you-go after that



  4. it looks like the best deal is walmart mobile, but unlimited data with simple mobile for just an extra $10/month is mighty tempting...

    but just this week a new player has entered the mix that may blow all of the others out of the water. if the leaks are true, republic wireless will be offering unlimited talk, text, and data for a measly $19 a month. we'll just have to wait until Tuesday to find out...

Wednesday, October 19, 2011

Living with less (or no) data on Android

So I promised a little while back that I'd write up a post on some great Android apps that work offline. Of course many apps fall into this category, but these in particular are replacements for apps that otherwise normally rely on a data connection:

  • Aldiko
    I'm guessing most book reader apps will let you read books offline (once you've downloaded them), but this one is so good I haven't tried any others. I love it because it has a lot of public domain books for free, like many of the older classics.

  • CoPilot Live
    (link to USA version 8 )

    Did you know you can use your Android phone for GPS navigation even without a data connection? CoPilot Live is a full-featured GPS app that lets you download map data ahead of time so you can use your phone as a GPS offline. It's not perfect, and nowhere near as good as Google Navigation, but it's well worth the savings on an expensive monthly data plan.

    I'd recommend version 8 over version 9, mostly because the developers are using some pretty crummy bait-and-switch techniques and have split version 9 into "Standard" and "Premium" versions. The catch is the Standard version doesn't actually come with any features one might consider standard in a GPS app/device today, like 3D navigation, text-to-speech, and alternate routing. Let them know (via your wallet) that you think that's lame.

  • ESV Bible
    Many of the Bible apps out there require a data connection, and even when they let you download specific translations for offline use, it may not be the ones you want. If you're looking for a good, accurate, literal translation, the ESV is an excellent choice, and this app will do the trick.

  • Merriam-Webster Dictionary
    This is a full-featured English dictionary that works just great offline (except for a minor feature or two, like word-a-day). By full-featured I mean that it even lists example usage, origins, synonyms and antonyms.

  • GoMeals
    If you're watching what you eat, most calorie counting apps require a data connection to look anything up. While GoMeals is a little sluggish, it does contain the entire CalorieKing database, which is quite extensive.
Here are a couple more useful apps that better enable you to reduce your data consumption, particularly useful when you have a limited or pay-as-you-go data plan:

  • Onavo
    This is a really cool app that will let you monitor your data usage by app, and even limit or block specific apps. There are some other great apps out there that let you monitor your data usage, like My Data Manager Free, but this is the only one I've seen so far that lets you go the next step and block data usage for particular apps (at least the only one that doesn't require your phone to be rooted). The developers have stated that it's only free for a limited time, but it just may be worth paying for (provided it's not a recurring fee, which would defeat the purpose).

  • Widgetsoid
    This app lets you create customizable widgets that will let you toggle many settings, including your data connection, allowing you to turn off mobile data altogether when you don't need it.
Note that if you are connected to the internet, some of these apps will use some bandwidth for advertising. But the point is that they will work fine without a connection at all.
Feel free to add your own suggestions to those of us who refuse to allow the wireless providers to rob us of additional hundreds of dollars a year for mobile internet. And feel free to check out my previous post on saving money on your cell phone bill:

Wednesday, October 12, 2011

Ubuntu 11.10 brings with it more Vala


I've talked about Vala a couple times on this blog, and the release of Ubuntu 11.10 tomorrow brings with it another Vala app and more attention to this incredible programming language. The app is a backup client called Déjà Dup. You can read more about it here and see some screenshots here.

While I'm at it, here are some other cool vala apps I've run across:
  • Geary (email app)
    Yet another app by the Yorba team, who has been prominent in promoting Vala and who I've blogged about before. This app seems pretty low-key at the moment, but considering the success of their flagship app, Shotwell, expect to be hearing more about this one in the future.

  • Lingo (dictionary)
    This one's by the elementary team, who I've also mentioned before as they've had a lead role in leading the vala charge. I mentioned in that same post that they would be rewriting their Purple dictionary app in vala, and it looks like Lingo is the result of that rewrite.

  • Lucruri (notes and tasks)

  • Pino (twitter client)

  • Switchboard ("modular desktop settings hub")
    Another one by the elementary team. They place a heavy emphasis on a clean and stylish UI; the screenshot at the top of the page is an early build of Switchboard.
Also, as apparently I predicted, the elementary team is going to be rewriting their Dexter address book app in vala (see link for source).

Thursday, September 15, 2011

How to reduce your cell phone bill

Note: while this article is mostly specific to US wireless providers and practices like subsidized phones, many of these tips could probably be applied anywhere.

  1. Don't renew your contract

    Saving money on your cell phone bill will take some time and research, and the last thing you want to do is get locked in again to your overpriced contract. You'll want to be especially on your guard against "deals" your wireless company may offer, such as the ability to get a new subsidized phone by renewing your contract as early as six month before it expires.

  2. Shop around

    Okay, maybe this sounds like common sense, but you'd be surprised at the number of people that renew their overpriced cell phone contract because they haven't taken the time to look around for a better deal. The carriers are taking advantage of this, particularly Verizon and AT&T, whose prices are, well, not very competitive (yes, I'm saying they're expensive ;)).

    This part will take some time. Here are some things you'll want to consider:

    1. Look at coverage maps

      Most major carriers in the US cover at least 95% of the population, but it never hurts to get an idea of how good your reception will be at work, home, etc.

    2. Consider what carrier your friends and family have

      You have to be careful with this one, because it could cause you to get locked in to an overpriced carrier because they offer free mobile-to-mobile and most of your friends and family have that carrier. Having said that, if most of the people you call are on a certain network, even if that network is overpriced (Verizon, AT&T), you still might be able to save money if you can get away with a plan with fewer anytime minutes due to free mobile-to-mobile calls.

  3. Don't leave out the small guys

    There are many smaller carriers out there who offer much better prices than the big guys like Verizon and AT&T. Some of them actually operate on the same networks as the larger carriers, and so you'll get the exact same coverage for a cheaper price. Here are a few examples:

    There are also other carriers that operate their own smaller networks, but have roaming deals with the bigger carriers, so once again you still get coverage areas comparable to the major carriers:
    One small thing: in the US I recommend GSM carriers (any carrier using T-Mobile or AT&T's networks, including T-Mobile and AT&T), because you can get their phones unlocked and use them if you switch GSM carriers. CDMA phones (used by everyone else) are much more limited. You'll also be able to use your GSM phone if you travel overseas.

    There's a more comprehensive list of US wireless companies that operate on the larger companies' networks here:
    http://en.wikipedia.org/wiki/List_of_US_MVNO

    Here's a similar list for Europe:
    http://en.wikipedia.org/wiki/List_of_mobile_network_operators_of_Europe

  4. Stay away from contracts

    This might seem tough considering all of the major carriers will try to push a contract on you, but if you can get on a plan without a contract, you can potentially save some money, for a couple reasons:

    • Freedom to change

      The fees carriers charge for breaking contracts are quite ridiculous and only getting higher, especially for smartphones. Most of the time breaking a contract isn't a viable option. If you're not on a contract, then you don't even have to worry about those fees. If you happen to see a better deal with another carrier, you have the freedom to make the switch right away and start saving money.

    • Lower monthly bills

      Many carriers, even some of the major ones (like T-Mobile) offer cheaper plans that are contract-free. The catch is you either have to buy a phone at the unsubsidized full price (which can be incredibly expensive), or provide your own phone, which brings us to the next point...

  5. Consider a used phone

    I know, I know, you're thinking, "Used!? Are you crazy?" That's why I said "consider." ;) If you're really serious about saving money on your cell phone bill long-term, buying a used cell phone can save you tons of money.  A brand new basic cell phone can cost you upwards of $200. For smartphones, prices easily go above $500. You can literally save hundreds of dollars buy buying a used phone.

    There are tons of them on ebay, but you can normally find a better deal on craigslist if you're willing to put in a little more work. There are plenty of folks out there who get new subsidized phones every year or two, and since they didn't pay much for them, they're willing to part with them for a relatively small amount.

    Just make sure that it's compatible with the carrier you picked earlier. Most of the small carriers will list what major carrier's phones they're compatible with. If you're not sure, just ask. Also, if you buy a GSM phone (AT&T, T-Mobile) and want to use it on another carrier, you may need to get it unlocked. If so, see here: Cheapest way to unlock GSM phones

    Maybe you're thinking that it's cheaper to just sign a contract and get a really nice phone really cheap, or even free. The thing is, you're not really getting a deal, in particular if you're buying a smartphone. Do the math: most carriers require you to have a data plan for your smartphone. Data plans average around $30 a month. Over two years, this means you're paying an extra $720 for that "free" or "cheap" smartphone of yours. Capiche?

    Which once again brings me to my next point...

  6. Can you live with less data?

    If you get a subsidized phone on a major carrier, you may not have much of a choice. but you may be able to choose a much cheaper data plan if you're willing to live with less data. Some of the smaller carriers mentioned earlier even offer pay-as-you-go data plans, or will even let you put a smartphone on their network with no data plan at all, provided of course you buy the phone up-front or provide your own (most major carriers won't let you put any smartphone on their network without a data plan. Just ask them).

    And think about it, do you really need unlimited data? You probably have wifi at home, and you probably have it at work. More and more coffee shops, restaurants, and other businesses are offering free wifi. The majority of the time you don't even need data.

    You might even be able to get rid of data altogether. Either way, there are plenty of alternative apps that don't require any data at all. This post isn't getting any shorter, so I'll post about those later. (Edit: you can see that post here: Living with less (or no) data on android).

  7. Trade your contract

    If you do happen to be locked in a contract, but want to switch to another wireless provider, your options aren't limited to waiting it out or canceling your contract. Most providers will let someone else take over your contract. If someone using the carrier you want also wants your carrier, you may be able to simply take over each other's contracts. There are several sites that help facilitate this, but I recommend Cell Escape because it's free.

Friday, September 9, 2011

coming soon: memory-mapped db for OpenLDAP

short version:



I just ran across a site with news of a new database backend for OpenLDAP that's designed to be completely mapped to memory and is supposed to be faster, more memory efficient, and much easier to configure:

Memory-mapped Database for OpenLDAP


long version:



I'm a huge fan of OpenLDAP. not only is it the fastest and most scalable implementation of LDAP (see at the bottom for sources), best of all it's open-source. configuring it for optimal performance, however, is easier said than done. you have to configure indexes, the database cache size, the IDL cache size and of course the good ole entry cache size. Howard Chu, the current chief architect of OpenLDAP, describes the process pretty well:

"...it requires careful tuning to get good results and the tuning aspects can be quite complex. Data comes through three separate layers of caches before it may be used, and each cache layer has a significant footprint. Balancing the three layers against each other can be a difficult juggling act."

the good news: that quote comes from a site I just ran across where Chu announces a new database backend that's designed to be completely mapped to memory, known as "back-mdb". in Chu's description of back-mdb, he uses words like "extremely fast," "memory efficiency," and my favorite, "trivial configuration." I can't wait! (yes, I'm a giant nerd)

Chu said back-mdb will be ready sometime this month at the earliest, but whenever it comes, it will be worth waiting for. here's the link if you want to check out the details:

Memory-mapped Database for OpenLDAP

and here are those sources I promised you, ripped entirely from my wiki:

Wednesday, August 31, 2011

A few good open-license Arabic fonts

Edit: I went ahead and put these here so I can maintain them more easily: Open-license Arabic fonts

Did you know the Arabic script is the second most-used writing system in the world? (source)

In case you happen to be looking for a decent Arabic font for your website, software, or publication, I've run across a few good ones that have an open license:
  • DejaVu Sans and DejaVu Sans Mono
    These fonts support a lot more than just Arabic, but they do Arabic quite well. They come bundled with most GNU/Linux distributions. There are other DejaVu fonts, but as far as I can tell they don't support Arabic.

  • Droid Naskh
    This font was created by the Arabic typographer Pascal Zoghbi for Google. You can read more about it here: http://www.29arabicletters.com/foundry/?m=1-1-1&fid=26

  • DroidSansArabic
    This is the Arabic font for the Android OS. it was commissioned by Google and created by Ascender Corporation.

  • Kacst
    A font from the folks behind the Arabeyes project supporting Arabic on *nix. More about this font and other fonts by Arabeyes here: http://projects.arabeyes.org/project.php?proj=Khotot

  • SIL Arabic fonts
    SIL has released two fonts under an open license: Scheherazade and Lateef. Note that these fonts don't contain individual glyphs for all of the forms (initial, medial, final), and so if you use them in an environment that doesn't support the advanced shaping features of OpenType or AAT (such as Android), the letters won't be properly connected.
Currently unreleased fonts:
  • Shasha
    Yet another Google commissioned font, this one appears to still be in progress. Interestingly, it bears a strong resemblance to DroidSansArabic. You can read more about its development here: http://shashafont.com/

  • Ubuntu Arabic font
    (Thanks to Phil R for pointing out this one)
    It looks like Canonical (the company behind Ubuntu) has commissioned Dalton Maag to create an Arabic font for Ubuntu. Nothing released yet, but here are some previews:
    Ubuntu Arabic, in print!
    Hebrew and Arabic on track
Pretty cool to note that Google commissioned 3 of the font families mentioned. Certainly Google isn't perfect, but they do contribute quite a bit back to the community.

Wednesday, August 24, 2011

How to save money when shopping online

I thought since I referenced it in my last post, albeit subtly, I should mention retailmenot.com, which has saved me a ton of money when I shop online.

Just shop like you normally would from your online retailer of choice. When you're checking out, stop by retailmenot.com, type the name of the site in their search bar, and see if there are any available coupon codes for that site before you complete your purchase. It's completely free.

No, I'm not getting paid by retailmenot.com to say this (not that I would turn down such an offer ;)), but there are a lot of coupon code sites out there, and most of them are garbage. retailmenot.com is the only one I've found that isn't worthless.

So try it out. The worst that could happen is you'll save some money. (Actually I suppose it'd be worse if you didn't save any money, but I digress...)

Monday, August 15, 2011

Cheapest way to unlock GSM phones

Looking to unlock your GSM phone? One word: ebay.

Of course you should always shop around and do some googling, if for no other reason than the fact that some phones can be unlocked for free, in particular many nokia models:

Free Nokia Unlock Codes

But if you do end up having to pay, ebay can save you a lot of money. For instance, I recently unlocked a Motorola Defy using a code I bought off ebay for $8 by searching "motorola defy unlock code." By comparison, this is what some of the unlock sites charge for a code to unlock that same phone (I'm including ebay in this list in case people skip right to this part of the post):

ebay: $8
cellunlock.net: $15 ($30 before coupon code)
cellunlocker.net: $30
cheapunlocks.com: $20
gsmliberty.net: $25
unlockgenie.com: $30
unlockitnow.com: $30

I'll let you do the math ;)

Tuesday, August 9, 2011

re-enable second monitor in linux after it goes blank

solution:



  1. if your resolution was also changed, restore the original resolution:
    xrandr -s 0

  2. re-enable your second monitor:
    xrandr --auto

  3. restore any special setup. for example, I have my second monitor to the right of my first, extending my desktop. this is what I did to get it to work:
    xrandr --auto --output DFP2 --right-of DFP1



DFP1 and DFP2 are the names of my monitors, so that command probably won't work for you. in order to get the names of your monitors, in a terminal, run this command to list the connected monitors:
xrandr -q | grep " connected"

if you run this command before you run xrandr --auto, your disabled monitor should show up in the list without a resolution. for example, in my case DFP2 is the name of the disabled monitor:
$ xrandr -q | grep " connected"
DFP1 connected 1680x1050+0+0 (normal left inverted right x axis y axis) 473mm x 296mm
DFP2 connected (normal left inverted right x axis y axis)


to get the possible options for the --output parameter, just run xrandr --help to list them all.


details:



I have a dual-monitor linux setup, and in particular when running full-screen apps using Wine, my second monitor will go blank. once I close the app, my second monitor stays blank, and all my windows are moved to the first monitor.

up to this point I've been too lazy to figure out how to re-enable my second monitor, and I'd just reboot, which always fixes it. today I finally took the time to figure it out.

of course the best solution to any problem is preventing it in the first place. here's a great article I found on preventing this while I was looking for a solution to my problem:

How to Run Fullscreen Games In Linux With Dual Monitors

Monday, July 25, 2011

an intriguing look at software patents

When Patents Attack!



Why would a company rent an office in a tiny town in East Texas, put a nameplate on the door, and leave it completely empty for a year? The answer involves a controversial billionaire physicist in Seattle, a 40 pound cookbook, and a war waging right now, all across the software and tech industries.

listen to it online now, or you can download the podcast for free for a short time:

http://www.thisamericanlife.org/radio-archives/episode/441/when-patents-attack

Monday, July 18, 2011

Python mysqldb UnicodeDecodeError: 'ascii' codec can't decode byte

Solution:

If you run into the error mentioned in the title of this post using python's mysqldb module version 1.2.1 or less, decode your data/query first:

mydata.decode('utf8')

(modifying 'utf8' to whatever encoding your data happens to be in)

Details:

So I was writing some code in python on Ubuntu, and it was working just fine. When I went to run it in RHEL, I got this error:

Traceback (most recent call last):
File "", line 50, in ?
File "/usr/lib64/python2.4/site-packages/MySQLdb/cursors.py", line 146, in execute
query = query.encode(charset)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 223: ordinal not in range(128)


My first thought was that it was due to the incredibly old version of Python that ships with RHEL 5 (Python 2.4), but it didn't take me long to realize the problem was with the MySQLdb module itself. Ubuntu 10.10 ships with version 1.2.2 of that module, while RHEL 5 ships with version 1.2.1. A minor difference, but apparently in that time this bug was fixed:
http://sourceforge.net/tracker/index.php?func=detail&aid=1521274&group_id=22307&atid=374932

Apparently MySQLdb 1.2.1 tries to indiscriminately encode the data to be put into the database to utf8 (well, at least when you specify utf8 as the database character set), without checking whether the string is already utf8 or not. My solution was just to decode my data from utf8 (to unicode) before passing it to my mysql query, at which point the encoding works just fine.

Like so (the first line's the relevant one):

mydata.decode('utf8')
query = ('INSERT INTO %(database)s (%(column)s) VALUES (%(value)s)' % {'database': database, 'column': column, 'value': mydata})
cursor.execute(query)


Of course, you should modify the 'utf8' part to whatever encoding your data is in.

Edit: If you're using MySQLdb.escape_string(), make sure you run that first before doing the decode, like so:

MySQLdb.escape_string(mydata).decode('utf8')

Friday, June 3, 2011

R.java: No such file or directory


solution:




  1. run this in a terminal:
    rm ~/.android/debug.keystore


  2. rebuild your project: go to Project --> Clean --> Clean projects selected below --> check your project --> OK







backstory:



okay, so I was tinkering with android today in Eclipse, and all of a sudden, my android project shows it has an error. not on any particular file, but on the project itself. normally when I get random errors, I select the project and go to Project --> Clean. today, that didn't work.

I wasn't seeing anything helpful in the console. after cleaning the project, I saw this in the console:

[2011-06-03 15:21:52 - android_test] ERROR: Unable to open class file /home/user/workspace/android_test/gen/us/test/test/R.java: No such file or directory

that was weird, because the file existed. so I went ahead and deleted the gen folder and rebuilt the project (which is what the clean command basically does), and still got the same error.

thinking my eclipse installation was corrupted, but too lazy to reinstall, I restored backups of various folders. no dice. I reinstalled the android SDK tools. nope. I checked permissions, tried reimporting my project, even tried creating a new project, and nothing worked.

finally, out of desperation, I deleted the .android folder in my home directory. success! after looking further into the issue, I found the solution here:

http://stackoverflow.com/q/2194808/399105

although what frustrates me the most is I never saw any errors related to the debug certificate.

of course, wanting to know the details, I ran the keytool command on my backup of the old keystore (the keystore password is "android"):

keytool -list -keystore ~/Desktop/android-backup/debug.keystore -v
Enter keystore password:

Keystore type: JKS
Keystore provider: SUN

Your keystore contains 1 entry

Alias name: androiddebugkey
Creation date: Jun 3, 2010
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: CN=Android Debug, O=Android, C=US
Issuer: CN=Android Debug, O=Android, C=US
Serial number: 4c07f835
Valid from: Thu Jun 03 13:45:09 CDT 2010 until: Fri Jun 03 13:45:09 CDT 2011
Certificate fingerprints:
MD5: 49:56:C0:A8:02:9F:38:97:81:D1:22:BA:F3:50:17:23
SHA1: 3D:E8:57:A1:87:97:45:EA:AD:E2:03:66:29:3A:36:DE:9F:F5:35:43
Signature algorithm name: SHA1withRSA
Version: 3


...and there's my exact problem: it looks like the debug certificate generated by the Android SDK is only good for a year.

oh well, at least I'm back in business :)

Edit:

argh, I just ran into this again, but it took me a while to find it because this time the error was "Your project contains error(s), please fix them before running your application." selecting the project, then going to Window --> Show View --> Problems gave me the error "R cannot be resolved to a variable". gotta love these detailed errors...

well I shouldn't run into this again because Google's changed it so now my debug certificate is good for 30 years :)

Wednesday, June 1, 2011

nullege.com: search python source code

the title sums it up pretty well. I know you can find just about anything using google, but supposedly nullege.com is a little smarter when it comes to python. it's a cool idea, at any rate. I haven't had a need to try it out yet, but I'm sure I will before long:


http://nullege.com/

Tuesday, May 10, 2011

let FCC know how you feel about AT&T/T-Mobile merger

as is most everything I post here, this isn't recent news, but the FCC has a comment filing system where you can let them know how you feel about the proposed acquisition of T-Mobile USA by AT&T. go here:

http://fjallfoss.fcc.gov/ecfs/hotdocket/list

and select proceeding number "11-65".

source: http://www.dslreports.com/shownews/FCC-Wants-Your-Thoughts-On-ATT-TMobile-Merger-114028

Wednesday, April 6, 2011

libgssapiv2.so.2: undefined symbol: gss_nt_service_name

More compiling woes...

This time I was compiling cyrus-sasl 2.1.23 for use with OpenLDAP. I got it all compiled, and tried to run and ldapsearch using GSSAPI, but I got this error:
$ ldapsearch -b dc=example,dc=com -LLL
ldap_sasl_interactive_bind_s: Unknown authentication method (-6)
additional info: SASL(-4): no mechanism available: No worthy mechs found


When I looked at /var/log/messages, I saw this:
Apr 6 16:42:01 ldap ldapsearch: unable to dlopen /usr/local/lib/sasl2/libgssapiv2.so.2: /usr/local/lib/sasl2/libgssapiv2.so.2: undefined symbol: gss_nt_service_name
Apr 6 16:42:01 ldap ldapsearch: No worthy mechs found


I realized that for some reason the SASL GSSAPI plugin wasn't compiling, which I noticed when I ran /usr/local/sbin/pluginviewer -s (Plugin "gssapiv2" [loaded] wasn't in the list)

After googling, I found a possible solution here:
http://lists.freebsd.org/pipermail/freebsd-questions/2011-January/226495.html

But I didn't like it because it seemed a little hackish. then I ran across a patch posted here:
http://lists.freebsd.org/pipermail/freebsd-questions/2011-February/227044.html

It seemed like a much better solution, but there seemed to be quite a bit in the patch that wasn't relevant to my problem, so I trimmed it down to two changes:

--- configure.dist 2011-04-06 10:30:07.000000000 -0500
+++ configure 2011-04-06 11:25:17.000000000 -0500
@@ -11122 +11122 @@
- if test "$gss_impl" = "cybersafe" -o "$gss_impl" = "cybersafe03"; then
+ if test "$gss_impl" = "cybersafe" -o "$gss_impl" = "cybersafe03" -o "$gss_impl" = "heimdal"; then
@@ -11193 +11193 @@
- if test "$gss_impl" = "cybersafe" -o "$gss_impl" = "cybersafe03"; then
+ if test "$gss_impl" = "cybersafe" -o "$gss_impl" = "cybersafe03" -o "$gss_impl" = "heimdal"; then


You can download the raw patch here:
https://gist.github.com/bmaupin/2a4d08edc128d785ad46

Thursday, March 31, 2011

elementary OS: T minus 9 hours and counting

if you've been to the elementary OS website lately, you've probably noticed it now consists of a countdown timer:

http://elementaryos.org/

it looks like it's counting down to midnight (00.00) april 1 (UTC), so I'm guessing that's when elementary OS will finally be released.

I can't wait! with a slick, clean interface and many of the elementary team's apps that I've posted about before, this just might be good enough to replace Ubuntu. I know I'll definitely be checking it out.

Wednesday, March 30, 2011

heimdal 1.4 missing lib/otp/version-script.map

I was compiling Heimdal kerberos 1.4 on RHEL 5.6 and got the following error:

/usr/bin/ld: cannot open linker script file ./version-script.map: No such file or directory

After some poking around, it appears that lib/otp/version-script.map is missing from the 1.4 source, which is weird since I downloaded it right from the big "Download 1.4" link from their website (http://www.h5l.org/), which links to http://www.h5l.org/dist/src/heimdal-1.4.tar.gz.

So, to fix the problem, you can download the missing file right from their git repo, here: https://github.com/heimdal/heimdal/raw/e3044663df2cfcafd5bf4e2ea6f2a1ba1503d8ea/lib/otp/version-script.map

Just place it in heimdal-1.4/lib/otp, and you should be good to go.

So the whole process would look something like this:

wget http://www.h5l.org/dist/src/heimdal-1.4.tar.gz
tar xvf heimdal-1.4.tar.gz
wget --no-check-certificate https://github.com/heimdal/heimdal/raw/e3044663df2cfcafd5bf4e2ea6f2a1ba1503d8ea/lib/otp/version-script.map -P heimdal-1.4/lib/otp


...and then you can go on with the configure, make, etc. to build it.

Edit:
Of course if you don't care about OTP (one time password) support, you can just disable this altogether when compiling and not worry about the missing file. Just add the "--disable-otp" flag when running the configure command:

./configure --disable-otp

Thursday, March 24, 2011

AT&T to purchase T-Mobile; corporations: 1 consumers: 0

With the recently announced purchase of T-Mobile USA by AT&T, it's evident that the only winners are going to be AT&T and T-Mobile themselves.

There's nothing good in this for the consumers. T-Mobile is the cheapest out of the four major nationwide carriers in the US. They're definitely cheaper than AT&T. With them gone, US customers will be forced to pay higher rates. AT&T claims that by acquiring T-Mobile they can lower their costs, and supposedly (1) they're going to pass on some of that savings with the customers. Sure they will. When's the last time you heard of a major corporation lowering prices, unless it was forced to by competition? If they can get away with making more money, they're going to do everything in their power to do just that.

And that brings me to my next point: competition. With T-Mobile out of the picture, there's less competition. Somehow or another AT&T is actually claiming there's plenty of competition! (2) What a joke. It doesn't take a PhD in economics to realize that less corporations in a given market = less competition = higher prices.

To top it off, T-Mobile is one of the few US carriers (along with AT&T) using a GSM-based network. Most people probably don't care, but for those who travel and want to use their phone outside the country, the options are already limited, and will be even worse after the merger. So if you want a GSM carrier, guess who that leaves? AT&T. Not only will you have to put up with higher prices, but you'll have to put up with their silliness, like blocking non-Android market apps on Android phones.

Ultimately the consumers are the losers in this deal.


1 "AT&T has promised to spread some of that windfall around"
http://tech.fortune.cnn.com/2011/03/21/att-mobile-merger-brings-efficiencies-but-will-consumers-see-the-benefit

2 "'The U.S. wireless industry is one of the most fiercely competitive markets in the world and will remain so after this deal'"
http://tech.fortune.cnn.com/2011/03/20/att-mobile-and-verizon-is-sprint-third-place-in-a-two-man-race

Thursday, March 17, 2011

Make free wifi/data calls on your android device

Update: I've blogged more recently on better ways to do this, so you might want to head here instead:  Free wifi/data calls on your smartphone, part 2


Note: this will only allow you to make calls to US numbers, excluding Alaska and Hawaii, as that's all the Whistle Phone service supports. See the last paragraph of this post for alternative options.

  1. Go to whistlephone.com, download their software to your desktop, and register for a free account.

  2. Download the CSipSimple app from the android market
    Here's the QR code:
  3. Open CSipSimple, choose the integration you want, then click Add Account. Then scroll down to Generic wizards --> Advanced.

    • Account name: whatever you want

    • Caller ID: your whistle phone number

    • Server: proxy.whistlephone.com

    • Username: your whistle phone number

    • Password: your whistle phone account password

    • Use TCP: leave unchecked

    • Proxy: proxy.whistlephone.com
And that should be it. You can now make calls using your Android device's data connection (wifi, 3G, 4G). If you chose to integrate with the native dialer, just make sure to choose the whistle phone account you created. If not, just open up the CSipSimple app to make calls.

For outgoing calls, it seems to take a good while to connect (about 15 seconds), then you have to listen to 10-second ad. Incoming calls seem to go through pretty quickly, though, and neither you nor the calling party has to listen to any ads.

The CSipSimple app mentions lots of other SIP providers, so maybe one of them is free and has better connection times for outgoing calls (perhaps even ad-free), or will even allow you to call different countries for free, but I haven't checked any of the others out yet.

Update: since I posted this, Whistle Phone limited inbound and outbound calls to 20 minutes. you can read more about that here: https://www.whistlephone.com/naywa. also, I did take the time to look into the other US SIP providers mentioned in the CSipSimple app, and none of them allows you to make free calls except to users using their service. but if you do hear of a better SIP provider, let me know!

Thursday, March 10, 2011

windows woes

It's days like today that I'm grateful I'm only a minimal Windows user... I decided to reformat my Windows XP virtual machine today, and I've spent half my day installing updates, rebooting, installing more, over and over again. I literally don't think I can count on one hand the number of times I've had to reboot. Which seems crazy to me considering I started out with SP3.

Then I get to deal with the frustration of downloading software that's bundled with other software I don't want. Take Adobe Reader, for example. First of all, it comes bundled with some Mcafee software I don't want. Thankfully that's an easy fix: I just uncheck a checkbox. But then, it tries to force me to install a browser plugin. Not seeing an easy way around that, after some Googling I found this page, where I could download the redistributable installation files, although (unless Adobe Reader's just really big), I'm pretty sure I ended up downloading way more than I needed. As if all that wasn't enough, it configures AdobeARM and Reader_sl to load on startup. I have no idea what they do, but I disabled them.

I'd prefer to use something like Foxit, but Adobe must be getting wise to the mass defections from their bloated software, because they seem to be continually inventing new ways to force you to use their software.

Then I look at my hard drive, and I've already used 10G, just for Windows itself, Forefront security client, vmware vSphere, and MS office. I really don't know how all you windows folks do it. I'm guessing it's because you haven't realized there's anything better out there (which in my opinion constitutes just about anything else) ;)

Well, gotta go. My VM just finished another batch of updates. I need to reboot and do it all over again...

Edit:
after posting this I realized it's pretty whiney. I probably should have waited until I was less frustrated to post. obviously not all of my complaints in this post even deal with windows itself, and are directed more toward crummy, bloated apps like Adobe Reader. of course, it's still nice that GNU/Linux only makes me reboot for kernel updates, and that it takes up less space :)

Wednesday, March 9, 2011

python's only problem: concurrency

python has its naysayers, but that's what jealousy will do to you :) seriously though, python does have one major issue: concurrent/parallel programming. now I'm no engineer, and I'm sure this is an oversimplification, but three ways of accomplishing this are:


  1. using multiple threads

  2. using multiple processes

  3. event-based programming



the main killer out of these three is trying to do multi-threaded programming in python. the short answer: don't. when Python was designed, it was given the philosophy that people using it should have to worry about as little as possible under the hood. while that's great, the way the python threading library was designed makes it inefficient for CPU-bound tasks. essentially, the more threads you use in python for CPU-bound tasks, the slower your code will be. ironically the problem seems to be even worse on machines with multiple processors. the problem has a name: the Global Interpreter Lock (GIL). you can read more about it here:

http://wiki.python.org/moin/GlobalInterpreterLock

there's also a great presentation that explains the problem pretty well if you have time to watch it. I'll put it at the bottom of this post.

then there's the issue of event-based programming. the problem in this arena (in my opinion, of course) is that there are too many choices for event-based programming, and none of them are included in the python standard library, so there's no standard as of yet.

lastly there's multi-process programming, which thankfully is in a better place than the other two. although it's only been fairly recently (within the last couple of years), python now has a multiprocessing module in the standard library. so if you're looking to write some concurrent/parallel code, I'd say start with here before wading through the alternatives that aren't in the standard library:

http://docs.python.org/library/multiprocessing.html

as the speed of computing becomes increasingly more about multiple processors than faster clock speed, the more important this issue will be. thankfully there's a standard solution (the multiprocessing module) as well as plenty of alternatives, and hopefully in the near future one or two of these alternatives will become standard, if not at least de facto.

here's a page that has links to some resources related to concurrency in python, as well as links to plenty of the afore-mentioned alternatives:

http://wiki.python.org/moin/Concurrency

and here's that video I promised:
[blip.tv ?posts_id=2243379&dest=-1]

Tuesday, March 8, 2011

Python and MySQL autocommit

Solution:

If your MySQL database is using the InnoDB engine, commit your changes after database transactions:
cursor.connection.commit()

Or just turn on autocommit to automatically commit after every database transaction:
cursor.connection.autocommit(True)

Details:

So I was using python's MySQLdb module to edit a mysql database, and I noticed that even though python was telling me my modifications were taking place, I wasn't seeing any changes. in addition, when I would log onto the database from something other than python and try to make changes, I would get this error:

ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction

Well apparently, the mysqldb module now disables mysql autocommit by default. so now, when I'm done with my transactions to the database, I need to commit my changes by calling the commit() function of the connection object. the connection object is what's returned when you call the MySQLdb.connect() function. I haven't really been using that object in my code other than to create the cursor object, which is what I normally use:

db = MySQLdb.connect(...)
cursor = db.cursor()


But the cursor can access the connection object, which I can then use to commit the changes:

cursor.connection.commit()

The strange thing with all of this is that I just started noticing this problem, even though according to the MySQLdb module authors, this functionality (disabling autocommit by default) has been in place since version 1.2.0 of the module. but when I look at the package versions of python-mysqldb for Ubuntu (what I'm currently using and have been for a while), it looks like it's been past version 1.2.0 for the last several years:
http://packages.ubuntu.com/search?keywords=python-mysqldb&searchon=names&suite=all&section=all

Maybe this "feature" has just recently made it into Ubuntu's package for this module. or maybe I'm missing something else here. at any rate, at least I know what's going on.

You can see here for more information:
http://mysql-python.sourceforge.net/FAQ.html#my-data-disappeared-or-won-t-go-away

Edit:
Okay, so apparently what happened is in my other code where I was modifying mysql databases, they used the default engine (MyISAM). the database I was having problems with was using the InnoDB engine, which is a transactional storage engine. this explains why I just now saw this issue.

More information here:
http://stackoverflow.com/questions/1617637/pythons-mysqldb-not-getting-updated-row

As well as an alternate solution: instead of committing after every transaction, I can turn autocommit on when I'm working with databases using the InnoDB engine, so they'll function just like the rest:

cursor.connection.autocommit(True)

Monday, February 28, 2011

Vala, Vala everywhere!

...okay, okay, maybe not everywhere. But since I posted on Vala a while back, I've noticed a couple of teams in particular seem to have embraced it wholeheartedly. What's really cool is that these teams have been writing some really impressive software for GNU/Linux in Vala. Nearly all of these software projects were started within the last year or two, and these aren't your grandma's Linux apps. These are sleek, fast, and have a strong focus on usability and a nice, clean interface. They're really worth checking out.

Here are the teams and their software:
  • Yorba
    • Shotwell (photo organizer)
      This one's extra impressive because in less than two years it's gone from brand new project to the default photo manager for top GNU/Linux distributions Ubuntu and Fedora
    • Lombard (video editor)
    • Fillmore (music recorder)

  • Elementary
    These guys started out creating slick themes for Ubuntu, and before long started making their own apps. They've started up so many software projects, particularly in the last year, I don't know how they could possibly have time to work on them all:
Elementary has another app named Dexter, an address book, and although it's currently written in Python, I wouldn't be surprised to see it go the way of some of their other apps like Purple.

There's also Midori, a lightweight browser, which I don't think the Elementary team started, but I know they contribute to it, and somehow or another Vala is involved, possibly due to their influence.

As if that wasn't enough, next month the Elementary team is releasing their own GNU/Linux distro, based on Ubuntu, but with a cleaner interface and packaged with many of their apps. Here's an early screenshot:

Thursday, February 17, 2011

Tuesday, February 8, 2011

Connecting to a Windows machine via RDP from GNU/Linux

For a while I used a program called Terminal Server Client (tsclient), a frontend for rdesktop, to connect to Windows machines from GNU/Linux using native Windows RDP. While it worked, it wasn't the greatest. For one, it seemed that in order to save my connection settings, I had to save a separate .rdp file for every server. And then if I wanted to connect to another server with its saved settings, I'd have to open the .rdp file for that machine. pretty annoying. In addition, when I would log out of the remote server, tsclient would present a popup saying that the connection was terminated, and after 30 seconds try to reconnect. Neither issue was a big deal, but it was kind of irritating. I confess that I never even looked for a solution to either one, so they both may have been easily solvable.

But now it doesn't matter, because I just stumbled upon a new RDP client called Remmina, thanks to this post. Remmina is quite nice, and solves both of the main issues I had with tsclient. Perhaps it will present some issues of its own, but so far, it's won me over.

I'm sure it's available in the repositories for most distributions. At the moment I'm using Ubuntu, and so to install it, I ran this in a terminal:
sudo apt-get install remmina

Here's a screenshot:

Saturday, February 5, 2011

Why I'm probably switching from Ubuntu, pt 3 (future)

In my last post, I discussed why the direction Ubuntu's taken recently has left me less than satisfied.

The future?

In short, I'm not really sure.

I think I've been using a Debian-based distro for so long that it'll probably be something along those lines. I did use Fedora for a while (6 months-ish) when I came to my present job. Honestly one of the most frustrating things was there seemed to be a major fracture in it's external repositories. Maybe I was just trying to install some weird stuff, but it seemed to me like a lot of what I wanted was in one repository, but some was in another, and the dependency conflicts eventually became too much. At any rate, at the time I was longing to get back to Ubuntu.

As far as Debian-based goes, the three that pop into my mind are:

  • Debian
    Switch from Ubuntu to Debian? Not unheard of, actually:

    Considering my major complaints with Ubuntu right now are stability and the new direction it's taking in terms of features, Debian would be a logical choice. At least from an outside perspective, it seems more balanced than the one-person (Mark Shuttleworth) distro that Ubuntu seems at times.

  • Mint
    I'm still not really sure why Mint exists, but to be honest I just haven't looked into it. The only advantage that I know of is that it's green instead of the ugly brown/purple that Ubuntu has used. A big disadvantage would be that I believe it's based on Ubuntu, so it may inherit many of the issues I have with Ubuntu right now. But I can't knock it til I try it.

  • Elementary
    Again, this one is Ubuntu-based, and so could inherit many of the issues I have with Ubuntu. But this one looks really amazing. I especially love the focus on simplicity. Sometimes when you have software written by geeks (and often for geeks) like GNU/Linux, simplicity gets lost in the quest for gobs of features. Quite often this ends up making me less productive, as I sift through buttons that I'll never use to find the one I want. But less really is more. And Elementary looks very promising.



Who knows what will happen. There's a strong chance I'll be too lazy to switch from Ubuntu, or that I'll try other options and come back. But Ubuntu definitely isn't on the pedestal it once stood. And maybe it's not the end of the world after all.

Saturday, January 29, 2011

Why I'm probably switching from Ubuntu, pt 2 (present)

As I was saying in my previous post, some things began happening with Ubuntu that I haven't particularly been too fond of, especially recently.

To sum it up, I think the focus of Ubuntu has moved away from a distribution which is easy to use while still pretty stable, to one that is more concerned with features. It seems to me that the developers, and probably the leadership, are more concerned with adding new bells and whistles than they are with spending time making sure what they have works. And that's pretty frustrating when you use Ubuntu on a daily basis at work and home.

To be sure, there are bugs that arise every time a new version of pretty much anything comes out. Even companies with gobs of money, like Microsoft (especially Microsoft), can't catch everything. But it seems like the past couple upgrades of Ubuntu have brought quite a few relatively minor bugs, that are collectively driving me crazy.

I'm currently using Ubuntu 10.04 at work now. It's called a "Long Term Support" release, which means it will be supported for two years. To me, that means it should probably be pretty stable. And it is relatively stable, but it's also got quite a few annoying bugs that I encounter on a daily basis:


Okay, so those are a few of the annoying bugs I've dealt with. Now, for some of the annoying "features":

  • Window buttons (close, maximize, etc.) were consolidated and moved to the left.
    Sounds silly to complain about, I know, but I can't help but feeling like Mark Shuttleworth simply made this decision on his own, especially when I've only heard complaints about it. It doesn't seem to me like this was a community decision, but maybe that's just one of the things you have to deal with when one person has so much say over something. By the way, if you don't like this, you might want to go here and vote: http://brainstorm.ubuntu.com/idea/23899/. Not sure it will accomplish anything, but it doesn't hurt.

  • Empathy was chosen to replace Pidgin.
    Okay, I ,know telepathy is a better basis for a chat client than libpurple, but that doesn't mean Empathy is better than Pidgin. It's extremely basic and has no support for text formatting or buddy pounces (the developers refuse to implement the latter: https://bugzilla.gnome.org/show_bug.cgi?id=576120) As far as I understand, they don't even have a plugins API: https://bugzilla.gnome.org/show_bug.cgi?id=547208. How is that better, again? And which Ubuntu users were involved in that decision?

  • Ubuntu One
    I installed the Ubuntu One Firefox plugin. Firefox restarted, never came up. I tried again, nothing I know it's new technology, but did anyone even test this thing? I installed the Tomboy notes plugin, and now they go grey every few minutes (not allowing me to type or even select text), even though I have them set to sync once a day.

  • More bad decisions, like libstdc++.so.5 being intentionally excluded from the distro and repositories.



How is it that Ubuntu 10.04 came out nine months ago, and yet these bugs still exist, especially when it's an LTS release?

I guess the bottom line for me is that while all of these issues are relatively minor, they all add up. What they're adding up to is a distribution that's off-focus, and what I'm left with every six months (each time a new version of Ubuntu is released) is a distribution with more new bugs that could have been fixed if a minority at the top didn't have developers spending their time instead on more new features that I didn't ask for.

Am I being dramatic? Perhaps. But when I'm at work, I need to be getting work done, not dealing with a thousand paper cuts that these new bugs and "features" have become.

Up next, the future. Well, some possibilities at least.

Saturday, January 22, 2011

Why I'm probably switching from Ubuntu, pt 1 (past)

I feel like I've recently begun a journey, and although I'm not sure where the destination will be yet, I'm pretty sure it doesn't involve Ubuntu. Before I go into why I'm considering switching from Ubuntu, I suppose I should start with how I started using it.

When I started using GNU/Linux (henceforth abbreviated to Linux, cause, well, I'm lazy) in the late 90's, there weren't many options. I tried Red Hat, but even the most basic tasks (like flash or mp3 support) seemed to require a gajillion commands that I frankly wasn't familiar with nor did I have the patience for. I eventually happened upon a copy of Mandrake in a store, and although I didn't use it very much, it became my distro of choice for quite a while. I remember I liked it because it made the simple things relatively simple.

At some point, however, I realized that it wasn't really all that stable. The system would give me problems on a regular basis, and I began looking around at other distributions. Red Hat, while stable, still didn't make life any easier. I tried Debian but couldn't even get past the installation. For a while I dabbled with Slackware, but that was just too much work.

Around this time, Ubuntu came out. Mind you, it seems like a new distribution of Linux pops up nearly every week, and it's been that way for a while, so I didn't pay too much mind to it at first. But then I began hearing things. Good things. Often. Finally, a close friend convinced me to try it out.

It was a bit hard at first to get used to a .deb-based distro (as opposed to .rpm-based). But I soon forgot about that, because what I found was a distribution that was easy to use, with some of the latest software (like Mandrake), pretty stable, and with an ever-growing support community. I've been using it ever since.

I'm using it right now, in fact.

Maybe I'm just slow, but it seems like recently that my path, which has been following the path of Ubuntu for years now, has started to go places that I really don't want do go, however.

And on that note, I'll leave you to ponder where those places might be, until another time.