Whether you are a developer already knowledgable in programming languages, or a tech enthusiast looking to broaden your understanding of coding, Punchkick has put together a quick resource for everyone interested in the top five languages used for programming mobile native and web applications. For those of us that don’t speak geek, we’ve included a glossary of some commonly used terms.
1. Java: Java is the “default” and recommended language for Android development. It’s an object-oriented* language very similar in style and syntax to C/C++, making it easy to learn when coming from those languages. A convenient feature that Java uses is automatic garbage collection, which means programmers don’t have to manually deallocate memory and makes development easier. Also, Java code is “write once, run anywhere”, so code written in Java can be run on any platform that has a supported JVM (Java Virtual Machine). This is achieved by compiling Java code into “bytecode” that gets run on the JVM regardless of the JVM’s underlying platform (Windows, Mac, Linux, Unix, etc).
Android runs a different type of virtual machine called Dalvik, which is optimized for embedded mobile devices. Dalvik is not a JVM, and it won’t run standard Java bytecode. Rather, Android code must be further converted from standard Java bytecode into Dalvik compatible .dex files. Android’s SDK* includes a tool called “dx” that performs this conversion.
2. Objective-C: Objective-C is the “default” and recommended language for iOS and, like Java, is object-oriented. There are a variety of defining features in Objective-C. Categories, for example, allow the adding of new methods to existing classes provided by Apple. Automatic Reference Counting (ARC) memory management is handled by calls inserted by the compiler as opposed to having the overhead of garbage collection. Objective-C is known for long and expressive names for methods and variables; this is called expressive syntax and allows for clearer code. Strict superset of C means that any code that can be compiled in C, can also be compiled in Objective-C, which provides great flexibility for leveraging existing libraries*.
3. C#: C# is the “default” and recommended language for Windows Phone 7/8/Surface and is a completely Object-Oriented language. If coming from a background in classical languages (C, C99), it’s very easy to pick up this language, compared to Java or Objective-C. In C#, a deep understanding of the language is not necessary in order to prototype something basic that is both functional and appealing. This language has a very strong community behind it, so information and code snippets are readily available for Windows Phone 7/8/Surface platforms. There’s also a large open source* community behind the language. C# has been around for a long time and gets a lot of TLC from Microsoft, who cares and listens to it’s developer community.
Visual Studio and Blend are excellent tools for developing and designing mobile apps. With no experience with VS, one can jump right in and start creating something. Unlike Xcode, Visual Studio has an actual emulator* rather than a simulator* for testing and running the applications (through HyperV), so one can be fairly confident that what is seen in the emulator is what is going to be experienced on actual hardware.
An interesting aspect of PHP is how far it’s come in the last few years. New language features are constantly being added, making it a more fun, interesting, and efficient language to develop in. Additionally, the larger community of PHP developers, particularly around Zend Framework and the Symfony framework, provide a true wealth of information and knowledge on what can be done with PHP today.
*Glossary of terms:
Object-Oriented Programming: Refers to a method of grouping similar functionality and using those objects in an objective way, rather than working with procedural code (one line of code after another with no grouping). By using object-oriented programming, we can group data and data access methods together easily so, if we want to use them or expand upon them, we can find them in the same spot, rather than all over the place.
SDK: A Software Development Kit is a collection of tools that developers use to help them work with a certain language, platform, or device. Examples of this would be XCode and Visual Studio. Generally, SDK’s have a built in editor for editing code and connections to work with simulators/emulators/
Library: A library is a useful piece of code that operates independently of the applications it can be used in. It is a smaller component that can be used across multiple applications with no adaptation. Examples would be jQuery, ExtJS, and ASIHTTPRequest. You use this code in your application, but you never modify it.
Open Source: An open source application is an application whose source code is publicly available for reviewing, distribution, and editing – depending upon the license. It’s a way of giving back to the community, allowing others to contribute to the project, make it better, find issues, and make the application more secure.
Emulator: An emulator is a piece of software that emulates the functionality of another device. Running something on a emulator is like running something on an actual device (such as an Windows Phone). What you see on the emulator is what you’re going to see on the actual hardware device. Visual Studio uses an emulator for debugging.
Simulator: A simulator is a piece of software that simulates the functionality of another device. It’s similar to an emulator, but different in that you aren’t emulating the hardware the software is running on as well. A simulator will give you a similar experience as one you’d see on a hardware device, but there might be some major differences (running on a different CPU than the hardware would, for example). XCode uses a simulator for debugging.
API: An Application Programming Interface allows developers to interface with another application to get information that the API service provides. Google Maps is a great example of this. They offer an API that allows developers to get information about maps and directions, so instead of having to solve that problem themselves, they can ask Google Maps to solve it. An API provides information in an easily manipulable way which a developer can use to interface with their application. The difference between and API and a Library is that a library is an internal tool which the developer uses and includes in his code, whereas an API is an external tool the developer uses to get information. Google Maps, Bing Maps, WordNik, and Weather.com all provide APIs.
Functional Programming: Functional programming is a programming paradigm that treats computation as the evaluation of math functions and avoids states and changing data. Functional programming emphasizes the use of functions to solve problems (these functions don’t change). Think lamda calculus, if you’ve ever taken it. If not, think Fibonacci sequence.
The Northwestern School of Journalism Medill Reports recently published an article on Punchkick Interactive. For a thorough look into what defines Punchkick and its culture-centric atmosphere, check out the article below:
Google’s release of Android Jelly Bean made significant steps in voice recognition. The speech recognition system in Android Jelly Bean uses Deep Learning, a form of neural network, distributed to many machines to parse your voice and interpret the meaning of your command to return a result efficiently. The problem plays well to one of Google’s strengths: breaking up computationally intensive problems into many small tasks to be distributed and executed simultaneously.
Neural networks have existed since the middle of the 20th century, but fell out of favor until recently in large part because of the high computation costs of training and the former inability to perform XOR. With increased computing power (i.e. more instructions per dollar, per second, e.g. GPGPU) using neural networks for real-time prediction and problem solving is rapidly gaining popularity.
The term derives from its inspiration: neural networks seek to model the way (we believe) the brain works. The nodes in a neural network represent neurons in the brain, and the connections between nodes represent synapses. Complicated to implement, but functionally simple, the power of the network is that each node acts as both the output from many previous nodes and the input to many subsequent nodes. You can think of a neural network as a sandwich, on its side. Each layer of the sandwich is composed of nodes, and each node is computed from all the nodes in the previous layer.
Here’s a break down of one component that might reside in a speech recognition application. There may be one neural network just for deciding what spoken word is recorded in an audio file. You might record many people reading words from a dictionary with many different voices, background noises, and recording qualities. These would be the neural network’s inputs, numbering many so that the neural network can generalize each word well. The audio files are stored as numbers in your computer, perfect for feeding to an infant neural network. You then *tell* the network what the correct answer is for each of those words. Each input/output you feed the network massages the node values a bit and this is the “learning” part. Eventually, your neural network is ready to be fed an audio recording of a word and it can tell *you* what the word is.
However, this network is just for determining words. You still need networks for the other pieces of the puzzle: chopping up the spoken command into words, reassembling the discovered words into the original collection (sentences), determining context and semantics, etc. Cascading the problem like this into multiple neural networks, or one big neural network addressing the problem in stages, is called Deep Learning. Deep Learning is a branch of machine learning that has gained popularity in recent years and breathed new life into neural networks.
The result: a shining example of a technology, after years of controversial utility, finding home in a prominent tool used by millions. It should be noted that Google is not the only company paving roads in speech recognition and neural networks. Microsoft and Apple are both making notable progress using deep learning.
With the release of Android 4.2 Jelly Bean came many new features and improvements over Android 4.1 Ice Cream Sandwich. Some are under the hood (a continuation of Project Butter’s performance tuning), while others are instantly noticeable (a swipe-enabled keyboard). A feature that was surprisingly way under-hyped is Photo Sphere, which is now available on all Android devices running 4.2.
Photo Sphere gives users the ability to take a 360º “panorama” view. However, unlike a traditional panorama that only captures a horizontal strip, a Photo Sphere includes what is above and below the usual viewing angle as well. The result is an interactive snapshot, with functionality similar to Google Maps’ street view feature, at the users fingertips.
Giving users the capability to capture such an immersive shot with a smartphone is an impressive innovation. It used to require specialty equipment and software to take a spherical panorama view, not to mention the time and skill it would take to compose. Now, millions of users can access Photo Sphere on a device that’s always within reach, and with that comes the power to catch and share an experience at a moments notice.
Capturing a Photo Sphere is simple:
- Launch the Camera app.
- Tap the camera icon, and switch to Photo Sphere capture mode by clicking the globe icon.
- You’ll be prompted to align the camera’s viewfinder with the blue dot that’s projected onto the screen space in front of you.
- Continue to move your camera’s viewfinder to align with the blue dots as it captures your surroundings. Move slowly and carefully to ensure quality shots.
- Hit the Stop button when you’ve completed your shot.
It’s worth noting that objects closer to the camera have a higher chance of being stitched together incorrectly. Photo Sphere works best on objects or subjects at least 10 feet away, and stationary targets are less likely to cause issues.
With a completely open format based on Adobe’s XMP file format, there will without a doubt be some great apps built around incorporating Photo Sphere hitting Google Play and other platforms in the future. If you want to dig into the Android api, check out the ‘panorama’ package here: http://developer.android.com/reference/com/google/android/gms/panorama/package-summary.html and the Google Play Services v2.0 library here: http://android-developers.blogspot.com/2012/12/new-google-maps-android-api-now-part-of.html
Check out some of our favorite Photo Spheres:
- Great Ocean Road, Australia – https://plus.google.com/u/0/photos/113455290791279442483/albums/5860111893597991457/5860111895294959890
- The Swiss Alps – https://plus.google.com/+Nexus/posts/6xXPoxdHupW
- TImes Square, NYC during Hurricane Sandy – https://plus.google.com/105046045700292924505/posts/2iX9f7crvFE
Great design inspires us, helps get the creative juices flowing, and simply, it’s just fun to look at or engage with. While scouring the web to find examples of different mobile navigation patterns, we came across these five collections of curated mobile elements. Inspiration abounds in these websites, showcasing some of the best designed iOS and Android apps with their UI implementations.
With a myriad of screenshots from a wide range of apps, pttrns is a great resource with over 1,200 design patterns organized into 38 categories. There is a lot to see here, so pttrns has a convenient on-mouseover zoom to easily highlight the details. pttrns focuses on iOS apps, but there’s a lot of inspiration to be had for Android and mobile web developers as well.
2. Inspired UI
Inspired UI is chock-full of different iOS design patterns. The site has frequent updates and showcases some truly beautiful apps. Patterns can be viewed by one of the 27 categories, such as ‘Logins’ and ‘Splashscreens’.
3. lovely ui
The lovely ui blog is curated by interactive designer Diana Frurip. It’s regularly updated with screenshots of well executed UI elements from iPhone, iPad, and Android apps. Images are tagged to make sorting by type easier. The consistent and frequent updates make this blog shine by always keeping the content fresh and well, lovely.
4. Mobile Patterns
Mobile Patterns is very straightforward in its quest to present design patterns in an easy-to-digest way. The patterns can be organized by category, as well as by mobile OS. A particularly useful thing about this feature is that the OS filter remains in effect even after a category has been changed, so users can look at exclusively iOS, or exclusively Android apps.
androidUX.com is the only one on this list to, you guessed it, focus solely on Android design patterns. The site speaks to both native features, such as launchers and home screens, as well as apps from the Google Play Store.
Bonus. UI Parade
UI Parade is not specific to mobile, but there are so many cool things showcased here we felt it needed to be mentioned. Beautiful pictures of UI elements fill each page, many of which can be downloaded free of charge.
Punchkick Interactive’s work with Harley-Davidson on the H-D1 Bike Builder: 1200 Custom Tablet App was chosen as one of the five finalists in the App Category at the 2012 Pixel Awards–and it went on to win the Pixel Awards People’s Champ Award for Apps. Kudos to everyone who helped bring this project to life!
In the crowded app marketplace, it’s crucial to make your app stand out from the masses. BlueCaribu shared with us a quick, easy-to-follow, and fun infographic outlining the steps to promoting an application.
The late Steve Jobs will forever be known for his innovative impact on technology and design. His vision was the foundation of Apple’s notable design philosophy, which has put Apple products among the world’s most recognizable.
Our friends at OnlineMBA.com shared with us this awesome video that outlines 5 Rules for Designing Like Apple:
This year Marriott won the prestigious ERE Recruiting Excellence Award for best employer brand, which speaks to its continued focus on employees.
Check out this recent article that mentions the mobile recruitment site that Marriott partnered with Punchkick to develop: http://www.ere.net/2012/12/13/marriotts-careers-pages-get-makeover-with-where-i-belong-theme/
Amelia Bernier is part of a group of designers, professors, and professionals that created a campaign titled, “Together+,” to fight Xenophobia in South Africa. Under the leadership of Robert Sedlack (Sedlack Design Associates) and Andrea Pellegrino (Pellegrino Collaborative), what began as a class project at the University of Notre Dame developed into a multi-tiered, multi-partnered international educational and awareness campaign. Several trips were made to Johannesburg, South Africa for research, experience, and trial implementation in collaboration with The Kgosi Neighborhood Foundation.
Together+ has four major tiers; Amelia co-wrote and art directed a children’s book, “Blooming Together.” The book will be incorporated into 350 school curriculums to teach a message of unity and understanding of diversity to over 10,000 students in foundation classes. The other three tiers include a refugee rights pamphlet, a health care poster series, and a visual identity that communicates across South African language barriers.
Together+ won the 2012 Sappi Ideas That Matter Grant, which funds select programs that aim to create positive change through design.
To view “Blooming Together,” click here – http://togetherplusza.squarespace.com/childrens-book/
For more information: