All Things Techie With Huge, Unstructured, Intuitive Leaps

DiscountApp Browser Hijack


It all started out when I noticed that there was a space on my Twitter homepage between the header and the top of the browser.  I could see more of my background image, and the side panel with my stats was much lower.  I initially thought that it was some weird Twitter thing.  It became supremely annoying.

Then I noticed that there was a little link in the space.  It was obvious that an ad was not rendering.  I thought that perhaps Twitter was going the ad placement route in advance of their IPO.

But there was another funny as well.  YouTube kept auto refreshing and I had these black patches of ads not rendering.  It was time to investigate.

I went back to Twitter and clicked on the little barely visible link, and was taken to the discountApp site.  There they explained that they were a browser extension, and they delivered ads not associated with the site.  I clicked on my Chrome Settings, found Tools, and then my Extensions, and sure enough they embedded a browser extension without my knowledge.  I deep-sixed it.  Quite frankly they were:
Scum-sucking Browser Hijackers
They had wombat piss for brains.
Total Scum of the Earth.

Can you tell that I was mad.  Let me tell you, this is one startup doomed to failure with unethical practices like that.  So if you are wondering what the big space is on your twitter page or why youtube keeps flashing black, it is because of that web STD called discountApp.


Google Chrome Pages Unresponsive Problem

Chrome has lost its shine for me.  I just wasted a few hours trying to get my wife's machine running.  She is not a heavy internet user and uses it primarily for email, the odd Skype chat and streaming a radio station.  So yesterday, Chrome started to misbehave.  It simply wouldn't work.  The picture above showed with the message:

The following page(s) have become unresponsive.  You can wait for them to become responsive or kill them.

So what to do.  At first I thought it was the machine.  It is an old one with Vista and Celeron processor.  I ran a registry cleaner.  I cleaned out the cache and cookies.  When that didn't work, I uninstalled Chrome, and re-installed.  Then it wouldn't even start.  I uninstalled it again, and ran the best virus and malware program that I have.  It ran all night.  Nada.  The machine was clean.

I tried Internet Explorer.  It worked just fine and relatively fast.  I suspected that Google made an update to Chrome.  I spent an hour or two Googling.  A Google site suggested that I navigate to %LOCALAPPDATA%\Google\Chrome\User Data\  and change Default folder name to backup Default.  Nothing.

Another suggestion was to append --no-sandbox in the shortcut panel to the command line.  Nada again.

I was just about to give up, when I tried this one last thing:

  • Right click google chrome shortcut.
  • Click on properties menu itme.
  • Click shortcut tab in the opened panel.
  • add this in target destination --disable-hang-monitor
to make it look like this:
"C:\Program Files\Google\Chrome\Application\chrome.exe" --disable-hang-monitor

This made Google Chrome work again.  But it sure took the shine off of Chrome for me.

Android Device Not Visible In Eclipse using USB cable



I wanted to connect a Galaxy Tablet by Samsung to my Eclipse Android SDK with the USB cable.  I downloaded the appropriate drivers, followed all of the instructions including setting the tablet in Application debug mode, and still nothing.  Nada! Zilch!  I thought that maybe I had the wrong driver, so I uninstalled the driver, went to the Samsung site, and got the driver again and installed it.  Nothing!  Crapola!

I have more than one Android app on the go, because the app that I am developing is quite complex, so I prototype each function as a separate project to make sure that I have the Java code right.  I went to another project and look at the run configs, and I could see the device in the run configuration menu.  It ran perfectly.  So, WTH?

After much wailing and gnashing of teeth, I decided to examine LogCat very closely.  It said it couldn't find a compatible minimum SDK version device attached.  Well, I did know where it was specified and that was in the AndroidManifest.xml.  So I went there and sure enough, I had accidentally changed the minSdkVersion to 17, instead of 8.  The 17 number was for the targetSdkVersion.


<uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

When I changed the minSdkVersion back to 8, I could see the USB connected device.

Hope this helps someone.

Windows 7, Build 7600, This Copy of Windows is not genuine


I have a Windows 7 laptop.  Generally I am pretty pleased with it.  Not as pleased as XP, but much more pleased than that claptrap piece of junk called Vista.  Windows 7 still craps out occasionally, but a reboot (sometimes removing the batteries to do so) fixes whatever ails it.  However, I got a shocker the other day.  After re-booting, it told me that my copy of Windows was not genuine.  Windows 7, Build 7600, This Copy of Windows is not genuine.  What the hell?

Well it turned out that the fix was relatively easy, but still disconcerting.  Click on the start menu. Open up All Programs > Accessories.  Right click on Command Prompt and click on Run As Administrator.

In the command window, type in:  slmgr -rearm

That should fix it.  Another reason to think that Microsoft is a buggy piece of crap.

Really Bummed Over Disk Corruption, MacBook Pro

So what I thought was my lovely MacBook Pro, is just another stinking piece of silicon.  While using Safari, noticed that when you put the cursor on the desktop, you continuous got the spinny colored wheel.  Safari stopped responding   I shut down and when I re-started, the damn thing wouldn't boot.  I got the white screen and the Apple logo, and the gray spinny thing, but no boot.

I booted in single user mode (command + S) and got a shell.  I typed in the fsck command (fsck -fy) and it blithely told me that the hard disk could not be repaired.  Reason:  Keys were out of order.  I could traverse the file directory, and my work was all there (/Volumes/Macintosh HD/ and then to the users directory and my name).

No problem, I shut down, and started the Disk Recovery Boot sector (restart while holding down command + R).  I started the disk utilities, and was quite certain that disk utilities First Aid would fix it.  I scanned the disk and sure enough, it told me that I needed to hit repair because the B-Tree was corrupt and keys were out of order.  I eagerly hit the Repair Disk button and that was the beginning of several wasted hours.  It couldn't fix the disk.  The utility does let you download a n

What to do.  I have an external hard drive, essentially doing nothing.  So, what I was going to do, is just copy the files that I wanted to an external drive.  Well, you can't mount external drives in single user mode.
 I reformatted it with same Disk Utilities and did a raw copy by dragging the Macintosh HD dead disk into the source and dragging the newly formatted disk into the target.  It copied.  Great! - now I had copy of my work (and the entire Mac hard drive -- it was a bit external drive).  The next step was open a terminal in the Disk Recovery Boot mode.  My plan was to copy the files that I need from the external disk /Volumes/nameOfExternalDisk to another disk for my archives.  The terminal could see and mount the other disk, but I couldn't mount the copy of the disk that I had just raw copied on the hard drive.

Well, I know how to force mount, so I did a df and the missing disk was /dev/disk2.  After creating a mount point, I issued a mount, and Voila -- disk utilities now saw it as a mounted disk.  Unfortunately the terminal in /Volumes/mountPoint didn't.  I ran the repair disk a few million times, all to no avail.

Then I had the bright idea of blowing back the mounted external image on the mac hard drive.  Maybe it would fix something.  It didn't.  However in single user mode, the data was all there.  The disconcerting factor was that I had blown it back from a 3 TB external hard drive, and now Disk Utilities thought that there was three terabytes on my Mac hard drive.  There isn't.  Single User mode still lets me explore and look at my data from the terminal, but like a super autistic kid, the data won't come out.

Someone suggested Disk Warrior.  They say it works magic.  This was my first foray into Mac and initially I was very very pleased with the experience.  I am totally soured on it now.  My mistake was thinking that I wouldn't have to back up my dev on the Mac until I was finished.  It was a new Mac, and they don't go kaput in the first few months.  The real piss-off, is that the Mac engineers aren't as smart as the Disk Warrior guys, and that the inbred Mac Disk Utilities aren't as smart as Disk Warrior.  If Steve Jobs were alive, I could taunt him and it would be fixed.  Now I just rant in my blog.

Western Digital SmartWare Review


