Pages

8.25.2013

Beginning Android programming

This summer I decided to engage in some extracurricular coding; I bought an e-book on Android programming and began typing away.   I soon realized that I really had no idea  what it was that I was doing.  It's pretty difficult to actually understand the code you're writing if all you're doing is typing the sample code segments from the book.

I decided that I needed to venture away from the book and write an app of my own.  Additionally, I wanted to gain some experience with version control software, so I created a Github account to hold my project.  And thus Better Shopping List was born.

Over the past 10 days, I've brought a very basic list keeping app into existence with minimal copy/pasting from the internet.  As the project has progressed, I've been forced to consult the Android API many times in order to solved my problems.


6.15.2013

Setting up Ubuntu on an older iMac

What does one do with a Core 2 Duo iMac that only has one gig of RAM? OSX Lion requires at least 2 gigs of RAM, and older version of OSX are hard to come by, legally that is.  I decided that the best thing to do with an  (almost) junker machine was to install Ubuntu.

I acquired this Mac from a friend under the terms: "If you can fix it, you can keep it."  The machine needed a logic board replacement for starters, as it wouldn't boot.  I came across a replacement on eBay for the low price of $20.  Once I had that up and running, I grabbed my trusty OCZ Vertex 2 SSD from my desktop and slapped it in the Mac (Why not, I had it open anyway).

Read the install instructions after the break.

6.06.2013

WTF Microsoft!?

I'm down to the last few days of the quarter, so I decided to use my CS benefits and download Windows 7 from Dreamspark.  I may never use it, but hey it's a free copy of Winderp.

In order to download a the ISO, M$ makes you install their Secure Download Manager.  This pile of crap only runs on Winderp and OSX, so I couldn't use it on my Linux desktop.  I guess I can't blame them though; open source operating systems aren't secure and are mainly used by pirates.  So I ran the SDM on my Macbook pro instead.  It's nothing more than a browser display with no menu buttons.  The worst part:  it uses 70% of a CPU core while downloading!  WTF?  I guess that's what I get for trying to use an M$ software on a Mac.


In the process of writing this article, I got the following lovely window.


And to rub salt in the wound, I reopen the program to find the download is at 99% completed.  No problem, I just click resume.... And it crashes again.

Maybe I don't need Winderp after all.



4.17.2013

Coding Derp of the day

As I write more and more code in my CS classes, this type of post could become a regular thing.


This code actually works.

The function above simply asks the user if he/she would like to go again, used for whatever.  If the user answers yes or no, the function returns 1 or 0.  Otherwise it loops again until the user inputs yes or no.  The "for" loop capitalizes each character in the response so that the input string can be of any case.

Here's the derp I made.  I forgot to initialize "i" to 0 (line 57) each time the main loop runs, so if the user entered an invalid answer the first go around, "i" was incremented to 10 and never reset.  Any subsequent go-rounds would never enter the for loop to capitalize the input, therefore entering "yes" was not being considered as valid because "yes" is not the same as "YES"!

Anyway, I spent about 30 minutes debugging this one thinking it was some sort of input buffer issue with new line characters.  Hope that somebody else can learn from my mistake.

4.11.2013

Das keyboard modding

You can go anywhere and read somebody else's review of the Das Keyboard Ultimate.  I bought mine this week and I love it so far.  But the one irritating thing is the plastic on plastic banging sound when the keys bottom out.  I've never been a good touch typist, so I inevitably bang on the keys harder than I need to.  The solution to the obnoxious noise: O-rings under the key caps.

To do this project yourself, you'll need a few tools and some O-rings.

I recommend the following key cap puller tool: link
These o-rings also worked well for me: link

You should also grab a set of long nose pliers for removing the large keys from the stabilizers.

The process itself is fairly straight forward.  Spread the puller tool over a key cap and pull upward.  The larger keys will require you to use the pliers to pull outward on the stabilizer bar in order to remove the key.


