Monday, December 31, 2012

New Years Advice for Founders

As we approach year end certain things are changing while its true that SoLoMo investment from VCs and Angles is lower they are in fact switching GeoLocations and looking in other Geographical locations other than West and East coast in the US such as the Midwest. I ran into something recently that I would like to highlight in a certain way as advice for Founders looking for CTO-Cofounders.

1. Respect the User is the first law for anything involving applications and services.  That somewhat means that instead of lying when you only got 500 downloads a month and calling it successful while at the same time posting fake astro-turfing app reviews in the AppStore that you instead respect the user:

    A. If caught astro-turfing by a user, do not snipe back at the user in your    apology just straight accept responsibility and apologize.
    B.  If you were dumb enough to snipe at the user after getting called on astro-turfing and the potential developer you want to network as the potential CTO-cofounder  catches it do not shove your head up your asshole and call such things presumptions without merit. Your Mom did not raise you to be an irresponsible asshole,

2. You are nothing to the developer as he or she does not know you  or your firm and we are in fact effing busy and so do not be surprised when we ask that you come to a near by eating place to buy us an inexpensive meal to start that first networking conversation.

3. Remember a developer will judge your interaction with him or her to see if they get the impression of how you will treat a stranger that is a VC or Angel investor. That means if you are caught at anything your correct response is to drop the attitude and apologize. And yes this is not optional.

4. You are a stranger to any developer. do not start with a pitch, because we have a sick game of tearing about pitches from strangers not bright enough to understand the proper sequence. Your job as founder is to have that first networking meeting go off in the proper manner. The way to handle it is to pick some tech questions that you might have that are easy to answer in about an hour. You will do this several times with each developer you talk over several months of meetings with each developer.

5. Signing up for a whole bunch of meetup groups is not networking. At the most its ego tripping. Physically meet with a developer and break bread with them as that is in fact real networking.

Last, I must apologize to those who somewhat responsible and already have put this into practice.

Sunday, December 30, 2012

Ui Design and Mind Phrasing

One of the aspects of Mobile UI design is the lack of space. Some ill-formed people might claim its context based UI design we have to strive for, namely Scobble,

The contextual and exponential future of Facebook.


Its not context as that is what Google does currently or any large data-web services combination such as Facebook. Its also what GUI designers hoped for way back in the 1990s such as Kai Krause with KPT and Bryce.

Kai Krause always started with a mind phrase-logy before exploring new designs, for some measure of that see this or just a biref sample:

A whole wave of blogs and such have popped up again in recent weeks, asking the perfectly reasonable question "Dang, what is that Kai guy up to...? "
But I didn't disappear - I am right here :)
It is the public that disappeared from my rear view mirror.

Notice that the mind phrase-logy expresses turning out of logic in looking at something. Its the same looking outside form inside or inside looking outside when everyone is doing it the opposite way you encounter in Zen Koans.

The difference between a Google text search and a Facebook text search is Google is matching a context against a present context activity of a user. Facebook is matching a context against a past user activity. Guess which mobile is? its present context activities.

The mobile future in UI and application design is matching a users current activity context to the application displayed and enabled features. This is why geo-location ads have not taken off as of yet due to them not matching current context activities of mobile users but past context of mobile users.

Mind phrase wise, Google search is:

Mobile I intend to go where

Facebook search is:

Mobile we did go where yesterday

Whereas the future of mobile is:

Mobile I am going here

Vastly different than what Scobble tried to describe and failed. My mind phrasing puts it as predicting what I am currently viewing through the eye of a needle looking at a galaxy of stars. Not as beautiful as Ka Krause's words but you get the point.

Friday, December 28, 2012

Agile Project Management, new Tool

Part of the aspect of Agile Project Management is understanding the code repository/issue tracking/wiki/project website pages philosophy under-pinning such as service.  Github is not the same as Bitbucket, for example.

GitHub was founded with the philosophy that there should be no managers within the coding process. You see that in the design of how the particular services plugin together as there is no very rigid enforced workflow. Which is all fine and good as you get some more power in what you  can do but that power gets wasted if yo do not organize it even though we might want a manager-less system.

In Mythical Man Month Brooks talked about the systems they setup to manage projects, project cards, lists, etc.  I found this neat web service that attempts to implement that and seems to pull it off quite well:

The service is called Trello.com and organizes each project into a board and into cards and lists. As the status changes for a card it moves from one list to another. The project management of people things about a project than happens somewhat organically.