My very first 1 Terrabyte External Storage disk drive was a Western Digital.  That was many moons ago.  I was pleased with the price, the performance and even the ruggedness.  It is a bit clunky in design, but when I accidentally dropped it and cracked a bit of the plastic, my heart sank.  That was several years ago.  I plugged it back in, and it works fine to this day.

So I go to my local Future Shop and see a Western Digital 3 Terabyte drive for $129.  I snap it up.  It still has the same clunky design, but hey three terabytes for just over a hundred bucks -- such a deal!  I love Moores Law.

I unpacked it and it said that there was automagic backup software called SmartWare.  It would take all of the work of backups out of my hands.  I thought "what the heck" and installed it.  I was impressed that it started classifying my half terabyte laptop disk, and five hours later, it was all classified and backed up.  No big whoop.  I started the backup before going to bed at the crack of dawn.

Well sir or madam, when I next rebooted the computer, it was excruciating slow to boot. It was excruciating slow to kick Skype (I manage a coding team remotely).  Opening a spreadsheet was slow.  I thought WTF - the only thing that changed was the addition of the SmartWare.  I checked to make sure that I hadn't picked up a virus or bot.  I was clean so it had to be the backup software.

I uninstalled and my computer returned to normal speed.  I haven't decided whether to do the backups manually from now or, or to install and uninstall it after backups.  I am inclined to go manual, because another weird thing happened after the uninstall, but that is a different blog entry.  Later.

When Yahoo is in doubt, it copies Google

 (Doesn't Yahoo Mail look suspiciously like Google's Gmail below?)

When Marissa Mayer was hired to turn around Yahoo, one of the first things that she did (other than whelping some progeny) was to bring in all of the remote workers.  That was supposed to be a big turnaround move.

Apparently the next step is to re-face Yahoo mail which happened recently.  So they copied the highly successful Gmail.  If it wasn't for the branding, you couldn't tell the difference, other than the colors are reversed - white for messages and light blue for background and vice versa.

So how much are they paying Ms. Mayer.  I am sure that I could have done the same with half of her salary.  All right you Yahoos, get yer fat-ass derrieres back in the office and lets copy Google.  Hey, I could be an extremely high paid tech exec.

Imitation is the sincerest form of flattery, but it also could be the final form of desperation.  You can quote me on that.

Pithy Bits: What is Traffic Faking?

Pithy Bits: What is Traffic Faking?: Question:  What is Traffic Faking? Answer:  Traffic Faking is the newest form of spamming.  It is very clever, because it is indirect.  Traffic fakes use software to make fake hits on your website.  No particular articles are called, just the domain name of your website.  Almost anyone can get a website these days and if it is from Google or another company that provides analytics, you can see the traffic fakers URL.  Out of curiosity, you click on it.  And bingo, you have just created more traffic for the spam website and made it work.

Message To Samsung


Attention Samsung.  You make a great Galaxy tablet.  Your products are good.  Your accessories SUCK!  I visited 6 stores trying to get a replacement USB cable (30 pin proprietary) for the Galaxy Tablet.  Wasted almost a whole day and still no cable.  Have to buy it online.

That begs the question -- why are your cables so flimsy.  Mine broke where the wire connects to the connector and it shorted and melted.  I was talking to a store clerk and his did the same on his cell phone.  Surely if we can put a man on the moon 40 years ago, you can make a cable that lasts for more than 2 years.

There are very few stores that carry your proprietary cable and it is really pissing me off.  If you seriously want to challenge Apple and the iPad you would make the things ubiquitous.

Rant over.

Samsung Galaxy ~ usb device not recognized


Normally, I just plug in a Samsung Galaxy tablet into the USB port and it pops open an Explorer Window and I have my way with it.  Then something changed.  I plugged in the old tablet, and it gave me an error - usb device not recognized.  It opened a system window showing me all of the possible USB ports, etc, and the top entry was the unrecognized device.

I plugged and unplugged, and tried it again.  Same deal.  Finally, I just clicked on the device in the USB system window, and it opened and I could do stuff again.

Hope this helps someone.

