Ubuntu Touch preview – pt 1

Ok, I had a “spare” Nexus 4 available to me for a few hours yesterday so I installed the Ubuntu Touch preview on it. It was the main reason why I bought mine in the first place, so that I could install it. It just looks so different than Android, or iOs, or anything (that I’ve seen). It took me awhile to figure out how to get it installed (who knew, my bootloader WASN’T unlocked).

At first I was fascinated by it, trying to figure out how to do stuff. Once I was satisfied with how to navigate around, I started to look into the apps that it came with. Like Android it has the ability to add accounts (Gmail, Facebook, Twitter, etc) but unlike Android. when you add an account, it tries to connect via the web browser, which, even though it was connected to my wifi, was exceedingly, painfully slow. I didn’t clue in to anything wrong until my son comes out of his room and asks me if I was downloading something as our entire network was slow. I vaguely remember network issues like that with Ubuntu. Don’t know if thats what it was. In any case it took a long long time for anything to be done so most of the time I just gave up and went on to try something else.

After awhile I was able to see the Facebook app. Didn’t impress me. You couldn’t tell what it was doing. There never was any indication of busy-ness or that it was trying to do something. It would just sit there, then if my patience was relaxed, it would eventually come back with some sort of update with whatever it thought it was doing.

After using Android 4.3 for awhile now, navigating around is so intuitive, but using Ubuntu Touch, just wasn’t. I realize its a developer preview, but it was pretty painful to use. I may try again with a different release to see if it would be any faster, or more responsive. I was pleased to see that I was able to install Ubuntu Touch, play with it, then re-install the Android OS without too much difficulty. I am going to look into having them dual-booted. Supposedly that can be done. Maybe I’ll also see if there are any usage guides out there (I am sure there are) that may alleviate some of the pain.

Eastlink to implement UBB

I recently found out that Eastlink (our local Internet Service Provider) is going to be implementing Usage Base Billing (UBB). Link to Eastlink UBB FAQ page

Below is a letter that I wrote and sent to the President of Eastlink, Deborah Shaffner:
Dear Mrs/Ms/Miss Shaffner,

I am VERY disappointed to hear that Eastlink is going to be implementing Usage Based Billing (UBB), or already has.

I have been a fairly long standing and loyal customer and even now have partaken in one of your "bundle" offerings, but I will seriously reconsider my loyalty to Eastlink if I ever get a bill indicating that I've somehow gone over my monthly allotment, whatever that may actually be. The whole idea of UBB just disgusts me, and anyone who supports its adoption, I want nothing to do with.

I use my computer for both work and for private use, as well a streaming movies (via Netflix, etc) and lots of online gaming. I can only anticipate a situation where we are no longer associated.

In my humble opinion, I see no reason why Eastlink can't just install the necessary infrastructure to handle the anticipated increase of usage on your network and just suck up the cost and NOT pass that along to your loyal customers. Ya so maybe your investors will have to make a slightly lower amount of profit the year you do this, I am sure THEY will survive. Me on the other hand, I will simply find some other provider, who, will likely also be implementing UBB, but it won't be Eastlink.

I seriously urge you to reconsider this.

Sincerely,

...UPDATE:
No sooner had I hit the send button on the online form for submitting my email I got a personalized reply back from them. Even before I could finish reading the email, my phone rang and it was Ashley calling from Eastlink on behalf of the President. We checked out what offerring I actually have (Extreme 15, going to be increased to Extreme 20) and was told that UBB does not apply to those packages. The Extreme 40 and the Extreme 100 packages will be subjected to the constraints of UBB.
What I don’t understand, technically, is how can a UBB solution be implemented on a network (as in Eastlink’s network) and the (potential) restrictions of UBB be applied to, or rather tracked, for just the Extreme 40 and 100 packages? Granted, I won’t get a bill indicating (or I better not!) that I have gone over my limit, according to what Ashley has told me, but I can’t see how my connection is NOT going to be restrained by UBB as the other offerings suppossedly will be. Its all just copper wire. Ok they will know who’s account will or won’t be charged any extra because of UBB, but their networking is still going to be restricting all wires, won’t it?

Atomiq – initial impressions

Atomiq: http://www.getatomiq.com/

 

Atomiq is a simple text comparison program (so it appears so far). It was created for use with .Net code but works fine with Java, which is what I used as a quick and simple test.

I pointed it my company’s Java codebase and let it analyse the .java files. It analyzes files, line-by-line, ignoring whitespace, comments and anything that is really ambiguous in source files like comment lines.