But wait a minute. How do we integrate with commits, etc?  You could use itDuzzIt and their Trello to Github connector but they only have 20 transactions in their free plan. Now we come to a major difference between Bitbucket and Github that people overlook.

Github has taken the pain out of service hooks by doing all  the hard work, all you have to do is fill i few simple settings for Trello and authorize it by clicking on the consumer authorize token link in the repo service hook admin page. How is that for simple?

Thursday, December 27, 2012

Developer Cred

Its not easy using free services right now if you want avoid getting trapped in silos. It seems everyone reverted to web 1.0. However, if you need a way to show your developer cred in certain ways there might be a solution.

I have been trying out coderbits as they allow me to link and scan events for all my developer stuff from code repos, question and answer sites, developer portals, etc. Ease of automation rather than the very limited coderwall or masterbranch.  I have invites!

Use this invite:


https://coderbits.com/account/signup?inviteCode=2b2bc668-0079-4279-893c-c756edae161a


I still have not found an easy way to integrate a free continuous integration server service with bitbucket.org projects and BuildHive only supports github at the moment. But that is a subject for another time.

Tuesday, December 18, 2012

StartUps-BuildingCommunity

From time to time Chicago StartUps seeking  mobile technical co-founders contact me asking for a meeting. Which on its very surface is a good thing as VCs and Angels prefer to fund those only with technical cofounders.

The problem beings with that first email, where someone who is somewhat older than 21 years old decides that desperate times call for the strategy of being less than honest and other things. And you  may think well its only one time how can it harm.

The problem is in the beginning to build product buzz and buzz about the startup you to build a community. Some of that is by developing a quality mobile application through use of code development skills. However, a large part is in the ethics or treatment of the mobile end user.

Let me give you example, here is the link to the review of iLyngo. The founder posts a fake review here and I quote:

Justin is right, re all 1 of 2 reviews. But I'm sure others do too... At least, I'm not hiding it... I just wanted to let you know why I built it... So I can understand the lingo from my friends, family and colleagues and empower them and all of you with this capability plus more as well... Try it out and let us know, we can only improve... All opinions welcome +ve or -ve (even if not about the app)...



And that is not the only fake review by that startup staff. Can you imagine my reaction upon receiving an email from this founder requesting a meeting because they desire a technical cofounder. 

Now notice also the amount of downloads at 500 monthly, most mobile application sin this area have a successful field test of anywhere from 5,000 to 50,000 monthly downloads the first month. Thus we know the founder is acting out of desperation rather than knowledge or even skill.

Want a quality android developer for your Chicago startup, do not come into my email inbox playing despicable games like the founder of iLyngo. Have the courage to give a damn about that mobile application user you want using your products or go the Fuck home.

Sunday, December 9, 2012

AndroidIDEAccessories

The accessory files like the IDE spelling file, PMD and CS files, color editor files, etc in a Project called AndroidIDEAccessories if you use Eclipse for your android application development.

Saturday, December 8, 2012

AndroidEclipseTweak

Set of files to style the Eclipse 4.x IDE using css to look like a polished Android IDE.

Although it is based on Linux and the Abwatia clearlooks theme and engine the gtkrc file should give you an idea how to change your own to suit as with Eclipse on Linux we are using a bash script to set an application specific gtkrc to set the system colors right for the eclipse 4.x css styling file.

If you are not on Linux than you still should be able to sue the same css file as you will just have to rename it the platform OS variation name that the eclipse platform expects. No Linux users will of course put the renamed css file in their hidden metadata directory that they created in their user home called .e4css.

The project files are here.

Does your Android IDE look like this?

Does your Android IDE look like this?
Project files will be posted this evening so you can have the same exact look. For those on Linux systems you can still re use my css file and just rename it to the OS type that Eclipse is expecting and than place it in the hidden metadata folder in user home dir named .e4css and than set your system OS colors.

For those on Linux, I supply a bash script and gtkrc file to adjust system OS colors.

Would have been nice if Google spent the time on the adt-bundle do this styling as a bit of polish on it.

Cons, not all SWT CSS properties are exposed. See that heap status indicator at the middle of bottom status bar?  Its one of the things I am having trouble CSS styling because not every thing is exposed. I know its canvas thing and than some text on that canvas, but its not reachable via CSS as of yet.

Friday, December 7, 2012

Eclipse GTKRC magic

Okay, more progress:

The main thing to remember is since we are calling a gtkrc specific for an application that you have to add most of what was in the original base gtkrc per theme back in once you have figured out what color scheme to use.

Now what is left tweaking some stuff than publish it for others to use.

Thursday, December 6, 2012

EclipseDroidTheme Intermediate

Okay, some progress. As you can see I found out what the bg_color value controls in Linux gtkrc:



I still have tweak the color scheme. When I finish and publish it If you use Linux you will get 3 files; eclipse.gtkrc, ecrun(bash script), and e4_default_gtk.css file. And its simply move the files to the right places and no messing around with plugins.

This is the tweaking that the adt-bundle should have received as than it shows some polish. I say that because this past summer Google recruiters were attempting to get me to go through the application process for a developer advocate position. This is the type of stuff we care about among other things.

Contrary to popular misconception you do not need to create a plugin to do a theme, at least the minimum  e4 css one. You will not have to create a plugin until you start fully customizing editors.

Tuesday, December 4, 2012

EclipseDroidTheme Progress

Okay, here is the progress thus far on my EclipseDroidTheme:


Its relied upon with only one plugin dependency namely, the Chrome Theme plugin. As you notice the top portion of window still needs styling along with the image bar that ChromeTheme defaults to and some editor areas.

What I can do is enforce a Linux gtkrc file for just the Eclipse IDE which will fix rest of it. On windows you would change the default css file that ChromeTheme loads and rewrites. But I am on Linux so I will do this via a gtkrc file for my eclipse application.

The nice thing is that it will still work for Eclipse Keppler with minor adjustments as I am told they are fixing some of those issues that I am correcting.

Than of course borrow the com.android IDE splash and icons and I now have fully reasonable improved android IDE from the original. Yes will git publish my ChromeTheme epf settings.

E4Theme that respects Linux system colors

I found an Eclipse 4 Theme plugin that respects the Linux system colors,ie it will respond and change when you change Linux Theme colors and Window settings. Its by Tom Sonton and called e4-e3theme.

I will be forking this and modifying it to derive a full Droid Developer theme using Eclipse ColorThemes plugin. As far I know its a temporary fix as in June 2013 when Keppler comes out this set of issues is suppose to be fixed.


Monday, December 3, 2012

Eclipse Checkstyle for android

This in form of a gist, is the raw checkstyle checks for android coding conventions I am starting with. Obviously, its for checkstyle 5.6.0 and it has not been tweaked yet as far as android coding conventions. But, its close and I will update with changes.

The big change, from other of my checkstyle for android files that you may have used is that no suppressions.xml file is used but instead we use comment delimiters to turn on and off checkstyle checks within the source code. Makes code maintenance a whole lot easier.




PMD51 ruleset for android

Remember that beta new version of the Eclipse PMD plugin that uses PMD5.1 that I referred to about a week ago?  Here is the gist paste showing what a typical pmd51 ruleset for android app development will have set as we now rely on Lint more for things.

Once again, its for use with both android Lint and PMD 5.1 using Eclipse IDE. obviously the rest is checked by Lint rules, hence the absence of using the built in PMD android ruleset.

Sunday, December 2, 2012

Adt-Bundle Bug

I am not sure if this is a bug or not. But, when you  download the adt-bundle from Google which includes Eclipse you will notice that its Eclipse 4.2.0 and not eclipse 4.2.1.  Which might be okay.

But when you attempt to upgrade it to eclipse 4.2.1 and than attempt to install either the Chrome Theme or the JBoss Central UI Theme plugins to get some nice ways to change the theme of the UI both plugins fail on the windows preferences general appearance  selection.

Why JBossTools?  Because that is the only group of plugins that has an updated framemarker plugin to allow us to make and modify new project templates as they are framemarker files. Its not a show stopper bug its just plain annoying.

The solution is probably dumping the com.android plugins from an adt-bundle install into a fresh Eclipse 4.2.1 install and tweak the eclipse.ini file to point to the right product splash screen.

Tuesday, November 27, 2012

Where is MotoDevStudio for Android-ADT?

First do not panic, as your heard Google is doing some cleaning up of Motorola. One of the cleanups is duplication between tool sin AOSP and Motorola. MotoDevStudio For Android is not dead as the plugin stuff got opensource and donated to AOSP.

However, they had to stop the duplication so there is not a new download if you did not get it recently. There are some directions over at Motorola Developer Resources  in how to build the plugins however.

As far as I know its being merged into ADT along with the other big change of using Gradle as the build script tool-groovy language based instead of Apache ANT. What that probably means its that we will see an alpha build of the ADT as we get to preview the 22 version of Android Tools before Google IO 2013.

Thus for right now its a bit of a pain but Google had to act as if the MotoDevStudio downloads were still accessible than there would be all these support questions in the forums which would take away from the other developer support questions they need to answer..  Thus, in summary before the next release of Android Tools and the ADT to get the same MotoDevStudio For Android feature set you will have to click on the link above and than click on the link under Core plugins and follow the build instructions to get those plugins to install in Eclipse.

Sunday, November 25, 2012

MVC-MVVP for Android

Despite being weighed down by Gig posts in the Chicago area from startups with no money, I have been thinking about the UI MVC-MVVP problem set. iOS has had a MVC approach for awhile but on the android java side until interface and annotation and dependency injection performance get fast enough we avoid many interfaces and other bad choices to deal with it instead of facing it head on.

But what if we start with an anti-pattern? And this is where the java knowledge separates the average android developer from the expert android developer. In Java Swing there is an anti-pattern of an event bus that is in fact serving as the callbacks in swing. I say its an anit-pattern because its not the normal way most are use to seeing the commands passed between MVC-MVVP layers.

If we extend this further and have all objects that operate as a command between layers than we have an anti-type MVC-MVVP in that its not heavily using interfaces and the callbacks are event queue based. Why would this be important other than having  a modular approach to application UI development?

Lets review UI optimization techniques:

1. Reduce the levels between parent and child to get to the invalidate and redraw faster.
2. Reduce the dependencies per callback
3. Reduce the number of interfaces as its a performance hit

The above approach directly reduces point 2 and 3 and indirectly reduces point 1. As the first component choice that leaves Square's Otto out of the mix for use as the event bus library.

EventBus by GreenDroid is not bad as it avoids annotations, yeah, but is missing some features. Sounds like I have a set of libraries to build.

Tuesday, November 20, 2012

Resuming SDK Manager dowloads

Sometimes we Android Developers may be using a mobile broadband connection and one of the problems with that is the connection is not always that stable.

As you know the Android SDK manager does not resume downloads. The trick is to understand that you can use some know-how and wget -c to get it done. If you view the cache in your android meta hidden folder at your computer user root folder you will notice the dl-ssl.google.com url.

That is not the base url to use, its dl.google.com/android./repository at least for the android Google stuff to download. The 3rd party downloads have the right download base url as the last url line in the individual item descriptions in the xml files.

Works real well, as I have downloaded stuff while at an eating place that provides wifi. Once downloaded you  than unzip it and place it in the right place in the SDK.

Thursday, November 15, 2012

Eclipse Juno PMD Plugin

For those Android Developers who still use a small part of the Eclipse PMD plugin, the Juno version of the plugin is at:

http://sourceforge.net/projects/pmd/files/pmd-eclipse/update-site/

That is the update site url and this plugin uses PMD 5.1, and the snapshot for that is at:

http://pmd.adabolo.de/job/pmd-trunk/

You will want the last successful artifact jar.


Monday, November 12, 2012

DocLava Does Diagrams

My DocLava does class diagrams:


Not a great hack but a hack just the same. Now the fun with xsl begins as I convert the codeQA XSL files to do the proper project headers and footers.
Its not great coding, but sometimes you have to get down to this level and take of these details so that project information is easy to generate rather than a bunch of broken work-flows.

Want to code in Go on Android?

Want to code in GO on Android?  As you know recently the GCC 4.6 changed to enable support for the GO computer language by integrating GCCGO. Thus if we get NDK toolchain to enable GO we than can code in GO using NDK in the Android context.

Someone started an open issue about it. Vote up this issue.

Sunday, November 11, 2012

DocLava Progress

Okay, so at the last set of tracking minor errors, AOSP style project pages:

Once the final errors are fixed than the final magic trick of embedded class diagrams.

CriOS?

Okay which one of you  jokers or readers has an embedded FoxBoard with CriOS on it ?

Is not CrisOS getting kind of old by now as most of you switched to openwrt? If you are that reader and do not mind send me a picture of the device using my G+ profile email form a I am curious of what device you came up with.

Saturday, November 10, 2012

DocLava changes for GWSDroidLava

As I stated before, I found out that AOSP has the correct DocLava variant that has the working embedded javadocs in website features. That would be this source right here.

