Android app testing in the cloud powered by the people

Cloud Testing

Headbox is an alternative communication and social connection android mobile app – it allows people to fully communicate across multiple platforms with ease and convenience. Now at Alpha stage we would like to test our app on as many android mobile devices as possible to ensure seamless user experience.

Researching the possibilities we found that the majority of available testing solutions are designed for big companies and not for indie app developers. One example is Testdroid cloud by Bitbar. My experience with them wasn’t brilliant; it seemed to me that they are simultaneously testing several apps at a time, resulting in very slow testing. moreover the price starting at $500 (sorry $499 only) rises quickly to $1500 per month, making it very unattractive for indie developers who want to test their latest cool app.

I had this idea of a service that could brings together app developers and real users devices. Here it how i envision this working.

Users will register their devices making them available for testing.
App developers will be able to login and test apps on the registered users phones & tablets when the users are asleep! The system will identify the users sleeping time, allowing developers to run tests of their emerging apps on the idle device.

Registered Users will be paid per hour of testing and thus they will be making money while sleeping! App developers would have a decent way to run their app on multiple devices faster and at a fraction of the price – crowdsourcing at it’s best.

Further thoughts; it will be best if users charge their phones while sleeping (many time the case anyway) as otherwise this service will drink their battery clean by the morning, and we don’t want that. Just as well it is best if the phone is on quiet mode otherwise wake call may come is some ungodly hour much earlier than desired. Some tech specs that crossed my mind: Support for JUnit – standard Robotium, Espresso or general JUnit, Support for UIAutomator, Support for Calabash.

Why stop at android app tests – this could be used for cryptocoins mining(bitcoin, litecoin, etc.. will yield cents but still)

And why stop at device testing?

Well here’s another idea in the same direction – it is a stand alone start-up tackling the issue of Alpha and Beta launches.

Maybe the biggest contribution of the Lean Startup cult is the insight not to develop apps no one wants; launching MVP instead of final products and testing them with real users, collecting the metrics and doing the iteration dance. We love it.

However recruiting reliable and cooperative Alpha and Beta users is not easy. Friends and family in and around your circles are limited and going into acquisition through PPI campaign at this stage is costly and sometimes premature. services like usertesting.com offer a great service allowing demographic choice and quality input, however it is done in an artificial lab like environment at a costly ($50 an hour) price and in a contrived manner.

What if someone builds a dedicated community of early adopters that are willing and ready to download apps of their choice and liking – they are requested to use the apps and their performance is measured to determine and rank valuable alpha/beta users. This community is also contributing reliable data on themselves to allow accurate demographic segmentation. In this way apps that would like to launch their alpha/beta campaigns can decide on size of group, demographic and quality of users and pay for per capita. While indeed such community will only mimic real world users; and may yield bias metrics on acquisition, retention and virality it can still produce invaluable input on functionality and bug fixing. Again crowdsourcing thinking.

Testing on different devices

Build a startup Vs. University

I’ve been playing with the idea of building my own company for the last 4 years or so. and always when I come close with getting things going, I find fear, waiting there, looking at me, guiding me through a different path.

Fears Fears Fears

A lot of the things we do is defined by our fears. The fear of failure, The fear of not fully fullfil our true goal. those fears led me to a 1 year trip around the world when I was so close to the startup path.
And though, this trip upgrades me and my thoughts to a new level, and made who I am today, I keep thinking when will I’ll fullfil my true goal.

Time

2 years pass since then, friends started up companies, some will succeed some won’t, but those people are getting experience, those people have the guts to change things. and me? my goal stayed the same – create my own product. make things better. improve the way we interact with the world.

Now when I’m close yet again to start my goal, those fears are what’s holding me back and perhaps guiding me towards the academic world.

Is there a good time for building your startup?

In short, No. you’ll always find doubts, and tons of other things you can do, such as getting higher education.

“I’ll start a startup after being in one – check”,
“I’ll start a startup after finishing studying – check”,
“I’ll learn more about the market first – check”.

Best time to open a startup is NOW. what’s worse thing to happen? I’ll fail and get plenty of experience for my next round? I’ll enjoy this journey to the entrepreneur world?