(BTW - its a laptop with Windows 7.  Can't say what would happen with Windows 8.)

Is Android Safer Than iOS for Mobile Banking?

First of all, total disclosure:  I am a registered Apple, Android and Nokia developer.  I have no real preferences.  There are good and bad points for all platforms.  This article is my opinion only.

The Android OS is developed using Java, an interpreted language that runs on a virtual machine within the mobile device.  In spite of the wide array of Android devices they all run Java Virtual Machines with their standard Java runtimes.  They are far more vulnerable for exploits for several reasons.  Here are a few.

A Java exploit could be used that is intrinsic to the development libraries.  (Libraries are mini-programs that execute functions like creating an encrypted tunnel to the banking server, and another is used to connect to the account database.)  Exploits utilizing the core libraries are easier to surreptitiously embed on Android, because Android can load programs from email, attachments or pernicious websites without the convoluted encryption process that Apple uses through iTunes.  iOS like iPad and iPhone will not accept binary executables unless they come from iTunes or a corporate server having an encryption certificate certified by Apple that is iTunes compatible.  Unless an iPhone is "jail broke" (illegally altered), you cannot just load any old program on it.

It is technically much harder to get an exploit to be seen and executed by the iOS than by Android.

Many development frameworks are cross-platform that work on iPhone, Android and Blackberry.  They are actually kludges (the deus ex machina of programming if you will), in the fact that each of these devices has a browser widget.   All browser widgets will execute javascript code, so they use that to emulate a native running app (ie with the intervention of a browser widget).  Browser widgets (a browser widget is a window that behaves and operates like a web browser, but doesn't look like one) can do a lot of things including uploading and downloading dangerous files.  The Apple browser widget is more crippled than the Android ones ( because of Apple's operating system is akin deranged control freak marital partner that watches everything that you do and doesn't permit basic functions like using the browser to upload pictures through the browser to a web page.  You need Apple's intermediate app to do that which they vent.

So, all in all, Apple is still safer than Android. Using their native Objective C language with the XCode development environment, it is the rocket science of app design, and coding exploits is an incredible difficult thing to do with Apple.  Whereas with the Android development system, it is fairly easy to find java keylogger libraries on the internet and deploy them on an Android mobile device in a surreptitious manner.

Having said all of this, I am a firm believer that mobile banking can be quite safe.  What has not flown, is the NFC or Near Field Communications (tap 'n go chips) which is being taken off many mobile devices because they are very easy to exploit.

The Seven Deadly Sins That Startups Commit


I got to thinking about the startups that I was involved with, and what went wrong when they failed.  I am an analyst by nature, so I did a postmortem on all of my startup failures.  Here are some nuggets from those postmortems outlining mistakes made.

1) Just because it is a neat idea, employs the latest technology and nobody is doing it, doesn't mean that customers will want to pay money for it.  Your startup product must have a distinct value proposition to its users.

2) No matter how much money will be saved by your product, it won't sell unless people want to use it.  People want to use products that fit into existing processes in their businesses or lives.  If it doesn't fit, then it won't be a commercial success.

3) Then there is "Lipstick on a Pig".  Oftentimes when our product was not adopted, we sat around the table and decided that we needed a sexier feature, or an edgier look and feel, or the latest in a UX consultant to come and do a new design for us.  You can't put lipstick on a pig to dress it up and sell it.  Customers will see through that.  If they don't use your barebones product, they are not going use one dressed up with new features or a snazzier look.  There is way too much emphasis on Look and Feel and looking sharp and UIX and UX and all of the buzzwords that bring in consulting money.  The ultimate success of an app is shown by Google which is simple, clean and beautiful, and would never pass design review with these so-called UIX experts.

4) That brings us to minimum viable product.  You have to have something that people are willing to use, willing to buy, and willing to share with their friends.  Too often we have built apps that everyone said was good and no one used them.  We then decided that perhaps we needed more lipstick on the pig.  If that didn't work, then we decided that we needed to shave the pig and sell it as something else.  All the while, we never had a minimum viable product.

