All Things Techie With Huge, Unstructured, Intuitive Leaps

Adding A New Development Dimension ~ Mac

After visiting clients in the tropics (did I mention that I have developed software for high net worth individuals), I have come to the conclusion that being a straight Windows developer is a path to oblivion.  I have to take the plunge and develop for iPad and Mac.

If you try and download the Mac SDK on a Windoze machine, the downloader detects it.  So you really need a Mac.  Because I split my time between North America and the tropics, I had to get a laptop for uninterruptability.  So MacBook Pro it is.  I always try to develop for one generation behind the curve, so you see that the iPad is a slightly older iPad.

Here is a usage tip -- it turns out that geezers with money are now travelling with iPads.  They can read their email, they can review documents and they can get their entertainment, news and stock quotes.  They do not travel with laptops any more.  I have to cater to that market.

So in upcoming posts, I will start relaying tips on my Mac development experience.  Stay tuned.

(And for the meta-data collectors -- add one more developer converted to Mac.  Microsoft is truly dead man walking, as is Facebook.)

invalid server's version String Tamirsharpssh


I was using the Tamirsharp or SharpSSH library in a demo that I was doing.  I was in a hotel lobby business area and I kept getting an connection error:  "invalid server's version String".  Google wasn't that helpful.  I was defecating bricks trying to resolve this.

I couldn't possibly imagine what was wrong.  I got a valid connection a few hours earlier from a different location.  We remoted desktopped to the server, and everything was running fine.  Our ssh daemon was cygwin d and we rebooted that for good measure.

Couldn't understand what the problem was, until it dawned on us.  The hotel IT network was blocking the ssh/ssl ports.  Moved away from the hotel network and everything worked fine.  It did cause a few anxious moments though.

Search Engine Use As an Intelligence Indicator

Can your choice of search engine show your intelligence levels? Judging by my overnight blog statistics, I'd say yes. First of all, look at the chart for the dummies:

Dummy Usage of Search Engine:

(click for larger image)

Did you notice the top search engine by far? It was Microsoft's Bing. And do know that the search term was. It was "Kate Middleton Topless". And Bing is the dummy winner by far.

Now lets examine smart folks usage of search engines:

Intelligent person's usage of a search engine:

(Click for larger image)

The search engine results are for this software and concepts blog that 85% of the world doesn't understand. The intelligent people coming to this blog, by far use Google.

So, let's just say that Bing has a higher usage among those looking for less intelligent subject matter. The numbers don't lie, and the difference is dramatic.

So take a look at your blog statistics. If a majority of your search traffic comes from Bing, well the term "lowest common denominator" comes to mind.

Update of Browser Types and Operating Systems on the Internet

What is the most popular Browser? Easy -- Chrome. I have a popular blog, and today I have a crapload of hits. Here is what Google is telling me about my blog traffic browsers:

Chrome
  • 1,511 (27%)
Internet Explorer
  • 1,438 (26%)
Firefox
  • 1,424 (25%)
Safari
  • 693 (12%)
Mobile Safari
  • 161 (2%)
Apple-PubSub
  • 143 (2%)
Opera
  • 89 (1%)
BingPreview
  • 25 (<1%)
Mobile
  • 24 (<1%)

And as for operating systems, here are todays stats:



Windows
  • 3,843 (71%)
Macintosh
  • 658 (12%)
Linux
  • 355 (6%)
iPhone
  • 150 (2%)
iPad
  • 134 (2%)
Android
  • 131 (2%)
BlackBerry
  • 47 (<1%)
Other Unix
  • 17 (<1%)
Windows NT 6.1
  • 15 (<1%)
iPod
  • 22 (<1%)
chromeframe
  • 10 (<1%)

I have no idea what chromeframe is. The biggest surprise is that there is still Windows NT6.1 out there.

So if you want a snapshot of what people are using to surf and crawl the web today -- there you have it!

Facebook Inc. (NASDAQ:FB) Accounts Illegaly Used to Gather Secret Information, Report | News Today Digest


Fake Facebook Inc. (FB) accounts are being illegally used to gather secret information, it is revealed by an Australian government review of social media and defense.
The review of social media and defense by Australian government completed in March disclosed that Taliban is using fake Facebook profiles with girls to obtain intelligence from military personnel. (Read more)


