Monday, December 29, 2014

CodeQA understanding Android Product Flavors

Got something almost completely worked out as far as getting checkstyle, pmd, findbugs, jdepend, javancss, etc to understand android product flavors. I expect to get the dashboard task with a sample summary running in the next few  days. The only bad thing is there are still parts that are completely manual. But, its better than running blind feedback wise while coding.

Will post the github repo link soon.

Saturday, November 22, 2014

Friday, October 3, 2014

Material libs

I am digging into Material Design and so a few android libs will be posted on github in the next few days,. My libs will have some unique twists to them.

Wednesday, September 10, 2014

Donot use RSA keys

I just over the weekend proved that you can brute force break RSA keys without the public key as I wanted some real reasons to switch to Elliptical. If you still use RSA keys for encryption you deserve to be hacked

Monday, August 18, 2014

AndroidStudioQuirk

If you working with build variant at some point the ide might not recognize your style/string, etc refs in the res xml files..ie the ones with the @ tag. The solution is just to reboot the IDE.

Wednesday, July 2, 2014

I stopped using Eclipse

I stopped using Eclipse 45 days ago.  I do not think I will use Eclipse anymore. AndroidStudio/IntelliJ is very liberating in comparison.

Monday, May 12, 2014

AndroidStudio Tip 1

Package-Info can be created by right clicking on a package node and selecting create file and tyep the name package-info.java. Once you type the package and packagename and the semicolon as will than recognize it as a java file.

Saturday, May 3, 2014

is AndroidStudio Ready for PrimeTIme?

This is my own humble view. Given the amount of things in alpha at the android gradle 0.10.1 stage and androidstudio at times not recognizing the android sdk mavenrepo,etc I would state now. Better wait another 6 months and see what improved.

In my own case I am splitting up a project architecture as libraries with the core of the app as a library and than doing different small code source apps that represent the build flavors.

Monday, April 28, 2014

I am off the marktet

Okay, I am off the market porting an iphone app to android for a startup..thus posts hee may be only weekly for awhile.

Saturday, April 12, 2014

EclipseCompatibility AndroidGradle

I found a project that supports the full android gradle project layout using Eclipse ADT. The project is persoapp, an app on android that uses German ID.

From what I gather in source, it requires a little more planning as you are moving res files, creating the build flavor packages, an modifying the eclipse .classpath file. But afterwards, one should be able to run builds via run as pointing to the gradle build file and modifying a property file to turn on run as auto-builds.

Thursday, April 10, 2014

ant 1.8 includeantruntime

Its a feature! Not,its more of a bug. Ant 1.8 change how the javac task includes the ant runtime libs. The work around is to rather than set includeantruntime to false in the javac task set a property named, build.sysclasspath, to the value, last. why?

This way your builds will not break when changing ant versions and you are still offered the option to set includeantruntime to true when you really actually need it.

Wednesday, April 9, 2014

Startup, hard to wait

What is frustrating in early startups is that period before on the path to becoming a co-founder. In that period, you are not privy to all information so its somewhat a black box when waiting for funding to finalize.

Than you have other startups and firms asking to interview you but they really do not fit in that the application or services is not interesting. The only solution at the moment is keep on the lookout for more startup leads and finishing some tools and helper classes.


Sunday, April 6, 2014

GWSAOSPifiedDocLava

Okay, I did some manual processing and took the AOSP fork of doclava and generated a jar of the doclet. Warning its alpha, I ,might have missed something. Features, its using the antlr processing so its faster than the old codegoogle doclava version.

I marked with the file name reflecting the source I took it from, the jar is in the dist folder:

GWSAOSPifiedDocLava

Its compiled to target 1.6.

It is meant as temporary thing as once they catch up to updating the code google version via the fork this project will be not necessary.

Java7 bootclasspath

For those new to Android Application Development, When you use Java 7 or higher compilers you should be setting a bootclasspath pointing to your rt.jar file in the target jdk for both your javac and javadoc tasks.

The reasoning is that way the compiler and the doclet use the right java version for the language rules when compiling. And your compiler and probably your javadoc doclet will give warnings if you do not set it.

Best practice wise you would put it under something the opt/oldjdks subfolder as far as installing the old jdks.

Thursday, April 3, 2014

500startups Coffee talk idiot

Look folks I get these clueless requests for coffee, lets talk all the time. Pretend I am a top VC, now rewrite the coffee, lets talk request to not waste my time and tell me what you want to talk about. Otherwise you are effing clueless mother fucker like the CTO of EsparkLearning.

Its not hard, fucking give shit for something other than your own self interests.

Tuesday, April 1, 2014

Now,the wait

Well, turned in the final tech spec/direction and now the wait..why the wait? The tech spec/direction involved a little pivot of sorts. And there is never an actual way to sugar coat it either..

Saturday, March 29, 2014

Pitching Nerves

When you get a very unique idea, its always that first pitch where you get nervous most about the pitch. Bu than again 0-n things are always that way.

Saturday, March 22, 2014

Cannot Talk, except tiddlywiki in Eclipse

There is something I cannot talk about in public next week so to keep out of trouble will be talking about embedding TiddlyWiki5 into Eclipse.

Saturday, March 15, 2014

Yahoo Top Managment

You probably will not like my message to you, but since you do not respect my wishes concerning bombing me with likedin spam about mobile android dev jobs at yahoo maybe a public  lashing will finally get your collective heads out of your asses.

First, I do not have $36,000 one-year living expenses to even think about relocating. This is why its stated on my linkedin profile that relocation ideas be presented to me at my local subway. Together firms like Google understand such things and are bright enough not spam me. Boy that does not say much for the bought Top management talent IQ levels does it?

Two, big companies tend to kill the joy to program, thus I am seeking startup opportunities close to my location that are telecommute. Yahoo is too big and lumbering to be considered the right size of startup opportunity.

DO me a favor top  Yahoo Management Fuck OFF!

Tuesday, March 11, 2014

In Clusterfucking for a Thousand, Whatsapp

If you use WhatsApp be aware that since their push to hire android devs they have screwed up security..they still use same AES key for everyone that I found out about when considering interviewing with them. I would uninstall right now if I was using it.

Saturday, March 8, 2014

Is Google's Gradle push wrong?

I might be wrong, but until Google's Gradle build for android computes java ABI values for the android project libraries it will not b fast enough for TDD. Facebook's Buck does this already along with the normal DAG cache of all inputs/outputs. See the feature page.

Friday, March 7, 2014

Why Do I code?

Last week and this week had this weird email conversation with a start-up where they did not understand that I would not go through a broken application process based on throw-away-sentences offered to me and they did not understand that I enjoy coding and do in fact code as a habit and thing of joy.

So why do I code? Its a set of puzzles to me that I can solve in a certain manner this is different from anyone else. Not to mention, there is a certain joy of building something than using it. Plus there is that engineering challenge can you produce something that is better maintained and less breakable than before.

If you watch a basketball game or a racing car event do you want to watch or to do the actual event? I do not watch sports as I do them, the same goes for anything else. Some watch big cats on tv, not me I go the a big cat sanctuary and walk among the big cats, that was one of a big impressionable cool thing that I did. The place is at here.



This is why I ask for a paid subway meal at my local Subway when a start-up wants to talk to me as I am a doer not effing paper pushing processor.

Thursday, March 6, 2014

Dagger's Family Tree

A lot of beginning devs are confused by guice, transfuse, auto and other DI solutions. to get a clearer view of Dagger's Family tree read the reddit google team ama from Feb 2014.

Transition to Gradle

So after some researching, I think I found a reasonable way to transition to gradle android application builds. The general idea was to have as many things decoupled as possible so that I have some nice flexibility in my developer workflows without some major crippling break downs.

One, right now the android gradle build is still alpha and will continue to be that way until 1.0 and that should be reached sometime before Google IO 2014. On to of that we do not have full gradle support in the Eclipse ADT plugin including no support for AAR artifacts(Yeah they would happen to pick the AXIS 2 AAR archive extension name..way to go Google team for your research!).

