over the last couple of days I have been thinking about what I want to try and learn, and I thought I would make a note of it here.
"Scala is a general purpose programming language designed to express common programming patterns in a concise, elegant, and type-safe way."
Scala website http://www.scala-lang.org/
The main drive for learning Scala is work. We are currently using Scala in a number of core projects and so having a working knowledge of Scala would be an advantage. The next is career , Scala is been adopted by a number of high profile web companies , including Twitter and LinkedIn as well as some other big names like Sony. So been able to write it would be a massive advantage in my future endeavours. Then there is the more personal aspects. I find Scala exciting because it compiles to Java byte-code, It can therefore be used with existing Java libraries this opens up a whole world or possabilities such as game server development. Been a fast language and with the use if the actor pattern it is also massively scalable. This will in turn make it useful for my interests in areas outside network programming such as Artificial Intelligence.
Scala forms the base of something called the typesafe stack which include
Akka - [Website] Is a java / Scala implementation of the Actor Model for concurrent IO. This is exciting as it makes applications that are build to use Akka instantly more scalable. In all the areas that I am interested in learning Scala for scaleability is a massive advantage whether it is an API server or a Game Server.
Simple Build Tool (SBT) [website] is a build tool that uses a Scala DSL to describe building tasks. It does the basics well and can handle mixed Scala / java applications. This last feature is off interest to me as I would of thought that I will end up writing a fair few mixed projects.
Play Framework [website] is a framework for building highly scalable Scala web applications fast. As a web developer I would of course be interested in learning any web framework that might help me build these highly scalable sites quickly. I am happy to learn as many frameworks as I can therefore been able to turn my hand to any codebase that I may come across in the future. Disclaimer I have NO intention of learning any .net language
There is a couple more items that relate to the typesafe stack, I have not listed them here though as I feel they are not needed for what I want to do and my workflow.
I have grouped python [website] and Django [website] together. The main reason is that I want to learn python to be able to use Django. Django is another web framework used by a range of smaller development projects. Knowing python would also be useful in that I would be able to create my own plugins for the awesome sublime text 2 which is my editor of choice for all language. Python does have some appeal for game development with a number of games been written in it. The most notable is Eve Online which is written using stackless python. Lastly it can be used to write GUI applications that will run on any platform. I don't tend to need to write these style of applications, tending to build command line tools to help with my workflow. Command Line tools can be written in any language including Ruby ( My preferred choice ) , Java , Bash Shell Script and Python.
Node [website] is a javascript server side platform. It is very exciting for a number of reasons , one is that it is Event based this makes Concurrency and locking issues a thing of the passed. The most exciting prospect though is been able to write in one scripting language for an entire web project. This is exciting because it makes it easier and faster to write good code because your brain doesn't need to swap from one language on the front-end to another on the back. Node is still very young but because of the reasons above has already got ALOT of people talking including big names such as eBay , Microsoft , Yahoo and more ( there is a complete list here). With the adoption of HTML5 and CSS3 this makes browser based gaming a reality because of exciting features such as canvas and web-sockets. Having node as well means that Massive Multiplayer games could go entirely browser based in the not to distance future. A big part of me things that Node and projects like node are the future of web development been fast , scalable and one language. I have already started playing with Node but want to take my knowledge of it a lot further.
Unity [website] is an Awesome cross platform 3D game engine and development platform. Unity is exciting because it is an awesome starting point for amateur game developers as well as in my case using a language that I am already familiar with in the form of Javascript. It is also completely cross platform allowing development for the web , mac , windows, IOS and Android as well as with special arrangement Playstation 3 , Xbox 360 and Wii. This makes it a very exciting platform to know as it will allow you to turn your hand to any type of game development. It also has a vast community been Free to start to learn. This brings with it a wealth of guides, tutorials, code snippets and the unity asset store.
MongoDB [website] is a nosql database awesome for storing and accessing flat data fast. It has a number of advantages in the type of applications that I am interested in because of its speed and flexibility. I already know how to use the basics and the ruby driver but I want to learn more especially learning the server parts of it , setting up and managing servers. The awesome thing about Mongo is that it has a driver for most languages including ruby , java and Scala , javascript , and python. It even uses a JSON syntax for managing and accessing data which is awesome. Mongo is an exciting prospect and is backed and used by a large number of companies including , SAP , Craig's List , IGN , Disney and the British government a larger list can be found here.
So that is what I plan to learn over the next year / 18 months as well as working for Videojuicer , building site projects and developing ideas and building on my current skillset with the exception of PHP which for now I do not intend to learn or do anymore with.