Facebook Inc. (NASDAQ:FB) Accounts Illegaly Used to Gather Secret Information, Report | News Today Digest

The Problem With Python ~ Perils of Python

Python freaks adhere to their favorite programming language like zombies to a cult. This is going to tick off some Python freaks.

You need some third party apps to make a standalone app out of Python. Plus it has many many add-ins built with C, C++ and whatever your programming weapon of choice. It can be a mashup of binary vomitus that can have some serious consequences. I saw one today.

This particular Python app was built by some troglodyte who's previous arena of expertise was DBase and FoxPro and thought that relational databases were a passing fad. So this app that he built fed itself data using .dbf files. Let me tell you, finding a .dbf file converter for free is like trying to find someone with a full set of teeth in a small southern town. Excel stopped outputting .dbf with 2007. Why would you need a dbf converter when you could use something more in the 19th century like a csv file? (Twentieth century is xml and 21rst century is JSON).

Well, it all has to do with the Perils of Python. The importer in this case was written in Python, and theoretically, it could import both csv and dbf files. CSV files always failed. But they didn't fail consistently. Sometimes the python input parser would correctly import a CSV and then on another like file, it would create extra fields, columns or whatever dinosaurs called table columns. It was a huge WTF? moment.

Then it came to me in a flash while I was emptying my colon. It was the colon in the date field. In some random cases, it correctly surmised that it was just another character in the field, and when another file was read in, it immediately said "AHA! Reserved character separator!. So why the inconsistent behavior? Da Python!

The input parser would make a decision on which import method to pass the input to. Depending on file size, it went to a method that was a layer of abstraction over the Python engine, or virtual machine, or Model T or whatever they call Python binaries. This would cause a choke. With just a few changes in the file characteristics, it would get imported natively and happily work. Unfortunately, you couldn't predict when and where it would work.

SO .... people beware of hiring the guy next door who will do the job for cheap ... these guys who still program with tools from the middle ages are doing you more harm than good. And your program is only good when it is operating on their development machine. Put it out in the real world and it fails quicker than the zipper coming down on Pee Wee Herman's and Fred Willard's pants in a darkened theater. Caveat emptor. The price you pay for using Python is huge if you want real inter-connectivity.

Chrome Blocking Extensions Part II



In a previous blog entry, I described how I added Chrome Browser extensions to prevent tracking cookies. Sites like CNN and New York Times and such sell tracking cookie information to all comers, and since I am a privacy advocate, it was starting to tick me off. So, I added DisconnectMe, Ghostery, and Do Not TrackPlus to my Chrome browser, and life was good.

I added the Adblocker, and that threw me my first curve ball. I couldn't access my Google account to see how much money my online ads were making. That made me take off AdBlocker.

Last week I discovered another fly in the ointment: Expedia.

The reason that I use Expedia is simple. I wanted in overnight hotel room in city that was 5 hours away. I just wanted a quick stopover, a place to lay my head and to get up and continue my journey. I knew of just the hotel that I wanted to stay at and where it was. I went to their site, and got what I thought was a reasonable price. To double check, I went to Expedia.

That same hotel room was 30 per cent cheaper on Expedia for the same night. I immediately booked it. I couldn't complete the online transaction. It kept telling me to wait a second and try again. After 15 minutes of this, a Eureka moment struck me. I turned off the Chrome Extension blockers and all worked well. I was able to book my hotel online.

Luckily most of these blockers have a little icon in the corner of the browser where you can turn them off and on. However, I wasted a quarter of an hour figuring this out.

500 Error UnsupportedClassVersionError


(click for larger image)

Had a troublesome error. I moved my development environment in Eclipse to my laptop. Imported the project. Everything went smoothly. Started the server. All fine. The minute that I had to go to the database, it blew up with an error that looked like this:

javax.servlet.ServletException: java.lang.UnsupportedClassVersionError Unsupported major.minor version 51.0

I realized that my new Eclipse Juno was set to compile for the 1.7 Java environment and Tomcat was running 1.6 Java JRE.

I went into the project properties, and selected Java Compiler option. On the upper right corner there is a link where you can click to Configure workspace settings. The JDK compliance is set to 1.7. (which is version 51). Use the combo box to set it to 1.6 which is version 50 and it should work.