Pitfalls to avoid:
  • Avoid removing all the caps at once.  Each row is slightly different.
  • Put the keys on the right way. The flat side of the key faces the back of the keyboard. (When you look at a key from the top down, once side is noticeably less slanted.
In case you do make the mistake, the keys are stamped on the backside with a row number and another number.  If you screwed this up like I did, here is a little diagram.

`1234567890-=    (No row number) tallest
qwertyuiop[]    (R3)
asdfghjkl;'    (R2)
zxcvbnm,./    (R1) shortest


The actual placement of the keys within the row does not seem to matter from what I can tell.

If you're wondering what is sounds like when you're all done, have a listen.  The first set is from the un-modded keyboard, the second part of the clip is from the keyboard after the O-rings have been installed.  Listen on soundcloud.  Sorry, I couldn't place the widget on this page, the soundcloud widget was causing Chrome to tweak out.


2.08.2013

Evo 3D stock ROM results

It has now been officially one week of using the HTC stock ROM on my EVO 3D.  Here is the TL;DR version in bullet points of my findings.

Pros

  • Excellent idle battery life -often lasted two days
  • SMS and MMS working
  • Calling works without drops
  • GPS / navigation works
  • Keyboard is acceptable once calibrated and tracing is enabled (Yes, the stock keyboard has trace gestures)
  • 3D camera works (Not that I care)
  • ROM is smooth overall
Cons
  • Battery life is drained quickly my doing anything on the phone (screen on)
  • Data speeds are slow ( more likely a VM issue)
  • GPS slow to lock on
  • Keyboard suggestions are usually wrong, typing on the keyboard is sucky
  • Sense is an ugly UI with overly detailed icons, which are all too similarly colored.

Under light loads, this ROM allowed
my EVO 3D to go over a day before
recharging. 
In more words, the stock ROM isn't all that bad.  Other than the fact that many of we power users are not fans of the Sense bloat, the stock ROM performed well enough to get me through the week.
Using the latest radio firmware version, the stock ROM had no problems sending or receiving texts or MMS.  As many of you may be aware, the original radio firmware often produced errors when sending text messages.  The signal indicator frequently jumped from full signal down to 1-2 bars and back however.  Other than slow, data speeds the signal fluctuations didn't seem to affect functionality of the phone.

A small but important issue that bothers me about the stock ROM, is that it holds certain preset associations for apps instead of asking the user each time.  For example, when I click a link in an email, it open the stock browser.  If I want to change this behavior, I navigate through the system settings menu and choose a different app to associate with URLs.  I want to be able to choose each time which browser I use.

The keyboard on the stock ROM out of the box is utterly useless.  It is totally uncalibrated so hit detection is off by an entire key.  I was continually pressing 'O' instead of 'I' or 'M' instead of 'N'.  Once calibrated however, the Sense keyboard is on par with other traditional android keyboards.  Enabling tracing makes the keyboard function much like Swype, except better in most cases.  Although I installed Swiftkey, my favorite keyboard, I was never irritated enough by the stock keyboard to need to use it.

While I hate the interface of the stock ROM, and it lacks power user customizations that I'm used to, I could continue to use it on a daily basis.  The stock ROM is reasonably smooth and gets me through the day with battery life to spare.  Stay tuned for my thoughts on CM10 next week.

1.24.2013

ZR3D for EVO 3D Review

Let me start off by saying that I have been very impressed with this ROM as a whole.  The words smooth and stable come to mind.  What this ROM lacks in features, it compensates for with performance and great battery life.

Pros
  • Excellent battery life
  • Smooth interface under normal usage
  • Simple, elegant stock theme
  • Stock keyboard is actually usable!
Cons
  • Layout forgoes many of the quick settings I have become accustomed to
  • Lag issues when installing apps from market
  • Stock browser is garbage
  • Still not a fan of the HTC Sense UI
  • Has quite a few "bloat" apps to begin with
The most noteworthy bullet point of this ROM is the battery life.  I would not consider myself a heavy user of my phone.  Again, I usually do a few Google searches, 10-15 minutes of web browsing, send and receive 40-50 text messages, and talk 5-10 minutes every day.  ZR3D beats the pants off all other ROMs I have tested for battery life.  Most days my phone's battery was above 70% when I plugged it in after 12-14 hours.  Several times the battery was able to hold out for a solid two days.

Another very surprising highlight of this ROM is the keyboard.  While I despise the layout of the HTC Sense keyboard,  I was actually able to hit the buttons I wanted 90% of the time.  The keyboard even includes swipe gestures, which while handy for longer words, often recognized simple words as strange acronyms or slang, making me avoid swipe most of the time.  The keyboard also doesn't auto space after a prediction is selected; I often found myself making up new compound words.  

The layout of this ROM is a stripped down version of HTC Sense.  All of the shortcuts have been removed from the lock screen; the only option remaining is "unlock."  There are no quick toggles in the notification menu either by default, however they can be enabled in the "Tweaks" panel.  Everything else is pretty much HTC Sense with a nice theme.  The same Sense complaints remain.  The icons are overly detailed and distracting.  The homescreen animations are cheesy and useless.  And the glossy 3D button look is about 10 years out of date.

Glossy buttons need to DIE!

Overall, the ROM is very stable and smooth.  One last thing: ZR3D is a 2.3 Gingerbread based ROM.  You wont have Google Now or other modern Android features.  If you don't need a ROM loaded with features and options, this ROM is most definitely for you.

1.11.2013

Team DIRT AOKP for Evo 3D

This review is long overdue, as it has been over two weeks since my CM10 review.  It's been hard to find time to change ROMs, but I finally was able to switch this afternoon.  This review will cover Team DIRT's build of AOKP for EVO 3D. Keep in mind that this ROM was intended for the Sprint phone, but I am using an EVO V on Virgin Mobile, and my results may not be indicative this ROM's behavior for Sprint devices.  Version 3.5.2 was used in this evaluation.

Pros
  • Working video camera, camera and photo sphere
  • Highly configurable
  • Stock keyboard supports swipe gestures
  • UI feels like AOSP
  • Working Maps and GPS

Cons
  • Sluggish UI
  • Wi-fi connectivity issues
  • Keyboard swipe animation lag badly
  • In call volume too low to hear in moderately noisy environments
  • No MMS support
  • Battery life not as good as CM10 or Sense
  • Wake locks keep phone awake more often than it should be
AOKP for EVO 3D,  while not an awful ROM, never felt production quality.  There was an ever present lag throughout the whole UI, which was only amplified as I switched between applications or copied files to the phone.   The keyboard worked fine fine when using swipe gestures, but the floating word preview was always laggy, and the font used for the word preview gave the keyboard a hacked up feel.  

In addition to UI problems, on several occasions I needed to pull the battery from my phone.  After pushing the screen-on button, the backlit capacitive buttons would glow but nothing would appear on the screen.  Even after multiple attempts to wake the phone, nothing would display on the screen.  There never seemed to be any rhyme or reason for this to occur.  Apps also crashed on numerous occasions, usually the System UI or messaging following heavy usage.

Battery life was nothing stellar either.  While I was able to make it through normal usage every day, I usually ended up with 30 - 40 % remaining.  Most days usage consisted of 10 -20 minutes of talk, 40 -50 texts (sent and received) and very light web browsing (two or three Google searches).  

Wireless connectivity was also troublesome with this ROM.  Even after connecting to a wi-fi network, the phone would become stuck using the 3G connection, which was too poor in most cases to even transmit data, resulting no Internet connectivity at all.  I experienced this issue with multiple wi-fi networks in multiple cities, therefore, the issue lies with the ROM, not the wi-fi access points.

This ROM suffers from too many issues for me to consider using it on a permanent basis.  Its benefits are far outweighed by its alpha quality feel and behavior.   Anyone who values speed and stability over new features and customization should not use this ROM.

1.09.2013

Installing Java JDK 7 (and jGRASP) on Mac OSX

This quarter I am taking a Java class as part of my computer science program at Eastern Washington University.  For the class we are using the jGRASP IDE and Java JDK 7.  However, we are not required to use a specific operating system for the course.  My main OS is of course Mac OSX, as I own and carry around a MacBook Pro.

Apple no longer preinstalls their own version of Java on Macs as of OSX 10.7 Lion.  However, if launch any application requiring Java, or type "java - version" into the terminal, you will be prompted to download and install Java. This however will only install version the older version 6 of the JRE and JDK.  Both will work fine for jGRASP, but I like to have the latest version.

To get the latest version, you need only to download the JDK, as the JDK included the JRE. ( I assume you are doing Java programming just like myself.)  Go to this page, click the "Accept License Agreement" button, and choose the download for "Mac OS X x64". When your download finishes, mount the DMG file and follow the steps through the installer.  Proceed to downloading the jGRASP installer here.  Extract the installer and run it. Congratulations, you now should have a fully functional installation of jGRASP and the Java JDK.

It's worth noting that Java, once installed, adds a control panel to System Preferences.  Use this control panel to check Java for updates and modify Java security settings.  You can also use the Java control panel to enable or disable different versions of Java, as it is possible to have more than one version of the JDK installed at a time.  One last piece of information to consider is that the JRE 7 from Oracle will not work with Google Chrome.  If you must have Java capability in Chrome, then stick with the Apple version of Java.

12.26.2012

Cyanogenmod 10 for EVO 3D

For the past two weeks I have been using an unofficial version of CM10 on my EVO 3D.  (I used it for two weeks because I didn't want to flash my phone while on vacation.)  The build I have been using is the one from December 5th.  Keep in mind that my findings are now slightly out of date.

Pros
  • Interface is very smooth
  • GPS and  navigation works well
  • 4G works (I was in San Francisco)
  • Video camera records
  • Calls and SMS work fine
  • Built in tethering works beautifully
  • Battery life is good with moderate usage
Cons
  • MMS is totally broken on VM
  • Video playback of recorded videos does not work
  • Wake locks keep phone awake more than it should be
  • No 3D (I don't care)
  • Maximum in call volume is often too low
  • Stock keyboard blows
After using CM10 for my EVO 3D for two weeks, I would consider keeping it permanently on my phone.  Despite all of it's flaws, CM10 is very stable and smooth.  In over two weeks of use, I have yet to experience any issue too severe to live with.  

Battery life is very important to me as a smartphone user.  Typically I care more about idle battery life; I am a fairly light user on most days.  On most days, my battery life was over 50% by the end of the day (15-20 hours on battery.)  The only time when I came close to running out of juice was during a trip to San Francisco when I used Google maps and 4G all day long.  Even though the build of CM10 I was running seemed to have a wake lock issue, it never seemed to cause excessive battery drain.

Some other thoughts about the ROM:
  • The stock keyboard was so irritating to use that I installed my old favorite, Swiftkey.
  • Many time when I had to take a call in a loud(ish) environment, I couldn't hear the other person talking because I couldn't turn the volume up loud enough.
  • Although I could shoot video on my phone, I couldn't play it back later.  Even MX player failed to play back my videos correctly. However, I could play back all the videos on my computer.
  • Since MMS doesn't work on this phone for non Sense 3.6 ROMS on VM, I've just been telling people to email me pictures instead. 
This next week I will test Team Dirt AOKP. I did plan to test Paranoid Android, but the dev has been banned from XDA and the thread was closed as well.

12.22.2012

Cyanogenmod review in the works

I realize that it has been longer than one week since since I posted my last ROM review. I have decided to spend an extra week with CM10. Therefore, expect my review sometime next week after Christmas.

12.14.2012

How I use tech on the road

As I ride shotgun in an F-150 heading south on I5 to California, I am using all the portable electronics I own simultaneously. My Macbook humbly serves as an extended battery for my EVO 3D, as I have run down its battery navigating. My EVO is pretending to be a wireless hotspot. So far, it has performed admirably, given that Sprint coverage in Portland isn't all that bad. I write this article on my Nexus 7 using the hotspot provided by my phone.  My iPod 4th gen sits on my lap also, filling my ears with yummy dubstep. (Radio music doesn't interest me.)

While I could be doing all these things on my phone, that just wouldn't be as much fun.

12.03.2012

ROM-a-week with the EVO 3D


Over the Thanksgiving break, I got  a new phone for myself, the HTC Evo 3D on Virgin Mobile.  Officially known as the HTC Evo V (I assume the "V" is for Virgin), the Evo V is identical in hardware to the Sprint Evo 3D.  Mine is actually a Sprint branded phone flashed to VM.

Every week starting this week, I will flash a different community ROM to my phone and give an assessment of the ROM.  I will continue this project until I have tested the majority of popular ROMs for this phone.  I will use the stock software from the ROM without any modifications, unless absolutely necessary.  The only third party apps I will use include SMS backup+, Titanium Backup Pro, and the Google Apps (Gmail, Maps, Navigation, Google Search), and Dolphin Browser.

Assessment of the ROMs will be presented in a pros and cons format.  The reasoning behind using this method (instead of a points based system), is that it allows the reader to decide what functionality is important to him /her.  ROMs will be assessed on the following criteria:

  • Battery life
  • SMS / MMS issues
  • Perceived performance (relative smoothness if the UI)
  • Overall connectivity issues
  • Interface design
  • Camera features and issues
  • Stock keyboard usability
  • GPS issues
  • Wireless tethering
  • other built in ROM features
  • anything else I choose to test
What will not be assessed:
  • 4G connectivity or performance (I do not live in a 4G area.)
  • Audio playback (I'm not an audiophile, so I can't judge this.)
ROMs to be tested:
  1. Stock ROM rooted (Sense based)
  2. CyanogenMod 10
  3. Paranoid Android
  4. MIUI
  5. Midnight ROM (Sense based)
  6. Harmonia (Sense based)
  7. Any other ROM I feel like testing or a reader request
I will test all ROM with the following low level software versions unless otherwise specified:
  • PRL: 61009
  • PRI: 1.53_145
  • Radio (Baseband): 1.09.00.0706
  • Hboot: JuopunutBear 1.57 or ENG version 1.04
  • Recovery: TWRP 2.3.10
Again,  keep in mind, that I will be testing the Evo 3D on Virgin Mobile.  The phone I received was likely an Evo 3D flashed to VM.  I will refer to it as the Evo 3D anyway, because "Evo V 4G" is a stupid name.  Next week around Monday I will report my findings for the stock ROM and move on to testing the next ROM.  

10.28.2012

Google Voice SIP calling on Cyanogen Mod

Being poor college student, I am always looking for ways to save money.  My current cell phone plan on Virgin Mobile costs me a whopping $25 and includes 300 minutes, unlimited texts, and "unlimited" data.  All of these used to be fine for me, but since I've moved away from home, I find myself engaging on more voice calls.  In the past I never used all 300 minutes, but in the past two months, I've had to buy more minutes before the end of the month.

While the easy solution would be to jump up to the next highest plan, $45 dollars  a month for more minutes on a mediocre network is hard to stomach.  Therefore,  I investigated using Google Voice over IP for making calls.  It turns out that the setup procedure is not all that difficult, provided you have patience.

I am using an LG Optimus V for this tutorial, with a custom CyanogenMod 7 based ROM.  I will assume for the purpse of this tutorial that you are using a CyanogenMod based ROM with access to SIP settings. (I don't know if stock Android allows access to these settings.)

  1. Create a Google voice if you haven't already.  Go to Google.com/voice and sign in with your Gmail account.  You will be asked to pick a number and/or area code.  Pick something memorable is it's available.  Give GV your current phone number and let it forward to that number.  You can disable this  later.
  2.   Install Google voice app on your Android phone.  You can find this in the Play store.  Open the GV app and sign in with your Gmail account.  When asked whether you want to use GV for calls, choose "never."  The other options will use your GV number, but still use your cell minutes, which defeats the purpose of GV.
  3. Install the app called SIPDroid from the play store.  Once installed, open the app and choose the "create new PBX linked to Google Voice."  You need to fill in the password blank with a password of your choice.  This password will be for your account that SIPDroid will create at pbxes.org.  The username field at the top can be left as is or changed if you prefer.
  4. Once SIPDroid finishes setting up your PBXes account, it should display a little green dot up in the status bar.  When you see the green light, enter the settings of SIPDroid and navigate to the settings for the PBX account.  (It should be the top option in the main menu.)  Copy the username and password and paste it into a note application.
  5. Open up your Android settings menu.  Go to Call Settings, scroll to the bottom and tap on "Accounts" under the "Internet Call settings" section.  Press the add account, and fill in the fields using the info you copied out of SIPDroid.  The server setting should be pbxes.org .
  6. Uninstall SIPDroid.  You no longer need it.  The app just makes it convenient to set up pbxes.org.
  7. Press the back button and read the info about the account. You should see some messages about the account connecting.  Check the box to receive incoming calls.  Go back up to the previous menu and touch the setting for "Use internet Calling" ,  and pick "Ask for each call."
 At this point, you return to Google voice settings from a desktop browser and uncheck the forwarding box under settings.  Basically, you don't want Google voice to call you and use your minutes.
  • Pick up another phone and call your Google voice number.  Your phone should begin to ring momentarily.  If that works, try placing a call and choose Internet call when prompted.  If both of these worked, Congratulations.  If not, you need to follow my optional steps to get outgoing calls working.
Optional steps to fix outgoing calls:

  1. Log in to your Google account from a web browser.  Go to the Account settings menu and choose Security.  Follow the steps to enable two-factor authentication.  
  2. After you have enabled two-factor auth, you can now add passwords on a per application basis.  Create a new one-time password for PBXes.org.  The name doesn't matter.
  3. Open up a new browser tab and navigate to pbxes.org.  Log in using the username and password you typed into SIPDroid to create the account.
  4. Click the button labeled "Trunks" on the left.  Pick the one called Gtalk/youremail.gmail.com.
  5. Copy the new one time password from Google and paste it into the password field on the PBXes page.  Keep in mind, you are NOT changing the password or pbxes.org.  You ARE changing the password that pbxes.org has for your Google account.
  6. Save the changes and log out of pbxes.org.
  7. Try making a call again from your phone using Internet calling.  It should now function as expected instead of saying "The call cannot be completed as dialed."
Additional info:
Call cannot be completed issue
From what I gather, the reason behind the call cannot be completed issue is that pbxes.org cannot handle passwords with special characters.  If your Google account has a password with specials in it,  PBXes cannot log in to your Google account to complete a call.  The one use password made by Google only contains letters, and therefore will function properly in PBXes.

Keep in mind that you will need to have some sort of data service available to use VOIP calling.  If all went well, you will now be able to place free calls to U.S. phone numbers and talk forever.  Please email me with comments or questions or if you need some help with the setup process.

10.08.2012

Nexus 7: The perfect size between phone and laptop

There's really not much point in me writing a full review of a tablet that has already been well received by internet news outlets everywhere.  If you want to read some, here are a few links.
http://www.engadget.com/2012/06/28/nexus-7-review/
http://www.anandtech.com/show/6073/the-google-nexus-7-review

I do however, feel compelled to write about how I use the device day to day.  First of all, I am a college student attending Eastern Washington University.  That should already give some indication of how I use this device.

Here is a list of activities I do with my Nexus 7 in descending order from most often to least often.


  1. Alarm clock:  With the Moko case from Amazon, standing the N7 as a clock is super easy
  2. Textbook reading:  Buy the E-book versions of your textbooks from Amazon or B&N and sync them to your tablet.
  3. Reading the morning emails
  4. Casual web browsing when I'm too lazy to whip out my MBP
  5. Geocaching:  Download C:geo from Google Play, sign in, cache some maps (you won't have wifi when you're out caching), and enjoy the hunt.
And there you have it.  My top 5 use cases for the Nexus 7 tablet.  Despite having only 8 gigs of storage, I have yet to fill it up.  The wifi only limitation isn't really a deal breaker for me either, since I own an Android smartphone.

Those of you in the market for some sort of small tablet should pick the N7 over the competition, simply because it is the most pure of the Android tablets out there ( including the Kindles and Nooks).
And for the price of $200 direct from Google, it's a bargain considering how much hardware it packs inside.