Kyle->GetThoughts();
Applied Signals Interview - The Real Deal
19 February 2009 @ 12:30 PM MST
Current Music: Various
Current Mood: Just fine
Applied Signals called me up on Tuesday and wanted to setup a real interview up at their office in Salt Lake City. They had time on Wednesday, which was convenient because I already had to drive up to SLC on Wednesday to pick up Mom from the airport. So we arranged it so that we could do the interview process and be done right when I'd need to leave for the airport.

Wednesday morning I got up at 7:00 and was ready to leave by 8. I was scheduled to be at the office at 9:30 and I wanted to make sure there was plenty of time for traveling. Google predicted the trip would take 50 minutes, and I wanted to allow buffer time for crappy I-15 traffic. And there was crappy I-15 traffic. There were several instances of being dead stopped on the highway. However, in the end I still made it to the office by ~9:00. So I was plenty early, which is decidedly better than plenty late.

The first person I met with gave me a packet of material about the company and went over their benefits and insurance plans. Overall they have a really nice benefits package and really good insurance plans including dental and vision. So that's a plus. You also earn 12 vacation days in your first 12 months, and every year of employment you get an extra day up to 25 max per year. Also quite good compared to many places. There will be a Trax stop about a block away which is under construction right now (slated for completion in 2011). So living anywhere near a Trax station would allow for an easy train commute.

I then spoke with the office manager for a few minutes who gave me a rundown of what the interview process would be like. I was then brought to a conference room with 4 of their engineers who asked me questions about various C/C++ details and algorithm designs. This went on for about an hour or so. After that interview another engineer took me out to lunch at Red Robin which was ever so tasty. Then it was back to the office for another interview with 4 different engineers, their questions were less language specific and more algorithm design type questions and general problem solving. The last thing they asked me was a logic puzzle type question which was really easy if you know a little set theory and how to create a Venn diagram properly. They gave me the question, I drew up the Venn diagram and answered it in about 10 seconds. I was pleased that the responses from 2 of the interviewers were along the lines of "I think that's a record."

Overall, I think the interviews went really well. Afterwards, I filled out an official application form and signed documents consenting to a background check for a security clearance and other such things. I also met with the office manager again briefly to talk about how the interviews went and my feelings about the company overall. He said I could hear back from them as early as next week, possibly with a job offer (the do security clearance checks after an offer is accepted).

So we'll see what happens at this point. I think the company would provide a challenging and interesting working environment. I wasn't given many details about actual projects since the work is generally classified, but the engineers I spoke to all really enjoy the work and really enjoy the people they work with and the company as a whole.

[This Entry] [0 Comments]
Interview
15 February 2009 @ 10:59 AM MST
Current Music: Trendy 43
Current Mood: Good
I had an interview with Applied Signals Technology on Friday. It was a phone interview. I was able to schedule the CS conference room which was nice because then I got to use a speaker phone and not have to hold my cell phone to my ear the hold time, or burn through my minutes. I think it went really well. I was feeling more relaxed than I often do in interviews which really helps. I came up with intelligent responses to his questions, and I believe my answers to the technical questions were correct and showed understanding of the subject matter.

The company is basically a defense contractor, so you can't get a whole lot of detail about what they do exactly. They create products that the Department of Defense would find interest in mostly: radiation detection systems, unmanned aerial signals collection platforms, explosives detection systems, etc. They have several offices around the country, I'm interviewing with their Salt Lake City office.

The interviewer said that someone would contact me sometime next week to let me know what happens next, whether they continue on the vetting process or tell me they're not interested.

[This Entry] [4 Comments]
Removing the Cruft from the Nokia N810 - 4
12 February 2009 @ 04:19 PM MST
Current Music: None
Current Mood: Getting tired
6. AD-BLOCKING
Ads suck. We all know it already. Even more so for our mobile devices: 1. We have limited screen space and don't want it wasted on ads. 2. If connected via a cell-phone we have limited bandwidth and don't want it wasted on ads. Luckily there are ways to solve the problem of ads.

In Firefox we have the lovely addition of the Ad-Block Plus extension which works beautifully. Incredibly, this plug-in is also available for the MicroB browser built-in to the n810. Unfortunately, it is (apparently, from various accounts on the internet), rather processor intensive and chews up the battery. Since our goal with this nice little mobile device is convenience, sucking down the battery to perform ad-blocking is not ideal. Therefore, we'd like to look for alternative options for blocking ads.

There is a nice little page on the Maemo Wiki describing the 3 main options for blocking ads: Maemo Wiki: Ad-Blocking. I'm going to try out the "preferred" method from the Wiki: Hosts and CSS.

This technique keeps a list of webservers known to serve up ads, and automatically blocks your browser from connecting to them. It then uses a custom CSS file to rebuild your webpages as you view them so that you don't see where the ads would have been.

Unfortunately, at the time of this writing the website that provides the new hosts information is down. I grabbed a Google Cache of the file from the beginning of February. I recommend (and the author requests) you go directly to the site: http://everythingisnt.com/hosts.html, however if it's still not working, here's my local copy: Local copy of hosts.txt.

Also go and grab the new CSS file from floppymoose.com. Here's my local copy in case the site is down: Local copy of userContent.css.

Got the files? Good, let's do this. I copied the files to the /root directory as the root user.

First we'll append the hosts file to our existing hosts file:
~ $ root
BusyBox v1.6.1 (2008-09-18 09:43:17 EEST) Built-in shell (ash)
Enter 'help' for a list of built-in commands.
Nokia-N810-43-7:~# cat hosts.txt >> /etc/hosts


Next we'll setup the userContent.css file, this one we can just be the regular user:
Nokia-N810-43-7:~# exit
~ $ mkdir /home/user/.mozilla/microb/chrome
~ $ cp /root/userContent.css /home/user/.mozilla/microb/chrome/userContent.css


Restart your browser (or just open it, if it's not open) and you should be all set to browse with fewer ads than before. And go ahead and (as root) delete the two files from the /root directory, they don't need to be there anymore:
~ $ root
BusyBox v1.6.1 (2008-09-18 09:43:17 EEST) Built-in shell (ash)
Enter 'help' for a list of built-in commands.
Nokia-N810-43-7:~# rm hosts.txt userContent.css


6.1 THE DRAWBACKS
So, there are some issues. This method is not as thorough as Adblock and it has the possibility of interferring with other applications if they try to point at one of the servers being blocked for ads. Also listed as a "Con" on the Wiki is that it is time consuming to temporarily disable. Well... that part could be easily fixed with a little script to toggle the changes on and off. "But there is no such script," you say? BEHOLD!

6.2 HOSTS/CSS TOGGLE SCRIPT
My own personal invention here. I would normally write things like this in Python, but Python is not installed by default on the n810, however Perl is. So I muddled through enough Perl to make this work. Anyone that actually writes Perl will probably laugh at my script, and feel free to do so, the main point is that it works.

Here's the script: hosts_css_toggler.txt. It's a .txt file because otherwise the webserver won't allow you to access it. So you'll want to rename it once you've downloaded it.
Once downloaded rename it and make it executable:
~ $ mv hosts_css_toggler.txt hosts_css_toggler.pl
~ $ chmod +x hosts_css_toggler.pl


How it works: It's really quite simple. First, it assumes you've appended the hosts file with the new entry (as described above) and that you've placed the userContent.css file in the correct location (also described above). The first time you run it it will place a comment at the top of the hosts file to describe if it is currently toggled on or off.
When you run the script it looks for the comments indicating the start of the blocked hosts, it then just processes each line thereafter and if it starts with 127.0.0.1 (meaning it's blocking a site) it places a comment "#hct#" in front of it. When toggling it back on it just finds the lines starting with #hct# and removes the #hct#. So it won't interfere with any other changes you've made to the hosts file, so long as they occur above the comment indicating the start of the blocked sites.

As for the userContent.css, it just moves the file to userContent.css.bkp when disabling the blocking and back to userContent.css when enabling the blocking.

Each time you toggle you'll need to restart the web browser for the changes to take effect.

On first run you'll see something like this:
~ $ rootsh ./hosts_css_toggler.pl
Toggling Hosts/CSS Based Ad-blocking...
Installing Toggler
Toggling OFF: /etc/hosts... DONE!
Toggling OFF: /home/user/.mozilla/microb/chrome/userContent.css... DONE!

msn with ads


And if you run it again:
~ $ rootsh ./hosts_css_toggler.pl
Toggling Hosts/CSS based Ad-blocking...
Toggling ON: /etc/hosts... DONE!
Toggling ON: /home/user/.mozilla/microb/chrome/userContent.css... DONE!

msn without ads


And now you're all set for quick and fast ad-blocking!

[This Entry] [1 Comment]
Removing the Cruft from the Nokia N810 - 3
11 February 2009 @ 04:05 PM MST
Current Music: Something good
Current Mood: Well
I was going to tackle ad-blocking for the built in MicroB browser next, but I want to do the customization stuff first instead. This entry will be more exciting because I remembered to add pictures! And, I figured out how to grab screenshots to make it all easier.

5. MAKING IT PRETTY:
Now, the themes that came pre-installed on the n810 look fine and all, but we can really do so much more to make this device wow-worthy when you show it off. Here's what I had after starting it up and playing around for a few minutes:

Boring n810 home screen


Not very exciting.

5.1 TAKING SCREENSHOTS:
Before we begin with making things pretty, lets set it up so we can take screenshots to make showing off the pretty easier. On the Maemo Development Tools page we can find some handy little tools. Most of these will be of no interest to anyone but developers or command-line enthusiasts. The one we want, however is the screenshot-tool. In order to install it we have to enable the "tools" application repository. Instructions on how to do that are on the bottom of the page listing the tools, here they are for your convenience:
Installation

These tools can be installed in the device by activating the Diablo tools repository in the Application manager. Developers can also install them to the device or in Scratchbox using the command line interface.

To activate the tools repository with the Application manager, create a new catalogue like this:
1. Start the Application manager
2. From its menu bar select Tools and then Application catalogue...
3. Press the New button
4. Enter the following:

Catalogue name: diablo tools
Web address: http://repository.maemo.org
Distribution: diablo/tools
Components: free non-free
Disabled: leave unchecked
Click OK


After setting up the repository it should go and grab the index and you'll be ready to install the tool. Note that you won't be able to access these tools from the Application Manager without being in Red Pill Mode, however we can still install them just fine from the command line:
~ $ root
BusyBox v1.6.1 (2008-09-18 09:43:17 EEST) Built-in shell (ash)
Enter 'help' for a list of built-in commands.
Nokia-N810-43-7:~# apt-get install screenshot-tool


Now you should be good to go. In order to take a screenshot you can just do:
~ $ screenshot-tool screenshot.png or
~ $ screenshot-tool -d 5 delayed_by_5s.png
Where "-d x" delays the screenshot by x seconds (and gives you a little countdown in the terminal), this is nice for when you want to take a screenshot of some application other than the XTerm.

5.2 PERSONALIZING:
Let's make the Task Navigator (the ever-present left-hand menu) more useful and prettier. After much fiddling, fussing, breaking, (attempted) fixing, and reflashing, I've learned that there seems to be no user-adjustable way to remove the Contacts widget from the Task Navigator completely. The layout manager requires you to have 3 Large buttons in there. These 3 large buttons default to the Contacts, Web, and Applications widgets. I was hoping to just make it two buttons, but, alas, was not successful. So I did the next best thing. I installed the "Personal Menu" application and then via "Control Panel -> Panels" you can select the Personal Menu rather than Contacts to show up, which is much more helpful, since I won't be using the Contacts widget, but quickly accessing common applications is really nice.

Don't forget to customize the Personal Menu and then what remains in the Applications Launcher. (In the Applications Launcher I created a folder called "In Launcher" and moved all the apps that I included in my Personal Menu to that folder, and tucked it down at the bottom of the menu, out of the way).

The unfortunate thing is the icon of the Personal Menu (the little gear with an arrow in it), it's really not that appealing, or personal. So I decided to do something about it. Here's where things get fun. Doing some digging I easily found that variously sized versions of the icon existed at the following locations:

/usr/share/icons/hicolor/26x26/hildon/personal-menu.png
/usr/share/icons/hicolor/40x40/hildon/personal-menu.png
/usr/share/icons/hicolor/scalable/hildon/personal-menu.png


However, replacing these icons results in no change. Doing more digging I found out about the "gtk-update-icon-cache" command which builds a cache file of the available icons for more efficient access by the system. But, running this:
Nokia-N810-43-7:~# gtk-update-icon-cache /usr/share/icons/hicolor/ --force
Still had no effect. I tried a number of variations on this theme as well as rebooting a few times after making changes, but nothing worked. I was starting to get really frustrated. I went through several tuorials on creating custom applications to find that they seem to recommend placing icons in /usr/share/icons/hicolor/.../apps/ rather than .../hildon/. Which makes sense since it's an application icon rather than a system icon. But, this still ran contrary to the fact that those personal-menu.png files (which contain the image being used) were in the .../hildon/ directory.

So, in a last ditch effort I put a new icon into:

/usr/share/icons/hicolor/26x26/apps/personal-menu.png
/usr/share/icons/hicolor/40x40/apps/personal-menu.png
/usr/share/icons/hicolor/scalable/apps/personal-menu.png


And things started working the way I wanted (even without removing the other files from the .../hildon/ directories). It may not have been necessary, but I ran the gtk-update-icon-cache command again after making these changes. So far everything is good.

So, you ask, what did I change my Personal Menu icon to? I changed it to my Mii!. So now it's more of a Mii Menu. Of course, making this change was no small feat. There is no easy way to transfer Mii images from the Wii, and I don't have a video capture card. So I setup my projector and displayed the Mii onto a white sheet and took a picture. With some GIMP magic I was able to color correct it, crop, and resize it to what I wanted. Since personal-menu.png only appeared in 3 locations I created a 26x26 pixel version, a 40x40 pixel version (those go in the two respectively named directory hierarchies), and the one in 'scalable' is just a 64x64 pixel version (like the original personal-menu.png file in the .../hildon/ directory).

Now my desktop has a Mii for my Personal Menu, which makes me smile everytime I see it:

Personal Menu becomes Mii Menu



5.3 BACKGROUNDS:
I like nice backgrounds and getting them is really easy over at interfacelift.com. You can sort by resolution, and then popularity, etc. It's really quite nice. I grabbed a handful for my n810 background to use with the built-in Glasser theme. Here's my current one:

Customized n810 home screen



Alright, next up will be ad-blocking.

[This Entry] [0 Comments]
Removing the Cruft from the Nokia N810 - 2
10 February 2009 @ 05:07 PM MST
Current Music: Various
Current Mood: Alright
In the previous entry I discussed using LocalePurge to remove extra language information, removing UserGuides, and bundled media. Those were the easiest things to clean up. Next we'll tackle some of the trickier bits.

4. BUNDLED APPS:
The N810 comes with several bundled items which are nice and all, but I quickly replaced them with 3rd-party applications which I like better. Unfortunately, the software repository lists several of these bundled apps as dependencies so you can't just use apt-get to remove them from your system without making things very unhappy and possibly breaking automatic updates.

But, we can easily enough make these bundled items disappear so they're not cluttering up our interface. Several of the items I simply moved to a backup folder so they wouldn't clutter my interface, but if I decided I wanted/needed them back I could just move them back where they came from.

Having pawed about the file system for awhile (and breaking things a few times) I've figured out some of the setup and how easiest to deal with making these changes. Most of the things we'll care about are located in /usr/share/applications/hildon .../hildon-home and .../hildon-control-panel.

4.1 Application Launcher:
/usr/share/applications/hildon contains the definitions for widgets that show up in the application launcher.
So we can go in there and delete the things we don't want hanging around. The first targets are the bundled installers for Rhapsody, Gizmo, and Skype. (First we'll want to be root)
~ $ root
BusyBox v1.6.1 (2008-09-18 09:43:17 EEST) Built-in shell (ash)
Enter 'help' for a list of built-in commands.
Nokia-N810-43-7:~# cd /usr/share/applications/hildon
Nokia-N810-43-7:/usr/share/applications/hildon# rm skype.desktop rhapsody.desktop gizmo-project.desktop
Nokia-N810-43-7:/usr/share/applications/hildon#


The next thing I did was create my backup folders in case I actually wanted any of the next pieces (also helpful in case something turned out to be not what you thought and you want it back). I just put it into the /root directory:
Nokia-N810-43-7:/usr/share/applications/hildon# mkdir /root/bkp
Nokia-N810-43-7:/usr/share/applications/hildon# mkdir /root/bkp/hildon
Nokia-N810-43-7:/usr/share/applications/hildon# mkdir /root/bkp/hildon-home
Nokia-N810-43-7:/usr/share/applications/hildon# mkdir /root/bkp/hildon-control-panel


Now we're ready to move the application launcher widgets out of the way, since we don't to use those apps or have them clutter our interface. These are the ones I moved out of the way:
chat-ui.desktop -- built-in chat client
modest.desktop -- built-in email client
osso_rss_feed_reader.desktop -- built-in rss reader
voip-ui.desktop -- built-in voip client

Nokia-N810-43-7:/usr/share/applications/hildon# mv chat-ui.desktop modest.desktop osso_rss_feed_reader.desktop voip-ui.desktop /root/bkp/hildon/

I still have a widget for "Contacts" showing up, but I can't find which .desktop file it's coming from, so I'm just leaving it alone.

4.2 Home Applets:
Next up are the home applets (the ones you can select from the Home screen: "Home->Select Applets...") This includes things like the search bar and clock. These widget definitions are stored in /usr/share/applications/hildon-home. I only wanted to keep the Search Bar and the Clock. So I removed the following:
promo-plugin.desktop -- Tableteer Info home applet
homeosso_rss_feed_reader.desktop -- RSS Feed home applet
hildon-home-webshortcut.desktop -- Webshortcut home applet
speeddial.desktop -- Contacts home applet
osso-iradio-applet.desktop -- Internet Radio home applet

Nokia-N810-43-7:/usr/share/applications/hildon# cd ../hildon-home
Nokia-N810-43-7:/usr/share/applications/hildon-home# mv promo-plugin.desktop homeosso_rss_feed_reader.desktop hildon-home-webshortcut.desktop speeddial.desktop osso-iradio-applet.desktop /root/bkp/hildon-home/



4.3 Control Panel Applets:
Control Panel widgets are stored at /usr/share/applications/hildon-control-panel. There was really only one widget I decided to remove from the Control Panel, the Presence widget, since I don't use it.
Nokia-N810-43-7:/usr/share/applications/hildon# cd ../hildon-control-panel
Nokia-N810-43-7:/usr/share/applications/hildon-control-panel# mv presence-applet.desktop /root/bkp/hildon-home/



4.4 etc:
Gizmo, Rhapsody, and Skype left little tendrils in the /etc directory that I tossed out as well. These are directories, so notice the "rm -rf" (BE CAREFUL with that command, "rm -rf" will remove whatever you point it at without prompting you).
Nokia-N810-43-7:/usr/share/applications/hildon# cd /etc
Nokia-N810-43-7:/etc# rm -rf gizmo-intall rhapsody-install skype-install


Now go and reorganize the Applications menu now that you have so many fewer crusty things to worry about finding places for.

Next up will be setting up ad-blocking for the built-in browser, and some more customization tips.

[This Entry] [0 Comments]
Removing the Cruft from the Nokia N810
9 February 2009 @ 06:08 PM MST
Current Music: Various
Current Mood: Alright
So, my new toy is the Nokia n810 (for $210 shipped). One of my few complaints is the cruft that is bundled in, eating up the limited run-time memory space and cluttering up the interface area. It's nice that it came with built in chat and email clients, but Pidgin and Claws Mail do those jobs much better, so I don't want to the built in ones hanging around. I also don't need several MB worth of language data installed, or User Guides in 20 languages.

1. LOCALEPURGE:
So, let's get started with cleaning some stuff out. The first thing we'll do comes from a forum post over at the Internet Tablet Talk forums: Localepurge for Diablo. It is a package to automatically clear out the undesired locale information (language translations) and keep them cleaned out.

First thing you'll need to do is get root access to the device. I do this using the 'rootsh' application which is easily installed. Once you have rootsh installed fire up the XTerminal and gain root access.
~ $ root
BusyBox v1.6.1 (2008-09-18 09:43:17 EEST) Built-in shell (ash)
Enter 'help' for a list of built-in commands.
Nokia-N810-43-7:~#


Then we'll need to install a dependency first, 'libpcre3':
Nokia-N810-43-7:~# apt-get install libpcre3

You'll say yes to the prompt wanting you to agree to this install (I did all of this earlier and don't feel like re-flashing my device just to get the exact output, sorry).

Once that dependency is installed you'll want to download the two other dependencies. You can find links to them on the linked forum post, but I'll mirror them here for your convenience: pcregrep_6.7-1osso1_armel.deb and color_ls_1.0-1_armel.deb

Once you've downloaded these to the n810 use the XTerm to change into the directory where they're stored, and install them using dpkg:
Nokia-N810-43-7:~# dpkg -i pcregrep_6.7-1osso1_armel.deb
and
Nokia-N810-43-7:~# dpkg -i color_ls_1.0-1_armel.deb

Those, hopefully, installed nicely for you as they did for me. Now we're ready to actually install the localepurge program. The link is in the forum for this as well, and here's my local mirror: localepurge_0.5.8_all.modfied.modfied.deb Install it:
Nokia-N810-43-7:~# dpkg -i localepurge_0.5.8_all.modfied.modfied.deb

By default localepurge saves the English locales and removes all others. If you need to save a different one you can supposedly put the locale folder name into a file at /etc/locale.nopurge. My guess as to how this would look would be to simply go into /usr/share/locale and find the folder you care about, for example "pt_PT" (whatever locale that is). The simplest way to put that into the /etc/locale.nopurge would be to (as root still) do:
Nokia-N810-43-7:~# echo pt_PT > /etc/locale.nopurge

Once you've got everything all set just run
Nokia-N810-43-7:~# localepurge && docpurge

You should get a summary at the end about the amount of space freed. I ran the two commands separately and there was no clear indication that docpurge did anything on its own so, perhaps that part doesn't do anything.

2. USER GUIDES:
Lots of user guides come pre-loaded onto the system. You can see them from the file manager under the "Nokia N810 -> Documents -> User guides" directory. (In case you were wondering, like I was, the 5 "Nokia N810 -> *" directories are located at /home/user/MyDocs/.documents .games .images .sounds .videos). Just go ahead and delete all the user guides for the languages you don't want. You can just do that from the file manager without a hassle. You can probably go ahead and delete all the user manuals, but maybe you want to keep one around.

There's also a 1.3 MB software copyright PDF in the documents folder which I went ahead and deleted.

3. MEDIA:
The N810 comes with some bundled media to allow you to try out the media player. This includes a couple of videos, a song, and some pictures. I happen to kind of like the Moby song that came on mine, so I left it. But the videos I don't need, and the pictures, well, I like to get my cool background pictures from interfacelift.com. So I deleted the stock pictures and videos using the filemanager.

Those are the easy things. Next up I'm going to try some more delicate work to clean up some things like the bundled Gizmo, Rhapsody, and Skype installers and the built-in chat and email clients. But that will be another post.

[This Entry] [0 Comments]
My Turn for Fun
3 February 2009 @ 01:45 PM MST
Current Music: None
Current Mood: Low energy
Starting about 12 days ago I've had a swollen lymph node on my neck. Swollen enough to be annoying, but not painful. At first I was a bit achy, with fever and chills. So I slept a lot and drank lots of fluids. After a few days the other symptoms went away but the swelling stayed with an small decrease in overall energy. Since it's been about 12 days I figured I should go in to the Student Health Center to get it checked out. I made an appointment for this afternoon with Dr. Blackwell. She looked at it and took my information, including all the fun that Jess had to make sure she knew about my exposure to the Fusobacterium. The quick blood test came back to show that I have a really strong Mono infection going on. Yay.

According to an Infectious Disease Specialist taking the herb Echinacea can really help, so I have a bottle of that and Ibuprofen for the swelling. I'm hoping it has just about run its course by now and will on its way off soon.

[This Entry] [2 Comments]