I Won a Copyright Right Dispute with Google's Youtube

(click for larger image)

Google owns Youtube. When I wanted to make some of my pictures of Provence into a Youtube video, I deliberately did not want to run afoul of copyright laws. So I googled royalty free music and came to a site with free, unencumbered music. I downloaded a track and used it as background information.

When it came time to upload, I identified the track and artist and the fact that it was royalty free music. Youtube said that I couldn't monetize the video, because I didn't own the copyright. Interestingly enough, they didn't make me take it down.

I left it that way for months. Then I get a notice saying that some entity called CD Baby was disputing my right to use the music. I did an online appeal by filling in the forms, and using drop down menus to say that it was free, and royalty free music.

A couple of days later, I get the following email:


CD Baby has reviewed your dispute and released its copyright claim on your video, "A Peek At Provence". For more information, please visit your Copyright Notice page

Sincerely,
- The YouTube Team

Cool. So I figured that I would go ahead and monetize the video. Not so fast. I opened up video manager, and it said that there was copyright information that said I couldn't monetize it. I cut and pasted the email into the explanation box.

So I won a copyright dispute with the Google-owned YouTube, now lets see if they will let me monetize it. Here is the video in question:





Twitter Follow-Backs

(click for larger image)

I have officially stopped. I have stopped playing the stupid tit-for-tat followers games. I got the above this morning in my email saying that I was being followed, and that we would have a pact, and if I followed they would keep the follow and if I unfollowed them on Twitter, they would unfollow as well.

Bully for them. I am tired of playing this game. I will return to my true self. I will not follow ghetto rap artists. I will not follow girls more intent on showing their breasts rather than reading my content. I will not follow fundamentalist, racist Republicans.

I will just follow people and accounts that I am interested in, and will not follow you just because you follow me. Inflated follower numbers mean nothing. I have conducted experiments on how to convert followers to web hits, and the only way to do it, is to emulate the religion model. Anyone who is a true follower, will check out your website. Anyone paying lip service and just playing the tit-for-tat following game cannot be converted to web hits and is uninterested in what you have to say.

So most of my followers are real now. If you want to follow me for real, I can be followed @ArtOfWarm. If you are interesting, have decent content, and are not trying to sell me something, I will follow you back,

Javascript - How To Format a Telephone Number

This is quite a common problem. You have an user input table on your html or jsp page and you want to make sure that it is numbers only, has the area code, and is in a consistent format when you put it into the database. I downloaded some javascript to do just that and it worked fine for numbers that you typed in using the numbers on the keyboard. But when you used the numeric keypad on the keyboard, or a USB external keypad, it failed. The keypad, instead of putting numbers, put junk into it.

So this is how I solved it. I created a javascript file called phone.js. This is the contents:

function formatPnum(phonenum, textbox) {
var regexObj = /^(?:\+?1[-. ]?)?(?:\(?([0-9]{3})\)?[-. ]?)?([0-9]{3})[-. ]?([0-9]{4})$/;
if (regexObj.test(phonenum)) {
var parts = phonenum.match(regexObj);
var phone = "";
if (parts[1]) {
phone += "(" + parts[1] + ") "; }
phone += parts[2] + "-" + parts[3];
textbox.value = phone;
}
else {
//invalid phone number
alert('Please enter a proper phone number');
textbox.value = '';
}
return false;
}

Then at the top of the html page, I added the following script tag:

(script type="text/javascript" src="phone.js" /)

Note: I used "(" and ")" instead of "<" and ">" because this blog actually parses it as real HTML. Then, everywhere I needed a phone number, I added this to the tag (in this case for a fax number):


Fax (Area Code + #)
(input type="text" name="fax" onfocus="this.value='';" onmouseout="javascript:return formatPNum(this.value, this);")


Note: I used "(" and ")" instead of "<" and ">" because this blog actually parses it as real HTML.
You will note, that I have an onfocus event. When the user clicks on it, the previous number or whatever is in the input box goes away. Then the user enters the number. If any part of it fails (like he adds a letter), it fails and the alert shows that there is an error. There is no input displayed. However, if the user enters a three digit area code and a seven digit number, the phone number is automagically formatted into (123) 456-7890.

Piece of cake. Hope this helps.

Where is Facebook Stock Price Going

Where is Faceboook Stock Price going? Everyone wants to know. Here are a couple of charts that I want to show you with some rudimentary technical analysis. This is the 5 day chart of Facebook stock with the blue line being the stock price and the red line being a Exponential moving average. Generally when the exponential moving average line crosses over and is above the price line, the stock price will drop. The obverse is true. When the stock price is above the exponential moving average, the stock will rise. The buy and sell signals are when the two lines actually cross. (this is rather basic technical analysis).

Friday, the stock closed for the weekend at $19.05. This is the 5 day chart (click for larger image):

This is the same chart, except it is the 30 day view (again click for larger image):

As one can see, the technical indicators show that the stock is on the down escalator, it is on the handcart to hell, and it is dropping like a song on yesterday's hit parade. Where will it end?

In a previous blog post, I stated that my technical analysis shows that the stock will gain some support in the $16-$19 dollar range, but even at that level, the free fall is not over. So what is the true value of Facebook stock? Where is it going?

If you use commonly accepted metrics, then Facebook stock is really worth about $7.25 per share. The freefall will stop against a mountain of reason at that value.

However, my opinion is that Facebook is dead man walking. They sent out announcements of new products, attempts, sales algorithms etc almost daily. These product announcements are like flares from a sinking ship. Facebook is old PHP technology that doesn't adapt well to mobile, and it value proposition to its users, is that it allows one to stay in touch with another in a very lazy fashion. This is not a marketing proposition for users, and that is why Facebook ads generally fail. The folks at Facebook are trying to put lipstick on a pig and sell it.

I am particularly enjoying this because analysts from all over Wall Street (hello Arvind Bhatia) wanted to be media stars and appeared on TV saying what a great buy this stock was at $38. I hope that these analysts don't get bonuses this year.

So there you have it -- a social media platform in the golden years of its quick internet existence is trying to pawn itself off as investment grade. The competitor to Facebook is already on its platform, and Facebook will become the MySpace of the investment world.

Blocking Extensions for Chrome

(click for larger image)

Regular readers of this blog will know that I am a privacy freak. I also use Google Chrome which is the safest, fastest, best browser in the marketplace.

I just got a new laptop, and I had forgotten to add my privacy extensions. However I was reminded when an old highschool friend sent me an invitation to join her on Facebook, and since she had my email address, the Facebook code read my contacts and suggested other friends that were not connected to her, but were to me.

Since I get my email through my browser, I decided that it was time to add the privacy extensions. I added Disconnect.me, Ghostery and Do Not Track Plus. I also added Ad Block, but I had to disable it, because I couldn't read how much money that I was making on the ads for Google Adsense.

However, I am quite pleased with the performance of the blocker privacy extensions for Chrome. So far, the worst offender for tracking in my experience, is the CNN.com website.

As an added feature for today, you get a fearless prognostication. Facebook stock is going to tank today. The closing price was $20.38 and I'm willing to bet that it will close lower today.

Scumbag Trailer Trash Human Garbage Webmasters ~ Wall of Shame

I'm getting tired of human garbage, scumbag webmasters who spam and traffic fake. These people are the lowest classes of internet users, who think that SEO involves being a rectal sphincter on other peoples' sites. They have absolutely no skills at real SEO, and no content worthy of real traffic so they resort to shady, dubious and questionable tactics to try to pathetically generate traffic to their websites. These are cretins of the lowest kind.

This week's wall of shame in include the following websites:

  • FILMHILL
  • STUMBLEDUPON (obviously parking on the the legitimate website StumbleUpon)
  • BROADWAYPINK
These ghetto webmasters don't belong on the internet.


We now take you back to regularly scheduled programming of how to be a zen coder. Ommmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmm mmmmmmmm

JSP - How to Programatically Set the Select of a Combo Box

I had to look this one up, so I am posting this JSP tip in case anyone else needs help. Here is the scenario. I have a form with a select tag and a bunch of options. The data is stored in a data base. When I read the data back and display the page, I want to set the select of the combo box to display the data value of the variable or the database value. It is very easy with a scriptlet. Just add the following attribute code to your option tag:

option value = "Chocolate Brownies" <% if (icecream.equalsIgnoreCase("Chocolate Brownies") out.print("selected"); %>

There you have it. Easy peasy!