5) We never had a feedback loop.  When someone bought our product and never used it extensively, we did go back and ask for feedback, but we never really listened to our customers.  When they would bring up objections like "It takes up too much time to use" we thought that they were just making excuses.  We never modified the app to fit their time constraints and their business.  The correct methodology is to embed someone with an early adopter and keep adapting until they used it, loved it and shared it among peer businesses.  We never did that.

6) Before you go and build something and a business around it, you should be able to pre-sell it.  It should be that good of an idea.  You should be able to articulate the value proposition in ten seconds.  The value proposition should include savings in both time and money and/or ease of doing business which is time and money.

7) You should be culturally appropriate to your customer base.  We had a designer create wire frames for an app that was aimed at 50 year old, non-computer literate business owners.  He designed it like a social media app with gaming, individual photos, reputation scores and the latest in device integration on smart phones.  No fifty year old, computer illiterate is going to upload his pic to a business app that is supposed to help him make money.  They don't give a damn about being 5 Star users and they don't react to gamification the way that millenials do.  Their favorite device is the Blackberry with the full QWERTY keyboard.

So there is the seven deadly sins of startups.  How do you know if you have a viable product? Simple.  It will be a product that people will want to use.  If you get widespread usage, you will find a way to monetize it later.  Usage is the key indicator of success.

Android Issue: I/Choreographer (xxxxx): Skipped 60 frames! The application may be doing too much work on its main thread.


So I was developing an Android app.  I created my View Group and my View. In an activity class, I had a method to fetch some data and display it.   In that method, using the view as an argument,  I instantiated a new intent, with the Context and the custom new Activity class as parameters of the constructor. Then I fetched some data, and using the Intent android.content.Intent.putExtra(String name, String value), I added fetched data to the intent. Good to go, right?

I started the emulator, and nothing, except in the LogCat, I kept getting :

Application:  MyApp
Tag: Coreographer
Text:   Skipped 60 frames!  The application may be doing too much work on its main thread

WTF.  I went over the code three or four times.  I fixed things that didn't need fixing.  I cast about all over, and then it finally struck me.  I forgot to start the activity,  so I added this line to the method at the very end:

startActivity(myNewIntent);

And my so-called life was functional again.  Hope this helps someone.







Best Free AVI to DVD Software Reviews


I have this .avi video that I created by stitching together music and still videos.  I wanted to put it into a DVD format so that friends and relatives could play it on their TV without any computer knowledge.  The .avi video is almost 20 minutes in length, clocking in at over 700 MB, so I couldn't upload it to a high-res video site like Vimeo which restricts video file sizes to 500MB if you don't have their premium package.

There are a whole pile of free AVI to DVD software packages.  I picked the first one from Google, and it turned out to be www.avitodvdfree.com and the program is called AviToDVDfree.  It was easy to use and intuitive, and the bonus feature was that it not only converted but burned it to disc at the same time.  I was amazed at how fast it took.  However, there was a gotchya.  I took the DVD to the television set.  There was an older DVD player there.  About 4 minutes into the DVD, it got stuck and wouldn't advance.  I was able to hit fast forward, and after skipping about ten seconds, it played again.  However, the same thing happened at the thirteen minute mark.  It got gonged and I went looking for another package.

I downloaded freevideostodvd by KoyoteSoft.  I fed in the avi, and the thing blew it.  It threw an exception saying that there wasn't enough room on the disc to burn the DVD.  Since I had previously burned a DVD with the same file, I knew that this was BS.  I tried again, and this time it just mysteriously quit with no message.  I gonged it and moved on.

The third package that I downloaded was AVI2DVD by Trust FM @ http://www.avitodvd.ws/freeware/
I was a little disconcerted because it wanted to download all of these filters and codecs.  I checked them out and one of them was from sourceforge, so I knew that it was legit.  The program is massively localized, meaning that it operates in a whole variety of languages.  Plus it invokes .bat files so windows open and close.  It took a fair bit of time to process and it didn't burn the .iso file to my DVD drive.  However, I opened the temp folder, right clicked on the iso file and it invoked the disc burning utility that came with my laptop, and Bob's your Uncle.  It worked perfectly.  It is the one that I recommend for quality, convenience and just plain works every time.

