Static Libraries in iOS – Video Tutorial

Static Library for iOS by Marcio Valenzuela
Static Library for iOS

Libraries is another one of those rather obscure topics for newbie programmers, kinda like Blocks and Delegates/Protocols.  Think of libraries as just that, a resource you can use which doesn’t belong to you.  A loaner 🙂

NOTE: If you need a nice tutorial on Blocks or Delegates, check out:

Video Tutorial: Objective-C Blocks

Video Tutorial: Objective-C Protocols and Delegates

Ok back to our tutorial!  Well a library is a piece of code that you can use (by importing it into your projects) but its not yours, so you can’t really do what you want to that piece of code, except use its functionality.  In this tutorial we will create our own library and then import in into another project for its use.

The basic steps are:

1. Create your code. Usually Class method laden classes that create no state! Project must be CocoaTouch Library Framework.

2. Compile and create .a file.

3. Import that .a file into new projects.

In order to show you I prepared this small video:


For a more complete tutorial you can visit’s Creating a Static Library in iOS tutorial at:

Creating a Static Library in iOS Tutorial

Command line prompts

Terminal Mac Command Line Prompt Shell by Marcio Valenzuela
Terminal Mac Command Line Prompt Shell

locate sqlite
sudo nano /etc/apache2/httpd.conf

Computers are amazing! We all love telling them what to do. It’s like having you’re own personal assistant. And while adding calendar appointments, editing presentations and browsing web pages is very sophisticated nowadays, command prompt shells are so much more appealing, to me anyway.

I remember the first time I used a command prompt was in my uncle’s Apple IIe back in San Francisco. Who didn’t love making printout loops using * to draw shapes and spell words…or since we are geeks, draw a big heart on the screen.

I also remember computer class back at school at EIS. The 10 line programs telling the computer to do this, do that and then goto such line. That’s about as far as we got in computer class.

But that was all in the 80’s of course. I remember WordPerfect was one of the first programs used that was not GUI based and it was like a shell editor.

You’d think by the 90’s when MS Windows took off with its nice GUI interface, shell commands would be a thing of the past but I’m pretty sure I remember connections to AOL we’re done from the command prompt.

One of my most exciting memories of command prompts was back in the 90’s when I downloaded Red Hat Linux from a command prompt. I had my windows based PC open, because no self respecting nerd would dare have his computer closed up, 36k modem hooked up to the phone line, air conditioner on max and I spent the whole night downloading the OS. Even the loading indicator was a series of slowly appearing dots or asterisks onscreen. And then I spent about 3 more nights after that configuring the OS and learning to scour the internet for open ports and what have you.

For sure by now, the 2010’s, command line computing would be obsolete, were it not for all the geek movies where hackers still use it. Or if you’re a programmer in which case you use it pretty much everyday. Just the other day I relived the rush you feel when you ssh into a remote server, install apache, php and SQLite and configure a server. A few months back I remember running some python scripts and ruby ones to create databases and sign/zip packages. Glass, a very advanced piece of hardware, some might say :-), still requires a command line prompt for programmer setup and interaction.

It’s obvious command line prompts are here to stay. There’s something so appealing about talking to a computer through the prompt instead of that bulky, plastic mouse that goes all over the screen clicking and double clicking. GUIs are often slow to react and they just get boring after a while.

Why do you suppose they are so appealing? Is it that you can do things with a command line prompt that you can’t do with a GUI? Is it because Hollywood has painted them to be this epitome of hacking? Is it because it was the first (for many of us) way we interacted with a computer? Or is it just because we are geeks?


First Android App – Part 5

My First Android App


Android Studio New Main Layout First Android App Tutorial by Marcio Valenzuela
Android Studio New Main Layout First Android App Tutorial

Android is based on Java much like iOS is based on ObjectiveC.  If you are coming from an iOS background, itll be a bit jarring at first.  Even though ObjC “comes from” C, C formats are a bit different.  So I thought Id start with that first.


[myObject methodForDoingThis:someParameter];

is a method call which refers to this declared method:

-(void)methodForDoingThis: (id)someParameter{

//1. Take the passed in parameter

//2. Do something to with that parameter value

//3. Call some other method…

//4. Or if this were a method that returned an object instead of void

//4. Return a new object value




is a method call which refers to this declared method:

public methodForDoingThis void (id someParameter) {

//1.-4. Same as above


So this might throw you off a bit.  Add to that the fact that their IDE, be it Eclipse or AndroidStudio (or others), or rather their project files are a little less UI-friendly.  What I mean is that where in Xcode you have editable code files in Objective C and either a storyboard or NIBs to deal with UI stuff, in Android IDEs you have an AndroidManifest.xml, various layout.xml files and files as well as a few other ones.

Ok, let’s get started with this Hello World App.

First Android App

First let’s create a New Project in Android Studio:

Android Studio New Project First Android App Tutorial by Marcio Valenzuela
First Android App Tutorial

Here you can give it an Application Name in natural language, this means with spaces or what not.  This is the human readable name.  Then give it a Module Name which is recommended to not have spaces or strange characters other than alphanumerical characters.  Finally create a package name which is in reverse domain notation (  That something can you be company name or just your name.

In the above example we are actually creating an Android Glass project for Google Glass.  The idea is the same, but for this Android App, select API 15 as all three, Minimum, Target && Compile.  Leave the Theme as is and click on Next.

You will be asked about launch icons and just click Next.

Android Studio New Project Launcher Icons First Android App Tutorial by Marcio Valenzuela
Android Studio New Project Launcher Icons First Android App Tutorial

You will get another screen about Activities, just leave Blank Activity.

Android Studio New Project Blank Activiy First Android App Tutorial by Marcio Valenzuela
Android Studio New Project Blank Activiy First Android App Tutorial

Finally you might get this window:

Android Studio New Project Fragment Layout First Android App Tutorial by Marcio Valenzuela
Android Studio New Project Fragment Layout First Android App Tutorial

Here make sure to make that one change, just to make things easier.  We must also remove the fragment method later.

Once this is done, remember to go ahead to the class and open it.  We are going to remove one method in here:

public static class PlaceholderFragment extends Fragment {

public PlaceholderFragment() {



public View onCreateView(LayoutInflater inflater, ViewGroup container,

Bundle savedInstanceState) {

View rootView = inflater.inflate(R.layout.fragment_main, container, false);

return rootView;



Finally you should see a screen much like this:

Android Studio New Main Layout First Android App Tutorial by Marcio Valenzuela
Android Studio New Main Layout First Android App Tutorial

Let’s review these 10 top pointers:

1. Your Java Classes or Android Activities

2. Layout files in xml format

3. Value files for storing global settings of sorts

4. AndroidManifest is a sort of Central Registry

5. Top level build.gradle file

6. Low level build.gradle file

7. Tab bar for displayed files

8. Sync Gradle file button

9. Run button

10.Green = A-Ok button!

You can run the app now, it won’t do much, but its an app J.

  1. MainActivity is selected and displayed in the editor window.  This contains your default, boilerplate/template created MainActivity Class required for any app.
  1. The layout folder contains your activity_main.xml file.  If you look inside that file you will see an xml file with some parameters and a TextView element.  You will also see a graphical representation of it off to the far right.
  1. The values folder contains more xml files.  Most importantly, the strings.xml which contains global references to string values.  These are used throughout the app to assign string values where needed.
  1. The AndroidManifest.xml file contains some general settings elements for your app such as the package name, launcher icon, activity tags which contain your declared activities and in this case, if the activity has an intent, which is like an action, it must also be specified here.  In our case we will add a Voice Trigger intent filter if there isn’t one already.
  1. Build.gradle files are not to be messed around with much.  This is a new M.O. used by Android Studio to organize files in a workspace.  You must keep in mind here that there is a Top level and Low level build.gradle file so make sure you know which one you are being told to put things in.
  1. The tabs display whatever files you have double clicked on the File Window on the left.
  1. The Sync Gradle button is that green-blue circle with a solid circle inside and a green arrow pointing down.  Go Figure!  Its basically a sort of I’ve-made-some-changes-to-the-AndroidManifest-and/or-other-project-wide-parameters-which-require-project-workspace-reindexing (phew) button!
  1. The Run button is of course the one used to build and launch the app in the emulator or device.
  1. The Green=AOk button tells you all file and project inconsistencies have been resolved and that the project will build and run.  Sometimes you have resolved coding issues and this box is still red.  Just tap on the Sync Gradle button mentioned before and Just Like That, Its Magic…AOk!

Layout Files

These determine where and how objects will be laid out onscreen.  Check out activity_main.xml and make sure it has this:

<?xml version=”1.0″ encoding=”utf-8″?>

<LinearLayout xmlns:android=””




android:orientation=”horizontal” >


This simply tells us that we are using a Linear type layout.  And that the width and height should be stretched out to match whatever the parent is.

Now let’s actually add something onscreen by adding this code at the end of the last line but just before the </LinearLayout> closing tag:

<EditText android:id=”@+id/edit_message”



android:hint=”@string/edit_message” />

Ok, now we added an editable text field with id = edit_message which wraps its content and has a hint of placeholder text = whatever is in the edit_message string.

So what IS in the edit_message string?  Well, open your values folder and double click to open strings.xml.  You will see something like this:

<?xml version=”1.0″ encoding=”utf-8″?>


<string name=”app_name”>My First App</string>

<string name=”edit_message”>Enter a message</string>

<string name=”button_send”>Send</string>

<string name=”action_settings”>Settings</string>

<string name=”title_activity_main”>MainActivity</string>


As you can see here we have a string value for app_name, edit_message, button_send & action_settings.  You probably don’t have button_send but you will add it soon if you don’t.  This is a globally accessible xml values file.  Whenever some object looks for a string with an identifier, such as @string/xxx, it will fetch whatever is in that strings.xml file at that identifier location.

Nothing Magical here, just an app_name global identifier, a placeholder hint for the editable text field we added, one for a button and another for an action_settings action tool bar button.

So let’s add the button by going back to activity_main.xml and adding this code after the EditText block but again, before the closing </LinearLayout> tag:




        android:text=”@string/button_send” />

This should be pretty easy to understand.  This time we are adding a button with its text property set to the string value for button_send.  If you don’t have that button_send string in your strings.xml then add it in now.

Compile and run and you should see this:

Android Studio New Main Layout First Android App Tutorial by Marcio Valenzuela
Android Studio New Main Layout First Android App Tutorial

As you can see they are ONLY as large as they have to be.  Both the EditText and the Button objects are only as large as their content is.

The only problem is that the text in the EditText field is, well, editable, thus it could grow longer or shrink.  We must make a small adjustment to account for this by modifying some properties of the EditText object:




… />

This means only add or edit the fields shown here (the rest, …, stays as is).  The layout_weight property states how much space the EditText field should take up relative to those objects around it.  So basically if EditText is 1 and Button is 1, the total is 2, out of which each will take half.

The final layout should look like this:

<?xml version=”1.0″ encoding=”utf-8″?>

<LinearLayout xmlns:android=””





<EditText android:id=”@+id/edit_message”




android:hint=”@string/edit_message” />




android:text=”@string/button_send” />


Build & Run and see your app in all its splendor! Remember to check out Part 2 for a little user interaction before we move onto building Google Glass apps!