Thus, right now if we do a project layout that supports gradle while supporting the need to have the test project nested in the app project than we can have the same project layouts for both ant and gradle with minimum fuss.If we also switch to using Google's Espresso Testing Kit than we get rid of the need ot run jython/python for testing or say JVM-Cucumber and thus have a cleaner less complex set of build scripts.

And by implementing findbugs and Jacoco report use in the ant builds we get full re-use of all the xsl/xml reporting stuff and the code QA metrics will be the same.

As far as dependency management IVY is being used as a temporary fudge until we move to gradle builds as Gradle has depreciated IVY dependency management as an option in gradle, publishing of artifacts is still will be supported however.

As far as 3rd party android project libraries, the standard option if not reconstituting them is to do a fork of the repo in your own git provider user space and than do a git module to that forked repo in your git repo-space. Why? Because than instead of being tightly coupled with every change on the master branch flowing to your app project its only coupled to a fork of the project at a specific point in time. And youavoid breakage by not deleting those forks from your git space repo but instead only update the git module references when you see a change in the 3rd party library that you in fact need, that way you keep breakage to a minimum.

Wednesday, March 5, 2014

What Math is Recruiting?

If you look at the math behind it, The Secretary Problem, you will find that your chances of finding the perfect applicant converges to  36% while the odds of finding the bad applicant converge at 64%. Please understand that devs are somewhat mathematically trained.

From my understanding of that math it means that any potential request for an interview that does not talk about very specific things about my skills is dramatically a waste of my time with the current high demand curve for android developers. Its my job as potential android developer for your firm to qualify the potential opportunity lead.


Sunday, March 2, 2014

What I Want In a StartUP

There is a body of related development components,processes, etc that combined the right way will transform the android UI from where its at now to the smooth UI that is faster than iphone. And of course I am in the middle of finishing libraries and processes that will bring that to reality.

There are so many well-funded startups wanting android developers that the normal HR processes do not work and are somewhat broken. If you want me to devote some of my time to you than you might want to actually listen to what I want and maybe find a way to give those things that I request to me.

1. A temp email addy from a auto-resume service and the request for phone number to schedule a talk means that I will spend about 7 minutes, half before the scheduled time and half after, waiting on you and than its SEE YOU LATER. Why? Because instead of doing research on me you are attempting to make me do your work for you I already get that from recruiters spam. If you cannot verify my skills already by looking at my github and my Stackoverflow accounts(I am at the top 13%) than sorry its of no use to talk to YOU!

2. Typical equipment to do my job costs from $9000 to $17,000 or more. That means that in a remote work situation that gets added to the salary costs not somehow we do a sins of omission to cheat me out of it not being paid. If you cannot afford that salary plus equipment than you might want to explore other options instead of wasting my time and your time.

3. You will only convince me to move to your company if you come to my local subway and buy me a meal and convince me. In other words I AM TELLING YOU TO RECRUIT ME TO MOVE TO YOUR COMPANY AND NOT SPAM ME TO MOVE TO YOUR COMPANY.

If you cannot listen to the above, THAN EAT SHIT AND DIE MFer.

Saturday, March 1, 2014

Layout Engine

Its extremely alpha, but someone posted on reddit/androiddev/ Freeflow evidently coded by comcast employees. If you want a website to follow that has a balance of beginning, advanced, and expert android devs to follow and read its the reddit/androiddev/ forums.

Wednesday, February 26, 2014

Better tool than UiAutomator

So I was doing some research on how to optimize highly complex android applications and I found that a Mozilla engineer came up with a better tool than UiAutomator called DroidInsepctor. The examination of Facebook Home and the analysis you just have to simply read, his post is here.

DroidInspector can be used via device, web browser, and eclipse IDE. Its damn nice.

FontLoader Fund