Hope this helps.

More Spammer Scumbags

(click on pic for larger image)

Spammers are having a more difficult time and have to get creative.  Spam filters are becoming more effective.  Numerous blogs and websites expose spammers, and lately Google has stopped showing keywords which hinders spammers.

Of course you still have the totally dumb assholes who harvest email addresses and send you spam.  Those,  you know, are the rank amateurs and the dumbasses actually think that it is a legitimate business practice.  Some of these jokers even claim that they are internet marketing experts.

I have lately seen upping the game in combining traffic fakers with directed spam.  Case in point.  A new entity of scumbag spammer emerged called seoanalyses.com.  They traffic fake to blogs (if you don't know what traffic faking is, just scroll down a bit on this blog for articles and explanations).  But get this.  In the past traffic fakers got you as a web master to click on their links for everything from fake Viagra to online courses.

The traffic fakers of the past were shotgunning spam hoping some of it would stick.  These guys have a semi-official sounding name and their spam is directed at you as a web master, hoping that you will buy their pathetic solutions to supposedly increase your traffic and business. Caveat Emptor.

Up Trends, Down Trends, New Trends


I have been cognizant of a few trends lately based on how often I run into them, or don't.  So today's entry is short and sweet.

HOT TRENDS TO WATCH FOR:

in the UIX field - watch for Cards
in the Gaming field - watch for Steam OS
for Search - Google Hummingbird
for Mobile -  Everything !!

Weakening Trends:

keywords
Microsoft
Facebook

Social Trends Rising:

Speaking Welsh
Cultural Granularity

Each of these needs its own article, and as soon as I get to writing one for each, I will post them here.

Java Networking

I have this issue where I need to know the IP address or some identifying part of a computer.  Using Java, I came across the class of java.net.NetworkInterface.  Since there may be several LAN adapters on a computer, I wanted to find a single identifying feature that could be used to positively identify who sent something.

I implemented the following code to see what comes out of it:

String ip;
   try {
       Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
       while (interfaces.hasMoreElements()) {
           NetworkInterface iface = interfaces.nextElement();
           // filters out 127.0.0.1 and inactive interfaces
           if (iface.isLoopback() || !iface.isUp())
               continue;
           System.out.println("HW" + iface.getHardwareAddress());

           Enumeration<InetAddress> addresses = iface.getInetAddresses();
           while(addresses.hasMoreElements()) {
               InetAddress addr = addresses.nextElement();
               
               ip = addr.getHostAddress();
               System.out.println(iface.getDisplayName() + " " + ip);
           }
       }
   } catch (SocketException e) {
       throw new RuntimeException(e);
   }

The very first thing that comes back out of this piece of code is very, very interesting.  It returns the name of the LAN network adapter that was actively used.  Concatenated to that was the byte fe80: which identifies the IPV6 and the unique MAC Address of that computer.  Here's the interesting bit -- immediately preceding the fe80 is the name of the SSID that is being used.  This not only reveals the computer MAC address but also the network (and the place of the network) that is connected to.

Hope this helps someone.

A Couple of MySQL Tips - Join on Three Tables and Select Results into a File


These are a couple of things that I had to do with a mysql database lately and I thought that I would pass on these tips.

We were debugging a problem where certain data elements were dimensioned across three tables.  While debugging program logic, we wanted to see the data aggregated by the common column across all three tables.  Here is the basic sql statement to do that:

SELECT * (or any number of columns separated by commas) FROM table1 join table2 ON table1.primarykey = table2.foreignkey
join table3 ON table2.primarykey = table3.foreignkey;

OK, so once you do that, you want to put it into a separate file so that you can ftp it from the server to the dev platform to analyze the data.  Here is how you select results into a file:

SELECT * (or any number of columns separated by commas) FROM table1 INTO OUTFILE '/tmp/table1.txt';

Hope this helps someone.