Wednesday, March 31, 2010

Technologies to Watch

A few things you should look into:

  • Pivot: Already shown you this, but watch this video: Ted Pivot Talk
  • www.replaysolutions.com - specifically the replay director tool. This forces a massive paradim shift in how issues are monitors and tracked. Imagine playing back a production exception in your dev environment without having to set up data, and track the clicks. This is all done auto-majically for you via a JVM PVR like software. Very cool.
  • Windows Phone 7 - is this the iPhone killer? Easy development of tools, beautiful user centric interface... very cool [web site] - best thing of it all - WPF based development...
  • On a side note - Expression Blend - Specifically 3/4. These are going to change the way and how MS silverlight and MS desktop application kill Flex etc...

Saturday, February 20, 2010

Silverlight 4... JQuery and WOA... Oh My!

.. I got very very busy. But I did get a chance to build a few small application in Silverlight 4. Nothing ground breaking really so don't get excited.

Initial thoughts:
  • VS2010 is hot. I mean, it makes other IDE's look Neolithic.
  • Silverlight smells like Flex.
  • Silverlight + Expression Blend is neat, but they don't 'blend' together as nicely as you'd want.
Some further thoughts.

Web Oriented Architect

With the increase choice of JQuery or other JS frameworks (plus AJAX suuport of course) the WOA model seems to be growing in popularity. I know it's cool and has its place - but it is by no means following a KISS (keeping it simple silly) model. If you are building a web application and most of the RIA features from Silverlight and Flex are not necessary, I ask you: Does it make sense to go with a WOA: RESTful services + application server + web server + JS library/Flex/Silverlight?. Personally, I'm just not sure yet. What happened to the days of strong caching models and sleak simple non-WEB services oriented architectures with CSS/HTML/DHTML and light AJAX models?

Saturday, January 30, 2010

RIA

Silverlight... Flex...

I've gotten my hands dirty with Flex 3 and didn't particularly like it. The emphasis on doing binding and pushing some of the dynamic functionality to the markup is unappealing. Furthermore, Flex, if you are not doing a mash up of services, tends to push you towards a 6-tier solution (unless you are using Adobe Air). You will need to have 3-tiers for developing your web services and a quasi-3 tiers (I managed to create 3 separate projects and link them with much effort) for your Flex application. Regardless, I didn't like it.

Enter Silverlight. I'm installing Silverlight 4 beta right now. Over the next few weeks, I plan to report back to you on how good (or bad) it is. However, Silverlight does look promising. If you are an idiot... err... I mean someone who likes to push binding to the markup it seems to support that, but it also allows you to do stuff programmatically, or so it seems. I'll let you all know shortly.

I'm still a fan of CSS/HTML/Javascript for most website development. Let's see if Silverlight can convince me the future is now.

Feeling Optimistic

Thursday, January 21, 2010

Fluidity

Things have been busy, but I think I can promise myself to post a little more often now that I'm no longer leading a delivery team.

I've recently changed my role at Macadamian, and as a part of that change I get to research new technologies and do technology proposals as well be responsible for caring for developers careers, training and general well being!

One thing I have to say after nearly 2.5 years of being embedded in a J2EE application is wow... things have changed. I want to expand more on this. But I'll leave you with some reading for now.

Have a look at Pivots - a new idea of managing collections of data on the web by microsoft.

http://www.getpivot.com/

Wednesday, October 28, 2009

Constructive criticism

In any leadership position it is very difficult to be the bad guy. But I've asked myself this hundreds of times - why do we hate being the bad guy? AND Why do we even have to be the bad guy? I think it's because companies and organizations like the word 'CRITICISM'. It's an HR term, used in most HR interviews with that HR person who always inevitably asks: How do you react to constructive criticism. Everyone answers - 'very well <insert awkward laughter>', and tries to give a positive example (or makes one up). But in reality that isn't how it goes.

I think the typical response to 'constructive' criticism is:
  • Initially accept it, but be slightly offended.
  • Think about it, and be very offended or put off.
  • Rebel - stop documenting your code, expect reviews to be a disaster, make it hard for the reviewer (or tech lead)
  • Be criticized again
  • job hunt
  • comply while job hunt in progress

This highlights one of the biggest challenges of being in a leadership position in the software industry (and probably in most industries) is how do you give this so called 'criticism'? And how do you give it well? To complicate things, software development is a craft, we are like master carpenters, we subjectively put together approaches and tools to solve problems, there is no right answer. And we can solve software problems in an infinite number of ways! Being a technical lead means you have to ensure that a particular approach is adhered to, as everyone on your team can solve the problem differently. We call this applying best practices or coding styles.

This applying of best practices brings me back to being the bad guy, as it can easily be misconstrued as being negative. A colleague recently talked about how he's going to have to be the bad guy and be a little stronger with a team mate about some coding quality issues. He was worried that it would be taken the wrong way, or the person would react poorly (see steps above). I tried to frame to him how to give this 'strong' feedback as an educational process and not one of criticisms, ideally start by pointing out how you have made the same mistake and it can be solved this way. Which highlights my hatred for the word criticism. Why don't we just give feedback or work on team building (not just outings to restaurants or awkward social events). We as leads need to educate our team, not criticize.

I was recently asked the very question at the start of this blog. And in all honesty, I had a hard time answering it. I don't think I give constructive criticism, I teach, I work with, I mentor and I sympathize. If the developer on my team isn't getting it, I work harder at finding another vantage point to make them understand it (note: I don't hire idiots, I know they have talent). This skill (I'll call it mentoring) I think is lost in our world of HR political correctness and tight deadlines, and not given enough support to flourish. Either it's something someone does well or something they don't. To top it all off, if you don't 'mentor' well or if 'mentoring' is not well supported in your organization (tech leads bogged down with too many tasks, no buffer built for it in estimates etc...), you might find your turn over to be a little bit higher than you like, and your team not performing as well as you want.

Monday, August 17, 2009

What's in a Name...

Some people have asked about the name of this blog, so I thought I might indulge them.

First, let's have a quick look at the definition of exoteric:

Main Entry ex·o·ter·ic
Pronunciation: \ˌek-sə-ˈter-ik\
Function: adjective
Etymology: Latin & Greek; Latin exotericus, from Greek exōterikos, literally, external, from exōterō more outside, comparative of exō outside
Date: 1660
1 a : suitable to be imparted to the public — compare esoteric b :
2 : relating to the outside : external
ex·o·ter·i·cal·ly \-i-k(ə-)lē\ adverb belonging to the outer or less initiate circle

From http://www.merriam-webster.com/dictionary/exoteric

Ultimately the ideas and themes will be about all kinds of things that most people could likely figure out themselves, but I will hopefully add some value and clarity from my point of view.

The URL of the blog also has some meaning: randomfishies.

Anyone who's taken a statistics course will cringe at a poisson distribution that defines the extent of a series' randomness. Poisson is also french for fish. Random fish ;) There is of course a less politically correct interpretation dealing with the source of propagation of mammals, which is itself a random and chaotic event. All of this reminds me of the chaotic non-linear multi-order systems of nature that will be the major themes of my discussions and thoughts.

Friday, August 14, 2009

Green Software Development?

Although the term ‘green’ really means a colour, I think everyone uses it because it reminds us of grass, trees and generally anything with chlorophyll in it – plant matter.

So why are plants so important? I think it’s because they represent our world, our planet, the beauty of Mother Nature and the chaotic symphony of balance that she performs daily with which we human beings systematically interfere.

What does this have to do with software development? Well, let’s just say that my conscience has been telling me that there has to be a meaningful way for what I do day-to-day to make small impacts on everyone.

First, I think I need to start to define in my own terms what green software development is. Well, there is the concept of green computing (http://en.wikipedia.org/wiki/Green_computing), which can be integrated into my everyday life by ensuring every line of code is optimized and FLOPS are not wasted. But how do you try and slowly change the world and make a difference if all you do is write software? Software is well, soft: it is intangible, it exists as a series of binary code that makes a computer perform operations. In some of these worlds it will interact with some IO and drive a device, actual hardware, but that is rare for a web developer like me. I’m slowly starting to focus in on the idea that unless you are actually building control systems/software for something that will have an immediate impact as a software developer, it’s hard to change the world.

How do you live with the thought that it’s nearly impossible with software to change the world, especially if you really want to make a difference; and I am not talking about just recycling your pop cans?

Things brings me to my point - I came across a web site http://www.mokugift.com – that takes the ideologies of web 2.0 and slams them together with a very interesting idea: Give someone an e-card that makes a difference by spending a buck and choosing to planting a tree in Asia, Africa or South America. Brilliant!!! This idea almost seemed like salvation to this old web developer. How can we integrate community, web technologies and a few simple business ideas to build something truly unique that CAN make a difference? In the case of mokugift.com it was simple – take an old idea, add some value, find some venues for getting your name out there and plant some trees!

What I’m getting at here is that maybe my moral salvation is not IN the software, maybe it’s how I use the software to do something different. And that - I can live with.