The Atomiq window is very busy, showing a directory tree of “found” result files that has duplicate code in them. There is also a panel showing the different matches to potentially multiple files of the currently selected “file”, then when a match is selected another pane showing the source code of the file selected, with added bands of colour coded bars added to the left of the line number display indicating code matches then a split panel showing the matched code totally separated out from the original source and its match. Its not until you find a file that has multiple matches of duplicated code with many instances of it contained not only within itself but other files and other parts of other files that you appreciate the busy display.

The first file I chose indicated that about 10 lines of import declarations were duplicated between two files. “Big Wooop” I thought, who cares about duplicated imports? Okay that was a poor example of what this tool does for you although I did find lots of examples that were equally useless.

I started going through some more examples and started finding some interesting results. It was pointing out the obvious “duplicate code that should be refactored” cases and that was good, but what I found really interesting was that it was showing code that was duplicated in varied places that I might not have necessarily known were or needed to be doing the same things. For me this highlights insight into the code that may be necessary to know at some point while refactoring is being done. I found this very useful.

I clicked on the “Wheel” menu item. Perhaps not a good idea considering the number of files in our code base and that it had analyzed. Its a graphical display of a wheel showing all of the “interconnections” between the duplicated code that it found. Its just a fancy navigation display. Clicking on any of the shown items simply activates those files in the main display. Because there was so much to display in this wheel, moving the window around the screen (like moving it to my main window in my dual monitor setup) was quite painful and took awhile to redraw.

 

The full product is available as a free download that expires after 7 days of usage. Seems rather lightweight as it comes as an executable that you download and simply run (uncompressed). Its 4.5 Mb size is rather small and its memory footprint I assume would be dictated by the number of files analyzed didn’t seem that bad at 250Mb considering it opened and analyzed the thousands of files that make up our product base. The Wheel display added an additional 100Mb of memory usage.

Nice little tool, well worth the $30 they are asking for. If you’re a developer, it would be well worth it for you to have a look at it.

Last.FM

I opened my Last.FM app the other day.  It politely informed me that there was a new version available and asked if I was ready for it to be installed.  This is such a common practice these days that I really didn’t question it at all.  I have always had Last.FM and use it quite often, so I started the install.

When it had finished its update and restarted itself, I was informed that I was now using my “trial” period and that after my trial was over I would have to pay.  WFT??!!  I feel like I have been tricked.  I install an update then all of a sudden I have to pay?  No thanks.

Being a programmer myself I just thought, hey someone screwed up.  Nope!  It was intentional.  I now have to pay to use my Last.FM player!  No!  I uninstalled it.  I’ll get my music from somewhere else thank you.  It was great while it lasted but NO!  I refuse!

Last.fm to charge users for Internet radio service

I deleted my account with them.  The hell with you CBS. Last.FM was bought by CBS apparently…
(see here), 2 years ago. How did I miss that?

It seems that all of the good things about the internet are being commercialized and commodicized (sp??).  It was once a place where you could go and actually have fun doing stuff and discover new things.  Now its just one big encyclopedia and store where you can buy everything from virtual storage to porn to access to online virtual worlds.  In just about all cases you have to pay.  You have to pay to get on the internet to your ISP, you have to (in most cases) pay for the software to allow you to get on the internet and now it seems, more and more that everything you do on the internet you have to pay for too.

JAVA – Back to basics

I’ve recently been going through some Java headaches of late. I wrote a class whose purpose was to be a wrapper for another class but that offers a sorting ability not offered by that original class. I implemented an equals method but never really understood, nor implemented the associated hashCode method. I’ve spent the better part of an entire day messing around with my code so that my unit tests showed that my code worked the way I expected it should. I’d never really knew of the relationship between the equals method and the hashCode method. So of course, I did the ol’ Google search and came up with the following link that seems to give a relatively good explanation.

Equals and Hash Code in Java

I further enhanced what was demonstrated in that article by discovering the following two Apache commons “helper” classes that make implementing equals and hashCode that much easier:

EqualsBuilder and

HashCodeBuilder

So now that I’ve implemented equals and hashCode as well as my Comparable interface, everything sorts and determines equality as I expect it to. Such a huge headache for such a small inconsequential class…lol. Oh well, I’ll know better next time.

Searching all possibilties

Doooh’s Picture Of the Day

About the only thing around here that is green, just yet…

