Wednesday, 1 February 2012

Installing WebStorm on Ubuntu

Get Webstorm (its worth it)

then ... 

Install Java JDK 1.6+ first (see full http://superuser.com/questions/353983/how-do-i-install-the-sun-java-sdk-in-ubuntu-11-10-oneric )

sudo apt-get install python-software-properties
sudo add-apt-repository ppa:ferramroberto/java
sudo apt-get update
sudo apt-get install sun-java6-jdk sun-java6-plugin
You may want to also add the following
sudo update-alternatives --config java
You should get the following
  Selection    Path                                      Priority   Status
------------------------------------------------------------
* 0            /usr/lib/jvm/java-6-openjdk/jre/bin/java   1061      auto mode
  1            /usr/lib/jvm/java-6-openjdk/jre/bin/java   1061      manual mode
  2            /usr/lib/jvm/java-6-sun/jre/bin/java       63        manual mode

Press enter to keep the current choice[*], or type selection number: 2
Select (2) and press enter
Now running:
java -version
Returns:
java version "1.6.0_26"
Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
Java HotSpot(TM) Server VM (build 20.1-b02, mixed mode)

How-to setup M-Project and Espresso with Node.js on Ubuntu

git clone https://github.com/mwaylabs/Espresso.git
cd
git submodule update --init 



alias espresso='~/Espresso/bin/espresso.js'

(check version is => 1.0.0.0)
espresso version   


(init it with some example files)


cd devroot

espresso init --project=Nodey2 --example 


(spin up the m-project via the espresso server)
cd ~/devroot/Nodey2
espresso server

..calling the cloud9 ide
~/cloud9/support/node-builds-v4/node-linux32 ~/cloud9/n/cloud9.js -w ~/devroot/Nodey2 -l 192.168.1.12 -p 3101 -a x-www-browser 

interesting sample.. useful to get the first couple of pages going

get a theme going with ThemeRoller


Friday, 27 January 2012

Setting up my Node.js solution in Cloud9 IDE

Now where do we go after we have a brand new toy.. I just installed Cloud9 IDE.. see how-to install cloud9 here.

I want to setup a quick web app (really, really quick). I will time it.

00:00 - Get all my favourite (sounding) node modules from npm (presume you have npm) then use...
npm install  


See all the goodies I got.. note espresso took some time. Also look them up at http://search.npmjs.org/#/ 

00:09 - I had to install mongodb separately using (can also go here ..)

sudo apt-get install mongodb
00:18 - Created a folder at ~/devroot/MongoDb/data/db for my MongoDb instances. Now to run the db server..
mongod --port 9080 --objcheck --dbpath "devroot/MongoDb/data/db" --directoryperdb --rest
Note: --rest == RestApi, --directoryperdb == create a new dir for each new db's files
Success == MongoDb web console at http://127.0.0.1:10080/ (not so sure about the port, but trust that the mongod startup script should tell you your magic port number)



00:22 - Try out the mongodb server quickly...


mongo 
db.foo.save( some json object here );
db.foo.find()
 00:24 - setup that web app... hmm
Ok. Make sure you have done a global install of express using
sudo npm install -g express 
00:26 -  Use express to setup your solution structure inside your project root
sudo express  
cd   
npm install 
Note: this  installs default packages only so I had to get other ones here by
npm install
It uses  the cache (304) so it does not waste your time. I have now installed,
ejs, mongoose, colors.. (see list above)

Lets setup some routing .. see a good guide on expressjs here .. i am not re-inventing this.

Should be easy enough from here... good luck!


Node.js and Installing Cloud9 IDE

I am a bit infatuated with node.js at the moment and the whole real-time web thing. So trying to get it going on my machine. Why??? A.) I love javascript. B.) I love javascript. Always have. Never in secret. Been glared at for writing jQuery apps, etc. I have done all the other languages too (C#, java... respect.. they've paid my wages).

So... I have been at this for a whole day... phew! Tried on windows (gave up!) and now on Ubuntu. Need to go back to the mac (yes, I admit, the war is now over). I am lazy, I like simple kits, but I like a working IDE, debugger, etc. So I hunted around and found a few...

  • WebStorm (from JetBrains and they still make that super ReSharper VS-addin)
  • Cloud9 IDE - a nodejs based web IDE - how cool.. and open-source so you can run it on your box
WebStorm was simple enough install, could find all the modules but I could not get the debugger going. Anyone good with this, please ping me at kenn9j.at.gmail.com :) 

Cloud9 IDE was not simple to get installed. Too many rig-ma-roles... but it kicked in.. and here is how...
  • Go to http://gratdevel.blogspot.com/2011/03/setting-up-cloud9-on-ubuntu-1010-32-bit.html it says most of it.. (forget windows for now)
  • If you are running a 32-bit Ubuntu on 64-bit windows vmware like me.. all will not go well. So at some point you will get... "error while loading shared libraries: libssl.so.0.9.8: cannot open shared object file: No such file or directory" 
  • Fix it with - sudo apt-get install libssl0.9.8 
  • Start cloud9.. point to your project folder and it starts up in the ide.. in your default browser... :) smile... 
path-to-node-v4-build path-to-cloud9.js -w path-to-your-project -a x-www-browser 
~/cloud9/support/node-builds-v4/node-linux32 ~/cloud9/bin/cloud9.js -w ~/devroot/Nodey -a x-www-browser 

  • Add a little app.js file with a server in there like see above. Hit run (will have to configure first time so point to your app.js) 
var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(3001, "0.0.0.0");
  • Enjoy! It's a bit slow on my vm but it can debug. (can always two-time with geany) 


Friday, 5 August 2011

I just got Scrum Certified.. am I still Rogue enough?

Recently, I sat through a two day Professional Scrum Master Training (lead by Richard Banks, Thanks R) and I could not help but jot a thousand little notes on all the gaps I had not covered in my past efforts at moving teams to follow agile practices using Agile Unified Process and a lot of what I learnt from Craig Larman, Mike Cohn and Scott Ambler. When I was trying to get teams to move to agile, I often felt challenged, confrontational, stealthy, manipulative, political, diplomatic... all with a noble aim of achieving true efficiency (by shaking up the system, getting people to collaborate and apply common sense).

Now I am Scrum Certified. I'm armed with tools to go out and officially be agile. Suddenly I can see every person in the mega organisation clambering to get this certification, since someone is going to kill Waterfall (if not me). Everyone will want to be "agile" and the status quo, without a doubt, will change.

So now what? I wonder if I am simply addicted to being 'Rogue' (an agent of change) or is there some empowering force that is going to make me settle down and feel like the we have all managed to vote for the same government and we should be happy in this new world.

Mike Cottmeyer wrote Having Your Cake… Some Thoughts Around Scrum Certification

Scrum can’t have it’s cake and eat it too. It can’t be a simple framework that is not prescriptive and then start certifying people on how to do all this stuff.
But some day very very soon, the new army of certified agile people will turn it into a "process", and then someone will need to go rogue again and re-label everything to help others unlearn. Then there will be a new training, a certification and so on.. the economy needs this, right?

Sunday, 8 May 2011

Will architects ever be agile

Its difficult. We cannot build the Eiffel Tower in iterations, we need a blueprint and more. But software is bit more flexible, you can refactor, its a lot more forgiving. Scrum suggests an emergent architectture over a 'predictive' style of architecture. Hmmm.. that is true for most agile projects. Of course not for solutions that have a 'solved problem', but rather for solutions needing spikes.
A good day...
Architects can work in the Product Planning team with the Product Owner and help define the architecture to support the User Stories. They can sketch out a skeleton.. an emerging road map that looks enough past the planning horizon to help the Product Owner and the development team envision the target state. And they can work with any developer or engineer (in a paired style) to develop prototypes/spikes.
Not such a good day...
Then you have special technology projects, new technology projects, flooded with new tools that only SMEs or consulting architects know about. Even the Product Owner can often feels so agitatedly dependent on their 'god-like' consulting architect that seem to promise the earth and never deliver anything tangible. And to add to it, they don't like to share enough of their expertise so the development team feels like they can't seem to go anywhere. The architects run away with the spike. No one knows whats happening. They go into a rabbit hole. And all they say at stand-ups is "its still in progress". When they are a part of our team, its difficult for the team.

What does a Scrum Master do to help?

All governance, no delivery
Architecture governance is a good thing. Larger organisations need it, the world needs it. It gives us standards which in turn gives us nice things like the internet, frameworks, etc. The best standards emerge from good development practice (not really the other way around). When governance is a gate for blueprints to be passed into development by first being vetted by people in architecture roles that have not developed for a long time, it just sounds (and turns out) ODD!

Often architects go towards consulting and end up in "reporting up" roles that slow down real development. Emergent "agile" architecture needs, Senior system engineers (aka Architects) to be able to share their expertise to bring on the younger engineers into how they see things work. Part of emergent architecture also need to "include" younger engineers in actively, 'hands-on' learning exercises, coding dojos, etc to share knowledge grow the teams capability rapidly via collaboration rather than some lame, late, incomplete, out-of-date, architecture design document.

Can emergent architecture work with governance ?
Using an emergent architecture approach requires a few key artefacts and one key activity..
  • Thing > Domain Model - (we all know this, if not google it) This should preferably not be too emergent.
  • Thing > Solution Road Map - this one is diagram with high level connections of how everything comes together, likely with 2-3 transitions states describing how the solution is expected to evolve based how much is know about the solution.
  • Thing > Mapping to Enterprise Architecture Capabilities - This is important. As architecture emerges, architects must map their solution components to an organisation domain model to allow future enterprise initiatives to weigh-in already built capabilities. This mapping must be stored in a model repository like Sparx Systems EA, ARIS, RSA or whichever tool is used to store the domain model. Preferably one that support a good "tagsonomy". 
  • People > Actively pair programming on spikes with developers and engineers - In my opinion, architects must actively participate in paired sessions to learn coding and stay close to engineering while sharing their perspective on the design for the solution as it 'emerges'. 


Saturday, 26 February 2011

10 Mistakes to Avoid When Implementing an Online Project Management Tool - Cloud Computing - News & Reviews - eWeek.com

While I am working on moving my team into agile, we have started using an agile pm tool called targetprocess. Fantastic tool, out in the cloud, built with years of agile experience and plumbing. What my team needed though is a some tips to help move out of some old habits. This one below is short and sweet.

10 Mistakes to Avoid When Implementing an Online Project Management Tool - Cloud Computing - News & Reviews - eWeek.com

Saturday, 13 February 2010

From workflow experience

This workflow blog rings sooo true. On my n-th workflow deployment, I can now see that all these points make perfect sense.

in reference to:

"Demo vs. Production BPM-based Systems In his article Demo vs. Production BPM-based Systems Anatoly Belychook sounds a warning that the habit of BPMS solution vendors of presenting their suite as a complete application development solution through 'demo' applications can lead to serious problems for users when they try to product ionise even a single process. I have quoted Anatoly's points in full and annotated them with my thoughts."
- Dave Thinking Aloud (view on Google Sidewiki)

Thursday, 5 February 2009

Twin Peaks: Unified Process and Agile and the valley between

In my last role as a Project Mentor (something of an architect, lead and a coach, don't ask!), I was thrust with a very large responsibility of taking a very large organisation and its very diverse teams out of a failing gold-plated waterfall process towards 'any' better process. Yes, I had help (Thanks, Pete). Some of the lessons I learnt there after over 600 hundred pages of process definition, ISO audits and an almost visible CMMi level 3 on the horizon were both enriching and permanently damaging. Let me explain a bit.

I came from a UP background but always felt a serious gap. I loved XP, but these two were like chalk and cheese, yet under the hood they spoke the same lingo. Keep it iterative! Yet, UP was prescriptive (and dont even talk about RUP). Working with another large team in the past, I discovered that if you use UP (or a similar doc heavy process) at the top, it keeps a good overall structure in place, but at the implemetation level, since they are iterative, you can apply Agile to manage chunks of a large project. And it works. How? Well it just does.

So this is the valley between. How do we use agile for larger projects. Over time, a good piece of work came around called AUP (Agile Unified Process) and it helped bring the two closer. Yes, yes I know you die-hard agilents out there, you hate UP, but the truth is that this valley exists and someone has to do the dirty work. Take the cumulative results of all the work and put it into a frame of reference. Human beings don't like chaos (and no, developers aren't human! joke). So it's better to cater to humans who need to see a phases, milestones, commitments, penalty clauses, risks, etc managed in a language thay can understand.

How:
1. UP has the phase of Inception or Iteration 0. This means you can do some work like get an inventory of use cases, a candidate architecture, infrastructure needs and some high-level estimates then kick-off into a quick prototype to mitigate risk. This is often overlooked or informal in Agile, giving it a bad name in some 'well paying' circles because they simply can't 'see' what they are getting into.
2. UP has a phase called Elaboration, where most of the use cases are 'elaborated'. Yes this is hated by most agilents et moi. I have burnt my fingers often in this phase finding it difficult to ever reach a perfect close to this phase - 80% use cases done! not always possible on large projects. And what is done mean anyway. Better to change this to 90% of the high risk use cases prototyped.
3. UP expects to have a Contruction phase but you see, if we have been constructiong from the start, its really a misnomer, so we might as well call it an 'alpha testing' phase or 'regular client demo' phase or any other really clever name.
4. Then there is the Transition. Now, agilents, what really is transition, is it deployment, we can do that in a few hours, our stuff is all scripted up, yeah! And we release all the time. I hear you. But its more. For large projects many more things come into play, support setup, user training, data migrations, more data migrations, union approval (yes, it happens), health and safety (yes, this also happens) and other varieties of speed bumps. So take transition seriously, because this is where you get to impress or lose your clients. Plan for transition throughout the project. It's called 'starting with the end in mind'.

Here's a little article that reminded me of the old days (of UP) and told in much truth, Heart of Unified Process

Sunday, 25 January 2009

IIS to Sql Server Login Failed when not on same domain

Thats happened a few time already (over the past few years). IIS likes to know who you are before it lets you talk to SQL server. So a nice blog here if you are connecting to a Sql Server db from IIS and the two machines are not under the same AD domain.

http://beyondthispoint.blogspot.com/2006/04/setting-up-iis6-application-pool.html

Do the steps, it works! This post is like an extended book mark!

Sunday, 18 January 2009

Can we get any more virtual ?

I am stuck with the virtualization question for a bit. To virtualize or not ? Have to.. its in the work I do. So here is a little list. Help me fix it, but I'll throw it in for a start:
















I want to..So ..
Develop on my Win XP/Vista/2003 machine or laptop.
Use VMWare Workstation. Why? You get much better interactive performance when developing.


Keep my personal and business stuff separate from my everchanging-upgrading-munging development work stuff
The host keeps all your basic apps - email, business, skype, fun, etc so you don't have to run vmware to access 'everything'.
The host can also run the main dev db server and subversion (cause it's just faster I/O). But its in the background (right!).


Setup my VM for developmentUse VMWare Workstation to run a development IDE in a Win2003/8 VM.


Test with my VMWare
Use VMWare Workstation to run as a test server in Win2003/8 VM. Real benefit is you can take a snapshot of your test vmachine and/or create a virtual test environment to handle an n-tier emulation, i.e web server+app server+db server.

Just try to keep the test data (files+dlls + dbs) de-coupled from the Test VM so you can just roll back to the full Test VM for a new test run.

If you have spare hardware use you can VMWare server 2.0 as it can run the stuff in the background and you can access it from your main terminal (laptop, etc). But then you need to consider setting up DNS/DHCP somewhere. Still prefer the VMware Workstation all-in-one setup.

Saturday, 6 December 2008

Repair VS 2008 SP1 install

I got fuddled up with my Visual Studio 2008 SP1 update. It just did not happen correctlly. Some bits were missing, like the new Entity Data Model template. After waiting for soooo long, it arrives. Then it doesnt install. mmm. Pain.

I know people who just hate LINQ-to-SQL (as if it was my idea), but I do like it. It works. And it makes a well prepared way for a perhaps good successor, if it installs!!

So I found the fix. After you complete the install, run your VS Command prompt. and type
devenv /setup
then wait.

see http://msdn.microsoft.com/en-us/library/ex6a2fad(VS.80).aspx

The open VS, create a new class library, select add new item and there it is. New toy or your future bread n butter. Thats for you to find out. :)

Friday, 4 April 2008

Reporting Services Export formats - ASCII CSV and more


