Monday, March 28, 2016

Getting started as an Android Developer

Android's dominating market share, its open source license to device manufacturers, and its open source development model make it a great choice for starting out as a mobile developer. 
It can be expected that the demand for Android developers will continue to grow. 

As an Android Developer you can develop for a wide array of devices ranging from phones and tablets to  wearables, home  and vehicle systems. You will develop a variety of apps such as games, news, photography, education or shopping apps, to name a few. 

To develop Android Apps you  will use Android Studio, which is now the official IDE for developing Android Apps. Be sure to check out the many helpful samples which come with the SDK. 
Android Studio and the SDK are available for free download and cross platform compatible. 

Prerequisite Coding Skills:
In order to be successful in learning the Android programming skills, you should already have background in the following languages:

Java:  You need to have solid programmings basic skills in Java and also be versed with  Object Oriented Programming in  Java.   

XML: (eXtensible Markup Language) is used to store data. 

SQL:  You need to have basic working knowledge of databases, such as writing CRUD  queries.  (Android comes with the popular embedded SQLite database).

Ways to learn to develop for Android:

For the most basic introduction see Android's Building Your First App 
If you are self motivated you can try using the Udacity Android Beginner course:

If you are based in Seattle, Seattle Central College is one of several venues in the Seattle area where you can take an instructor led Android class.  I will be teaching the next session in Spring 16 quarter. For registration and information visit the college website and search for ITC 162. 

If you are looking for a book, I highly recommend the book we use in my Android class: Murach's Android Programming, 2nd Edition.

Also, consider joining meetup groups in your area - check out and search for Android and Mobile development meetups.  In Seattle you can join Seattle Android Developers GDG, for example. 

In addition, there are numerous online forums and social media 

outlets where you can follow and participate in the latest Android 

news and updates.

Deploying and monetizing your app:

You can distribute your app through a marketplace such as Google Play, Amazon Appstore or directly to users via website or email. At this time there is a $25 registration fee to register with Google Play. 

In house or contract Android developer career path:

There is also a great demand for contract or in house Android developers. Some of the core skills required for entry level Android developers include experience programming with Java, using the Android SDK, Android Studio, Gradle, and Git as well as familiarity with the software development life cycle and agile methodologies.

Learning Android programming and keeping up with constant updates from Google can be challenging, but it is also fun and rewarding.

Thursday, March 24, 2016

It's like Scully and Mulder in my head, but more like Scully

Image Credit: The X Files
While it is the case that not admitting that there is more outside of the domain of science than we currently know today is narrow-minded, investigating the subject can be a slippery slope filled with charlatans such as Stuart Hameroff or  Deepak Chopra. 

Or, going back in time, Madame Blavatsky or G.I.Gurdjieff who made claims about magical kingdoms and mystical lands, which would be impossible to disprove  in the days when we had no GPS...

Cults take this pseudo scientific pursuit to another level, praying on the vulnerable and on the basic human need to search for meaning. "I want to believe", as Mulder from the X Files said...An obscurity cloud is used as a way to keep people in cults, such as Gurdjieff's Fourth Way, because what is discussed there is simply too crazy to be shared with others. However, the version given to the cult members is that this is sacred knowledge beyond the access of "ordinary" people.This is a very problematic approach in contradiction with the scientific method. 

