All Things Techie With Huge, Unstructured, Intuitive Leaps

Microsoft Mango Desperate For Developers

It looks like Microsoft is desperate for developers to make apps for the Mango phone. I am a registered Microsoft developer, and I just received the email printed below. (They want $99 from me to develop apps. Amazon just waived the $99 fee for developers to develop on the Android phone). Here is the email:

Mango for everyone Vol 14 | October, 20
It’s been a very exciting couple of weeks in the world of Windows Phone! Over the past two weeks, we have seen an incredible amount of activity surrounding the launch of Windows Phone 7.5 (formerly Mango). It’s actually been somewhat surreal in some ways because people are paying attention to this release and actually think it’s downright cool!

So what exactly did we announce over the past few weeks? I’m glad you asked! The major announcements included:
The Release of Windows Phone 7.5 by carriers to end consumers: Microsoft has begun delivery of the Windows Phone 7.5 update to Windows Phone users by carriers. To find out when your carrier will be ready to send out the update to you, there is a handy little web page here that gives you the status of the update relating to your carrier.

Introducing the Mango App Challenge: Developers, do we have an awesome deal for you. We have introduced a promotion called the Mango App Challenge that in essence will give you a new phone (up to 300 total for the entire promotion) if you build 2 new, quality Windows Phone 7.5 apps (or games). Interested? Then start your PC and begin coding, because the promotion ends on December 15th, 2011!
The Introduction of the Web-Based Marketplace: Last week the web-based version of the Windows Phone Marketplace was launched. This is great because it allows you and potential end users to find and purchase apps you’ve built onto their phones using a non-Zune experience. It’s also great for providing a way for potential users to see your apps that don’t even have the Zune software on their machines.
Windows Phone SDK 7.1 Launches: Also last week, we launched the go-live version of the developer tools for Windows Phone 7.5 and you can download the tools here for free . Even if you’ve built Windows Phone 7 apps already, it’s a good idea for you take a look at your app and update them to take advantage of the Windows Phone 7.5 features that were previously unavailable.
The Marketplace Expands by 19 Countries: When Windows Phone 7 launched, the Marketplace supported 16 countries. With the update of the Marketplace, we have included 19 new countries making it easier for your apps to reach an even larger audience.
In-App Advertising: In the past it was difficult to collect the revenue from in-app advertising using Microsoft’s Advertising Framework as it required you to provide a US non-PO box address for US tax regulations. That requirement is no longer required for Canadian developers using the Microsoft Advertising solution . This gives you a really great new option for monetizing your creations on Windows Phone.
A Change to the Bulk App Policy: One of the things that Microsoft is committed to is providing the end consumer with the best possible experience to find, download and enjoy apps and games. To ensure that experience remains extremely enjoyable, we have made some changes to our bulk app policies . In a nutshell, app publishers will be able to submit up to 10 apps in a day for certification. Likewise, publishers will limited to publishing 10 apps in a single day as well.

That’s just some of the cool stuff that’s been happening on the Windows Phone front. Excited? We certainly hope you are! So since you’re excited (and maybe have a couple of great ideas for apps that you want to build and get a free phone out of it), how do you start? Below are some steps that can get you from idea to published app!

GO DO's:
Download the Windows Phone SDK 7.1 . All the tools you need to start building apps and games are here.
Read the Microsoft Canada Windows Phone Development resource page . This page contains links to everything you need to start learning how to build amazing app and game experiences on Windows Phone.

Register as a developer on the Marketplace. Once you’ve developed your app, you’ll need to submit it to the Marketplace for certification and publication which requires you to be registered on the Marketplace (it’s a $99 annual subscription).
Build a second app or game, and submit both of your new apps/games to the Mango App Challenge !
Paul Laberge
Developer Advisor, Microsoft Canada Inc.

UIX and UX Tip -- A Note To CNN as Well

Above is a screen shot of the new CNN beta video player. The reason that you don't see any video (yet) is because I got a screen shot of it while the video was loading. It was slow.

But slow loading is not my issue today. The issue is an all black screen. I have been using my laptop on the balcony all week long outdoors, and when you have an all black screen outdoors, it acts more like mirror than an all white background on a web page.

More and more people are viewing web pages on mobile devices while outdoors. It you want them to have a good User Experience, you will not use an all black screen like CNN is doing -- unless you want your web page to be used for a make-up mirror.

And yeah -- I know ... I know .... this blog is an all black screen. My excuse is that I used a Google template and this was the only one that fit my theme.

Java - Convert Gregorian Calender to DateTime

When programming in Java, I like java.util.GregorianCalendar a lot. It makes date and time manipulation easy peasy. For example, I have an application where I have to get the current datetime and add twenty minutes. It happens in a couple of lines:

GregorianCalendar gc = (GregorianCalendar) GregorianCalendar.getInstance();
gc.set(GregorianCalendar.MINUTE, +20);

Piece of cake. But when I wanted to take the manipulated time and cache it back to the database (mysql), I was stymied for a moment. The database field was a datetime entity, and for a few minutes I wondered how to convert Gregorian Calendar to DateTime.

I didn't realize the relationship between DateTime and TimeStamp, so it took me a few minutes longer to figure out. The piece of code that eventually worked was:

GregorianCalendar gc = (GregorianCalendar) GregorianCalendar.getInstance();
gc.set(GregorianCalendar.MINUTE, +20);
java.sql.Timestamp javaSqlTS = new java.sql.Timestamp(gc.getTimeInMillis());

Hope this helps someone Googling how to convert Gregorian Calendar into DateTime for SQL.


The Future of Computer Gaming

One of the reasons that computer gaming is so popular and addictive, is that it offers some real excitement in the boring moments of a person's life. If one has a normal life, it can get pretty mundane. Playing a computer game stimulates the production of brain chemicals like dopamine and other endorphins like adrenaline. One can get used to the chemical rush produced by playing video games.

So computer games will push the envelope further and further to produce larger highs and more excitement for their players (and line their pockets with the profits). The ultimate computer game is casino gambling, but that has negative social connotations and it is dangerous in the fact that the odds are stacked against the player and one can lose all of your money.

Video games will get more and more realistic, until they cross the line into reality. We have already seen that with foursquare.com. However foursquare is too much reality in the fact that it misses the instant gratification of say a computer game.

So the new genre of computer games will ultimately combine reality, excitement, suspense, competition and a bit of gambling thrown in. That is the ultimate formula. I think that I have a recipe. Thank goodness that I am a coder.

Escape The Ampersand

I just spent several hours pulling out my hair trying to escape the ampersand character in an .aspx URL with parameters. The URL was a third party URL which needed to be encoded. I was working in JSP, JavaScript, XHTML, JSF, and JSTL.

It went something like this:

www.mydomain.com/login.aspx?name=Username&Password=password&accountNo=AcctNo

I constructed the string and tried to escape it with a "\". Of course, I quickly realized that it was illegal. There are only a few things that work with that escape character.

Then I tried the '& amp;' thing. That didn't work.

Then I tried the '% 26' thing. That didn't work.

I imported the URLEncoder and fed the string into that. It didn't work.

I tried using the URI constructor with the 5 input elements. I have more than 5 inputs and it kept throwing a path exception. Nothing seemed to work.

I tried most things and they didn't work.

What finally worked was the \u0026 thing.

In the JSP the URL looks like this:

String url = "www.mydomain.com/login.aspx?name=Username\u0026Password=password\u0026accountNo=AcctNo";

Hope this helps somebody.

This Caught My Eye -- Investigating Jurors Over the Web



Check out how Facebook and social media is being used to investigate jurors.

Yahoo Mail is Down?

I haven't been able to access Yahoo mail today. That includes all permutations and combinations of Yahoo mail such as rocketmail. It started out very slow, but eventually a message showed up when you clicked on it in the in box. Then it started timing out. Finally, I got the server hangup message.

Java Server Faces Redirect

I have been created a JSP/JSF web application and a certain aspect of it was coded in XHTML using JSF and Facelets. It has been giving me no end of grief. On every page, I do a check of a session attribute to see if the person is logged in or not. It is a simple check. I have a page that is included with every JSP page that contains a little scriplet that queries the session attribute. If an attribute called "Access Granted" is true, then the person is logged in and gets to view the page. If not, they are re-directed to the index page which is the login page.

Here is the normal code that works great as a scriplet:

<%

//If a user bookmarks a page, then this check is performed to see
// if they are properly logged in. If not they get re-directed
// to the login page.

// The way that it is done, is that the login validation sets an
// Access Granted attribute.

String accessGranted = (String) session.getAttribute("AccessGranted");
if(accessGranted == null)
accessGranted = "false";
if(accessGranted.equalsIgnoreCase("false"))
response.sendRedirect("index.jsp?NotLoggedIn=True");
%>

Simple stuff. Then I had a page coded in XHTML and I used the ui:include tag:


The tag worked, but the page didn't. The scriptlet tag <% some code ... %> fails because it is not well formed html. It is not closed like a regular tag "/>".

So I rewrote the page in well-formed XML. I added the JSTL jar so that I would have access to the c:if conditional tag and the c:redirect tag. One can always get a session attribute with the following syntax:

"#{sessionScope['attribute_name']}"

OK, so I use the conditional tag in the jstl core to see if the session attribute was true, and if not, then re-direct to the index page. Piece of cake, right? Wrong.

