Search This Blog

Tuesday, December 20, 2011

Multiple Firefox Profiles with Custom Icon Packs - Ken Yarmosh

link -> Multiple Firefox Profiles with Custom Icon Packs - Ken Yarmosh:
I wanted to run two concurrent Firefox profiles — essentially a professional and a personal version. There’s lots to read on using Firefox profiles but my case was unique in that I wanted 1) Two profiles running at once. 2) An easy way to distinguish between the two profiles in my Windows Taskbar.
Cool I set this up so I keep my personal gmail loaded in firefox and people don't click on it when we are pairing since it doesn't have the default firefox icon.

Thursday, December 15, 2011

Crosspile Week 5 and 6

In the last two weeks, I downloaded NRefactory and created a playground project where I was able to output some C# code programmatically. After looking at my code, I am not 100% sure it is better than just writing out the C# code manually. What will be cool though is if I can figure out a way to let you write a visitor to change your C# code before it is outputted. This feature might help me eliminate a bunch of manual repetitive changes when importing a large javascript library. When searching on how to get NRefactory to work I found this link for a company called Semantic Designs. I only glanced at their site for a few minutes, but it seems like it is a commercial project that will let you translate your code into some intermediate language and then translate it again to some destination language. This sounds a lot like what I am trying to do except their javascript and c# languages are not really ExtJs specific. Next week is Christmas so not sure how much I will get done. However I at least plan to start working on reading javascript and parsing it into my cross model.

Wednesday, December 14, 2011

Introducing Siesta: A Testing Tool for Ext JS

link -> Introducing Siesta: A Testing Tool for Ext JS:
For us, about midway through our upgrade, we realized that we badly needed a tool to help us verify that what used to work in the Ext JS 3 version still worked in the Ext JS 4 version. Doing the testing manually for each feature and API method would simply have taken way too much of our time. After evaluating a few popular options, we realized that none really fit our needs, so we started to design and write our own tool: Siesta
Looks nice for unit testing where you write the tests programmatically. Not sure how it would work with a recorder and automatically generated IDs. Price tag of $300/developer is steep not to do everything.

Thursday, December 8, 2011

New RSS Feed URLs

Since Google Reader shut down their Note In Reader feature, I decided to import my shared items into this blog and use the BlogThis bookmarklet to share new items.

 Here are my new RSS feed URLs

New Posts Feed: 
Atom 1.0:
RSS 2.0:

Comments-only feed: 
Atom 1.0:
RSS 2.0:

Sunday, December 4, 2011

Crosspile Week 4

Finally got a test to pass this week. I think the next thing to work on is to output some C# from the JsDuck json file. This week I want to research the NRefactory library and try to create an abstract syntax tree from my JsDuck json file and get NRefactory to output the C#. I also noticed that Microsoft released Roslyn which I could use instead of NRefactory. I think I will start out with NRefactory but keep my eye on Roslyn as well just to see if it is worth switching.

Saturday, December 3, 2011

SpecFlow Integration - Matt Ward

link -> SpecFlow Integration - Matt Ward:
The SpecFlow team recently released version 1.7 and with it they included support for SharpDevelop 4.0. SpecFlow is an open source framework that you can use to do Behaviour Driven Development (BDD) on .NET. It allows you to bind business requirements to the code. Let us take a look at how SpecFlow integrates with SharpDevelop.
This looks similar to our customer test parser except instead of using Xml they use the Gherkin language.

Monday, November 28, 2011

Customers learn as well as Developers as product moves along

link -> Growing Objected Oriented Code Guided By Tests
For customers and end users, the experience is worse. The process of building a system forces them to look at their organization more closely than they have before. They’re often left to negotiate and codify processes that, until now, have been based on convention and experience.
I remember working on a system where we were writing automated Acceptance Tests that could be easily read by our PM. This process allowed us to easily show them where they were giving us requirements that contradicted requirements they gave us in earlier iterations. Trying to have the conversation in English made our heads hurt but showing them the two tests side by side got us immediate understanding and earned us the reply "Oh crap I never thought about that".

Sunday, November 27, 2011

Crosspile Week 3

I spent a bunch of hours working on Crosspile this week but did not make much progress. I committed what I did, but the one test I wrote is not passing. I think I tried to get too fancy. I will try to simplify things this week and see if I can actually make some progress.

Sunday, November 20, 2011

Crosspile Week 2

Stuff I got done this week
  • Finished up the blog import tool I was working on which was taking up most of my free time
  • Created a project to test to see if I could use sharpkit to translate from C# to javascript
  • Figured out how to write and run nUnit tests in MonoDevelop
  • Starting writing a test to convert an JsDuckJson class to a Crosspile class
Time and internet access will be limited next week but hopefully I will still make some progress.

Thursday, November 17, 2011

Introduction To Composite JavaScript Apps | :derick_bailey

link -> Introduction To Composite JavaScript Apps | :derick_bailey

Not a big fan of the module pattern, but I like that he separating the different UI pieces into separate pieces of code that can be reused. I also like the way he binds the events together. It reminds me a little of the event stuff they have in DM

Sunday, November 13, 2011

S#arp Lite: The Basics - NHibernate blog - NHibernate Forge

link -> S#arp Lite: The Basics - NHibernate blog - NHibernate Forge:

S#arp Lite is an architectural framework for the development of well-designed, custom-built, ASP.NET MVC applications using NHibernate for data access.

Might be some cool ideas in here to use in our project.

Open source application to import Shared Items from Reader to Blogger

Unfortunately Google removed the Note In Reader functionality from Google Reader.  To replace this this functionality I am using the Blog This bookmarklet and adding my shared items to my blog.  I created googleReaderShares2Blogger to allow you to import the shared items you created in reader before google turned this functionality off.

I basically downloaded the Google C# API and modified their sample application.  The code is pretty rough but it works for what I needed.  I coded this on my mac using MonoDevelop, but it should work on Windows too.

Crosspile Week 1

I have been researching tools to convert C# into javascript for awhile. I just think it would make work more fun if I could use the refactoring tools built into Visual Studio to clean up my javascript code. I also like the idea of getting compiler errors for simple typos.

So I decided to spend some of my spare time creating a tool that will allow me to do this. This is what I got done in Week 1
  1. Sent email to my boss and got approval to do this. 
  2. Bought a new macbook since mine was super old.
  3. Setup my laptop to run MonoDevelop.
  4. Created test project googleReaderShares2Blogger to see if I want to use MonoDevelop or Visual Studio
  5. Created Git repository and uploaded my test project code.
  6. Used Boot Camp to setup Windows 7 on my mac and installed Visual Studio
  7. Downloaded sharpkit and started a test project to see if I can use this tool.
  8. Came up with the snazzy name Crosspile for my project.
  9. Cleaned up blog a little.
  10. Read through Git tutorial.
I plan to update this blog every week with my progress.  If I get any questions, I will add more detail about what I am doing.

Monday, October 31, 2011

Nikhil Kothari's Weblog : Getting Started with Script#

link -> Nikhil Kothari's Weblog : Getting Started with Script#
Hello World with Script# - a 101-style walkthrough on authoring and deploying scripts compiled from c#, while using the HTML DOM APIs, XMLHttpRequest, and jQuery.
I downloaded and watched the Mix11 presentation. He showed launching tests server side that ran in the browser. That was pretty cool.

Tuesday, October 25, 2011

I Broke Your Code, And It's Your Fault

link -> I Broke Your Code, And It's Your Fault
Early in my career, I was afraid of making changes that could affect unexpected aspects of the system. My first job out of college, whenever I made changes, I'd read lots of code and was extra careful. Of course, nobody can ever be careful enough with this methodology, so I'd wind up breaking things. I'd feel awful for this, completely embarrassed. I'd panic and try to fix the code as quickly as possible, assuming my co-workers thought I was an idiot.
Today, I take the exact opposite approach: fearless refactoring. I refactor code without even the slightest bit of concern about the ramifications. If I break something, a test will let me know. If no test lets me know when I broke something, I don't feel embarrassed. I feel like someone else should be embarrassed.
Scary idea but maybe it makes sense

Wednesday, October 19, 2011

How To Produce Bug-Free Software

link -> How To Produce Bug-Free Software

Many are resigned to the fact that all software is destined to contain some “bugs”, but did you know it’s possible (and arguably pretty easy) to always produce “bug-free” software?

I think this was a long way of saying you need to write tests

Friday, September 30, 2011

Friday, September 16, 2011

ExtJS code in CSharp

link -> ExtJS code in CSharp
Wouldn't it be cool to program in this instead of javascript. Think of the intellisense and compile time support. Might be faster to convert to 4.0 if we converted all our code to C# first.

Tuesday, September 13, 2011

What Is Technical Debt?

link -> What Is Technical Debt?
His definition of TD includes frustration The fucking XYZ module needs HTML support, but it turns out the entire thing generates images instead of text so I've got to go back and rip all of the image generating bullshit out of the thing and replace it XML generation so that I can translate it to HTML, plus I've got to fix the code we've already got to work with the XML format instead of the images it's expecting. So, yeah, I initially thought it would only take a day, but it looks like it's going to take all week now, Jesus Christ.

Friday, September 9, 2011

Book Review: The Clean Coder

link -> Book Review: The Clean Coder

The Clean Coder: A Code of Conduct for Professional Programmers

Earlier this week I finished reading Uncle Bob’s latest book The Clean Coder. Robert C. Martin is a great writer and I very much enjoyed reading his previous books. His latest work is no exception and I found it to be yet again a fascinating read.

This book is all about professionalism. This is something that is very much needed in the field of software development. It describes how a professional software craftsman behaves, how he deals with tight schedules, irrational decisions made by managers (for those rare occasions that this happens), conflicts and so forth.

The preface of the book takes you right by the throat, talking about the Challenger disaster. This has been applied to the field of software engineering many times already (check out this blog post from Gustavo Duarte which is one of my all-time favorites), but still, it definitely never wears off.

The book is filled with stories and anecdotes from the rich career of the author and the lessons he learned during these 40+ years in the IT industry. Some of the ideas in there are definitely challenging (like staying out of the zone and building up focus instead), but nonetheless they put a very  interesting perspective on things.

Don’t let yourself get carried away by some of the hard statements but try to focus on the underlying ideas and try to think back on some of the good and bad situations that you ran into during your own career. Trying to reflect on those moments and considering how we could act more professionally lies at the heart of improving ourselves. I definitely learned a lot while reading this book and I encourage you to pick up a copy as soon as possible and take some time to read it.

Two thumbs up!

Sounds like a good book for me.

Monday, July 25, 2011

When To Work On Technical Debt

link -> When To Work On Technical Debt
One problem I encounter constantly is this: "We don't have time to address our technical debt!"Every company I've ever worked for has had this problem to some degree. The development team realizes that there are some parts of the system that need to be cleaned up, but for a wide variety of different reasons, they feel like they don't have the time to actually work on improving those areas of the system.

Friday, July 22, 2011

A Better Team: Arrogance And Accepting Your Own Strengths

link -> A Better Team: Arrogance And Accepting Your Own Strengths
I’ve spent years fighting my own arrogance. I constantly struggle with it. I have to make concious efforts to recognize that every person I come in contact with is more experienced and more intelligent than I am given the right scenario.
Bet my wife would appreciate me thinking about this before I respond. :)

Tuesday, July 12, 2011

Using NHibernate With Stored Procedures - Ayende @ Rahien

link -> Using NHibernate With Stored Procedures - Ayende @ Rahien
I wonder if you could use something like this to do shift collation. The advantage being that another entity could map a PunchedShift as a reference instead of just a PunchedShiftID. I would rather it let me write code instead of SQL though.

Monday, July 11, 2011

A Sample Format for a Spreadsheet-Based Product Backlog

link -> A Sample Format for a Spreadsheet-Based Product Backlog

I want to show a real easy way to put user stories in a spreadsheet-based product backlog. I wrote this after seeing someone tweet a screen capture of a product backlog I made 9 years ago and thought to myself, “Yikes, that’s out of date for how I do it today…”

As you probably know I’m a big fan of writing the product backlog in the form of user stories and of writing user stories in the form, “As a , I so that .” An example being, “As a frequent flyer, I really want to be able to connect to the internet while flying so that I can update my blog while traveling rather than having to save this as a text file and updating my blog later.” (Can you guess where I am while writing this?)

What I’ve found makes a user story in this format very easy to work with in a spreadsheet is to take the boilerplate parts and put them into column headings. So we’ll have column headings like “As a” and “I” and “so that”. The meat of each story is then clearly visible in each row. Additional columns can be added for things like a unique identifier, notes, status and such. In this example, I’ve also included a column for the theme or grouping of which the story is a part. You can see this in the screen capture below. You can click the image for a larger view.

the product backlog in Excel

It is nice the way it groups who the story is for. Unless of course all the stories are for the same person.

Monday, June 27, 2011

Jetty Startup Problems Due to Entropy

link -> Jetty Startup Problems Due to Entropy

On the MMO I’m working on, we do quite a bit of service monitoring via jetty.  Things like having a URL that reports back version information for a component, or a page full of statistics showing recent activity, or a way to trigger a self-check in a component to determine if the component is sane and healthy or not.

For certain components we run multiple instances of the service on the same box.  In development environments, it’s a pretty small number of instances.  On a production environment it’s a much bigger number.  Typical stuff.  However Operations noticed that startup times for a server full of instances jumped from seconds to over 20 minutes when the number of instances was increased from 3 to 12.  Ouch.

So, something is blocking on startup.  After some digging, I came across this post explaining how jetty uses a secure random number generator for session ids, which is based on the pool of entropy generated by the system.  Sure enough…

$ cat /proc/sys/kernel/random/entropy_avail

(On development cluster machines that value is upwards of 3000)

Since we don’t care if the jetty session IDs are securely generated or not, switching the generator from secure to not-secure took us back to a few seconds to start up 20 instances.

If only this made rpweb start up faster

Tuesday, June 21, 2011

A Different Kind of Technical Interview

link -> A Different Kind of Technical Interview
Based on how much candidates and interviewers both seem to enjoy this, I hardly see any reason to do a whiteboard interview at all anymore. Personally, I don't even look a resume before I do a pairing exercise with a candidate. I don't feel the need to know anything about someone going into it, and I feel like I learn all I need to spending two hours with them on a task.

If you're having trouble hiring good programmers, give it a shot. Replace part of your interview process with a pairing exercise and see if it makes a difference.

Sounds like a fun interview.

Sunday, June 19, 2011

Stream(SQL) Event Processing with Esper

link -> Stream(SQL) Event Processing with Esper
What if we turn the problem on its head: instead of storing data and then executing batch queries over it, what if we persisted the query and ran the data through it? That is the core idea and insight behind Event Stream Processing (ESP) systems: store queries not data, process each event in real-time, and emit results when some query criteria is met.
Sounds like more fun than file imports.

Wednesday, June 15, 2011

Awesome Real-Life Chewbacca Dogs

link -> Awesome Real-Life Chewbacca Dogs

With all the dog breeds out there, you're bound to come across a few that look like Chewbacca from Star Wars. We've rounded up the most popular look-a-likes for your viewing enjoyment. Click here for the first picture in gallery. Continue reading for a video.

[Sources 1 | 2 | 3 | 4 | 5 | 6]

Photo Photo Photo Photo Photo Photo

Monday, June 13, 2011

There’s I(ntelligence)Q, and then there’s I(nfluence)Q

link -> There’s I(ntelligence)Q, and then there’s I(nfluence)Q

People who work in software are smart people who take pride in their abilities to understand complex information and solve difficult problems. But much of the work isn’t only about smarts. Creating most software requires the help and cooperation of other people. Telling, convincing, and winning arguments won’t work to bring people along, change their minds, or help them help you. That requires influence.

I feel like Brandon in this example and act like Cindy almost every day. Doh. Need to act more like Jason in this example.

Tuesday, June 7, 2011

Best at argument != Best ideas

link -> Best at argument != Best ideas
Bob may have the best ideas on the team. We don’t really know if that’s the case. No one else’s ideas are fully considered. We do know he doesn’t have a perfect record. Some of his fixes don’t work the first time. Some of his fixes break something else.  If the team had a process to consider and refine ideas, that might not happen as much.

It may sound like it will take more time to separate generating ideas from explaining, exploring, and evaluating them. It may seem like a lot of effort to find more than one idea and test the ideas for soundness and test the level of support for a given idea.

But in years of observing teams, I find that slowing down and separating the steps of the choosing a solution helps the team speed up. A mashup process forced by a dominant individual may appear to save time in the very short-term. That’s seldom true if you account for all the time costs and other effects incurred.

I like the part about separating the stages and having at least three ideas.

Friday, May 20, 2011

NHibernate 3.0 SQL Logger - Home

link -> NHibernate 3.0 SQL Logger - Home
NH3SQLLogger is a lightweight NHibernate 3 SQL Logger, with SQL Formatting, Caller methods loggings and Syntax highlighting.
NHProf competitor. I am not actively looking for nHibernate logging this stuff just keeps showing up on twitter.

Wednesday, May 18, 2011

Logging NHibernate’s SQL-queries to screen with ASP.NET MVC 3 and Glimpse

link -> Logging NHibernate’s SQL-queries to screen with ASP.NET MVC 3 and Glimpse
By following this tutorial you can enable your ASP.NET MVC application to output the NHibernate’s SQL-queries into the web browser, in real-time. If you have an existing application, no coding is required, this is all about configuration.
We could use something like glimpse to see what happens between refs and our app

Saturday, May 7, 2011

Generate better NHibernate logs - NHibernate blog - NHibernate Forge

link -> Generate better NHibernate logs - NHibernate blog - NHibernate Forge
The official NHibernate community site. Download NHibernate. Read blogs. Contribute to the NHibernate Wiki. Find reference documentation.
I can't ever get our log4net to work, but if I could it would be nice to get logs like this.

Thursday, February 24, 2011

Get/Load Polymorphism in NHibernate 3

link -> Get/Load Polymorphism in NHibernate 3
Nothing gets an OO zealot hot under the collar the way the term polymorphism does. You probably have three questions right now… What does polymorphism have to do with object-relational mapping? How does it relate to NHibernate? And why should I care?
I ran into this one before. Nice to see they are improving stuff. Wish the Linq Provider was at least as good as the old one

Sunday, February 20, 2011

XP Practice: Whole Team | Agile Software Development

link -> XP Practice: Whole Team | Agile Software Development
This article talks about cross-functional teams versus functional teams. It also has some interesting links about what Kent Beck and James Shore have to say on this subject.

Generalizing Specialists: Improving Your IT Career Skills

link -> Generalizing Specialists: Improving Your IT Career Skills
I wonder if generalizing specialist is an acceptable compromise?

InfoQ: Do Specialists Outperform Generalists on an Agile Team?

link -> InfoQ: Do Specialists Outperform Generalists on an Agile Team?
An Agile team is mostly a cross functional team comprising of generalists and specialists. Jurgen Appelo, challenges this concept and suggests that having just specialists on an Agile team adds more value. The post tries to correlate various view points on team composition by other members of the Agile community.
Seems like it is not just our team that is split down the middle. Maybe the whole agile community is that way. I liked the post from Jeff Atwood. I wish more of the leaders would chime in. » Cross-Functional Teams

link -> » Cross-Functional Teams
Here is an argument for specialists

InformIT: Agile Processes and Self-Organization > Resources

link -> InformIT: Agile Processes and Self-Organization > Resources
Trying to figure out if cross-functional is included in the definition of self-organizing. Schwaber (creator of Scrum) lumps them together in this article. |Radical management | Cross-functional teams that aren't: high-end knowledge firms

link -> |Radical management | Cross-functional teams that aren't: high-end knowledge firms
I think the buzzword to describe teammates sharing roles is cross-functional teams. This article talks about some advantages of cross-functional teams.

InfoQ: Organizing Self-organizing Teams

link -> InfoQ: Organizing Self-organizing Teams
Rashina Hoda is a PhD researcher who has been examining how self-organization actually happens on teams. She has studied teams in New Zealand and India and identified six distinct roles that emerge when teams effectively self-organize. She spoke to InfoQ about her research, which will be published at the International Conference on Software Engineering (ICSE2010) to be held in Cape Town in May.
Doing research to see if agile defines whether programmers only do programming and pms do requirements then hand them off. This paper seems to say the opposite.

Wednesday, February 16, 2011

James Shore: Proficiencies of Planning

link -> James Shore: Proficiencies of Planning
James Shore consults and writes about high performance software development for teams who are willing to be great.
Note sure what level we are at. 1 or 2 maybe.

Thursday, February 10, 2011

Agile Engineering - Atlanta GA - March 1 | Summary | powered by RegOnline

link -> Agile Engineering - Atlanta GA - March 1 | Summary | powered by RegOnline
When: Tuesday, March 01, 2011 9:00 AM - 5:00 PM (Eastern Time). Where: Regus Atlanta - Terraces, 400 Perimeter Center Terrace, NE Suite 900 Atlanta, Georgia 30346 United States. Phone: 1-888-3.PILLAR Email:
only $50. seems like a good deal.

Wednesday, January 26, 2011

Team Trap #5: Withholding Information

link -> Team Trap #5: Withholding Information

I’m not talking about information related to the task and context, here, though that can damage a team. Withholding that sort of information is unacceptable, and probably pathological. I’m talking about a different sort of information: information about your internal state .

I think this is good one. I feel like I have seen people withdraw like that.

Friday, January 21, 2011

Countdown to Ext JS 4: Data Package - Sencha - Blog

link -> Countdown to Ext JS 4: Data Package - Sencha - Blog
Sencha. Build amazing web apps built on web standards. Sencha Touch, HTML5 mobile app framework. Ext JS, cross-browser JavaScript framework. Ext GWT, Java library for building apps with GWT.
I like that they are getting rid of records

Saturday, January 15, 2011

Headless Testing for Continuous Integration with Git and Jasmine

link -> Headless Testing for Continuous Integration with Git and Jasmine
Our WebKit Team lead, Ariya Hidayat, walks you through creating a Continuous Integration setup that will run on Windows, Mac and Linux.
cool to see extjs blogging about automated testing. hope to see more. haven't heard of specrunner or jasmine

Saturday, January 8, 2011

NHibernate Mapping Generator

link -> NHibernate Mapping Generator
A simple utility to generate NHibernate mapping files and corresponding domain classes from existing DB tables. It currently generates one mapping file (.hbm.xml) and the corresponding Domain class (*.cs) from oracle or sql server.
Wow! Generate Fluent Nhibernate mappings and classes from existing database. Open-sourced by Thoughtworks.

Tuesday, January 4, 2011