So, while there is more to explore beyond the event horizon of science today, I am highly skeptical (this does not make me narrow minded materialist, by the way), of going about it by investigating so called ancient traditions, because they generally contain more nonsense than usefulness, and the two parts are intertwined in a way that is very difficult to separate by most. The question, then is: how does one go about investigating psi phenomena and other present day speculative subjects while keeping up with the scientific method (the best we've got so far). 

There must be some objective, repeatable criteria, which is missing from the "mystical" traditions. Recently I listened to Ben Goertzel's  talk on expanding science to include second person verification - this sounds promising. 

Also, studying secular meditation in a scientific setting sounds promising - we are faced with the barrier of subjective experience as the main obstacle, i think.

Top Tips for Web Project Management by the Seattle Central College Web 105 students

This is a compilation of student tips shared at the end of Web 105 Working on a Web Project class I taught at SCC.

  1. Map out what you’re doing before you do it with clearly defined goals.

  1. Use tools such as Cost estimator, Keyword search tool, Adobe Kuler, etc

  1. Collaborate with your team for a more successful project.  

  1. Organize with Post-Its.

  1. Research the competitive landscape.

  1. Respect Contracts (Non-disclosure agreements, customer contracts.)

  1. Value an effective division of labor on your project, playing to different employees strengths.

  1. Document everything to keep everyone on the same page and make sure everyone has access to all the ideas, research and information.

  1. Develop a workflow and stick to it broadly.

  1. Have a good communication plan (email, google docs, staging area, video conference).

  1. Understand how agile workflow functions and its importance to your future employment.

  1. Be  Agile during the project.
  2. Have an understanding of all aspects of the project (IE: front-end development, wireframes, SEO, agile workflow, industry standards, etc.).

  1. Time management is HUGE. Budget, understand how much time each task takes.

  1. Understand the USER, and that their needs may not be glamorous but are important.

  1. Typography is (arguably) 95% of web design (a “huge deal”)

  1. Know the project phases: Plan, Develop the structure, Design visual interface, Build and integrate.

  1. Prepare a project summary - vItal to making sure you and your client are on the same page.

  1. Get paid what you’re worth and manage your time.

  1. Watch out for scope-creep.

  1. Scope creep is inevitable, but it can be managed.

  1. Be mindful who you're designing for and who you're leaving out, especially when it comes to technology.

  1. Don't assume you're on the same page, get all agreements in writing.

Tuesday, March 8, 2016

Top 5 skills to keep IT professionals employed as we transition to an AI driven economy

While the demand for software developers is at an all-time high,  exponential growth of technology, machine learning, data science, as well as large capital investment in AI research are expected to lead to the automation and/or elimination of most jobs, including most IT and programming jobs.
Ed Messerly, BITCA Faculty at Seattle Central College and I have put together a list of several career paths which, we believe,  are not at near term risk of large scale automation. Long term solutions to this problem must include high level policy reform, such as Universal Basic Income.
Please note that there is always the possibility of technological disruption which could change current trends in  unpredictable directions.
1. Tool-Centric Development: Becoming craftsman like developers - learning the tools and “tricks” to build applications. The skills set is not very specialized in terms of math or computer science, but one needs to know System Analysis , Traditional Logic and be good at problem solving in order to put together  or maintain programming snippets from various frameworks and tools. Some examples of such tool-centric technologies  include Bootstrap, Wordpress and Drupal.

2. Mobile Development is predicted to be one of the growing programming fields.  Mobile development  has moved beyond cell phones and now includes a large matrix of mobile devices including Wearables or Automotive devices.   To develop mobile apps for the widely popular, open source Android platform you need to know Java and XML.

3.  Data Centric Programming including developing in a Cloud environment. Data Analytics is a booming field and today humans are generating digital data at unprecedented rates. This data is very useful for business insights and needs to be mined and analyzed.   Scratch is an free and easy to learn, cloud based programming framework to teach basic coding skills.  One of the most popular languages used in data science is Python. You also need to have an aptitude for math and especially for statistics.  

4. AI Programming is another area which is not going away just yet (not until the AIs learn fully how to program themselves).  To program AIs you need to have strong computer science background and to understand different AI programming approaches such as Search, Logic, Probabilistic reasoning, Decision Making, Natural Language Processing, Genetic Algorithms and more... Some of the popular languages for programming AIs include LISP, Python and Haskell.

5. There is still a lot of legacy code which needs to be maintained. Many companies are invested in their current infrastructure and will not upgrade to the latest and greatest technologies due to business considerations.   Much of the legacy code is written in Java and even C.