Switching to IDEA, another tale
And since we're talking about switching stuff, another thing that I recently changed is the IDE I'm using on a day by day basis. I have been a long time Eclipse user, and I still think it is a great IDE, specially for the price (you can't beat free, can you?). It is stable enough, works on different platforms (although the Linux version has always been less stable than the others, in my opinion) and provides you with a very complete platform to develop enterprise, web, desktop and mobile applications.
But I've always heard people talk wonders about IntelliJ IDEA. In fact, if you ask the resident bot at freenode's ##java IRC channel about "IDEA FAQ", the response will be "Yes, IDEA can do that.". I had already tried IDEA back when it was at version 5 or 6, and I found it too different to Eclipse at the time, and since I was in the middle of a project in which the whole team used Eclipse, I didn't had the time or wanted to go into the effort of switching. But now I'm in a different team, and many of my co-workers there use IDEA (some use Eclipse too), so I thought this was the best time to try it out again, since I'd always have people to rely on for questions. That's always a good idea when trying something new, you know. It's like learning how to drive, it's better to have an instructor.
So, after the initial shock I must say I'm pretty impressed with the tool. It is definitely a different experience from Eclipse, in that I think IDEA puts much more emphasis on the editor window. Eclipse seems to be more focused on the perspectives, while IDEA concentrates on having the editors always there. And coding is all about editors, isn't it?
So far, the best feature I like about IDEA is their inspection profiles. It is basically a set of rules that you can enable/disable and configure so that they provide you with hints about things that you are doing wrong.
For example, I like to surround all my debug() and trace() statements with an if() to check if the log level is enabled. IDEA comes with a "Logging Issues" inspection for "Log statements not guarded by log condition" to mark instances that don't follow this rule. And not only that, you can configure the "severity" of the issue (do you want it to be marked as a warning or an error? I have it as error). And, if you happen to use a different logging mechanism than java.util.Logging (like we do, since we're using slf4j), you can configure the Logger class and log conditions that need to be present. And this is only one small issue among the many that are available to IDEA, and there are always plugins that add inspections for other stuff (like javadoc compliance, wicket stuff, etc). This is the feature that so far has sold me on using IDEA (besides the focus on editing). I still have to try doing remote debugging on it, but I hear it works fine.
I think Netbeans has something similar to IDEA's inspections, but I can only handle one IDE switch per month.
But I've always heard people talk wonders about IntelliJ IDEA. In fact, if you ask the resident bot at freenode's ##java IRC channel about "IDEA FAQ", the response will be "Yes, IDEA can do that.". I had already tried IDEA back when it was at version 5 or 6, and I found it too different to Eclipse at the time, and since I was in the middle of a project in which the whole team used Eclipse, I didn't had the time or wanted to go into the effort of switching. But now I'm in a different team, and many of my co-workers there use IDEA (some use Eclipse too), so I thought this was the best time to try it out again, since I'd always have people to rely on for questions. That's always a good idea when trying something new, you know. It's like learning how to drive, it's better to have an instructor.
So, after the initial shock I must say I'm pretty impressed with the tool. It is definitely a different experience from Eclipse, in that I think IDEA puts much more emphasis on the editor window. Eclipse seems to be more focused on the perspectives, while IDEA concentrates on having the editors always there. And coding is all about editors, isn't it?
So far, the best feature I like about IDEA is their inspection profiles. It is basically a set of rules that you can enable/disable and configure so that they provide you with hints about things that you are doing wrong.
For example, I like to surround all my debug() and trace() statements with an if() to check if the log level is enabled. IDEA comes with a "Logging Issues" inspection for "Log statements not guarded by log condition" to mark instances that don't follow this rule. And not only that, you can configure the "severity" of the issue (do you want it to be marked as a warning or an error? I have it as error). And, if you happen to use a different logging mechanism than java.util.Logging (like we do, since we're using slf4j), you can configure the Logger class and log conditions that need to be present. And this is only one small issue among the many that are available to IDEA, and there are always plugins that add inspections for other stuff (like javadoc compliance, wicket stuff, etc). This is the feature that so far has sold me on using IDEA (besides the focus on editing). I still have to try doing remote debugging on it, but I hear it works fine.
I think Netbeans has something similar to IDEA's inspections, but I can only handle one IDE switch per month.
Categories : IDE
Switching to Apple, a tale
Or, I'm not a PC anymore
My first contact with a computer was when I was around 10 years old. It was a summer "camp" and the computer in question was an Apple IIe. They taught us how to write small things in Logo. Since then, I've used many different computers, with many different operating systems, but it wasn't until the beginning of this year that I was able to return to my 'roots' and buy a Macbook Pro. I must admit, I was one of those that laughed at all those mac 'zealots' that thought macs were the next best thing after the wheel, but who secretly wanted to have one, if only to try to figure out what all the big deal was.
On my previous jobs I would usually get a Dell or similar laptop, with some flavor of Windows. I would almost always repartition it to install some flavor of Linux (Ubuntu being my latest and dearest choice). As a programmer who grew up with something other than a GUI (ms-dos, unix, vax, etc.), I've always liked to have a shell open where I could do stuff that a graphical interface could simply not do, or would take a lot of effort to do in a timely manner.
Being the "rogue" employee with Linux installed, I would still need to use Windows for one reason or another (connecting to an Exchange server, using some special in-house windows-only app, etc), so it was always dual booting for me and sometimes the end result was some time lost between all those reboots. Virtualization was a solution, but still wasn't as perfect as I hoped. That, and I would usually spend days tweaking my Linux installation to try to have it run every piece of hardware, which wasn't always possible depending on the brand of the machine and/or the different hardware components inside.
So now I've been using a Mac for almost a year, and I'm a very happy camper. Am I now one of those mac zealots? Maybe. I will not lie and say that my experience has been 100% without a hitch. I've had the dreaded "Gray screen of death" several times since I bought my laptop (oh yeah, OS X has those too, but aren't they much nicer than a kernel text dump?), but somehow they've stopped. Maybe it was an Apple update to the OS, maybe it was the RAM that came with the machine which I replaced when I increased the memory.
So, what's so special about having an Apple computer, anyway? Well, for me at least, having a very powerful operating system with BSD at its core, combined with a very well thought out User Interface is something that can be appreciated both by the hard-core people that want to get to the internals of an OS and by the people who just wants to get things done.
Another thing in my opinion going for Apple is that there is a very high integration between the hardware and the software. It is one hardware spec tied to one set of drivers, all of it managed and controlled by Apple. I still remember the last time I did an Ubuntu install. It took me several days just to have it at a point where I felt comfortable using it, and I never reached 100% functionality with the laptop's hardware. In this aspect, Windows machines suffer similarly because there are many different vendors with many different hardware configurations that the Windows operating system needs to support, making it way more complex than it should be and more prone to incompatibility issues (although this variety is also probably why wintel machines occupy 90% of the market, so it's a trade-off for Microsoft).
As an anecdote, when I bought my Macbook Pro in March, I was literally on my way to the airport, but still I was able to be up and running by the time I boarded the plane. Yeah, that's right. I was able to download Eclipse, the vpn client software, connect to the intranet and do a checkout of the latest code before they announced the start of the boarding process. It was so simple because most of the tools I used in my day-to-day coding were already pre-installed (java 1.5 compiler, subversion client, heck, even Maven was there). The fact that all this was already there is where I think Apple has made a kick-ass job catering to both professionals and regulars, and this is one of the reasons I'm very happy with Apple products.
It's like they say... The devil is in the details. But in a good way.
On my previous jobs I would usually get a Dell or similar laptop, with some flavor of Windows. I would almost always repartition it to install some flavor of Linux (Ubuntu being my latest and dearest choice). As a programmer who grew up with something other than a GUI (ms-dos, unix, vax, etc.), I've always liked to have a shell open where I could do stuff that a graphical interface could simply not do, or would take a lot of effort to do in a timely manner.
Being the "rogue" employee with Linux installed, I would still need to use Windows for one reason or another (connecting to an Exchange server, using some special in-house windows-only app, etc), so it was always dual booting for me and sometimes the end result was some time lost between all those reboots. Virtualization was a solution, but still wasn't as perfect as I hoped. That, and I would usually spend days tweaking my Linux installation to try to have it run every piece of hardware, which wasn't always possible depending on the brand of the machine and/or the different hardware components inside.
So now I've been using a Mac for almost a year, and I'm a very happy camper. Am I now one of those mac zealots? Maybe. I will not lie and say that my experience has been 100% without a hitch. I've had the dreaded "Gray screen of death" several times since I bought my laptop (oh yeah, OS X has those too, but aren't they much nicer than a kernel text dump?), but somehow they've stopped. Maybe it was an Apple update to the OS, maybe it was the RAM that came with the machine which I replaced when I increased the memory.
So, what's so special about having an Apple computer, anyway? Well, for me at least, having a very powerful operating system with BSD at its core, combined with a very well thought out User Interface is something that can be appreciated both by the hard-core people that want to get to the internals of an OS and by the people who just wants to get things done.
Another thing in my opinion going for Apple is that there is a very high integration between the hardware and the software. It is one hardware spec tied to one set of drivers, all of it managed and controlled by Apple. I still remember the last time I did an Ubuntu install. It took me several days just to have it at a point where I felt comfortable using it, and I never reached 100% functionality with the laptop's hardware. In this aspect, Windows machines suffer similarly because there are many different vendors with many different hardware configurations that the Windows operating system needs to support, making it way more complex than it should be and more prone to incompatibility issues (although this variety is also probably why wintel machines occupy 90% of the market, so it's a trade-off for Microsoft).
As an anecdote, when I bought my Macbook Pro in March, I was literally on my way to the airport, but still I was able to be up and running by the time I boarded the plane. Yeah, that's right. I was able to download Eclipse, the vpn client software, connect to the intranet and do a checkout of the latest code before they announced the start of the boarding process. It was so simple because most of the tools I used in my day-to-day coding were already pre-installed (java 1.5 compiler, subversion client, heck, even Maven was there). The fact that all this was already there is where I think Apple has made a kick-ass job catering to both professionals and regulars, and this is one of the reasons I'm very happy with Apple products.
It's like they say... The devil is in the details. But in a good way.
Categories : Apple
Resurrecting my blog
It's really been a long time since I've updated this site. I could make up excuses like too much work, too little time, or simply that I didn't think there was anything worth to say. Some of it may be true, but the important thing here is that what I wanted to do with this blog was to put something that was "worth it". I didn't want to become one of those blog people who start talking about family, politics, etc. I wanted to really dedicate this blog to Java related stuff. And not just small tidbits of information, but actual articles that I thought would benefit at least someone. But inspiration never came for those long articles.
However, in the last months I've been really itching to at least think about something that I could post. It's been over a year since I did my last entry, and after all the effort I went through to get this thing running, I just couldn't let it die. So, in the last couple of weeks I've been upgrading the software I use (Pebble) to the latest version, re-applying my layout and fixing some things that I didn't like (like replacing regular rss links for feedburner links) and I think I'm now ready to "resurrect from the ashes".
What am I going to talk about? Mostly Java stuff, of course. But this time, I'll try to be less analytical about what I want to write and Just Do It. Writing long articles about certain technologies is cool, but I also think small tidbits of information, hints, etc. are useful. Even though they might seem basic to me, there's always new people entering the wonderful world of Java Development, and hopefully some of what I say here will help someone somewhere somewhat.
On a related note, this year has been very fortunate for me job-wise, and I've been involved with many new technologies. It's time to put out some of what I learned to good use. Besides, writing on this blog is a good way for me to "store" what I've learned in an easy to search format.
If what I add here seems too basic for you, you're free to move ahead. If it's helpful to you, you're free to use it. Welcome (back).
However, in the last months I've been really itching to at least think about something that I could post. It's been over a year since I did my last entry, and after all the effort I went through to get this thing running, I just couldn't let it die. So, in the last couple of weeks I've been upgrading the software I use (Pebble) to the latest version, re-applying my layout and fixing some things that I didn't like (like replacing regular rss links for feedburner links) and I think I'm now ready to "resurrect from the ashes".
What am I going to talk about? Mostly Java stuff, of course. But this time, I'll try to be less analytical about what I want to write and Just Do It. Writing long articles about certain technologies is cool, but I also think small tidbits of information, hints, etc. are useful. Even though they might seem basic to me, there's always new people entering the wonderful world of Java Development, and hopefully some of what I say here will help someone somewhere somewhat.
On a related note, this year has been very fortunate for me job-wise, and I've been involved with many new technologies. It's time to put out some of what I learned to good use. Besides, writing on this blog is a good way for me to "store" what I've learned in an easy to search format.
If what I add here seems too basic for you, you're free to move ahead. If it's helpful to you, you're free to use it. Welcome (back).

