Tips for learning Erlang
As I've stated in an earlier blog posts, I've been dedicating time to learning Erlang. Erlang isn't the easiest language to learn. Documents and examples seem to get out of date fast and don't always work so well. So this is a list of resources that I've been reading through to help myself learn some erlang. For starters I would recommend the following.
Web Sites
- Learn You Some Erlang
This is a great resource that keeps getting added to. It's not completed yet but it's free and very helpful if you are interested in learning some of the basics. - API / Official Docs
You'll never get too far without a good reference to available API's and official Documentation. It takes a bit to get used to but there is a ton of information here including best practices. - trapexit.org
This site has a ton of resources and tutorials. - Erlang Factory
If you can make it out to one of these events I'm sure you would learn a lot. I've never been but I've heard it's great. You can find some videos on their site. - SpawnLink.com
Great tutorial series about gen_server. Start with An Introduction to gen_server: “ErlyBank”
Books
- ERLANG Programming by Francesco Cesarini and Simon Thompson
I Reccomend this book for beginners. - Programming Erlang: Software for a Concurrent World by Joe Armstrong
I started reading this book but switched to "ERLANG Programming" Seemed easier to fallow for me and went into more detail that helped benefit me better.
FFMPEG 0.6 + Erlyvideo
Previously I posted about compiling FFMPEG with RTMP support. Now I'm going to describe what you have to do to view that content with Erlyvideo running on OSX of course.
Assuming you have MacPorts installed. Run the following command:
sudo port install erlang
Once that is done you are ready to install Erlyvideo. Go here for up to date install instructions (you will also need git installed).
Finally on to the fun stuff. go to http://localhost:8082/
Assuming everything worked alright you should see the flash content loaded. Go ahead open up terminal and run the following command replacing INPUT_FILE with the file of your choice.
ffmpeg -i INPUT_FILE -re -ac 2 -acodec libfaac -vcodec libx264 -vpre default -s 480x320 -f flv rtmp://localhost:1935/rtmp/test
Now switch back to your browser where you have the erlyvideo page loaded. replace the url at the top of the page with.
rtmp://localhost:1935/rtmp/test
Click on the Connect button.
Then towards the bottom of the page click the Play button.
Congratulations you are now streaming video to erlyvideo!!!
Google Font Directory
For all of those designers out there who would like to be able to take fonts from Google Font Directory and use them in your designs. Here is a link to download all the Google Fonts. These Fonts are True Type fonts.
Enjoy!
learn you some erlang
So over the past month now I've been devoting a lot off effort to learning a programming language called Erlang. Erlang is a functional programming language that is designed for large-scale communication applications with specific focus on high concurrency and error handling. The reason why I've been learning this language is because how well it scales and since I love working on the types of applications that require servers to scale fast if needed. I figured it was about time to learn something that worked a little better.
So I hope over the coming months I'll be able to describe better my experience learning erlang coming from a Flash / Flex / AS3 / JS / HTML / PHP / Python type of background.
First I plan on converting my current wordpress blog over to zotonic and then try to develop a cool video streaming application that will allow you to watch movies from your Plex DB / XBMC DB over the web using erlyvideo.
Quake2 and HTML5
This really made my jaw drop. When I first read the article I thought they were talking about Quake 1. I thought, wow thats cool. But iIve already seen the same quake 1 engine ported to flash so not too amazing. That was all before i actually went to the site and found out this engine is actually a port of Quake 2.
All i can say is JS / HTML5 is going to be fun. Don't get me wrong. I'm a flash guy and do almost all my work in flash / flex. Still with that said. I'm excited for what opportunities this will end up bringing.
< Quake 2 GWT Port />
JavaScript NES Game Emulator
It's things like these that make me say wow and what is making me say wow today is a little project created by Ben Firshman. What Ben created is a JavaScript emulator that emulates the Nintendo Entertainment System. What makes it remarkable is that it's actually playable. Under Chrome and Safari I get ~50 fps. Firefox delivers about ~10 fps and the iPhone surprising works at a miserable ~.5fps.
What I think is cool about this is that it shows us how far JavaScript has come over the years. and how powerful HTML5 + Canvas will really be. I'll be excited to see what else comes out from the community in the upcoming year.
Build iPhone Applications With Flex Builder
It always excites me when I'm able to find a new little gem on the internet. I think this could prove to be interesting as a way to develop for multiple mobile platforms. Not just for the iPhone or any other one offs. Today i was made aware of Elips Studio 3. You can register for the developer beta here. It'll be interesting to see how well it works at compiling to multiple platforms and the differences between all those platforms.
From the site:
"ELIPS Studio 3 cuts through the complexity of the fragmented mobile market by providing a single development toolkit for the world's most popular handsets. It includes a sophisticated simulator, and the code it generates is compact and rapid enough to run even on low-specification, mass-market handsets."
How does it work?
- Develop in Adobe Flex/Flash Builder
ELIPS Studio 3 is available as a plug-in for Adobe Flex / Flash Builder, a popular IDE for the development of RIAs and RDAs using the ActionScript and MXML languages.- Use our mobile Flex Framework
The product comes with a mobile-optimized version of the Flex Framework and a wide range of Flex extension libraries, including mobile device features and UI components. These provide additional capabilities beyond those found in the 'standard' Flex, such as making voice calls, accessing the phone's address book, sending SMS or MMS, taking snapshots or videos with the camera, and more. You can also import open source ActionScript Web 2.0 libraries.- Build and deploy for the mobile platforms you want
ELIPS Studio 3 automatically mobilizes and packages your Flex-based applications for industry-leading platforms, including iPhone, Android, Symbian, Windows Mobile, plus proprietary mass-market devices that run Real-Time operating systems (RTOS).
And because Open-Plug has a long track record of creating optimized code for cellular handsets... you’ll get amazing performance with your new Mobile 2.0 applications!
iHandler – AIR iTunes Exporter

This is a cool little tool written in AIR by Ondrej Rafaj. What iHandler does, is allows you to export your selected files from your iTunes library. I could really see a project like this doing some cool new stuff in the future with the new AIR 2.0 api's. Maybe let you play your music through the web using an HTTP AIR Server or export them to different formats using the AS3 OGG Vorbis library. Just a thought.
You can grab a copy from here
Adobe AIR 2.0 Web Server
I found this cool example of an HTTP based socket server over at Christophe Coenraet's blog. Basically he setup a socket and made it listen for incoming HTTP connections and server data based up the requests. Very neat stuff. It's always interesting to see people push the uses of AS3 in new directions.
This should also be possible under older versions of AIR too. since those versions supported sockets too. the only difference is in AIR 2.0 we now have UDP sockets.
You can view the code and examples here.
My 20 Most used AS3 Libraries
Because I work full time developing primarily in AS3. I have come across a lot of very useful libraries that I like to use in my day to day work. So today I present you with a list of the top 20 libraries that I have come to use on a more regular basis. I hope you may find and discover something here that may be of use to you. If you have a library that you use a lot please let me know.