Showing posts with label classes. Show all posts
Showing posts with label classes. Show all posts

Sunday, March 11, 2012

Android Class in June

Update: The class has been moved from April to June.

I'm teaching an Android class at Blazing Cloud in San Francisco starting June 19.

Title: Android for Programmers

6 sessions, Tuesdays 7pm to 9pm
June 19, 26, July 3, 10, 17, 24, 2012

Learn the ins and outs of Android development with hands-on examples! Working knowledge of Java is required to take this class.

Session 1
Lesson: Android basics: Activity life cycle, layout by xml, etc.
Lab: Modify Hello World to understand how it works.

Session 2
Lesson: How to add UI elements and attach app logic. How to store data.
Lab: Write down the location of your car. You type "Level 2, Area C" in a text box, and click the save button. You'll learn how to get the text out of the text box, save it, and retrieve it when you open the app again.

Session 3
Lesson: How to use Intents to communicate with other Android components.
Lab: Add a picture. Use the camera to take a photo of your car, and store it alongside the note.

Session 4
Lesson: How to access system services.
Lab: Add GPS location. Get the latitude and longitude to link it to Google Maps.

Session 5
Lesson: How to integrate with external libraries.
Lab: Add Map View. Embed a map in your app to show the location of your car.

Session 6
Wrap up. Summary of what we did, how everything relates to each other, notes on testing, pointers for further studies.

The class is called "Android for Programmers" because we are going to dive right into Android, and you should be comfortable with Java.

Sign up on the eventbrite page if you'd like to attend!

Thursday, March 8, 2012

Sketchnotes class

I always admire people who can draw. When I met Alexis Finch at Women 2.0 PITCH conference, I told her that I adore her sketchnotes, and wished I could draw too. She said, "come to my sketchnotes class!" That's what I did tonight.

Our first exercise was to think back to our elementary school days, and re-created the doodles we drew on our notebooks. That was easy - I loved twisting ribbons around a pole. And block letters.

That was a great warmup because it reminded me that, hey, I doodle too!

Next Alexis shared some tips and trick to draw fast. She asked us to practice faces.

And then we tried adding bodies and limbs to draw people, picked our special animal, and tried various shapes and objects.

We had a quick lecture on the different styles on sketchnoting, and what it is good for. Then it's time to put everything to use. Alexis played us some podcasts and asked us to take notes. We did two. The first one I was so overwhelmed that I did not really have any bandwidth to understand the speakers until half way into the podcast, which meant my pictures did not really carry any meaning. The second one I made sure I jot down words that made sense, and only fill in the graphics when I felt comfortable with the pace.

The podcast was about the periodic table. It was actually pretty cool.

I was especially excited when I heard that Dmitri Mendeleev left some gaps in the periodic table because he knew some elements were missing. I knew how to draw tables, and I knew how to represent gaps!

That was when I had my epiphany. My repertoire of shapes and objects is quite small right now, but when I know how to represent something as a picture, I can actually draw it fairly quickly. I decided that I will continue to take notes by writing, but look for opportunities to illustrate. I may start with 90% words 10% pictures, and pick up more ways to depict ideas and expressions as I practice more.

I'm very happy that I came out of the class with a game plan to get more comfortable with drawing and doodling. Thank you so much, Alexis!

Friday, January 27, 2012

Anyone interested in an Android class?

Whenever other techies know I'm an Android developer, they always exclaim, "I want to learn that too!". So I'm toying with the idea of teaching Android to others.

I want to teach a class where we learn the different Android components by building an app. Currently I'm thinking of a parking companion app. The syllabus will look like this:

  • Session 1: Android basics: Activity life cycle, layout by xml etc. You will not be working on the parking app yet.
  • Session 2: Write down the location of your car. You type "Level 2, Area C" in a text box, and click the save button. You'll learn how to get the text out of the text box, save it, and retrive it when you open the app again.
  • Session 3: Add a picture. Use the camera to take a photo of your car, and store it alongside the note.
  • Session 4: Add GPS location. Get the latitude and longitude to link it to Google Maps.
  • Session 5: Map View. Embed a map in your app to show the location of your car.
  • Session 6: Wrap up. Summary of what we did, how everything relates to each other, pointers for further studies.

Since most people have a busy schedule, I'm thinking of making each session 3 hours long. The first two hours is lecture, and the last hour is lab, where you work on your laptop to code up what we just learned. That way you don't have to find time outside of class to do the implementation as homework.

I want to make sure everyone has the SDK installed at the first class, but I know it is hard to enforce that, so I'm thinking of running InstallFests before hand. People come with their laptops, we install Eclipse and the Android SDK together, and make sure everyone has Hello World running by the end. The InstallFests are useful for people who don't have the time for a structured class as well. I'm hoping that once you have your dev environment set up, you will be more likely to go through some tutorials and get started.

Would you take an Android class like this? How about the InstallFests? Please fill in this form if you're interested: http://bit.ly/wh1JMO.

Update 2012/03/09

I'll be teaching the Android class at Blazing Cloud starting April 18. More info here: Android For Programmer.

Thursday, January 19, 2012

Graphic Design for Engineers

I have always wanted to pick up some basic image editing skills to pretty up my apps, but never managed to stare at the Photoshop interface long enough to achieve anything. I talked to a few of my engineer friends, and they have the same problem, so I decided to organize a workshop. After asking around for a while I convinced my friend Tara to teach the workshop, and announced it to the CodeChix community. Terri saw the announcement and volunteered to teach as well. Super!

Last night was the workshop. Color generously provided the space for the event, which was awesome.

Rupa and Crystie did an introduction on CodeChix, and handed it off to Tara and Terri.


Rupa


Crystie

Tara and Terri prepared a cheatsheet for us with a bonanza of information. We first went over the basic controls, which was very helpful. For instance, I could not find the fill bucket to change the color of my selection. Guess what, it's hiding under the gradient button!


Tara

Terri then taught us something super powerful: Custom Shape Tool. Photoshop has a library of vector graphics, so if you need a cat in your app, head right over to the Animals section and voilĂ , you have a cat. With that, Terri went on to teach us how to make a button:

  1. Select the Rounded Rectangle Tool. Click, hold down the shift button, drag to make a square.
  2. Select the Custom Shape Tool. Choose a shape. Click in the middle of the button, hold down the shift and alt buttons, drag to center the shape in the button.
  3. To change the color, click on the color patch on the layer with the shape. If you want to choose a color from a selection, use Window → Swatches.
  4. To change the size of the shape, press command-T. Holding the shift key, drag one of the corners. The shift key make sure that the shape maintains a fixed ratio. Otherwise you may get a very fat cat.
  5. To make it look like a button, double click on the layer for the button background. Check "Bevel and Emboss" to enable it. Select the item (the background will be highlighted) to change the parameters.

We also went over some other tricks like constraining one shape to be within another, using Kuler to come up with a color scheme etc. Finally, we all used our newly-acquired skills to make a mock up for a mobile app.

Tara and Terri did a really good job in teaching us just the basics so we don't get overwhelmed, but also show us the tricks of the trade so we can put them to use right away. I walk away feeling very empowered. Thank you so much!

Wednesday, December 21, 2011

Android Layout 101

Sarah Allen invited me to teach Android classes at Blazing Cloud, and we kicked off last night with Android Layout 101.



Presenting: Android Layout 101

We started with the Hello World app, gradually introducing more and more layout types and attributes. From time to time I showed a screenshot and asked everyone to modify the xml file to achieve the same layout.



"hmm... how I do get the buttons to go to the second line?"

By the end of the workshop we were implementing this screen:

This can be done with either LinearLayout or RelativeLayout. The LinearLayout version uses a nested horizontal LinearLayout to specify the second row, with android:gravity="right" to scoot the buttons over. One of the students, Anne, went on to experiment with setting android:layout_gravity="right" on the buttons themselves, but that did not work. We were quite baffled.

Turns out android:layout_gravity="right" is only honored by a vertical LinearLayout, not horizontal one. I guess the LinearLayout expects to put down one View after another horizontally, so if it puts the first button to the right, the second button would have nowhere to go. As a result it simply ignores the layout_gravity attributes. Still, it was rather confusing, and it is precisely the kind of nuance you only find out when you get your hands dirty.

The screenshot exercises gave everyone a chance to put theory into practice, and see how the elements interact with each other. You can try them as well. Just go to http://www.sqisland.com/talks/android-layout-101. Even if you are already familiar with the basic layout components, you may still want to check out puzzles at the end. Some of the solutions may surprise you!