One of the things we do here at work, or rather what the application that we write here, does, is it allows the user to search structured and unstructured data. Structured data is information that is in a particular, familiar form and is, more or less, always in that form. Unstructured data is anything and everything else, including information like news feeds from the internet, or conversations over heard at the water cooler. So we allow our users to be able to search all of those different types of information easily. I remember an old TV commercial from a long time ago, where the final statement it would say was “…An educated consumer is our best customer…” and that is how you can describe being able to search structured data. Knowing the data you want to search for is very important. On the other hand, huge internet search engines like Google, I believe are spoiling our abilities to do some of the indepth search/researching that sometimes we all have to or want to do.

When you use Google, the easiest and most common thing to do with it is to type in a word, or any combination of words and hit the search button and let Google figure out what you might want to see as results. The more you use it, the more familiar you become with the subtle nuances of the ways you can perform queries with Google. How you can group words together, or put in certain keywords to tell Google how to generate a specific enough query so that the results you’re most interested in actually present themselves quickly. The result is that you perform a search and after seeing the initial results, further refine your searching until you’re given a set of results that you might be able to locate the information you’re actually looking for, in. Because of the vastness that is Google you will hardly ever be returned to you, a succinct enough set of results that will satisfy your search. Once you have done your best to refine and further refine your searches, you still have to wade through the results searching for what it actually is you are looking for. Thats searching unstructured data.

With structured data you know exactly what information is stored, and in what form its in, so you can search for specific criteria. The results are more precise and in alot of cases, based on the specific criteria, more accurate. Instead of just typing in some random groupings of words, you create specific criteria like “I want all companies, who have active projects in South America, who mine copper and have a production greater than 4000 metric tonnes per day and whose owners’ head offices are in Texas that have stock offerings greater than 4% over last years offerings”. From this query you may only get one or two results, but the only way you could have come up with this criteria in the first place is by knowing the data that you are searching. Thats searching structured data.

With the popularity of Google and the extent to which it is used for “research”, it is no wonder that everyone’s idea of doing a search has been changed to expect some similar process as you would use when searching with Google. Instead of having some prior knowledge of whatever it is you are searching for all you need is to know some keywords related and boom you get some results. For companies researching specific industries, or activities within such industries, performing searches with Google just isn’t specific enough. You need to know that some companies operate a mine, whereas others might be owners, or that certain ores’ production is tracked in Millions of tonnes and others is based on volume. Our challenge is to provide the user with an easy-enough interface for searching to allow them to do the simple “Google-related” process of entering in a few keywords and allow them to sift through the results themselves as well as allow them to pick and choose the specific criteria to come up with complex queries that are going to return specific contextual results. In most cases not only do we have to allow them to do both, separately, but also allow them to integrate the results from one to the other as well as have one query affect the results of the other. My concern with all of this is that when it comes to searching, if it isn’t “Google-like” then its too complex for anyone to want to take the time to learn how to do. The ability then, to be able to come up with and perform complex searches gets lost as a general ability. No longer would it be necessary for someone to have or need specific industry knowledge because all a person would need are some keywords and access to Google to drop them into, to get some sort of results. Our abilities to discern the specific knowledge that we may require for our jobs gets lost in the shuffle of slapping all searches into Google and letting it do all of our work for us. Its like the teenager asking his math teacher “Why do I need to know how to add, when some sort of device can and likely will, do it for me?”. We seem to be at a stage of our evolution where we can and perhaps want to rely on other “things” to do some of what we commonly did without thinking before, for us. Thats ok, for some I guess, as long as we realize that those things will then be lost to us. I think we may be going down this route with searching, and I think Google is allowing us to do it, and I’m not convinced its the best for us.

JOKE OF THE DAY:

Two strangers are sitting in an adjacent seats in airplane.

One guy says to the other, “Let’s talk. I hear that the flight will go faster if you strike up a conversation with your fellow passenger.”

The other guy, who had just opened a good book, closes it slowly, takes off his glasses and asks, “What would you like to discuss?”

The first guy says, “Oh, I don’t know; how about nuclear power?”

The other guy says, “OK, that could make for some pretty interesting conversation. But let me ask you a question first:

“A horse, a cow, and a deer all eat the same stuff, but the deer excretes pellets, the cow, big patties, and the horse, clumps of dried grass. Why is that?”

The first guy says, “I don’t know.”

The other guy says, “Oh? Well then, do you really think you’re qualified to discuss Nuclear Power when you don’t know shit?”