So was repurposing the FontLoader class from HoloEverywhere so that I could use it with appcompat library and thought I would check something. HE uses text styles to reduce the amount of fonts one has to load in the raw folder.

So I checked and HE only uses 5 text styles, but there are in fact over 11 text styles according to the javadocs for TextAttribute.

Looks like a have a contribution to the HoloEverywhere project after I finish this contribution. Why do it?

Okay, some background. In human language systems in computers we do not load the full set of fonts, we load defaults and than have fallbacks to handle the harder fonts such as Asian, etc.  So the anti-pattern everyone uses especially on mobile is to settle on one human language translation, say English and stick to Latin fonts.

Well to load custom fonts we usually use the raw folder trick and the application class. The application class onCreate method has to return fast,ie right away, so we do not want a large raw folder of fonts but instead a small raw folder of fonts nd thus full-fills this purpose.

But, we also get the benefit of new text styles with a font that maybe does not have them, which is also somewhat good as it gives us better flexibility on our font pairing match ups.

Tuesday, February 25, 2014

GWSTextKerning

GWSTextKerning, is an Android Project Library that contains a modified TextView featuring text kerning, text spacing, and a KerningUtil class containing a helper method for when you cannot use the modified TextView.

Monday, February 24, 2014

Friday, February 21, 2014

android.plugin.sdkDirectory

You probably should not use it in say for example in producing all variants javadocs as it is an undocumented api that will be closed in the android gradle 1.0 plugin.

Why not bite the bullet and use say System.getenv('ANDROID_HOME') as that is always accessible or even read the local.properties sdk.dir property via ant for example.

Sunday, February 16, 2014

Eclipse Adt and Gradle

Okay, its not finished yet but the project in which I am writing a customized Gradle build for integrating with Eclipse ADT is here:

MYAndroidProjectTemplate

Not only is it organized as far as project layout for Eclipse ADT before ADT 23.x comes out with full Gradle support, the build.gradle itself is organized so that whatever I have to change is close to the top with appropriate block areas for full global variables and for block areas for more local variables for the build.

Also, it is set up to play nice with Eclipse, yes I stil have my IDEA block to add so its no mess fuss to import the projects using IDEA/AS without any manual messing with settings.

Why the GoogleURL shortener link? Nice way to track clicks of my code repos without any effort at all.

Thursday, February 6, 2014

Recruiters-Sales Process Broken

Something to laugh at. Typical company puts up an ad for a job opportunity. Weeks and months go by and they have not gotten the quality job candidate leads they had hoped for.

So what do they do? Now you have to understand at that point in the process, all indications are that a combination of marketing and communication strategies and implementations may be at fault.  But do they than ask why the failing at marketing and communicating in a job candidate acquisition process?

No, instead they flip through the phone book or google and get a recruiter. And guess what? The recruiter is only short-term centered on one thing, maximum numbers of job applicants at any cost.

Which means that any recruiter communication is already started a non-lead negative hole. Enough is enough mother fuckers.  NO more shoving your broken salesprocess down my fucking throat!

If you want an android developer, than be bright enough not to send a recruiter and fix your fucking broken sales process.

Wednesday, February 5, 2014

Android Gradle GenyMotion emualtors

You have to a small hack to get Gradle to work with GenyMotion emulators. In case anyone else is looking for this the answer is here.

Sunday, February 2, 2014

AppCompat GridLayout Eclipse Gradle suport

One of the obstacles in android gradle support for Eclipse before the ADT 23 plugin version is what to do with GridLayout and Appcompat support libs and resources since AAR is not supported in the ADT 22.x plugin versions. Obviously we do not want to degrade to using a path to a jar in the libs folder as a file dependency as than we have no control over the version of the library, etc.

At the same time we want a solution that minimizes the manual labor on the Eclipse side with using gradle as the android application build system. My solution is creating two Android Project Libraries within my nested set of project modules for GridLayout and Appcompat. Not the nicest hack, but its quick and keeps the gradle android best practices intact.

Saturday, February 1, 2014

Eclipse Style Android Gradle Project

