Forgotten Requirements
Recently, I had the opportunity to look at a set of user stories on an upcoming project and apply a high level estimate to each. These estimates were going to provide a starting point for determining project timeline and schedule. Every time I'm presented with a request for estimation, I shiver a little because I'm so bad at it. As I understand it, I'm not alone in this weakness. I have found, however, that the more requirements that can be defined and the more detail that can be described for each, the more accurate a timeline can be established.
Get List of Categories from test assembly using NUnit
In NUnit, you can specify a category on a test method or test fixture. I needed that list in a totally different context. Here's how to do it.
Extending CC.Net to write your own trigger
The default triggers provided by CruiseControl.NET just didn't fit my unique scenario. I needed a trigger that could check a database table, and if rows exist - to force a build. Check the low down...
LDS Tech blogger joins RockyCode
David Hale from http://ldstech.org has joined the esteemed authors at RockyCode.com. David has a lot of interest in genealogy technology solutions and been a faithful attendee at the BYU Family History Technology Workshop and the Family Search Developers Conference. He is the VP in the Hale Family Organization and runs a PhpGedView site at http://halefam.org/FamilyHistory/ which now has over 40,000 individual records.
Generic Interfaces Arabian Magic
[flash bang!] Say words like generics, enums, or interfaces, and you've immediately transported to the realm of conjured whirlwind sandstorms and curved-sword-weilding assasins. Well, I guess we're going there, because I think this is pretty cool. Plus, undocumented, or at least un-reiterated to myself, and later I'll look at it and think it's just pretty complicated. Prepare for angle brackets in the amount of parens in lisp.
Groovy 1.7 power asserts
Asserts were a breath of fresh air sweeping over the JVM landscape with Groovy. Now, feel the power of Groovy 1.7's power asserts!
Stopping the dreaded double-form submission with jQuery
When developing forms, we web developers always have to guard against the dreaded double-form submit, when impatient (or even patient) users, depending on the latency of form submissions, hit the “submit” or “enter” button multiple times, causing havoc to the application.
What's REALLY going on in that HashSet.contains() method
We all know that contains() is a handy way to check for the presence of an item in a HashSet. The java docs state: "Returns true if this collection contains the specified element. More formally, returns true if and only if this collection contains at least one element e such that (o==null ? e==null : o.equals(e))." So, you just need to override equals() the way you want, and everything's hunky-dory, right? Wrong!
Quick Bookmarks
For someone who spends mucho time daily on the interwebs, being able to jump around quickly is important -- both for focused productivity and ADD-inducing web surfing. Bookmarks have long facilitated savings your place on the web for a future return, but there are a few enhancements to the regular vanilla bookmarks that have greatly added to my bookmark delight: 1) Bookmarks in the cloud and 2) Keywords/custom search engines.
BuildReport in CC.Net gives 404 error
I have several machines where I run CruiseControl.NET for our test automation. Today, I went to look at the results and I would get a 404 error on one of the boxes. I checked another machine and the build results would come up just fine.
Submitting a form from an a href link using jquery
Okay, Okay, I admit it. I'm javascript challanged. As a Java developer, I've looked down my nose at paltry javascript, treating it as a "me-too" technology trying to cash in on the hype surrounding java all these years.
As a result, I've missed out on a lot of js goodies. And, with javascript entering a renaissance of sorts, combined with the wildfire-like buzz surrounding libraries such as jquery, it's high time I learn some.
How to uninstall a .deb package (Ubuntu)
New version of virtual box. Problem was, I needed to uninstall the old version first.
The power of Groovy closures
In the Java world, we don’t get closures until Java 7. Groovy already has them. Here's what I’ve learned about these important programming structures, and why they're powerful.
Ideal Tech Conferences
It seems that in the IT, there are many, many conferences offered every year that people are invited to attend in order to glean something of use. Which are the good? Which are the bad? There are a few points that may make a differentiation.
Xquery Optimization Tips
My first xquery experience has been on the MarkLogic platform. The project that we just released was written entirely in xquery and on that platform. As our site continues to gains popularity, we continue to realize how little about xquery we knew or know. Sometimes and in some places, the site is just really not that performant. "But I thought MarkLogic/xquery is super-scalable," some exclaim indignantly. If you do it right, an Oracle relational database can be made to scale. Done wrong, a MarkLogic database can be made to not scale at all. There's a lot to be said about knowledge of the platform, the language, and how to wrestle it to do your bidding. Here are a few optimization ditties that I've collected as of late that might help in your future xquery dev.
Jquery Plugin: safesubmit
Jquery gives a great, easy-to-use mechanism for extending its API and creating your own plugins. For stuff that looks like it could be useful generally, you should really try to put it into a nice little plugin package. For submit buttons, there is a general thought that they shouldn't be clicked twice (especially for functions such as financial transactions), so I created a plugin that fits an app that I have been working on recently, where there are many, many submit buttons, saving very granual pieces of content through ajax requests.
Jquery Plugin: readmore
Jquery plugins are a joy to use, and they are surprisingly easy to write. Everyone that writes lots of Jquery code should seek to take potentially-resuable functionalities of code and put them into a nice, compact plugin. In the app I've been working on, we have a lot of user-generated content that we don't limit the length on, so it can grow very large. To combat this, there is the UI pattern on the site that there is a "read more" link available to show the remaining text for the long-winded texts, while just showing a snippet otherwise. This exists everywhere, for lots of different content; hence, the "readmore" plugin was born.
Sorting an IList using LINQ
We have a custom object called ListOption in our code. It holds category, value and option and fairly represents the basics of a single SelectList item. To hold the ListOption values, the primary developer stored this List as and IList instead of an ArrayList or any other concrete type. OptionList extends IEnumerable
Here is how I sorted the IList.
PNG Gamma Correction Woes
PNG was a file format that, among the original reasons for conception, was created to show the same color over different computers, with different OS's, and browsers. To this end, gamma, or lighting, correction was added. While solving the original problem, a new, bigger, badder problem was created. Now, there was the potential for color inconsistencies on the SAME web page. For example, the color of certain items rendered on the page with the same hex value will display differently than PNGs rendered on the page painted with the same hex value.
Specifying multiple categories in nUnit
The CategoryAttribute can be used to specify additional groupings of test cases that you want to run at the same time. For example, we have our test cases split up into level of priorities (Level 1, Level 2, Level 3). Here's how you can do it: