Saturday, 31 January 2015

Internship 1th semester 2014

Dag!
I took my internship at Erlang Solutions in Sweden and I have to say that was the most amazing experience ever. I learned a lot about Erlang/OTP and Quickcheck for Erlang.

Moreover I met  marvellous people there. Erlang Solutions is a great place to work in. Probably the only thing I missed was a foosball table, otherwise the people that is part of the company are so nice and well prepared that I almost forgot the need to play table football. 

The guys that work there are the most high qualified professionals I have ever met. The same for the Trifork guys. At that point the Trifork office shared the office with Erlang Solutions and I have to mention that there is also a huge potential on the Trifork office in Stockholm. They are young and never afraid to work with new technologies, I really miss that office.

Back in Copenhagen the landscape is grey, standard and typical in regard to the software development world...which is kind of discouraging (no offence OOP projects!). There is no one who I can discuss what I just read on the Erlang mailing list or what it is being discuss on the IRC channel.

During my stay in Stockholm I had the opportunity to reach another kind of world that was far from what I have being experienced at school. Suddenly I was no longer alone with my Erlang related issues and interests, just out of the blue we were dozens of us!...well, probably 6 or 7 sometimes, but the point is...I was no longer alone on my passionate interest about functional programming. I loved that sensation and I really miss that.

It has been a while since I finished my internship and I keep only good memories from the Stockholm office: Enrique, Roland, Anders, Jesper Louis, Torben, Robert, Kiko, Thomas, Erik, JD, Dimitro, Stefan and the rest of the crew. I feel very  lucky and grateful to have had the opportunity to meet you! .

Wednesday, 15 January 2014

Status quo, programming languages, the past and the future

Hello, long time no see. Well, many things since the last summer:

Traveled to Chile for Christmas and new Year; just finished the semester( software design: 10, Android: 7 =( ), and now facing a new one that include an internship and a final project. I also learned some web development in PHP and mobile development in Android.


Regarding my free time: I have not finished the Debugging course yet! but on the other hand I took the functional programming course in Scala with Martin Odersky at Coursera! which was great!!...but still I do not fully understand how to program in Scala.=( I mean, I know the language, but I guess I need a real project to really understand how to use all these amazing options that the language offers. The course was really tough to me...functional programming really force you to thing in a different way and that is what I like the most! and generally you have to write less lines of code. I am not saying that functional programming is better than X paradigm...I am just saying =)

A couple of conferences and events: GOTO night about Hadoop and Couchbase, and then I won tickets to NoSQL Search at Trifork!!...that was a great experience...there I had the opportunity to participate in a hands on workshop about a graph database called Neo4J...Juhhhuu!!

Did I mentioned I was in love with Erlang?...well, I am still in love with Erlang, and finally, after finishing this semester I am going to work in some tools that perform static analysis for Erlang programs!!!. Really amazing stuff. It is a really challenging internship in many senses.

Probably the main reason is that the internship is in Stockholm (where Erlang comes from). It takes only one hour to fly  from Copenhagen to Stockholm, but I am still student and I cannot afford so many travels in a month so I am moving there for three months. But all in all, I have heard that Stockhom is one of the most beautiful cities of Scandinavia.

Another relevant point is that the internship is in Erlang Solutions. The only consultant company in its type focused in the Erlang language and the community. I feel really really lucky...as always!.

I know theoretically many details about the language, but there are still some misteries I have to solve, and again, I need more lines of code to tackle this issue.

So that was something about the internship. Now, continuing with my free time, I have also acquired some interesting books since last time: Learn you some Erlang for great good(Fred Hébert)(really much much better than the web version...I prefer the real book), Erlang and OTP in Action(Logan, Merritt  & Carlsson)(like this book, easy to read), Programming Erlang(2. edition Joe Armstrong). Programming Haskell(Graham Hutton)(because I believe in Erik Meijer's recommendations) and Programming Scala (Odersky, Spoon, Venners) Is just...I really liked Scala, I think is an interesting language and I want to improve!.

I really have this idea of programming languages as open minders. Every time I investigate one I found secret treasures that in some way inspire me and subsequently have some impact to the code I am actually writing.

Due to academic requirements I studied PHP with "programming PHP"(Tatroe, MacIntyre & Lerdorf)
 and Android...well is a long and bad story, but I bought "beginning  Android 4 (Wei-Meng Lee). Android was not a bad experience because of the book. Absolutely not. It was just an stupid administrative problem at school...so we ended up with a month of intensive lessons where no one learned so much(even though the teacher was great) ...I really learned a lot during the development of the final program. I could really imagine myself as a mobile platform developer...it is a lot of fun...ah!, and I won a Jetbreain resharper licence in a seminar in Malmö at Foo café!!...well I dont like .Net that much but it could be interesting to write some code to Windows phone 8

Mmm...yesterday attended to a talk about F# at Empire Bio. Really cool language...if there is something exiting in .Net that is F#. By the way, I am participating in the functional programming meet ups group in Copenhagen. At the first meeting assisted only 13 people. It is a little bit sad that there are not so many companies using this interesting paradigm yet.

So...that is more or less the general overview....now, my plan for this 6 months is going to be focus on Erlang, functional programming and Erlang related problems

Saturday, 22 June 2013

Summer Holidays 2013

I just finished my last exam three days ago. That means plenty of time to invest on personal projects, music and technology!. I'm so exited, I got 12 on Network and Programming this semester!!. That is a not so bad grade in Denmark =D.
Last Semesters well good enough; I got only tens, which is also OK.

The focus on this 3. semester was Programming and Design of course, but including the network and distributed system touch. So exciting.  I'm feel really attracted by concurrency and how this problems are addressed in distributed systems. Probably one of my best-liked approaches so far would be message passing and actor model, although I enjoy to write in Java (which implements a synchronous locking system based on Monitors). With this I'm admitting that Scala + Akka offer an interesting way to address concurrency challenges in the JVM.

Well, now vacations!!!

on my ToDo list for this summer I consider the following:

  • finish the debugging course (which is excellent!) We use most of the time trying to fix errors. To me, be good at debugging is just a crucial craft that I want to be good at.
  1. the last implies that I need to improve my Python skills also...so I had consider to read a couple of books on the road, namely: Python para todos and the "python programming reference" that is available for Android devices on google Play
  • continue solving Neo4j koans (lot of fun making pass unit tests with Neo4J cases!!)
  • regarding Erlang I'm in the recursion chapter of http://learnyousomeerlang.com and the plan is continuing working in parallel solving the Erlang Etudes. This is high priority. I just love this language and is the functional language that I have been focus the most this year.
  • I'm would like to take calculus on Khan Academy
  • with respect to Java there are several things I'm really interested in, but I guess I don't have time to cover them all: 
  1. JSP and JSF (we learned it at school before the end of the semester and is just really cool),
  2. JavaFX (I programmed a chat program that allows the user send messages and draw in a JavaFX canvas and share draws, but I have to fix few tiny issues....but is almost done)
So...I guess is too much to do in only eight weeks =/ But the priorities are Erlang, Debugging course and JSPs...ah and one week to Barcelona or Madrid

Good Summer or Winter everyone
Namaste

Wednesday, 14 November 2012

Why I should use Llinux?

Because it is challenging, and...you want to learn. You are also patient and curious about how an operating system works.

Because there are plenty opportunities as a system administration and is fun.

By virtue of solving problems makes you happy, and you love the sensation after being dealing with a problem for hours getting finally the results you was looking for. You are aware that this kind of experiences makes you a better programmer and a good problem solver.

Because it is open so you can take a look of the code and have the marvellous possibility to try to understand the engine of a system developed for dozens and dozens of brilliant people.

If you are developer, well. Linux was created for developers to developers. If you are Java, Php, C++, Ruby, Haskell, Pearl, Python or Javascript developer there are a huge amount of nice tools waiting for you to being configured. Because you like the experience of configure your own workstation. Because you are a question mark and love technology.

Yes, you can make all this in Windows or Mac, I love both also. But Linux is challenging. My first distro was Ubuntu Studio. I started when Ubuntu was not so friendly as today. In this days you can easily run an Ubuntu distribution and in fact, you can run the installation from Windows with something called Wubi.

 If you want to get a try to this amazing operative system, there are several solutions. You can install in your Windows a free virtual machine program like Virtual Box or VM Ware Player and try it without installing the whole system in your computer. If you do not want to deal with partition processes is a good idea start with a virtual machine or a live cd.

But I encourage you to backup your system and try to partition your disk. Is a sensitive process but it is important to know how to plan a good partition map on your hard disk and you can understand better your computer. I made music in a Mac but also in a PC laptop(grooveniño). In this laptop I have a dual booting with Window 7, Fedora 17, Ubuntu 12.04, and Mint 13.

This three Linux distributions are great to start. Mint is extremely friendly. Meanwhile I write this lines, Linux Mint is the most used Linux operating system in our world. And I can understand that. Linux Mint is so friendly and beautiful. I love the interfaces. That is why I am so excited about Linux, Windows and Mac.

But still Linux is my favourite. Because is free and if you are in a development environment there is no limitations regarding programming requirements. In this concern I still think that Fedora is a great distribution. They always have the last packages. But the Long Terms edition of Ubuntu is solid as a rock and you still can install new software by your own.

If you are Computer Science student you should give it a chance. Because you want to learn. And it feels so cool to deal with the computer by a nice command line application. I encourage you try Terminator.

In Ubuntu or Linux Mint:

sudo apt-get install terminator

In Fedora:

sudo yum install terminator

The graphical user interface is placed on the top of the abstraction level, whereas in Windows the GUI runs on Kernel level. This allows you to install KDE, Gnome, Mate, Cinnamon or many others up to Linux. I was not so happy with Unity, but GNOME 3 and Unity seems to be pretty closed in now days. So generally I use Cinnamon or KDE on Fedora. On the other hand, after several months, now I feel more comfortable on Unity and Ubuntu 12.04.

If you are ready, this are my recommendations:

http://www.linuxmint.com
http://spins.fedoraproject.org/kde/ (with KDE!)
http://www.ubuntu.com 

Namaste.

Saturday, 3 November 2012

How to configure JavaFX 2.2 in Eclipse Juno

Despite NetBeans has a great integration with JavaFX, there are many people that prefer to code on Eclipse. If you are one of them check this out:

Download e(fx)clipse

There is a project called e(fx)clipse that integrate some tools to start new JavaFx projects without to define the library by your self.  In essence, you download a precompiled Eclipse that include the options to create your own FXML files and JavaFX projects. There are lazy, adventurous and coward Install methods. I recommend you the adventurous  method, which is an installation of e(FX)clipse  as an extension of the IDE.

I would like to emphasize that there is a lazy version you can download from efxclipse.org, which is easier and faster.

In this place you will find the instructions:
http://efxclipse.org/install.html

Well, this is how I get the plugin installed in Eclipse Juno...
First I had to install Xtext.
In Eclipse tab Help/Install new software. In this window press Add.. button and add  the repositories:
http://download.eclipse.org/modeling/tmf/xtext/updates/composite/releases/


 It is important to check "Contact all update sites during install to find required software" I selected the Xtext-2-3-1 since I am working with Eclipse Juno.


After install Xtext you can install e(fx)clipse plugin. The same process than before;  Help/Install new software. In this window press Add...  and copy/paste  this address: http://www.efxclipse.org/p2-repos/releases/latest/  . In my case, I deselected e4 because was already installed in Eclipse.Otherwise I got an error


That is how my Install details looks like before the process installation.

With this plug in it is possible to create a JavaFX project, which contains the jfxrt.jar by default.
Now you can create a new JavaFX project: right click on Eclipse package explorer: New--->Other---->JavaFX--->JavaFX Project

Manually Importing JavaFX

The other option is to import manually the jfxrt file when for instance, you want to just try JavaFX. In order to use the JavaFX libraries, you have to import the jfxrt.jar into your build path.
The file is on your java folder. In windows: C:\Program Files\Java\jdk1.7.0_09\jre\lib\jfxrt.jar
In Linux depending on where did you installed your Oracle Java:  yourPath/jdk1.7.0_09/jre/lib/jfxrt.jar

How do I Import an external Library? 

 

 Right click in your project the JRE System Library that is in your Eclipse Project, then select Build Path and finally Configure Build Path

 
 In this window press Add External JARs...

Where do I find jfxrt.jar file? 

 

 Here point to your Java folder that contain the jfxrt.jar (C:\Program Files\Java\jdk1.7.0_09\jre\lib\jfxrt.jar in windows)

Good JafaFx coding in Eclipse!