I am almost finished with my Eclipse Style Android Project Template if you want to follow along. The project I use to set up my local ivy so that I can reuse that as a local repo is MyAndroidDevIVYRepo.

What I have to finish is wrap the codeqa ant tasks into gradle's codeqa reporting stuff and than figure out whether I have to include apt config and dependencies for DI in the APLs in the build.gradle.

The main limitations are that there is still some manual setting of libs in individual Eclipse projects and you no longer run junit instrumented tests through Eclipse but through Gradle.

Friday, January 31, 2014

Eclipse Android Gradle Tricks

The number one trick to get this to work is to not create a
separate TestProject. Instead create a separate sub folder which you will mark as a third source named instrumentedTests.

Because you will direct gradle to build in the build sub folder you will not care what the Eclipse IDE puts into bin/classes anyway as you will be running tests from gradle anyway.


Tuesday, January 28, 2014

Auto Include APLs in Android Gradle

Part of the reason why you should switch to Gradle from Ant in your android app builds is to further automate stuff ot be more Agile. With ANT we had a way that the script that Google Engineers came up with included a macro to obtain the APLs paths from the project.properties file.

To do this in gradle takes two things modifying your settings.gradle file and adding some lines to the build.gradle to do the same thing.The answer is in this SO Question.

Wednesday, January 22, 2014

EclipseAntToGradle-android

So I am completing a project to show the Eclipse android project layouts and the ant and gradle build scripts to transition from ant to gradle before the Eclipse ADT fully supports Gradle. What is left is putting the IVY repo stuff in and fill an IVY repo and than do some testing.

Once that is completed I can upload it to github and begin the gradle build script writing. The project layout adopts a project in a project layout with the parent project being the application and having two example sub projects with one being the test project and one being an APL.

Monday, January 20, 2014

Startup Incubator

Yes, me working on improving my tools and workflows in android mobile app development might mean that I might be preparing an application to a startup incubator for this
summer.

Its NWI Tech Foundry organized by Indiana government and Elevate Ventures and thus right close to where I live which makes it nice in that I do not have long commutes to Chicago.

If you are in Northwest Indiana and a developer you might want to consider preparing an application to this incubator.

Friday, January 17, 2014

Eclipse Android Gradle Fun

From what I understand about the android gradle layout, etc is that I will be able to write build.gradle files using the old Eclipse project layouts(including a separate test project) and have ti work inside Eclipse. I should than get the side benefit of being able to use AAR styled libraries, etc.

Thus will put the ANT scripts and gradle scripts all in the same projects so will have a nicer comparison of the benefits gained through using Gradle.  The only thing is until Eclipse ADT does the new gradle style project layouts we still have to contend with IDEA differences concerning the test and tested project side by side.

I think the gentle fix would be for me to adopt an eclipse Android project layout where I have a general project as the parent project folder and than include both the app project and the test project in that general project as sub-projects. Of course I will have to remember to set git up at the parent general project level to for both the app and test projects.

Saturday, January 11, 2014

Pkg.Version

Probably the most bonehead move in the android sdk is the assignment of the version of the sdk, sdk-tools, and extras libs to the variable property called Pkg.Version. Why?

Because, in ANT variables are immutable so you spend about 150 lines of code and a day or two learning a new ant task library in order to handle it as far as getting the version of
sdk, sdk-tools,and the extra libs from all those source.properties files in order to have a more agile build system that has the proper informative build log headers,etc.

Having a different prefix for every source.properties file pertaining to the artifact would have prevent this miss-step.

Thursday, January 9, 2014

Eclipse ANT AutoBuilds

So until I get  a new 32gig Ram Laptop I am setting up a new set of ANT Android Application build scripts that will act as a crude beginning CI that runs from the IDE automatically. At least that will keep me going until Google introduces the new ADT plugin for Eclipse with gradle enabled.

One slight problem, In Juno the Eclipse team took out the ability to set an ant builder as auto in the builder wizards. The work around answer in howto modify the launcher file for that is at the answer to this SO post.