It seem Reporting Services is quite extensible. After much discussion around how we can provide a decent way to post-process a CSV file generated by an RS report, we found that we can add endless export formats (scary!) to a report.
Typically, out-of-the-box we have a few, namely CSV (unicode), PDF, etc. So we needed CSV in ASCII, with no headers. Umm! stumped for a bit, then the general problem-solver goes into motion and we come up with standard ideas of how and what more. But wait! There is simple answer there.



  1. Open your C:\Program Files\Microsoft SQL Server\\Reporting Services\ReportServer\rsreportserver.config

  2. Scroll down to <Render> section and you will see -
     <Render>
    <Extension Name="XML" Type="Microsoft.ReportingServices.Rendering.XmlDataRenderer.XmlDataReport,Microsoft.ReportingServices.XmlRendering"/>
    <Extension Name="NULL" Type="Microsoft.ReportingServices.Rendering.NullRenderer.NullReport,Microsoft.ReportingServices.NullRendering" Visible="false"/>
    <Extension Name="CSV" Type="Microsoft.ReportingServices.Rendering.CsvRenderer.CsvReport,Microsoft.ReportingServices.CsvRendering"/>
    <Extension Name="IMAGE" Type="Microsoft.ReportingServices.Rendering.ImageRenderer.ImageReport,Microsoft.ReportingServices.ImageRendering"/>
    <Extension Name="PDF" Type="Microsoft.ReportingServices.Rendering.ImageRenderer.PdfReport,Microsoft.ReportingServices.ImageRendering"/>
    <Extension Name="RGDI" Type="Microsoft.ReportingServices.Rendering.ImageRenderer.RemoteGdiReport,Microsoft.ReportingServices.ImageRendering" Visible="false" LogAllExecutionRequests="false"/>
    <Extension Name="HTML4.0" Type="Microsoft.ReportingServices.Rendering.HtmlRenderer.Html40RenderingExtension,Microsoft.ReportingServices.HtmlRendering" Visible="false" LogAllExecutionRequests="false"/>
    <Extension Name="HTML3.2" Type="Microsoft.ReportingServices.Rendering.HtmlRenderer.Html32RenderingExtension,Microsoft.ReportingServices.HtmlRendering" Visible="false"/>
    <Extension Name="MHTML" Type="Microsoft.ReportingServices.Rendering.HtmlRenderer.MHtmlRenderingExtension,Microsoft.ReportingServices.HtmlRendering"/>
    <Extension Name="EXCEL" Type="Microsoft.ReportingServices.Rendering.ExcelRenderer.ExcelRenderer,Microsoft.ReportingServices.ExcelRendering"/>
    </Render>

  3. That's where the 'pluggability' is at. Each extension has a Renderer type. For simple stuff, like mine, just copy the CSV element and paste it back in. Rename the Name attribute to "CSV2".

  4. Add overrides for the name that is displayed in the report dropdown menu - see CSV(ASCII)
  5. And add DeviceInformationSettings in xml - the whole thing should look like..
    <Extension
    Name="CSV2" Type="Microsoft.ReportingServices.Rendering.CsvRenderer.CsvReport,Microsoft.ReportingServices.CsvRendering>
    <OverrideNames>
    <Name Language="en-UK">CSV(ASCII)</Name>
    </OverrideNames>
    <Configuration>
    <DeviceInfo>
    <Encoding>ASCII</Encoding>
    </DeviceInfo>
    </Configuration>
    </Extension>
  6. Save it back (hope you got a backup copy of the config just in case)
  7. Go to IIS (Control Panels/Admin..Tools/Internet Inf...), find ReportServer under Application Pools and recycle the pool ( so that the next report picks up the new changes
  8. Done
If you need to write some funkier renderers, then consult MSDN. They have a standard api for it now.


Thursday, 1 November 2007

Solve the problem don't create a solution

Problems are strange relatives. They turn up uninvited yet we know that some time or another they will turn up, invited or otherwise. No matter what we do, we can never truly prepare for their arrival, so it's best to deal with them when they turn up (with much courtesy if they are a difficult lot). Luckily for me, it's mostly good as we learn things when we get surprised.

But sometimes, they are a pain. Formalities, sensitivities and the bus load of other past life dramas. If you do decide to lend them a hand (thats more than a ear) you must be prepared to stand by that as you now become part of their system of problems. (see Systemantics)

Everyday or almost every day, we developers (designers, architects if so!), have problems to solve in our systems. We imagine how could we (or they) have designed it better. Often we build a new solution (see hand above) to replace the problem. That's good, but now we know we have promoted the problem (into a solution) so it will come back with more problems. Just be ready for them. Or if we could see a simpler way to solve the problem then do only that and let the problem remain a problem till reaches a point where a real solution is required to fix it and you know you are ready for the slew of new problems that will come with that system. No I am not lazy, I am just old enough to want to live the rest of my life. :)

Hopefully, our work problems vanish when they are solved. On the other hand, the problems or solutions of family and friends mostly only keep coming back.. with a hug ;)

Monday, 26 February 2007

Writing Use Cases

This is an article about writing use cases. Too many people have asked me for a set of rules to work with when dealing use cases. I am so tired of repeating myself that I decided this is the best way forward. For everyone, but mostly for me! As systems differ, so do the rules. As more BAs use them and provide me feedback, we can standardise what is in here.

>> link to document

Tuesday, 7 September 2004

Testing 1-2-3

Hi all.

Just clearing my throat... been feeling to publish so many ideas for so long now but have never found the time. All ideas big and small are worthless without a fair comment. So please comment liberally and honestly.

:) Thanks
Ken