After dicking around for a long time, I had an error message that said something like the tag was defined in "http://java.sun.com/jsp/jstl/core", but no class could be found. It was after a bit of hair pulling that I found out that the c:redirect tag was not supported by facelets.

A lot more dicking around ensued until I found this javascript work-around that enables a JSF redirect. Here is the code in its entirety:




Having a problem as this blog wants to parse the tags in the code. Replace '<' with < and '>' with >.




'<'ui:composition
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html" '>'

'<'c:if test="#{!sessionScope['AccessGranted']}" '>'

'<'form jsfc="h:form" id="redirect"'>'
'<'a jsfc="h:outputLink" value="#{'index.jsp'}" id="path" '>''<'/a'>'
'<'script type="text/javascript"'>'
var link = document.getElementById("redirect:path");
location.replace(link);
'<'/script'>'
'<'/form'>'
'<'/c:if'>'

'<'/ui:composition'>'



It works perfectly. However, JSF is supposed to uncomplicate your coding life. It just did the opposite for me.

Website Traffic Faking


There is a new trend in town, and its traffic faking. It happens two ways. The first traffic-faking scenario is when a website has Google Adsense on it, and Google pays per page impressions. The pay for click is pretty good, but Google has ways of detecting fraudulent clicks. However they pay a penny or two for a certain number of page views, and this is what traffic faking targets. It is relatively easy to spoof unique page views, but a heck of a lot harder to spoof the controls that Google puts in for fraudulent clicks. So this type of traffic-faking hits as many times per hour as programmed, and the pennies add up for page views.

The other type of traffic faker is aimed at people who check their web analytics. For example, I have a blog based on philosophy, and I noticed that I was getting referrals from an ad-laden website peddling tooth-whitening products. It appeared that they had a referring link to my blog. As it turns out, I went to the page, and there was no link. They generate traffic to their pages through sheer curiosity.

On another one of my blogs, a company selling colored toilet paper used a traffic faker. I usually go to their websites, and hit the contact button, and used terms related to lower anatomy and sphincter muscles, and tell them forcefully to stop traffic faking. I don't know if my scatological references really work, but it makes me feel better.

One would think that the smart people at Google would work out a traffic faking filter. I think that I will go and ask them to do so. I will let you know what they say.

Nokia Site Hacked

I am a registered Nokia Mobile Developer. I got this email from them late last night informing me that my information has been compromised:

You may have seen reports or received an email from us regarding a recent security breach on our developer.nokia.com/community discussion forum.

During our ongoing investigation of the incident we have discovered that a database table containing developer forum members' email addresses has been accessed, by exploiting a vulnerability in the bulletin board software that allowed an SQL Injection attack. Initially we believed that only a small number of these forum member records had been accessed, but further investigation has identified that the number is significantly larger.

The database table records includes members’ email addresses and, for fewer than 7% who chose to include them in their public profile, either birth dates, homepage URL or usernames for AIM, ICQ, MSN, Skype or Yahoo. However, they do not contain sensitive information such as passwords or credit card details and so we do not believe the security of forum members’ accounts is at risk. Other Nokia accounts are not affected.

We are not aware of any misuse of the accessed data, but we have identified that your email address was in one of the records accessed, though it contained none of the optional information, so we believe that the only potential impact to you may be unsolicited email. Nokia apologizes for this incident.

Though the initial vulnerability was addressed immediately, we have now taken the developer community website offline as a precautionary measure, while we conduct further investigations and security assessments. We hope to get the site back online as soon as possible and will post developments there in the meantime.

If you have any questions on this, please contact Nokia.developer-discussions-support@nokia.com.

The Nokia Developer website team.


Somebody has to do something about security. There has got to be a better way for authentication.

Classmates.com -- Another MySpace in the Making?


A few years ago, I signed up on Classmates.com. I did it out of pure curiosity to find out where my peers in high school ended up. I enrolled in the free registration and had my name posted on my school page and my year of graduation.

They had all sorts of features such as someone coming by and signing your guestbook, or sending you a message. Of course to read who signed your guestbook, or to open your messages, you had to pay a monthly premium. I never did pay the monthly premium. I was never that curious.

Then along came Facebook. It was easy to find your classmates with a recent picture, and if their privacy settings were low, you could find out who they were married to, who they were working for, and in general determine that they didn't surpass you in the game of Life. However in my case, my classmates are respected members of the Mayo Clinic, top universities, have played professional sports and made my resume look like I was an under-achieving failure.

Linked-In is even better at connecting with people from the past. I've noticed that Linked-In suggests possible connections of people that I have never emailed, but have Googled. How does that happen?

Anyway, Linked-In has enabled me to connect with a family member who didn't want to be found. It is superb at finding out degrees of separation between you and anybody.

So where does that leave Classmates.com. I regularly get spam from them, begging me to pay to read to see who signed my guestbook four years ago. The spam sounds more and more desperate.

