I was looking through the Agile 2011 submissions and I noticed something. A lot of them are pretty interesting, well thought out ideas. I do not envy the chairs of the various stages their task. They are going to have to make tough decisions about which good talks to include in the conference and who they tell "great idea but there's just no time."
It occurred to me that one mitigation for this might be if conferences like this started soliciting papers from the talks that didn't make it and collected them into a book (or collection of booklets). That way, all the neat ideas that didn't make the cut could still find their way out into the world. If done right, the conference could make a little profit off of coordinating their release.
Monday, January 17, 2011
Saturday, January 08, 2011
Agile Database Development: From Requirements to Delivery
I've received, signed, and returned a contract for my upcoming book, Agile Database Development: From Requirements to Delivery, scheduled for release in 2012. We'll see whether the "From Requirements to Delivery" part of the title survives the book development process. Regardless, the scope of the book will run that gamut.
Something I've noticed - and I really noticed this when I got my first publication contract for Transition Testing: Cornerstone of Database Agility - is that there is nothing like a contract to focus your attention on a project. It's not even the deadline, which I feel was extremely generous on the part of my publisher. It's those words that rattle around in the back of your mind...
There is nothing like it to motivate someone. At least, there is nothing like it to motivate me.
Something I've noticed - and I really noticed this when I got my first publication contract for Transition Testing: Cornerstone of Database Agility - is that there is nothing like a contract to focus your attention on a project. It's not even the deadline, which I feel was extremely generous on the part of my publisher. It's those words that rattle around in the back of your mind...
This is really happening. The ball is in your court, now.
There is nothing like it to motivate someone. At least, there is nothing like it to motivate me.
Saturday, January 01, 2011
Submissions for Agile 2011 Entered
Hi Everyone,
I've made three entries into the Agile 2011 submission system:
I've made three entries into the Agile 2011 submission system:
- Fundamentals of Agile Database Development
- Goad Testing: Guaranteeing that Tests Make Distinctions
- A New Perspective on Automated Tests: Tests as Increments of Process Improvement
I'd love any review and feedback that anyone may offer.
Wednesday, December 29, 2010
A Pretty Functional Dynamic Proxy for jni4net
Wish you could use the dynamic keyword to access java objects created using jni4net? I use this class to do that. Feel free to reproduce it, modify it, or incorporate it into your own products so long as you don't claim that it is "yours" and start suing other people who use it.
It's cut-and-pasted out of my code so there's no guarantee that you won't need to tweak it a little. One might say it's pretty much guaranteed that you will. :)
Enjoy.
It's cut-and-pasted out of my code so there's no guarantee that you won't need to tweak it a little. One might say it's pretty much guaranteed that you will. :)
using net.sf.jni4net;
using System.Dynamic;
public class JavaObjectProxyFactory
{
public class JavaObjectProxy : DynamicObject
{
private readonly java.lang.Object o;
private readonly java.lang.Class c;
private JavaObjectProxy(
java.lang.Object o,
java.lang.Class c)
{
this.o = o;
this.c = c;
}
public static dynamic GetInstance(
java.lang.Object o,
java.lang.Class c)
{
return new JavaObjectProxy(o, c);
}
public override bool TryGetMember(
GetMemberBinder binder,
out object result)
{
var field = c.getField(binder.Name);
if (field == null)
{
result = null;
return false;
}
result = ConvertToDotNetObject(field.get(o));
return true;
}
public override bool TrySetMember(
SetMemberBinder binder,
object value)
{
var field = c.getField(binder.Name);
if (field == null)
{
return false;
}
field.set(o, ConvertToJavaObject(value));
return true;
}
public override bool TryInvokeMember(
InvokeMemberBinder binder,
object[] args,
out object result)
{
var signature = new java.lang.Class[
binder.CallInfo.ArgumentCount];
var arguments = new java.lang.Object[
binder.CallInfo.ArgumentCount];
for (var i = 0; i < args.Length; ++i)
{
java.lang.Object arg =
ConvertToJavaObject(args[i]);
if (arg != null)
{
signature[i] = arg.getClass();
arguments[i] = arg;
}
}
var method = c.getMethod(binder.Name, signature);
if (method == null)
{
result = null;
return false;
}
result = ConvertToDotNetObject(
method.invoke(o, arguments));
return true;
}
private object ConvertToDotNetObject(
java.lang.Object o)
{
if (o == null)
{
return null;
}
if (o is java.lang.String)
{
var s = (java.lang.String)o;
return new string(s.toCharArray());
}
return GetDynamicProxy(o);
}
private java.lang.Object ConvertToJavaObject(
object p)
{
if (p == null)
{
return null;
}
if (p is string)
{
return new java.lang.String((string)p);
}
return (java.lang.Object)p;
}
}
public static dynamic GetDynamicProxy(
java.lang.Object o)
{
if (o == null)
{
return null;
}
return JavaObjectProxy.GetInstance(o, o.getClass());
}
}
Enjoy.
Friday, December 17, 2010
"Happy Holidays" is what terrorists say. Merry Christmas!
Even though I'm not a Christian, merry Christmas everyone.
As a gift to the public at large, I've lowered the price of the Goad Testing PDF to free. So get your copy now.
-- Max
As a gift to the public at large, I've lowered the price of the Goad Testing PDF to free. So get your copy now.
-- Max
Subscribe to:
Posts (Atom)