Last Friday I was just getting back from my very first programming conference, Strange Loop 2014 in the great city of St Louis Missouri. This was not my first conference, but my first programming based conference and also my first time in the city of St Louis. After becoming exposed to so many new thoughts, projects, languages/technologies and ideas, I would definitely go back to Strange Loop next year for another round!

Strange Loop name tag

For anyone looking to checkout the Strange Loop 2014 content (notes and videos), they are up online on GitHub and Youtube. The conference took place September 18th and the 19th where I listened to Joe Armstrong talking about the current state of programming, Richard Feldman discussing how you can create a web application without a server, Stephen Wolfram demonstrating the new Wolfram language, Julia Evans proving how anyone can be a Linux Kernel hacker and other great talks giving everyone a new perspective of what is out there for our programming enjoyment.

Below, I would like to mention some of the talks that I took something new from and had some great enjoyment listening to. Starts out with some bullets, a little overview, then my opinion on what I took out of the presentation.

The Mess We're In -- Joe Armstrong

  • Too much code is written these days with little to no documentation.
  • There are too many programming languages.
    • Difficult to expertise in just one.
    • Difficult to discuss a language with others to learn from each other.
  • Instead of heading to documentation, today we head to Google and Stackoverflow for answers. Answers are all scattered around the Internet without true consise answers.

Overall, Joe discussed how there is simply too much code out there. We need to compact all of our code together to remove all code duplication and clean up non-sense code all around the Internet.

You can tell Joe has been thinking about this idea for years from the way he talked on the subject. I enjoyed his discussion because I have had my own conversations with my college professors about how I have began to feel the same way (not to the point of wanting to delete "non-sense" code), but I do feel our code is very messy and cluttered and needs a good clean up around the Internet. Every language has its purpose, but I do wish to expertise is more languages instead of learning so many different ones....although when you think about it, the Internet is a mess because languages are evolving to improve, so maybe being messy is all for good?...such a challenging subject.

The Sociology of Programming Languages -- Leo Meyerovich

  • People will use a new programming language if: (need / pain) > 1 (I think this is actually the truth for everything not just programming).
  • Why do people decide to use X language for task Y?
    • 1: availability of open source libraries.

    • 2 and 3: language team members are most comfortable with.

  • We should choose a language for social reasons.
    • Make people want to talk about your language with others.
    • Make language 'time to hello world' at the very minimal to not be a pain.

Leo presented statistics throughout the presentation with some very interesting facts about programming languages and why some are used more then others.

I really enjoyed the numbers that were shown during the talk along with the main message. The top reasons that a programming language is chosen for a project is not so surprising to me because I have personally chosen a language for those exact same reasons but I do not wish it was the case. One reason that I enjoy working on projects solo is because I get to ignore other team mates experience and open source availability and I get to choose a language by what I want to use because it sounds fun, I want to learn it, or I want some more practice with one.

Democratizing Hardware -- Chris Williams

  • His goal: Make hardware programming as easy as web programming.
  • His argument: JavaScript, using node, is a very good language for doing hardware programming.
  • The global human population is expected to increase very quickly by 2050 and so we need to produce robots to help us survive. Learning to program robots is very important.
  • Challenge: Go buy hardware kits like Arduino to go learn hardware.
    • While learning, sit down with a 10 year old and learn together for their generation. Do not learn alone.
  • Keep knowledge open (referencing open hardware) instead of in a small number of people's minds.
    • Knowledge in a small number of people's minds is dangerous. Everyone's minds and it's powerful.

Chris (aka Tiki God) has done this talk around at dozens of makers spaces and groups just like ours you can tell. The talk was very well done, interesting, and informative. I purchased an Arduino capable board months back but have not touched it yet and this talk helped drive me towards getting it out and playing with it sooner. There are many cool projects you can do with young people as they feel it is very cool with instant gratification. The best resource for getting into all this hardware fun? Check out your local "makerspace".

Tip when teaching young kids about hardware programming: do not assume you need to touch from the ground up. Kids, especially today, are better at technology then we think. Get a feel for their current knowledge with robotics and teach from that level.

Being an open source software fan, I also very much enjoyed Chris's drive towards open hardware. I will remember this thought of his:

"Knowledge in small number of people's minds is dangerous. Everyone's minds and it's powerful."

Even though yes, I do own an Arduino and I have wanted to get it out and learn about it, I have not done so yet because I do not get very excited when you learn how to turn on an LED light. I don't feel like buying kits to learn how to create a copter and then what do you do with it after you make it? I need to dig around with potential projects some more to get excited about learning hardware then I am sure I will understand just what Chris is trying to get me to understand.

