As an attempt to document my plan for this year, the following are tech-related resolutions for 2010:
Learn one or more programming languages.
I spent most of 2009 working on FEST. Even though I learn a lot more about Swing, enjoyed writing clean and testable object-oriented code, and implemented many interesting features, all the development was done in Java. I think it’s time to learn a new language!
My plan is to learn at most two languages. Like I mentioned in a previous post, I think that it takes a considerable amount of time and effort to learn a language well. I have worked in Java for quite some time, and I’d love not only to learn a new syntax, but also new programming concepts/paradigms. My intention is to learn Groovy and Scala.
I wouldn’t want to learn these languages using simplistic exercises. I’d prefer to learn them by working on a non-trivial, useful project. In fact, my plan is to create alternative APIs for FEST-Swing using both Groovy and Scala.
- Refresh and increase my knowledge of algorithms.
I have enjoyed studying design patterns and using them both at my day job and on my open source project. Needless to say, it was been a useful and rewarding experience. For one of my side-projects (and to become a better developer,) I’m going to need a deeper knowledge of algorithms, which are also patterns. I already started studying them. My resolution is to not break the chain.
- Finish and release the FEST record/playback tool.
This tool will record user interactions with a Swing UI and generate FEST-Swing UI tests. The goal is to generate clean code, as if it was hand-written. This is something that I wanted to do since 2008, but I was too busy building the open source API. I started working on this project a few months ago. Progress has been slow but steady. I hope to have a preview in a couple of months.
- Figure out a way to create a testing library for JavaFX.
I’ve been working on a robot-based library for functional testing of JavaFX UIs, similar to FEST-Swing. At this moment I’m stuck. FEST-JavaFX needs to work with compiled JavaFX code, which is different to what we see in a JavaFX script. I have to deal with hierarchies of SGNodes, an implementation detail that can change at any time. It makes sense for what JavaFX tries to accomplish: to have same script executed on different devices. I think it’s time to ask my JavaFX-guru friends for help :)
- Create a domain-specific language (DSL) for testing UIs.
IMHO, it is an aggressive plan. I hope to be well-organized and focused enough to accomplish most of it :D
Feedback is always welcome! :)