 final session of the Open Programming Minicomf, and as I've been mentioning all day, this is reserved for lightning talks. For those of you who haven't seen lightning talks before, these are five-minute talks presented by whoever wants to sign up on the day. We take no responsibility for what people have signed up for. It's just whoever put their names on the wiki. Basically rules are this. You have five minutes. This includes the time taken to plug in your laptop. So if your graphics settings don't agree with the projector, it's your problem. Okay. The timer will start whenever I see fit. Okay. So whenever I click the start button, that's when your five minutes start. And you can see the timer on this big screen here where it says start. Our first presenter is Tim Ansel. Please make him welcome as your microphone. So everybody knows the only language you should ever write anything in is Python, as everybody in the audience knows. So we have this conference called PyconAU and it's dedicated to Python. So if you write in Python, you should come along. It's run by a group of volunteers like LCA and it's the parent organisation is Linux Australia. It's run on the 21st of August in the Sydney Masonic Centre. Yeah, that's kind of all I've got to say about it. It's an awesome conference. We had 200 people last year, we sold out. If you could spread the word, last year we had people kind of turn up and say, I only found out about PyconAU like yesterday. Can I come in? And we had to say no. So please tell all your friends about the conference. We're going to be bigger and better this year. And my mic's getting replaced. Tweet about it. If you click on the spread the word link there, it will give you a flyer that you can print out and put up around your universities. Join the mailing list on your own computer. Yes. Awesome. So we have lots of different topics, computer games, web development. I've got like Python. They're all Python related. Anything from community stuff. Yeah. Any other questions? I've got like two and a half minutes. I could stand around and dance. Dance please. No. Why is Python the best? Because it's ears. Python 3 is on schedule. Yes. Okay. I'll let you go to the next person. Please come. It's an awesome conference. It's quite cheap, especially for your student. We have discounted student tickets. So please do come along. We've tried to make it really accessible to people which have limited finance. So please come along. Awesome. Thank you very much. Okay. So up next we have Ivan Miljanovic. And your time starts now. So my name is Yvonne. I'm here to talk about Haskell. I don't have any slides partially because I forgot to bring my laptop's power cable today and it died already. So we had to talk earlier from Brian about F-Sharp. Haskell, like F-Sharp, is a functional language. It's a purely functional language. Whilst that means it doesn't have IO, it doesn't have OO, so it does have IO, by pure we mean that we do not have that mutability is constrained by default using these weird things called monads which Brian also mentioned. Monads, despite what a lot of people on the internet seem to think, are not this scary thing. After all, they're only monoids in the category of endofunctors. Okay. Not really. Despite the fact that we use a lot of category theory terms and terminology, that's just mainly because we have no idea what else to call them and we've got the idea from maths we might as well use the mathematical terms. So the whole point about the pure aspect is you have side effects, great, constrain them into IO, into ST, whatever monad you're using. That way it's easier to see which bits are going to change because of mutability that you don't know what's going on. And so it's a lot more easier to reason and perform aggressive optimizations on the code when you can guarantee your superiority. Haskell's a rather ad hoc community-based programming language. We don't have benevolent dictators for life or any kind. So basically it's more of an anarchy. We have a bunch of people going, the website's not working. Let's try and form a committee to keep it going. That kind of a thing. More recently, we finally decided we should update the language officially from the old Haskell 98 standard. The first version came out last year with a few new changes. No one got around to doing it this year, so next year they're thinking maybe we should get some people together and consider breaking backwards compatibility and fix up some of the hierarchical messes we've got going on. And so we have a fair number of libraries available on Hackage, which is our equivalent of CPAN or whatnot. And some quite interesting attempts at solving various problems. Now there are various hackathons that people have organized in America and Europe. Only recently have we started to do anything in the Southern Hemisphere. There's a couple of functional programming groups in Asia and also in Australia, but they're typically not Haskell, just about Haskell. We're at Scala, F Sharp and other than the like. Last year, however, myself and a few other people decided we'd had enough of not being able to attend any of these hackathons and organize the first ever Oz hack, which is held in Sydney, despite the fact that all of us are organizing it from Canberra, because Sydney's got the vast majority of Haskell programmers in Australia. We're looking at holding another one again this year. We haven't yet organized it. If you're interested in coming along and we welcome people who have never used Haskell before as well, join us on the Haskell.au IRC channel on FreeNode. We're still trying to work out whether we should change the format to maybe do a bit more of a Railscamp kind of a thing with limited internet access to stop us from talking on IRC instead of programming. That's all from me. Okay, so next up we have Peter Miller. Luckily our previous talk finished before the other projector decided to switch itself off. He's attempted to plug his laptop in, so he starts now. So I want to boost LibExplain. I'd love people to use it and give me some feedback. LibExplain is a library of system call specific error replacements. So I'm going to do a live demo. Just a minute while I zoom the text. So this example is in the source code for LibExplain. It is a very dumb cat replacement and it has full error detection and handling and it is very short. It has one feature that I wanted to show you in that it has a minus over output. All of these are using the system calls all have also come with a wrapper function so that you can say every open or die using the borrowing from Perl. So I have some examples of this program in action. So there we have the sort of error message you're going to get. It reproduces the sys call so that you've got as much information as possible for users to cut and paste and glue into the bug report. You're going to read three months later when the machine is unavailable. The reason I wrote LibExplain was in 2008 I was supposed to be level infinity tech support and never talk to users. And I still had a queue of people asking me to explain the latest Erno result please. So I got sick of that and decided to put all of the things that I was checking into a program. And I put a little bit of useful stuff in it so that it could make suggestions when they made simple typos. And here's an example of it trying to guess what you may have meant. So another example this one this time cut it off on the right hand side. Oh, drat. Let's try that again. Still slightly too big. Here we go. Okay. Thank you. It has lost the size of the terminal normally wrapped quite nicely. Anyway, you see an example here where it is actually complaining about a particular file system and it goes and it finds the file system out of FTAB, FSTAB and tells you about it. Trying to supply you with all the information you needed and some you didn't know you needed. So let's hope you can read that. So now we have an example of trying to write to a password or a file you don't have permission to and it tries to explain to the user just what exactly went wrong because one of the things I found is nobody understands the permission system except really nerdy people who are expecting and indeed requiring their daily life rigid consistency. Normal people don't expect that and they get confused. So the last time I wanted to give you was I set this file system up very carefully so that it's already run out of space. But this time in previous examples the minus O the executable actually was given the string of the path name. In this case bash is going to open the file for it and pass it as stood out. Now the thing you need to note is it still worked out the name of the file that it was never given. Okay and it tells you which file system it was on. So LibExplain tries to tell you everything you needed to know and the stuff you didn't know to ask. Okay LibExplain try it. Thank you. Okay up next we have Nick Hodge. He's attempted to plug his laptop in. He starts now. So we'll just work. Okay so we have a crisis in our industry a programming language crisis. So as mentioned firstly I am from Microsoft so therefore I am one of these evil basement cats coming along into your conference and evil is escaping. For all one of the things I'd like to point out this is an obscure 1994 joke that Intel has a patent on these two numbers if you divide one by the other on certain Pentium machines it gives you the wrong answer. Anyway that's an obscure 1994 joke and therefore what Microsoft decided to do is we're taking a patent out on this number so it belongs to us so no one can use it. Okay so let's take the tinfoil hats off for the moment and move into a little bit of what the crisis is. Firstly our industry and I how many there's not many females in the room here right now we ignore them and this is one of the worst things about our industry. There are not enough women in our industry considering it was started by Lady Ada Lovelace, Admiral Grace Hopper gave us a lot of really good things in the 50s and the 60s and if you read the history of our goal and and algorithms and stuff this lady called Ria Debets did some awesome work but they get forgotten and this is not sort of unfamiliar in our world. You know at the Y2K crisis that happened about 11 years ago we had all those COBOL programmers that we had to sort of get out of the grave and reanimate to come and fix up all the problems that they originally coded so they earned you know three thousand dollars an hour and you know to come and fix things and then we have the problem with Gen X which is sort of I would say the majority of the people in the audience right now you know basically you know VB is perfect yeah let's build everything in VB and learn on VB that's that's wonderful great and then you know because that didn't work so well then invented C sharp and Java and you know all quite cool but you know really the problem is that well well then we have JavaScript let's not go there it's just evil is that you know the modern day languages that we're trying to solve our problems with whether they be you know PHP with a dollar sign in front of variable names what's up without that sort of a Microsoft thing why the hell would you do that there we have Python which I believe is the one tree language and everyone should follow it and we have Ruby which is actually a cult I think you know once people start in Ruby it's sort of like they become Scientologists then we have functional languages as well yeah so we had Haskell and you know basically it's APL moving into our goal 68 for the 21st century pretty obscure but you'll get that one and closure and you know closure is a great language as well it's got lots of brackets so that was cool in the 70s and Ruby is sort of says it's a functional language but it's still a cult so programming is hard and you know yeah let's go shopping you know the generation below us the generation why and generation C and all that really don't want to do this programming stuff because it's frickin hard and then they don't want they don't want to read the frickin manual and also we have this thing called quantum computing you know sure like troding is cat in a box we don't know whether the bits are on or off and it could be in all sorts of different states and this is going to be a new paradigm and really there's nothing really around to really help us out and if you think about all us gen X people and that are becoming managers you know relationship managers you know so how are we going to solve this this is really getting desperate we're getting desperate so I think there's an answer firstly is the Django people I think have got it right the python Django people it's about ponies it's about short text it's about doing things in smaller characters it's about you know oh my god it's about you know lol cats it's about lol speak therefore the answer is lol code a new programming language and here's an example oh hi is an opening statement k thanks by is the closing statement can have standard IO is have stand input output visible high world is hello world so that's the canonical hello world that's me at promoting lol code in Japan by the way whether one of the first lol code evangelists in Japan this is a bit more interesting example for various reasons hi can I stand I I have I have a variable to close variable I mean you loop up you know increase by one visible you get the idea this is a defined language lol code one of the beauties of lol code is there are some going to be some books out for it already much more interesting than PHP 6 books and basically code repositories we stick everything in Twitter and what and everyone reports their bugs in software and Twitter anyway so that's going to work anyway so Twitter is the future so lol code is the future seriously go have a look at it thank you very much okay up next we have Y cross and going by standard rules as soon as he tends to plug his laptop in is when I start the timer oh that's exciting I'm starting you now then there's a mic right so I don't have any slides but I'm going to be talking about five interesting languages you've probably never heard of in five minutes so the first language I'm going to mention and these are just brief mentions because I don't have time to go into them but feel free to Google and whatnot the first language is OOC it's a language similar to most similar to go I think it's object oriented a little bit of functional very lightweight and clean syntax and it has type inference so you don't have all this all these types floating around in your code it's got support for generic so it's low levelish it has a very good ffi with C so it's very easy to call C libraries and things from it the implementation is in itself self-hosting the current implementation which compiles to native code was originally compiled off a Java implementation which was implemented in Java and there's a new and better implementation currently in the works so currently it compiles out to C code and then that gets compiled out into native code there are plans to back that on to LLVM the next language I want to mention is disciple it's similar to Haskell the syntax is actually a fork of Haskell it's like Haskell but it's not lazy it reduces monad use for state and IO purposes because what it does is it tracks all of the it's got effects typing so it tracks all of the side effects in the type system itself so it still remains pure without actually you having to wrap your head around using IO and state which can thread through your code and be a little bit ugly it's currently implemented in Haskell but there are plans to write it in itself as well currently compiles out to C but there is also an LLVM backend in the works for it and it's sharing code with the ghc Haskell compiler for the LLVM backend stuff the third language I want to mention is clay it's a little bit similar languages like bitc or rust which maybe you've never heard of either which is are also maybe roughly along the same lines as say go or OOC it's designed to be very fast a sort of systems programming language it's it's designed to be low level it doesn't have sort of high level constructs but it does have type inference and is designed for very generic programming so it has a very very clean lightweight syntax and it's also designed to have a very low memory runtime overhead and it compiles out to LLVM as well the fourth language I'd like to mention is phantom that's with an F and it's similar to sort of Java C sharp in syntax but better it's portable with different implementations it's a little bit of a OO functional hybrid language you've got a choice of static or dynamic typing if you want one or the other or both it's vaguely Java C sharp ish but again the syntax is a lot cleaner it compiles out to JVM bytecode so you can run it in Java land it compiles out to CLR bytecode so you can run it in .net land and it compiles out to JavaScript code so you can run in your browser the final language I'd like to mention is called rail that's R E I a similar to Ruby and Erlang because it's actually kind of a hybrid of both it's a Ruby like language that runs on the Erlang VM and it's designed to integrate seamlessly with the Erlang ecosystem so if you kind of like the idea of Erlang and of all of its message passing stuff and all of its cool distributed computing stuff but you really hate the prologue inspired syntax which is understandable you can use rail which is gives you a nice little Ruby sort of syntax and it compiles out to an Erlang as which is then transformed to bytecode by the Erlang compiler and that's it oh and by the way all of these projects are actually under active development they might not have a large amount of developers some of them only have one main active developer but they are being actively maintained so Google them check them out have fun okay up next Peter Leon all you sneaky buggers we've got two consecutive speakers using the same laptop they're trying to gain the system I'll just reduce their timer down to four minutes 30 you ready to go now you've plugged in you've attempted to plug in you might need to switch your mic on my name's my name's Pete Leong and I can computer program I specialize in Java that enables me to come to conferences such as Linux because it runs in most places now I'm wrapping up a project shortly I'm wrapping up a project shortly that I wrote a fairly fairly advanced swing application I learned a lot of stuff that I'd like to sort of take with me but of course I'm going to lose access to the code base I've gone home and done a clean room implementation of just some little techniques that I've been using say okay anyway some of those techniques are one is dynamic sub classing to clean up the code and it's actually a bit of a mind-bending thing to do for me anyway you can reduce a lot of code clutter using that and using that you can use a number of other techniques such as right-click cleans up hourglass and weight curses and a couple other techniques you know some three some you take some new classes in Java and just some some minor things like J goodies form layout and I feel like I should do a dance or something because it's about the source code really anyway if you have a look on the wiki there'll be a there'll be a hyperlink to the source code it'll be all online some other useful techniques were dependency injection using annotations injection of fields it yeah so another another of other useful you know guideline implementations in this piece of source code is yeah Maven if for those of you who aren't that familiar with it and you know using annotations to inject logging so you don't have to duplicate say class names everywhere that sort of thing anyway so if you just have a look at that website there that information on that project will be up very very soon you know so thank you for that fantastic lightning talk how to reboot a Linux laptop in three minutes okay so up next we have Steve Dalton and he's going to start now I don't have any slides I was just doing some blatant self-promotion there and I was just quickly going to talk about developer podcasts and when I was about 15 16 I was like the shyest kid at school I didn't talk to anyone and I don't know what happened but sometime between then now I've become a really talkative person if people know me I just talk and talk and talk and then me and a friend Craig Aspinall we lost my car once in Rabina when we were at Java meet-up and took us about an hour and a half to find the car and we had this massive long chat and we said this is so cool we should do podcasts for this so we just started done doing a bit of a podcast called coding by numbers but what's kind of come out of this is we it's been a great little intro and we've been talking to all sorts of interesting people we've been working as bait or all the different programming languages and it's been really good and what I'm noticing is there's not very many developer podcasts and not many here in Australia as well so I guess I was just doing this line and then talk to encourage you guys to and get out and talk to people in your community whether it but things that aren't just text and Twitter and chat rooms there's not much of that and so the podcast has been really good I went to Sydney last week for a bit of a holiday and I thought well I'm now might as well see how I can talk to got to talk to Andrew Gerrand about Google go he was talking here today I don't know if he's here yeah and when talked to the Alasian guys about Bitbucket normally I would never get to go to the Alasian offices but because I had the podcast and they sort of wanted to promote their thing and I got to wanted to talk to them and worked out really nicely so we're gradually working our way through all the languages we've done go Java, Groovy, JavaScript, Ruby, haven't done Python, yeah we did talk about a lot of code at TechEd didn't we and yeah I got invited to TechEd by Nick and we talked to some of the Microsoft guys there about Azure and all sorts of things I haven't done one on PHP or Python yet so if anyone wants to come talk to me I'll try and bring my recorder tomorrow. Any other weird languages I'd love to talk to someone about Phantom if who was the guy I mentioned Phantom before because I'll only just start looking at myself but yeah come and grab me and I'll try and bring a little MP3 recorder it's a quarter zoom H4 which a lot of podcasters use we started off just using the Mac worked pretty well but then I liked the fact I could get out there in the street so I bought one of these little recorders it was like 200 bucks and it's been fantastic we don't edit the podcast at all we just put it out there we have a very simple little header and photo we put on the end and we get them out usually within a day of doing the podcast keep really simple and then you'll you'll get to level episode 20 like us a lot of people I think go too fancy and they'll do two three four and then they give up so keep it really simple I know some people have got like 200 episodes and they all say the same thing keep it simple so you know I'll leave it at that just put put put it in over to you and anyone wants to come on our show you can but by the same token anyone wants to set up their own podcast it's really easy we just put our podcast on blogger we don't even bother with hosting or anything it's just dead simple I've just got a FTP driver chuckle the MP3 that and then iTunes is dead simple to hook up through feed burner it's really no work at all so that's all I've got to say thank you very much okay so up next we have Dan Bentley your time has already started my name is Dan Bentley and my computer is not being cooperative but I promise I just hit enter on a command which hopefully at some point I will get to show you but right now I am going to try and talk about a library called Google app you tell us Python and there's a link in the wiki page which you can check out and go to this is a library that we've developed at Google that makes it easy for Python apps to work well so you have a flags infrastructure and a command infrastructure and better debugging and all sorts of just nice odds and ends that we found useful but what's important for what I'm saying right now is that it's developed internally at Google and in fact there are a lot of Googlers who contribute to it and have no idea that's actually open source and in fact has anyone here heard of it no of course not but you should because it's pretty handy and as a result of it being open source you might go well hey if it's developed internally how do updates get out to the the public and that's a really good question and in fact that's been pretty hard so I've worked on a tool called make open easy that allows you to automate this process so what I started was a command to take the updates that have been made internally at Google and then move them into public subversion and real this is just not detecting the displays at all is it no so right now I'm running a command that's going through and rerunning the automated translation process so it's taking what's in the Google internal repository but we can't just copy and paste that out to public subversion why not because there's a lot of things we have to change there's a lot of code that was necessary in 2004 that isn't any more and there's no need to settle the public with that but we would like to give you the good stuff so what hits subversion is the idealized version of what we'd like to do but which we can't just remove the code that some binary somewhere is still depending on and I hope that I'll be able to within my five minute time span actually show you that there's a new change has anyone found the link in the wiki and gone to the Google code page so if you follow that there's a sources and then there's a changes and you can see that right now there are five changes and if all goes well there's about to be a sixth change yeah do you have any hints of how yeah that's I told it to do that and it's it seemed like it it would yes so so that's all right you know sometimes technology doesn't work out right yeah but does anyone have a laptop they could bring up real quick just that has a web browser so I could show off because this is something I'm actually proud of where I'm going to yeah thank you hopefully be able to so yeah could you just go to a code google.com it would should I just type so I'm just going to go to code.google.com slash p slash Google app utils type on which is a mouthful I know and that's going to load and I'm going to get the cursor under control because this is a very weird angle that you're actually not and this is a microphone and it amplifies what I say and you can see here that this is a revision that was created within the past five minutes we took the latest tip that was in Google's internal servers and we pushed it out Daniel Nadasi and I will be talking about this and many more challenges and solutions to them at a talk on Friday called opening a closed world where we want to sort of talk about how to take a closed source project and make it a successful open source project which is a challenge not everybody has but some people do so if you're interested we'd love to tell you and we'd love to hear from you how you do it well thank you okay so up last we have Brian McKenna usual rules apply your time has started all right has everyone heard of LLVM before couple people okay well LLVM as as the acronym actually is it's the low level virtual machine so it's a virtual machine but it's so low level that you can implement pretty much any language on it so here's the homepage for LLVM so the virtual machine actually can compile C to the bytecode and then that bytecode can run on the virtual machine so that allows you to have kind of like semi-portable code and you can have it you can have it run across you know Linux Mac and Windows so what I've found is a project called M script in I've filed a couple of issues before and I've submitted a couple of patches so I've been helping out a little bit but yeah this is a project that converts LLVM bytecode into JavaScript so then you can run C programs on the web so this here well this is Python in a browser so what we've done is we've compiled Python from source code C source code put into a static library compiled it from C to LLVM bytecode then compiled LLVM bytecode to JavaScript and it works so we can execute it and this is all clients like this is on the this isn't on the server or anything this is seven I think it's about a seven meg binary of JavaScript seven megabyte of JavaScript running on Chrome and it works fairly well of course we've only got the sys library because otherwise we'd have to go to the file system when there's no file system but yeah we can do print and we can do it's during complete right you should be yes I think the only I have got his print sorry no you don't need another demo we've got is Lua exactly the same as Python this one's a little bit that I think it's only like three makes so three makes JavaScript turn complete again and this one is what's this one ray tracing so it's a C ray tracing compiled to JavaScript then we're doing some I don't know we're doing some tricky stuff to make it actually render as a canvas element so there it goes so I'll just quickly go over what some people might not understand what's quite happening here so this is a LVM compiler in the break up sorry server side so we can put in C program and it puts out the LVM bytecode so you can see all that down there so what we do is we get a human readable version just like this we do some JavaScript parsing on it and then convert it to just like a little JavaScript virtual machine that runs in the browser and that's how it works the end okay so we've got six minutes left and that was the last lightning talk so I'm going to go open Mike now does anybody want to show something off that they've that they've been working on or something like that no takers presumably your VGA port the time has started cool terminal there's a screen in front of you I work on a project called beaker which is not the Muppet you're searching videos oh whoops there's a screen in front of you yes I know I can't okay so beaker beaker is essentially it helps you to build a test infrastructure it's used for when you need to test things with various different distros on various different hardware essentially what it provides is is it will allow you to create a pool of systems which can be located anywhere in the world and it also provides you a pool of distros which it can pull from and an NFS server or something so what you can do is if you've got a new kernel that you want to release and you don't have a one terabyte machine below your desk but yet they do have one say somewhere in the States that that they have on this pool you can actually test your code and and and create custom tests which will which you can run against the kind of hardware that you need and the kind of distros that you want to test it against so so it solves the problem of you know having to have all these local all of these local machines which you know could get quite expensive if you've got to have all these machines over all these very different various different hardware types and architecture types and you can solve by having them in one central place and people all over the world can actually use this pool to test them it uses Cobbler on the back end you can you can power machines on and off once you've provisioned it with a distro you can SSH in if you want or you can just run your automated testing the testing will then if you've written it correctly it will provide results you can go and view those results see how many pass how many failed you can look at logs you can see what's past what's failed and then you can go and investigate and see what's wrong so this ensures this is actually what red hat uses this is this is what we use to you know new kernel comes out we want to test a new distro we fire it up in a test 390s all sorts of hardware to make sure it works so we this is actually it's a it's an open source project obviously it was previously a closed source project which we only used internally we re-wrote it completely in python it uses turbogears it's got it's got a browser front-end so yeah and it and it works quite well for us I'm working to about five people and we're very heavily working on it you can also if you want you can use you can use it just as a system inventory if you want and if you've got another application which which which runs your tests and gives you your results you can just plug into beaker and just have your system sit in beaker's inventory and then just you know take them from there so it does that as well some of the features we've got coming up will be adding Apache Cupid support so it'll be able to fire off messages when on different events happen so say like bugzilla could could I'm listening and you know see okay well this test has been runs completed bar bar we can you know change a condition against it any questions no okay that's it so oh yeah so you can do something like if you're interested in it one who I develop on it we hang out on free note in hash beaker the documentation is reasonable it's quite it's reasonably easy to set up so yeah thank you right so that's all we've got time for this evening so that's the end of the open programming minicom for this year has everybody enjoyed it hey good okay so this quickly on indulgence thank you to all the thank you to all the volunteers have helped out with manning the rooms today running the second roving mic for the for the questions has saved me from running around like an idiot today which is great thank you to everybody who's presented especially to the people who haven't presented at LCA before you've definitely made this minicom absolutely fantastic and thank you to the papers committee for yes I should have reloaded shouldn't I thank you to the papers committee for permitting me to run this minicom for again this is the second time we've run this particular minicom and apparently it didn't go too badly last time so they gave it they had the faith in me to run it again I'm very very thankful for that opportunity and thank you to the audience for coming along I hope you've enjoyed the day and we have to thank Chris for organizing this minicom big huge thank you so it's a token of appreciation thank you rather cool bowl made out of Macadamia tomorrow