Web Apps without Web Servers -- Richard Feldman

  • Web apps are great!
    • No install or updates like the case with software. Just go to a URL.
    • Web apps probably have a bad repuatation from it's past vs present as web apps have been poor to nonexistant with only static data or communicating back and forth with a server and force refresh of web pages.
  • Example site:
    • 100% static file web app downloaded from Amazon S3.
    • Runs without the need of a web server (after first visit to website).
      • Use HTML5 app cache for offline support.
      • FileSaver.js FileReader for reading and writing files locally.
        • Do not use cookies, use local storage for storing files (but has 5MB cap). IndexedDB good for large files but not working on Safari7 or IE11.
      • Syncs docs with Dropbox.
        • Use CORS or easyXDM because of SSL certificates compatability with Dropbox API.

Richard's gave a very good talk about how to write a web application without the need of a web server. I have actually been curious how some sites are able to do this with their web applications for many months now and Richard answered every one of my questions within the presentation. I know Google Docs has had offline support for a while but I always assumed it was because it is built in to Chrome or something, not that other sites could do the same thing.

As expected, all of the technologies are not completely working as some browswers have not fully implemented the technologies or they have inconsistent security limits implemented. This of course is expected because it is the web and it has had this reputation for many years.

Inside the Wolfram Language -- Stephen Wolfram

  • Wolfram Language demo.
    • Over 30 years in the making.
    • Powerful computation alongside a vast database of facts.
  • Want to play with the Wolfram Language?

Stephen Wolfram demonstrated the Wolfram language during his time on stage showing off the power of the language along with some discussion of the long process (over 30 years) he has gone through along with his team to create the product.

I have heard about the Wolfram language from a coworker where I did a little bit of peeking around with the language and I may not be as excited as most for the language. It is absolutely amazing what it is able to do and I cannot image the work that has gone into the project, but I simply do not see myself using it yet. The only time that Stephen really "wowed" me and got me to say "Ok, I would actually use this" was when he created a REST API with one single line of code where I could then create my own software to retrieve the information from it. It is an amazing system that still keeps my jaw dropped thinking about how this product is an industry game changer but I simply do not see myself using it on a steady basis quite yet. As it gets closer to a public release, there is still plenty of time to get impressed from more demos and examples.

PureScript (Maybe this time we get JavaScript right -- Bodil Stokke

This talk had a very simple message to it: JavaScript sucks and PureScript is a great alternative you can use that compiles down into JavaScript. Bodil discussed her discovery of TypeScript as she started a new job created little web games that had the purpose of being an interactive advertisement. She did not like JavaScript at all and wanted something better to write her programs in. After playing with TypeScript for a while, she wanted something more Haskell feeling so she found PureScript.

I enjoy hearing talks about JavaScript alternatives and how JavaScript is either amazing or terrible from different point of views. I am not involved in web application development so I enjoy hearing about this other world out there and the arguments people give. I enjoy seeing people create languages that compile down into JavaScript so anyone can feel comfortable writing JavaScript (after it compiles) from a language they are most comfortable in. Bodil also impressed me very much because she did create a game live in front of the audience in the last 15 minutes of her talk so that alone is something I didn't want to miss. Not only did I get to hear about why PureScript is great, she ended up showing us how it is great.

You can be a kernel hacker! -- Julia Evans

  • Q: How do you talk to the kernel? A: Use system calls (kernel's API). In the case of Linux, C calls like chmod, open, or exec.
  • Tools to learn about the kernel with:
    • strace: program that prints all system calls a program uses when it is used.
      • Example: strace google-chrome <-- will print system calls Google Chrome uses when they are being executed by the program instance.
      • NOTE: strace makes program execution slower so do not use in production.
    • perf: program to trace L1 cache misses in CPU.
    • ftrace: program to track kernel interface calls.
  • ToDo list for how to be a kernel hacker:
    • Use the above programs on everything to get a feel for how programs talk to the kernel.
    • Read kernel source code.
    • Do the Eudyptula Challenge.
    • Make a kernel module.
    • Write own OS. Start with something simple like displaying text characters to screen when key is pressed on keyboard.

Julia delivered easily one of my favorite talks in all of Strange Loop with her kernel hacking session. It was very entertaining, easy to follow, and productive. For anyone who has ever had even the tinniest bit of interest in programming with the Linux kernel, this talk was the perfect talk to attend.

Before listening to Julia, I have had previous experience with the Linux kernel via writing a couple of my own modules and writing some programs that make system calls to the Linux kernel to read and write files for example. Even with some prior experience coming into the talk, I got exactly what I was expecting out of it: I found some helpful resources to continue working with.

Being an Android developer, attending a programming conference like Strange Loop was a great way to expand my horizons with what is all out there to discover in the programming world. This was my favorite part about the conference and from some of my other peers who attended, they would all agree that this is their favorite part about the conference as well. It is great for any programmer looking to discover and be reminded about the giant world of programming and Computer Science.

For all who took part, Thank You!