In addition, Classmates.com is now trying to suck me into a "Memory Lane" thing where it matches movies, music and trivia to the year that I graduated. That isn't going to induce me. I don't need reminders of how old I am, and thanks to iTunes and others, I already have all of the music from that era that I would ever want.

So I am thinking that Classmates.com is another MySpace in the making. It can't be sustainable when Facebook and Linked-In do the job of connecting people much more efficiently with a bigger information load. If there is such a think as stock in Classmates.com, now is the time to sell short, if you haven't already!

How A Geek Would Write A Gossip Column

using package.urination;

public No_Class
{

public void BladderinPublic(String name)
{
if (name.EqualsIgnoreCase"Gerard Depardieu")
{
if (context==Integer.Parse(flight_Number))
{
try
{
_P = onTheFloor
}
catch (Exception stewardessYelling)
{
System.Out.Printline("Drunken Pig");
}
}
}
}
}

The End of the Line for the Business Intelligence Cube?

I was deep in conversation with a tech-savvy epidemiologist at a dinner party. He is a physician who is the head of an NGO (non-government organization) with offices in various countries on a few continents. He happened to mention that he had over a million record sets that needed data-mining in a very specific way.

His organization had ascertained that the easiest way to convey epidemic data to policy makers was via a 'weather map' where the geographic areas that were in the greatest danger would progress from green to yellow to red when a full blown epidemic developed. To that end they created a data-mining tool for reports. However there was one major flaw with the tool. It could only show results after the fact and didn't perform predictions. Predictions are important for epidemiologists.

I suggested that what his data mining gizmo needed was a Bayesian Inference Engine. Bayesian Inference principles are used for logical inference and prediction on imperfect data sets. A Bayesian operation takes historical data, and calculates the probabilities of a number of events of happening when their predecessor events have taken place. Bayesian inference is a tool in the arsenal of artificial intelligence. It is the perfect tool for running predictions on evolving data. In an epidemic situation, data evolves rapidly. One cannot wait until it is all said and done to run the analysis.

I described to my medical friend how one would make a real time inference engine. Before any row of data is inserted into a database, an inference factory instantiates an inference object. The inference object is used to either look up the probabilistic meta-data for the permutations and combinations of the columns in the row of data (it examines each data dimension) and recalculates the inferential probability with the input of the new data. The output is filtered and deposited into a results table.

Then the thought struck me, that if this function was built into the database engine, there wouldn't be a lot of need for business intelligence cubes that require vast amounts of ETL (Extract Transfer and Load) data dimensioning, data marts and obscure SQL statements the size of a novel.

All of the data would be digested in real time, and mined and refined in one shot. The inferential factory in the database engine would calculate in real time on every data insert, and various filters would be defined for reporting.

With the exabytes and exabytes of data that we are generating, this could be one way of handling the tsunami of data without being overwhelmed by it. And IBM would be awfully sorry that they bought Cognos Business Intelligence Cube software.

What the Chinese Are Looking To Invest In

It is interesting to see what the Chinese where to place investments in terms of technology.

I belong to a Mobile Technology group online, and today, the following advertisement was posted:


Looking for possible acquisition targets in US & Europe

A large Chinese investment company is looking for possible acquisition targets in mobile applications, games, internet, eCommerce, mobile & online advertising, 3D technology, animation, comics and traditional media such as newspaper and magazines. The company must be profitable. Targets size between $10m - $100m.




What I find interesting is that they want to invest in newspapers and magazines as well as technology media -- these are instruments for spheres of influence. This has the potential of being frightening to Americans, considering that the Chinese state probably owns this investment company.

It's Time -- A New Plug-in Filter for Browsers Needed

I am starting to get a little ticked off at how much data is being collected on me when I surf the internet. Websites often ask for authentication data including name and birth date, which they match to an IP address and can get a geographic location. For websites that I deem do not need that information, I always give them an alias, fake birthday and I use a throw-away free email address.

However, through various means, many companies collect browsing data, referrers and all sorts of meta-data, browser information etc. that can be used to pinpoint you. I say that it is time to stop the madness. It is time for us software geeks to take back the internet. I don't want to have to use a proxy server to browse the internet. I say that it is time for a new privacy plug-in for the browsers.

This privacy browser, first of all, would effectively filter out the ads as efficiently as the old incarnations of Firefox did. But it would do much more.

It would deny all http calls to third party sites not in the visiting domain. It would filter out third party cookie information. It would filter out browser information. It would prevent the reading of browsing history. It would deny any app from reading my email address or my contacts. It would not send any data to any domain not in the visiting domain.

Certainly it is not in the best interest for any organized company to write this browser filter, so it would have to come from the community of programmers who are concerned about online privacy. It is certainly time to take this privacy issue into our own hands.