My change is not so much as a fix but a modification to generalize some things so just average common android or java developer can just reuse my  projects template source and just change the text and go and output their project website.
Thus I changed the DocFile to instead look for website subfolders instead of the normal sdk folder layout when setting to output the cs files.


Loading ....

Starting at line 110 are my changes. Obviously, if someone wants a different subolder structure they might have to override something or add some additional head properties to some jd files. But, for the most part it gets them there as far as being able to pick up the project right away and reuse with minimum fuss or mess.

Android SDK New Build System

A post ago I talked about that Google is in the process of developing a new build system for application developers using Gradle which is in fact Groovy based. Since there only at version 0.2 right now that may be a slight wait as they still have IDE ADT integration, RenderScript support, NDK support, ProGuard support, Lint Support, emma support, and JUnit report.xml and html generation.

But, one should still start getting an idea of how it works so some resources:

New Build System Concepts

Using the New Build System

Gradle User Guide for 1.2

Gradleware.org also has a free book if you register and the link is on the front page of the gradle.org site.

For those who want to play with it now, the current alpha release is in the maven repo under android tools and its current version is 0.2. Its not the gradel android plugin at github:

Maven repo new Build System Gradle Android Plugin

So when will we see it in the ADT plugin or full sdk? Not sure, it be a nice holiday present if we get it before the last major holiday of this year.

Friday, November 9, 2012

Android Google and Gradle

Well, my hopes have been granted. Google did commit enough extra resources to polish up the Gradle Android plugin along with the code committers of that project and thus the brand new build system in ADT 21 is Gradle.

The brief note guide is here.

Congrats to both the Gradle team and the Gradle Android Plugin team and Google for making this happen.

What I like about it is they solved as I read it most if not all  of the issues that they started with to solve. We can now do multi-flavor builds with apps, etc. We now have either Maven or Ivy dependency management by default.
And we also have full support of the BuildConfig class ot modify it to fit our needs.

And of course now the Gradle Android plugin  supports Android Librayr Projects.

To get access now you have to get the ADT 21 Preview, but hopefully soon it be released in possibly November? well we hope so.

Thursday, November 8, 2012

Android Names

Every wonder where the how the Product names get determined?  Its somewhat simple, every product name is named for desert using letters of the alphabet starting with 1.5 being cupcake. In build numbers its the first letter.

Thus the next android OS major version, probably 5.x, will be some desert name starting with K or just maybe KeyLimePie. Android OS 6.0 will have a name starting with L, or just for example it might be Licorice.

What happens when they run out of letters? There is a key phrase in the OHA bylines in that the Android OS mobile platform is the FIRST product of the OHA and not the last.

Wednesday, November 7, 2012

Gist test

This is a gist test:


DocLava Fork

I found out recently why my issues and small fixes for DocLava might be not looked at or ignored. This is no reflection on the DocLava project or its code committers, it is what it is.

At about DocLava 1.0.2 or 1.0.3 the two versions or branches diverged. Let me explain, Android AOSP uses their own modified version of DocLava in which they made changes to that git source and than other different changes were made to the version/branch at code.google.com and thus the two branches do not match at all and you  cannot simply take changes from one branch and add to the other.

This also means that if you want the WORKING COPY OF DOCLAVA with the
EMBED WEBSITE feature working you want the AOSP copy. And this brings up another nice discovery.

The thoughtful engineers at Google have started experimenting with a new web UI for viewing android source code. Its at:

android-source-browsing

To see the doclava AOSP copy use this link:

doclava.git-AOSP copy

Thus, I will just fork the AOSP DocLava copy and keep track of the AOSP DocLava version. Basically, my changes refocus it on embedding javadocs in project websites with some generic supported project subbfolders, making separate clear silver macro pages to handle specific things to make it easier.

For lack of a better name its either going to be named GWSDroidLava or DroidLava since most of my use of it will be completing android project libraries.

Side Note: Yes I know my G+  profile description is too long and needs updated with the my static bitbucket.org site.  It will be updated soon.

First Post

So I wanted to move or re-start my Android blog with a service rather than having it be managed manually. While design and typography is important and
plays some role in how I brand my developer message around app demos, long tech articles it is not so important for daily and weekly blogging.

Expected posts here will be android code snippets, android code best practices, and later on some android hardware and android OS hacking.

Of course my main site is still:

fredgrott.bitbucket.org