Miniconfs/OpenProgramming

From LCA2012

Jump to: navigation, search

The LCA Open Programming Miniconf, now in its third year, brings together presentations about developing of excellent applications using Free and Open Source Software. In particular, the Miniconf invites presentations that focus on sharing techniques, best practices and values which are applicable to developers of all Open Source programming languages.

This miniconf is organised by Christopher Neugebauer.


Contents

Schedule


Don't hate Unicode

Unicode sneaks into the most unexpected places. Do you ever wonder if your life would be much, much easier if your default encoding was not ASCII? Do you know what the difference between UTF-8 and Unicode strings are? Do you know what your default encoding is, or how to change it? Does it all seem to hard, and make you resent anything to do with the locale?

If 7-bit ASCII was good enough for me, it should be good enough for you! Have you been left behind with this whole Unicode thing to the point that you're confused and resentful of the whole thing? I know I was. When your name, and everything you write works wonderfully in ASCII it can be hard to summon the enthusiasm to learn about Unicode, even when you know that you should be handling your data better.

Imagine your code is using a logging library, that expects strings. What does it do when you pass it a Unicode object? It'll probably write it, encoding it in your default encoding (probably ASCII). And it'll probably work, on all of your test cases, and on most of your data. Until someone comes on with a non-ASCII character in their name, and causes your code to throw an exception. You probably weren't expecting it, it might not even be your library. Unicode works implicitly often enough that Unicode can sneak in well before you realise your code isn't robust enough to handle it.

This talk will cover the essentials of Unicode, locale and how they affect things like regular expressions. Perl will be the programming language used to demonstrate these ideas, but much of the content should be accessible to all programmers.

Jacinta Richardson

Jacinta runs Perl Training Australia, is active in various user groups, is a technical writer, a software engineer and trainer. When she's not giving talks at conferences, or running courses, or writing course wares, or writing code (all of which take up a great deal of time) she bakes, hosts parties and learns new stuff.


Efficiently Matching Input Against Many Regular Expressions

Matching input against regular expressions is not usually something that most people worry about optimising, but when you have tens, hundreds or thousands of regular expressions, then you want a more efficient solution than merely iterating over the set.

A simple approach is to wrap each one with (?: ... ) and then join them together with |, which could be sufficient if you just need to know whether one matched, but what if you want to know which one(s) matched?

In this talk, we will look at how efficiently matching input against many regular expressions is possible and convenient with RE2, the regular expression library that Google has released as open source.

Paul Wankadia

Paul is a systems engineer at Google. He currently works on App Engine, but spent a lot of 20% time this year tinkering with regular expressions.

iviewiir: iView for the Wii

The ABC's video streaming service is called iView. It provides medium quality streaming of TV shows for free for Australian IP addresses. There are players for Flash, PlayStation3 and iOS. However the ABC declined to develop an iView application for the Nintendo Wii, citing insufficient computing resources on the Wii.

Your speaker considered that a challenge.

It is trivial to run your own code on the Wii, and there is a actively homebrew community that produce a cross-compiling toolchain and supporting libraries for the platform. This talk will delve into the development of iviewiir and libiview: a piece of c code that uses libxml2, json-c, librtmp and mplayer to bring iView to the Wii. It will include an introduction to the toolchain for budding homebrew developers, a discussion of the challenges involved, and a live demo running on the Wii.

Joel Stanley

Joel is a embedded hardware and software hacker, who has been seen at LCA over the past decade playing with OLPC XO laptops, rockets, balloons, Arduino and quad-core FPGA based gameboy emulators. He has hacked code, soldered hardware and inflated balloons, as well as operated the telemetry system on several successful Horus flights.


Programming for PIC microcontrollers with the Small Device C Compiler

The Small Device C Compiler (SDCC) is a retargettable, optimising ANSI C compiler that supports several MCUs, including Microchip's PIC16 and PIC18 series microcontrollers. It is free software. distributed under the GPL.

This talk will cover: writing small programs in C for the PIC, compiling with SDCC, assembling/linking with gputils, flashing PIC devices with picprog and simulating code with gpsim. We will also cover some of the common pitfalls PIC programmers face.

There will be a live demonstration using actual hardware.

Slides (4.5M)

Hardware/Software (27k)

Patrick Burns

Patrick has been a Linux user and free software advocate for over ten years. After graduating from the University of Sydney with Honours in IT, he worked in Canberra as a full-time Perl wrangler. Patrick is currently living in beautiful Hobart, Tasmania where he is completing his PhD in activity motivating technologies at the University of Tasmania.

The Javascript testing toolbox

Javascript has, over the years, developed into the de facto standard for bringing interactivity to web pages. But, as web pages evolve into complete user interfaces, more and more logic shifts from the server to the Javascript client. This creates a real need for solid test coverage for Javascript code.

This talk will give a short introduction to some of the tools available to create complete test suites Javascript, including qUnit, Sinon.js, Jasmine, js-test-driver and Selenium.

Malcolm Locke

Malcolm is a some-times systems administrator, some-times web developer, living in Christchurch, New Zealand. He runs a consultancy helping bring test driven development, pair programming and other agile practices to established companies and start-ups using open source tools.

Slides

http://the-javascript-testing-toolbox.heroku.com/

AltJS

Languages that compile to JavaScript have exploded in popularity in the last year. Instead of directly writing JavaScript, people have started to use these ""AltJS"" languages. Popular choices are CoffeeScript, ClojureScript and Objective-J.

This talk will cover why these languages are interesting, show interesting parts of popular choices and then explain how easy it is to create your own.

Brian McKenna

Brian McKenna is a Graduate Java Developer at Atlassian. He is very passionate about programming languages, especially the functional variety.

Brian is part of the AltJS community, updating the long list at http://altjs.org/ and talking to AltJS users and developers. He also works on an AltJS functional language called "Roy".

Migrating to PHP 5.4

PHP 5.4 may have fewer headline features than PHP 5.3 did, but migrating older codebases to PHP 5.4 may actually be trickier than going from 5.2 to 5.3 was, as the cord is being cut on a number of deprecated features. In this talk, I'll discuss what's changed, how to deal with it, and outline some of the new features in PHP 5.4 that will make the life of a PHP developer easier.

Adam Harvey

After turning his back on the opportunity to play international cricket for the 74th ranked team in the world, Adam dedicated his life to fighting crime, poverty, and PHP's horrible magic quotes misfeature. When not doing those things, Adam works as a Web developer to support his crippling T-shirt addiction, and then wears those T-shirts out to fashionable social events each night, by which he means sitting at home working on open source software such as PHP, a couple of associated libraries and extensions, a variety of Gopher-based tools, and some Android apps that may never see the light of day.

Adam has strong opinions on Web development, mobile phones, the psychology of leg spin bowling, coffee, JavaScript libraries, cocktails, and basically every other thing in the world, and looks forward to sharing them at inappropriate moments during talks at conferences.

Slides

Slides


Finding vulnerabilities in PHP code (via static code analysis)

Most people are familiar with common vulnerabilities in PHP code, such as SQL Injections and XSS. SQL Injections can be prevented by using a good data base abstraction layer, but there may be old code which depends on developers manually sanitising input. XSS vulnerabilities may not be dealt with properly, nor may command execution vulnerabilities using functions such as system().

Static code analysis (SCA) can help identify issues such as these without having to execute anything, by analysing the source code. This talk will discuss the process of SCA in general, issues unique to dynamic languages such as PHP, then a particular FOSS tool for PHP SCA.

Peter Serwylo

I'm currently entering the second year of my PhD at Monash University. In addition to this, I still work at Internet Vision Technologies as a web applications developer, where I have been employed since 2006. Here I have gained experience using PHP. I have a broad interest in programming, so for me, learning about static code analysis is just another way to learn about how languages work.

Slides

The slides are available here. The software I used to demo with is available here.

CSS Progress Goes Boink (with the right timing function)

You're travelling through another dimension, a dimension not only of layout and inline styling but of motion; a journey into a wondrous land whose boundaries are that of IE's support for new features (as usual). Your next stop... the CSS 3 zone.

Until recently, the standard when you've needed to make something move around a Web page has been to reach for your favourite JavaScript library and write some event handlers. When you've wanted to take smooth gradients from your Photoshop mockup, it's been to slice out layers and save them as images. When you've wanted multiple backgrounds, it's been a case of saying hello to non-semantic elements.

The world, led by WebKit and Gecko based browsers (and even IE occasionally) is changing, though. In this talk, I'll discuss ways to use these new CSS 3 features in backward-compatible ways, and how they can make your life vastly easier when prototyping Web sites and moving from static mockups to production sites, particularly when it comes time to design animations.

Adam Harvey

After turning his back on the opportunity to play international cricket for the 74th ranked team in the world, Adam dedicated his life to fighting crime, poverty, and PHP's horrible magic quotes misfeature. When not doing those things, Adam works as a Web developer to support his crippling T-shirt addiction, and then wears those T-shirts out to fashionable social events each night, by which he means sitting at home working on open source software such as PHP, a couple of associated libraries and extensions, a variety of Gopher-based tools, and some Android apps that may never see the light of day.

Adam has strong opinions on Web development, mobile phones, the psychology of leg spin bowling, coffee, JavaScript libraries, cocktails, and basically every other thing in the world, and looks forward to sharing them at inappropriate moments during talks at conferences.

Slides

Slides


Application programming in Lua: experiences through LOMP

Lua is commonly used for scripting applications written in C such as games (eg, World of Warcraft, Garry's Mod), network software (wireshark), databases (eg, Tokyo Tyrant); It is also often used to code the logic of many programs behind the scenes (eg, Adobe Lightroom, Mobile Apps+Games).

But it is seldom used to write standalone applications.

I have been slowly working on my project "lomp" for over 5 years; it has taught me much about lua, and programming itself. Trying to work with many standards: usually file formats and network protocols; the original author(s) has written them assuming you'll use their library, or at least something C based. When in a dynamic language, some things such as working with native structures, dealing with callbacks and non-reentrant code, even bit-wise operations can become non-trivial.

This talk will be about some of the pitfalls encountered during the ongoing development of lomp.

daurnimator

Daurnimator is an electronics engineer finishing Masters at the University of Melbourne. He originally got into Lua during high school programming for the Sony PSP and since then has become a regular voice in the Lua community.

He has had numerous personal projects: the most of enduring of which is "lomp": Lua Open Music Player, an effort to write a music player/manager almost entirely in Lua.

Personal tools