Just an old programmer... From Algol to Ada, from Basic to Boo, from Cobol to C#, etc...
Apr 2, 2008
I survived the bookshelf, so ... Ben Lovell started a terrific series of posts on Test-First Incremental Development with Monorail
Ben has started a series of posts, similar to what I intended to do (always the lazy blogger excuse) about how to go incrementally developing a web application in the test-first way (writing the unit tests before the code). What I normally do differently from him is that he goes backwards throughout the layers (he starts with the controllers' layer, going down to the service layer, and so on) and I tend to begin at the service and model layers, and go up afterwards, because most of my projects tend to have requirements for supporting multiple-UI and/or for publishing some SOA interface (binary or xml, web services).
Me and my son escaped being killed or severely injured by the fall of a huge piece of wall-mounted furniture
Part of a huge dry-wall mounted bookcase collapsed into the floor where I was standing seconds before, and beside my son's bed. After the heart-pounding eased a bit, we've found his forehead was struck by some decorative object, perhaps, but no serious injury happened.
After moving the debris and collecting the books, toys and other objects from the floor, we all had a terrible night, with my kids having an unrestful, frightened, sleep, what made me and my wife also not being able to recover fully.
"What does not kill us makes us stronger", some believe, but I would rather have had a good night of sleep...
After moving the debris and collecting the books, toys and other objects from the floor, we all had a terrible night, with my kids having an unrestful, frightened, sleep, what made me and my wife also not being able to recover fully.
"What does not kill us makes us stronger", some believe, but I would rather have had a good night of sleep...
Dec 4, 2007
Maybe a candidate for Mono.Rocks
Answering a thread on XmlNodeList manipulation on the list I came with this answer and (untested) Mono.Rocks candidate:
As a fan of generics I would create a helper class (based on Robert Jordan code):
And so the code in question would become just:
When using the latest compilers it could be made into a Mono.Rocks helper like:
And then usage would be even simpler
As a fan of generics I would create a helper class (based on Robert Jordan code):
public class XmlNodeListHelper
{
public static ListCopyNodeList(XmlNodeList list)
{
Listcopy = new List ();
foreach (XmlNode node in list)
copy.Add (node);
return copy;
}
public static void RemoveNodes(XmlNodeList list)
{
foreach (XmlNode node in CopyNodeList(list))
node.ParentNode.RemoveChild(node);
}
}
And so the code in question would become just:
XmlNodeListHelper.RemoveNodes(xDoc.SelectNodes("//comment()"));
When using the latest compilers it could be made into a Mono.Rocks helper like:
public class XmlNodeListHelper
{
public static ListCopyAsList(this XmlNodeList list)
{
Listcopy = new List ();
foreach (XmlNode node in list)
copy.Add (node);
return copy;
}
public static void RemoveNodes(this XmlNodeList list)
{
foreach (XmlNode node in list.CopyAsList())
node.ParentNode.RemoveChild(node);
}
}
And then usage would be even simpler
Doc.SelectNodes("//comment()").RemoveNodes();
Nov 21, 2007
New Commons.GetOptions release
I decided to re-relicense Commons GetOptions as BSD, and also started the work on supporting translation in the less intrusive (most backwards-compatible) form possible. I'm posting a tarball including the library binary, for those without mono or monodevelop to build from the fonts. See it at http://groups.google.com/group/managedcommons
Jun 22, 2007
About approaching Complex UIs development
Commenting on Hammett's Complex UIs post:
I think the repeated maxim "put yourself in your user's shoes", is very hard to try to accomplish in practice, for some reasons.
But for complex functionality I think two reasons are foremost:
I think the repeated maxim "put yourself in your user's shoes", is very hard to try to accomplish in practice, for some reasons.
But for complex functionality I think two reasons are foremost:
- You really may not know enough of your users everyday tasks related with it, and how they are used to deal with it, but as you are being paid to develop something new, probably they aren't happy with it anyway, and they are waiting for you to come with some breakthrough, so they are only the best sources to gather "hints" on what should be designed, but not the "reference" for it. So as some have said, you need to cross those hints with ideas from other realms. This mindset is hard to come by, or develop: to keep your mind open to many influences/ideas and look out for the 'hidden' connections that could be explored to come up with an innovative solution.
- Complex UIs need to be simplified, and that means putting most important features in front of the user's nose (or mouse pointer), and hiding what can be guessed by the code. But here the problem is if you have a single user it is somewhat simple to figure out, what it really NEED to do, and find some good guesses from usage stats, but normally you are faced with a variety of users, maybe approaching your UI with different needs, so you'd end up with an 'averaged' solution that's dissatisfies more than satisfies most of your users. Cloning the UI in per-user-profile fine-tuned simplifications yields better results, but navigation and maintenance become harder. Another approach is to make the UI adaptive and then customizable, first keeping more frequently/recently used things on the 'top' and allowing the user to pin/unpin things and defining default values and such.
Jun 14, 2007
My first patch to Castle (MonoRail in truth)
http://support.castleproject.org//browse/MR-270 is my first contribution to Castle Project.
The Jira Issue Tracking system for Castle looks to be experiencing some problems now.
Basically I'm wrapping an exception in an outer scope and throwing the new exception that captures more information for easing debug (the resourceName for the template NVelocity is trying to process).
Hope it helps
The Jira Issue Tracking system for Castle looks to be experiencing some problems now.
Basically I'm wrapping an exception in an outer scope and throwing the new exception that captures more information for easing debug (the resourceName for the template NVelocity is trying to process).
Hope it helps
May 7, 2007
Monoman joins Castle Stronghold
I'm now working at Castle Stronghold, the company Project Castle's creator Hammett (Hamilton Verissimo), founded to provide support, consultancy, customizations for organizations that choose to use Project Castle marvelous technology.
New things to learn (InversionOfControl in practice, ActiveRecord in practice, MonoRail's MVC in practice, and so on).
Back to using VS.NET (Eclipse and MonoDevelop key combinations doesn't work in there, pity) and the Windows Command Prompt (how many times I've typed ls or cat or grep, to no avail, so far?...Lots of times).
But I've been designing/coding for the last 30 years, and I still like it, and still like to learn, more and more, so it's kind of energizing for me to tackle this new endeavor.
Hope I can help the company and its clients while I'm there, and I hope to also be helping the FOSS ecosystem, in the end.
Engines started!!!
New things to learn (InversionOfControl in practice, ActiveRecord in practice, MonoRail's MVC in practice, and so on).
Back to using VS.NET (Eclipse and MonoDevelop key combinations doesn't work in there, pity) and the Windows Command Prompt (how many times I've typed ls or cat or grep, to no avail, so far?...Lots of times).
But I've been designing/coding for the last 30 years, and I still like it, and still like to learn, more and more, so it's kind of energizing for me to tackle this new endeavor.
Hope I can help the company and its clients while I'm there, and I hope to also be helping the FOSS ecosystem, in the end.
Engines started!!!
Subscribe to:
Posts (Atom)