Goodbye fears. I’m off for my new startup… Image

Why GWT is now ready for mass use – or why Super Dev mode rocks

As I first got the company where I currently I work, I got excited to get my first real dive into the web world.
Till then I did some web hacking, nothing fancy.
My problem was with the chosen web framework – GWT, (back then it was 2.2).

As a web developer who wrote client mostly in javascript I was amazed by the sluggishness of the development cycle.
Especially when debugging locally.
Every time I needed to make a change on the eclipse (my ide) and reflect it on the browser, the whole environment got stuck. Mainly because of the GWT architecture involving a C++ plugin on the browser side

GWT Typical Dev Mode by Thomas Broyer

For me this caused a hugh frustration, as I was used to near live reflection of code changes.

Further more, on every ~10 refreshes or so, I needed to stop the debugged process, and relaunch it, as too much memory was consumed / leaked (you choose).

Introducing Super Dev Mode + Source Maps

I think it all started when the guys at mozilla introduce Rapid Releases, aka the Aurora channel. Basically it meant a new version of the browser is released every 6 weeks, making it almost impossible to support the GWT plugin for each browser on each platform.

The guys at google started working on a new way to debug compiled javascript, first introduced in closure compiler.
and along with Mozilla, they got to something called Source Maps.

Source Maps allows us to Debug Java code directly on chrome

This is Java code running inside chrome browser with full debugging functionality coming from a screenshot I just took that uses the latest GWT 2.5RC features.

One missing link is the Super Dev mode.

SuperDev to the rescue

With the release of GWT 2.5 a new development mode was introduced called Super Dev Mode.
With super dev one could start a Gwt Code Server, launch his app, and with a press on a browser bookmarkelt he could recompile the app in draft mode in less then 10 seconds (Mine took around 4 second to build).

Epilogue – GWT is heading for some golden day

With those feature getting to stable state, GWT is heading for some glory, as it passes the bar and finally get to be mature like her equivalent web frameworks by gaining the development speed that one would expect.

Jump to Minute 16:14 for the interesting part (Source Maps + Super Dev Mode)

Hibernate debug log level is evil

Short story
I was doing some database tunning the other day, and marked the log4j logger level for hibernate to debug, meanning every query made gets output to the log.

Idiot Me
Ended the day and did a commit with this flag left in configuration.

1 month later we were bashing our heads on why the hell does a simple query takes forever. What changed in the system that made her so sloww.

Solution
It was my boss who traced down the configuration error in his regular eurica’s moments.

Conclusions
This thing could have been solved earlier if,

Commit hook would check if any debug configuration is committed to deployment brench.

The debug configuration were made in a user only configuration file, one that doesn’t get checked in immidiatly.

A better IT team would support us. From what I was thought configuration is the IT side,
cutting back cost on a good it team would cost you a whole lot of time and money – from tracing down configuration errors, to profiling, getting IT that knows his shit is importent.

Future Thoughts
Don’t forget to double check the flags you’re committing, and get a good boss

image

The flash capacitor can attack

Well… 2 years ago I’ve broke my Canon PowerShot A2000 camera lens.
Though the LCD and the rest of the camera is working – the lens focal is frozen and the image looks blurred.

So I’ve decided to open it up and maybe turned it into something cool (Nes machine?).
Just when I started enjoying the beauty of an undressed camera, she attacked me.

It turns out that each camera (with flash) has this thing called Flash Capacitor.
It looks like a battery and stores some power for the camera’s flash.

Eventually I’ve drained it using this tutorial
http://www.fileden.com/files/2009/8/1/2529628/Flash%20Capacitor%20Safety.pdf

Watch out from this small zapper

Defacing Endpoint PC’s Or How did I get free internet all over New Zealand

It’s always a challenge encountering a “protected” machine.
Whether it’s a thin client, a windows or a linux pc.
I always find it intriguing to “Jail Break” those machines.
I’m writing this post from a Linux Kiwi parks machine after doing some of the following tricks which I’ll explain shortly, but first. 

The following describes how to bypass end point PC’s protection which I’ve found all over NZ.

Global Gossip

A communication services for travelers spread throughout New Zealand, Mostly in Base backpackers,

Their machines runs on windows OS, When the OS boots you have the option to enter your credentials (User and password bought from the reception), or the option for Free Browsing.

The Free browser, offers a limited number of sites, usually offering deals around the specific area.

The Free Browser application is a wrapped .net application that build upon Internet Explorer web engine (Trident).
The application contains limited navigation buttons such as Back, Forward, Refresh,Home and no URL Address bar.

What most of those wrapped application tend forgot is to hook the Keyboard shortcuts, From Ctrl+P to Ctrl+O, WIN+R and so.

What if One presses Ctrl+O, then hit the browse button, A Microsoft Open Dialog window appear,

Here’s how to deface it:

1.Press Ctrl+O brings up the dialog.
2.Since the default option is to open file types of .html files and we want to open application files next step is to enter the ‘*’ char and then presses Enter to open all file types.
3.Since we are using a normal Open Dialog window we just navigate to a less restrictive browser, say Internet Explorer path, Right click on Iexplorer.exe and than Open, and… Eureka,
A new, unrestricted browser just opened,and, no internet restriction.

That’s All?

Well… No.

Free but limited as there is a background service that checks for the Idle of the Free browser process and after 3 minutes of  Idle time it logs off the user.

What can I Do?

There are 2 ways to bypass this service:
Either manually, every 2 minutes or so click on the Free Browser or just write a small script to do it for you (Duh).

Another option to bypass it, is to boot your OS from a different device,
You can boot from a USB or any CD on those stations (I suggests Bart PE, or Ubuntu Live).

Kiwi Park linux station

Quite safe box, This box uses a 2$ coin machine to operate.
Run by a linux OS, this box offer some desktop launcher shortcuts (Skype, Firefox),
when you try to open those, you’ll get a “limited station – Please login” message box.

Beside those limited launchers, there’s also another launcher icon, called Free – IAC location map & support and that’s our back door.

Here’s how to deface it:

1.Click the Free – IAC location map & support icon, which opens Mozilla’s Firefox 3.0.12 (Very old and exploitable version).

2.Navigate to Tools->Web Search (Or Ctrl+J) which opens the Mozilla Firefox Start Page with google search box showed in it.

That’s All?

Well… No.

Apparently, searching through Google works, though other sites are limited (By proxy).
You can however log into your mail, go through cached versions of sites, And even open any PDF, Doc (Or other supported format) document by pressing Quick View (Google download it directly to your mail so it’s quite easy).

Final thoughts

if you’re trying to protect an End Point box:

  • Disable the use of Keyboard shortcuts.
  • Restrict your Firewall / Proxy only to the sites you provide freely.
  • Try to use an updated version for the Browser Engine.
  • And as always, Don’t count on Client side.

Notepad++ Function plugin fix

I’ve been having problems activating Notepad++ latest version 5.x (5.8.2) Unicode with the Functions plugin version 1.2 Unicode.

The Problem: I could get the plugin running but it didn’t identify the FunctionListRules.xml file.

The Quick Solution (On a vista PC) :

1.Navigate to your users directory C:\Users\YourUserName\AppData\Roaming\Notepad++\plugins\config
and replace the empty FunctionListRules.xml with the one from the installation zip (Download here).

The Long Solution (How do I got there):

I understood the file somehow can’t be found.
Opened a procmon (Process Monitor).

Set the following rules:
I’ve put only xml filtering for Path because I thought that the plugin author might have changed the file name.
Set the some failed Result, And of course filter be process name (notepad++.exe).

Got some interesting results – Well, I’ve found the file name but still couldn’t understand what the problem is.

Next, I’ve removed the failed Result filtering, and… Viola

Users local path

Didn’t find the actual reading but I’ve found where other plugin look for current user data.
Navigated to C:\Users\YourUserName\AppData\Roaming\Notepad++\plugins\config
and there I’ve found FunctionList.ini which is a config file and the FunctionListRules.xml
Replaced the XML and I’m done.