If you’re interested in having me present these talks to your team or user group, please get in touch
Developing for Android Wear
LA Code Camp, November 15, 2014, Los Angeles, CA
Desert Code Camp, October 18, 2014, Chandler, AZ
This talk presents a first-hand look at the Android Wear platform and Android Wear APIs, how to design effective user interfaces that work best on a wearable device. Learn about how to use Google’s Android Studio IDE for creating apps for Android Wear devices and bringing wearable experiences to your Android apps. We’ll walk step-by-step through designing and building a small, native, contextual app for Android Wear. Of course using Java and Android Studio, the new Android development environment based on IntelliJ IDEA
What we have learned so far
The Raspberry Pi is an ultra-low-cost credit-card sized Linux computer. I.e., $35 buys you a small device with 2 USB ports, Ethernet, HDMI, and analog video and audio out. The device has 512MByte SDRAM on board and comes equipped with an SDCard slot for ‘external storage’. There are several Linux Distributions available for the RasPi and what you can build with it, seems almost limitless. The Raspberry Pi: a general purpose computer, a headless server, an embedded system
- Creating a Raspbian (optimized version of Debian) SDCard to boot from, containing LXDE, Midori, etc.
- Cutting the cord, using a small WiFi USB-dongle with the Raspberry Pi
- TightVNC – Providing a GUI even when running the Raspi as an headless server
- Using the Raspberry Pi as an IP Web Cam Server
- What’s happening at boot and how would a tiny “Hello Word” distribution look like
- Using a RS-232 Serial connection to talk to the Raspberry Pi
- Using the Raspberry Pi as an truely embedded system. Hacking with SPI, light sensors, LEDs etc.
Android, Arduino, and the Headphone Jack
There are quite a few 3rd party devices that attach to a smartphone’s 3.5 mm headphone jack, Square’s Credit Card reader, being just one of them.
In this session we will reveal the magic behind this cool innovative trick. Come to learn how it was done and how your mobile app too, could take advantage of the headphone jack. Hijacking power and bandwidth from the mobile phone’s audio interface. Come to see and learn how mobile app take advantage of a smartphone’s headphone jack. We will use “phone to phone” as well as Arduino to Android examples to demonstrate and explain this cool and innovative communication channel, and you may even pick up a couple DSP (Digital Signal Processing) basics along the way.
Android UI for Phones and Tablets
Some categories of the Android Market seem to provide an almost endless choice of applications and standing out there requires more than just having the right mix of features. This talk will provide ideas, tips, and code samples for making Android User interfaces more intuitive, attractive, and fun to use, featuring Android Fragments.
Embellishing Android Applications
Some categories of the Android Market seem to provide an almost endless choice of applications and standing out there requires more than just having the right mix of features. This talk will provide ideas, tips, and code samples for making Android User interfaces more intuitive, attractive, and fun to use.
Writing a Web Service Client App for Android
While most Android Phones are relatively powerful devices, writing a Web Service client for a small memory constrained device requires some careful consideration when it comes to selecting the right framework and tools.
We will use one of the fasted binary web service protocols to exchange objects between client and server, without requiring a large framework. This is not your typical Android 101 talk but even if you haven’t done a lot of Android or Embedded Programming yet, this should still be a lot fun.
Android Application Fundamentals
Intents (e.g. adding printing to your Android app)
Some printer vendors make photo printing application freely available in Google’s Android Marketplace. Those applications allow printing of photos from an Android phone to a nearby printer and currently, only photos stored in the Android Gallery (a folder on the SDCard) can be printed. However, there are many great Android applications available that work with photos that are not kept in the Android Gallery, e.g. Flickr or Picasa Photo viewing application, gathering content from the cloud.
Android’s open architectures allows applications to temporarily transfer control to other installed applications, to perform certain tasks. I’m going to show how to enable printing in your Android applications, by re-using intents, implemented in other apps. If such intents can be found on a device, we will programmatically walk the user through its installation process, which would happen through the Android Marketplace.
Turning the Web on its Head
Let’s have the Server call the Client)
We will take the accepted view that a Web-Client calls (via HTTP GET or POST) a server and turn it on its head. Let’s have the server call the client. It is really not that far fetched, imaging a scenario where the server when it has determined that something exciting just happened (e.g. the Dow Jones Industrial Avg. Index jumped 100 points) calls the Web Client, instead of clients constantly polling the server (even when the DOW barely moves). Sounds interesting and a couple of implementation ideas may come to mind.
After looking briefly into some xml and binary web service protocols, we will take a closer look at the notification mechanism provided by Java’s management extensions and eventually take a really close look at a full featured implementation of the above mentioned problem. Interestingly, even when looking at both, the client and the server part of this solution, there isn’t really all that much code to write, which means that even in the little time we have, all the concept and patterns used can be looked at and discussed.
The talk also covers a Comet-style protocol and how it can be used with a Tomcat Server and an AJAX client application. All the code, (client and server) that makes this Stock Quote Client an event consumer, will be shown.
Turning a WiFi Router into a general-purpose Network Device
Embedded systems are increasingly present in our life and quite a few of them can be repurposed (a.k.a. hacked), to make them even more useful. The purpose of this session is to have fun and give you some inside of what’s involved in turning a $30 wireless router into a general purpose embedded network device, running the LINUX OS and a full featured Java Runtime environment.
We will take a closer look at some popular Router OS distributions, like OpenWRT, DD-WRT, FreeWRT, Tomato, or X-Wrt and show how to flash the Fonera (FON) WiFi router with a vanilla OpenWrt distribution. The FON is a very small, relatively simple, and inexpensive router, built on the AR531x/231x Atheros WiSoC (Wireless System-on-a-Chip) with an integrated 32-bit MIPS R4000-class processor running at 183.5 MHz, comes with 8 Mbytes Flash Memory and 16 MByte RAM. In short, it has all the attributes required to be added our digital playground.
OpenWRT is a Linux distribution optimized especially for embedded devices and surprisingly, the OpenWrt kernel configuration is done with the help of a character based UI. OpenWrt also comes with a lightweight package management system (IPKG or more recently OPKG), meaning that features that have not already been built into the kernel, can be added later, at runtime. As an example, we will take a look at how a JavaVM could be built, packaged, and deployed, or built directly into the kernel.
Swixml, XML-based domain-specific language for declaring Java Swing GUIs
Swixml is a small GUI generating engine for Java applications and applets. Graphical User Interfaces are described in XML documents that are parsed at runtime and rendered into javax.swing objects.
Theoretically, you can look at Swixml as an XML based domain-specific language, allowing to declare Java Swing GUIs. The Swixml engine will then later at runtime, take a GUI declaration and create that User-Interface on the fly, just like a Web Browser would do with an HTML document. Swixml doesn’t introduce any new layout managers or component classes. Instead, it operates directly on the Swing component classes using introspection.
Declarative Programming, emphasizing UI Generation at Runtime
Graphical User Interfaces are described in XML documents that are parsed at runtime and rendered into UI-Widgets. While open-source projects like Thinlet and Swixml focus mainly on the GUI, they are also good examples for how declarative programming can be done in Java.
Arduino Fever – PHYSICAL COMPUTING
The Arduino project was created to provide access to the essence of digital technologies and has contributed a remarkable set of open-source tools, ideal to conduct courses in electronics prototyping. Today, more than 20 universities are using Arduino in their programs and engineering classes, several open source communities have welcomed Arduino as their platform for interfacing the physical world, and the Arduino project has expanded into secondary education in schools allover Europe.
This talk provides a hands-on introduction to the Arduino platform. We focus on sensors and actuators and take a look at how a computer converts inputs (in the form of sound, light, motion, and other forms) into changing electronic signals that it can interpret. No previous knowledge in electronics is required. However, participants should bring an open mind for a challenging time with a hand full of bytes.
How the Internet works
This is talk is a little shady, a little underground, and attendees have been seen wearing diggnation shirts and even brought beer – brown bag style of course. However, it’s all about “How the Internet works” and while I talk a lot about MAC and IP addresses, TCP, packets, ports, TTL, NAT, and all that, it has always been a lot fun for everyone. I talk about how applications like iTunes announce shared playlists and why sharing them only works on LANs but not over the Internet – and of course you will see how you can “work around” this .. limitation.
Innovate – Tweak, Hack, and Bend Technology
We will take a small device (available for $100 at Dallas Semiconductor), about the size of an iPod Shuffle, but capable of executing Java-Byte-Code, and connect it to a digital toy camera, (available for about $10 on eBay). Then we are going to write some Java code that we load on to the device and execute and even run some JUnit tests remotely. But be warned, we are targeting an 8-bit processor running at only 40 MHz and its 1MB SRAM serves as file-system, program memory, and runtime heap. Along the way we may add some more hardware and learn a few things about how CMOS sensors capture image data and how a Bayer-pattern can be used to decode the sensor data.
Get In Touch.
If you are interested in working together, or in having me present one of my talks to your team or user group, please do get in touch.