Thursday, March 24, 2011

Plugins for Eclipse that I use

Yet again, here comes a time when I need to configure my Eclipse environment, and yet again I need to search thru the web for all the pages to the tools that I need. And the winners are:
1. SpringIDE
a) Core / Spring IDE
b) Extensions (Incubation) / Spring IDE
c) Extensions / Spring IDE
2. Susbclipse
a) Core SVNKit Library
b) Optional JNA Library (recommended)
c) Subclipse
3. m2eclipse
a) Maven Integration for Eclipse

In order to configure maven plugin I had to add a following code in a eclipse.ini file (add it before -vmargs line)


I love maven plugin - it allowed me to manipulate pom.xml file (dependencies, plugins,...) by just adding them knowing the name of the dependency (like springframework) and plug-in will search for it and suggest the newest version and create entire xml.

I also tend to use Flash Builder for my Flex development.
The biggest problem is that Flash Builder 4 requires a 32 bit JVM, it will rise an error when you try to run it against 64 bit ("An internal error occurred during: "Creating Adobe Flash Player trust file.."). This error is visible if you use a plug-in version of Flash Builder, the Stand Alone Version of Flash Builder has it's own JVM and it's 32 bit one, it means that stand alone version is not using your environmental settings if you didn't know :) Currently the Eclipse version (Helios) is 3.6.2 and Flash Builder is using 3.4.2. On some operating systems (like Solaris) one can use a flag -d32 in eclipse.ini file in order to tell JVM to run in a 32 bit mode, unfortunately under windows I had to install a 32 bit Java. Unfortunately installing Java in 32 bit version means also installing Eclipse in 32 bit version.

In an addition Tortoise can be downloaded from here and it doesn't require SVN server to be downloaded and installed separately (every two years when I rebuild my machine, or configure it at work I ask myself a question - do I need a server)

Friday, March 18, 2011

Recursive Functions by JMC

I've just read an excellent paper by John McCarthy. I believe I read it before, but it was so long ago, that I consider it to be read in a different life. When I look at the paper now I am amazed with the style of writing. John creates entire computational notation system, explaining it, giving examples and discussing why is it a good thing to do it his way. The topic/task is not trivial or simple, but John is able to do it in a way that not only allowed an average person to read it, but also paper is full of energy - it motivates for further thoughts and further readings. It is a truly a remarkable work.

Wednesday, March 9, 2011

Debuggable functions in Haskell

Long long time ago, when I was writing my first Haskell apps I had this huge problem - debugging. Because for majority of my life I was debugging more or less by writing printf(some variables) I was trying to apply this same pattern to Haskell. Unfortunately it didn't work. Didn't work because functions in Haskell do not allowed side effects, so if you don't want to (don't know how) use monads it isn't simple task to do, to write something to a screen, when you are in a function. In a last few years at least 10 people asked me how to write some debugging information on the screen, to try to figure out what is going on in your code, when it does not work, so far I was unable to point a good article how to do it, and I had to explain everything by myself. When you drink a beer with your mate and you try to explain how to use monads on a piece of tissue, it is not a good way, how to teach people anything. So I was so happy to find recently this article. It explains the problem (why it is not easy to write something on a screen when you are in a function) and how to deal with it so you don't need to refactor your code dramatically. Excellent work Darius, keep it up!

Monday, March 7, 2011

Types theory

As for me a theoretical part of Information Technology is a crucial part to understand what is going on in a dynamic environment. By a dynamic environment I mean plenty of frameworks that exists on a market, huge amount of different computer languages and different technologies, models that try to expose some ideas of its creators. But idea is a thing that can be described by a language, and probably if there are few ideas some of them share something in common, and some classes of abstraction can be named between them. This is why I was usually even more interested in a theory that stands behind some technology then the technology itself. Type theory is an example. About four years ago I was a hard core dynamic language purists that enjoyed everything that fully enabled me to express my mind - I loved writing Perl one liners, using sophisticated magic standing behind JavaScript prototyping. It was also a time when I first read a book Types and Programming Languages by C. Pierce. And it was a book that opened by mind to problems, benefits, ideas lying underneath typing, and also showed that static typing by sticking to its discipline allowed programmer to express himself by using a different approach (then dynamic language programmer) but it is hard to say that by sticking to static typing you miss something. As every human being I enjoy discussing my thoughts, ideas with other people, it allowed me to understand topics that I study deeper, more, and also allowed to look at it from a different perspective, a perspective of a person that I talk to (I assume that he spokes back:) ). Huge majority of people that I know do not study theory any more, they tend to read books about a specific technology - like MVC, SharePoint, instead of trying to understand a theory, philosophy standing behind a specific implementation. As a reader can imagine it is hard to find a person to talk to about types theory, but there are other methods/techniques that allowed me to rethink things that I now and get motivated to explore and learn more. This is why I am so happy to find a web page by brothers in arms from Oregon UV. A great place to explore and learn.

Saturday, March 5, 2011

My Land of Lisp just arrived

I used to program in a Scheme a lot, I preferred it over Lisp couse it was better documented, got good libraries to handle OpenGL, GLUT, and basic components for building a user interface. I am aware of a major concepts of both languages - similarities, and differences, but somehow I've always preferred Scheme. Even when I knew that there is a great macro library, or a object support library, for common lisp that I would like to use in my project I always sticked to a scheme. Few weeks ago I was surprised to fined out that there is not a single Lisp book on my bookshelf. So I made a small research about any book that would add something knew to my knowledge on a programming in a 'Lisp style'. Have a look at this web page. It is different, interesting, and you can't take it too serious but there are plenty of good parts underneath it. It makes you look at the ideas of the language from a different perspective, even when I am aware of all the concepts that are inside this book, after reading the few N*10 pages I was surprised to rediscover some features that I rearlly used (as every programmer I tend to stick to parts of a language that I enjoy). This book rocks, and have a look at this video: