PowerBook
Friday, April 29th, 2005The laptop has arrived.
The laptop has arrived.
Browsing around and found some nice bookmarklets (thanks Ramin for the link and thanks Jesse for the collections).
So, I did a google search for my name…and I didn’t turn up until the 4th page (of course, my name “James Estes” Isn’t actually listed anywhere here…or wasn’t anyway :)). The first reference to me was of an article I wrote for shadow. The article was on a custom chat tag feature I had in my chat program. Basically tags were things users could type in the chat to make things happen (like super beefed-up emoticons). For example, the kick tag…if a user typed [kick:dave,head], the message ‘James kicks Dave in the head’.
Ah…memories.
My email address at gmail is of the form <first>.<last> ‘at’ gmail.com. Well, a few weeks ago I got an odd spam message (odd because gmail’s filter didn’t catch it). Upon further inspection, the recipient address (mine) didn’t have the ‘.’ in it at all. Looks like it wasn’t even supposed to come to me. So I tested sending a message to that address: <first><last> ‘at’ gmail.com (without the ‘.’) and lo and behold…the email got to me. So it appears that the ‘.’ is not necessary when sending? I wouldn’t bank on it or publish my email address that way…what would happen if someone actually registered with that name? Would gmail allow it?
Just read a pretty decent article on a generic form validation technique here. I bet it wouldn’t take much to extend the technique to also validate by id for more complex validation (similar to/leveraging commons-validator). It would validate the class first (to make sure it is at least of the right type) then move on to more complicated validation against the id (to handle ranges for example). If you’re in a web framework, you could make it dynamic and load the id-based rules from a generated page, otherwise adding ‘validateX’ methods where ‘X’ is the id of the element you want to do further validation on could suffice.
I heard about Konfabulator a few years ago when it was super young (like 3.5 years ago or so) through a friend of mine. I thought it was cool, but (as I recall) it only worked on a mac (no windows version). Well, now that I’m getting OS X 10.4, and it has Dashboard (some call it a blatant rip off of Konfabulator), I thought I’d see if there was a windows version of konfabulator…there is.
So I installed it and grabbed some pretty cool widgets and am liking it quite a bit. My only gripe is that there is no ‘hide all widgets’ hot-key. I can, however make all the widgets only visible in the ‘Konspose’ mode by hitting ‘F8′ (very similar to what dashboard and expose does…creates a semi-transparent glass-pane over all your windows and displays all the widgets). The widgets I have are:
There is another one called mini FTP that I’ll install and use at home (at work now) its pretty cool…you configure it with the ftp info and the widget is just a simple little icon that you drag files/folders to and it will ftp them to the server.
I really think it would be neat to have some developer-related widgets that would integrate in with your development tools…making a kind of developer dashboard. I can see widgets like a build manager, a cvs tracker, todo lists, test manager, deployment center, site/app monitors, log readers, doc reference/searches, others…
Tinkering with some ideas/thoughts on the shadow-like system I want to put together…here is what I had jotted down in a text doc:
Core - very simple (spring bean factory-like)
Modules - Totally Pluggable. Self-Installing/Uninstalling/Updating.
- plugin 3rd party (wordpress) modules (and hence the services
provided by them…as well as 3rd party
core-like modules (persistence? security).
Module categories?
No programming language requirement for modules?
Services (modules can publish services)
Event Pub/Sub - can subscribe to an recieve messages
Simple to configure/layout/understand
Support for workflows
Portal features
View Template features
View Theme features
Versioning Features/system
Ease of Module interaction
i18n
Scale up/down
pluggable security w/declarative and programmatic support
Self-Documenting (meta?)
Good Defaults (runs out of box).
Web-Based installer (wizard-like) runs on simple core with simple web install module
Stand-Alone installer (with own internal web server)
Easy to test (test-harness module?)
Extreme Focus on Core for R1
- IoC Container
- configured via properties files or xml files
- module manager
- install/update/remove/query modules
Install:
d/l zip (tar.gz)
unpack
modify install.config (db info)
open browser to /install
(at this point, the config has been verified/validated and the module manager has
been installed & self-updated)
choose install mode (minimal, bundled, custom, all) & whether new versions
should be installed if found
(if bundled) ask for purpose of site (blog, community portal, ecommerce)
(if custom)choose modules to install (possibly also have indicators for which
modules are part of which bundles)
For modules to be installed, choose defaults/manual config options for each/all
configure modules (if chosen to).
On Versioning.
Modules are versioned. At the point a module is being upgraded, the resident
data for the module will be modified (if necessary) to conform to changes required
in the version.
Data may or may not be versioned as well (module and data specific).
Data associated with a module (whether or not the data itself is
versioned) should know what version of the module its current state is set for
(column in table? flag exported data? point of export.)
Modules can express dependencies on other modules including version (”after”,
“before”, “only”).
Modules can indicate they provide a common service and the version of the
service that they adhere to and the completeness of the implementation
(what operations are/are not supported).
can versioning be totally aop-like?
create module (document maker)
defines tables (w/o version stuff)
installs module.
enables versioning for the module
tables are modified (renamed & version columns created & then views?) to have
version info. Modules should provide a dao to ‘blindly’ map from a rs (or map)
to the value object (or subclasses thereof)…or just provide it in a mapping
(like ibatis?):
name = DOC_NAME
desc = DOC_DESC
Should versioning support need to be coded into the modules…maybe.
modules would have a versioning config of some sort to indicate what
operations support versioning.
Would be nice if other interfaces could interact with system (e.g. a
remote swing admin console)…perhaps just via exposing some services
and method over web service. brings up some security questions.
Indexing/Search as a core feature
- modules should provide a mechanism for accessing the data that they
store (for external indexing)…along with a mechanism by which that
data can be re-accessed.
I really quite liked this 1986 speech by Richard Hamming:
http://www.cs.virginia.edu/~robins/YouAndYourResearch.html
…as far as I know, each of you has one life to live. Even if you believe in reincarnation it doesn’t do you any good from one life to the next! Why shouldn’t you do significant things in this one life, however you define significant?
Also:
What Bode was saying was this: “Knowledge and productivity are like compound interest.” Given two people of approximately the same ability and one person who works ten percent more than the other, the latter will more than twice outproduce the former. The more you know, the more you learn; the more you learn, the more you can do; the more you can do, the more the opportunity - it is very much like compound interest.
I’m planning on giving a couple of presentations on the Spring Framework to a group of consultants. I’ll probably be posting my “notes” (outline, etc) for them here. My first will just be an intro to spring…along the lines of the following rough outline:
Lots of stuff to hit…but it will be fairly brief on each piece. It should be followed by more advanced presentations that will dig deeper into the details. I may even walk-through Spring’s Petstore…kind of a ‘putting it all together’ presentation.
I should probably read Pro Spring before giving the talks though…just so I don’t miss something.