Archive for August, 2008
Interesting math and the impact of a 7% growth rate
Aug 25th
I always mean to school myself to be better with math, and good presentations like this make me want to do that.
I am constantly sidetracked on my learning paths by different things (leadership, patterns, another language, ….).
I’ll at the very least try to track down these good presentations and link to them. That 7% growth rate was something else. I knew about the grains of rice story, but the rest of the presentation brought it all together really well.
Yes, foreign keys are necessary
Aug 22nd
Whatever the reason, by putting the data validation as close as possible to the data munging, you make it harder to circumvent.
I’m a stickler for clean data. A while ago I came across an interview with one of the senior EBay architects and he mentioned that they don’t use them. And it makes absolute sense for them.
In most of cases, there is no need to bypass foreign keys in the name of performance. Mr. Ted, said it best:
You’re going to get, at most, 1,000 people on your app, and maybe 1% of them will be 7-day active. Scalability is not your problem, getting people to give a shit is.
Hibernate session load vs. get gotcha
Aug 21st
The Hibernate documentation (3.2) for the session.get() and session.load() methods state:
load Returns: the persistent instance or proxy
get Returns: a persistent instance or nul
Notice “or proxy” in the load documentation. This last part took me an hour to figure out while debugging an application. In my case, for whatever reason (which I haven’t figured out), the load method was returning a proxy instead of an full instance, resulting in a state exception (closed session). For some unknown reason, this was only happening while running inside the web container and access the method through a transactional service. Test cases ran fine.
So changing my dao method from:
return (User) getSession().load(User.class, id)
to
return (User) getSession().get(User.class, id);
fixed everything.
links for 2008-08-17
Aug 17th
Delicious 2.0 impressions
Aug 15th
I’ve been a slow adopter of Delicious. But V2, combined with the new habit of publishing thoughts through WordPress – commonly called blogging – has pushed me to use it much more:
- Useful Javascript snippet which delicious offers to insert a link roll on WordPress.
- Delicious can post daily summaries through xml-rpc *
- The Firefox add-on is awesome. With the death of Google Sync (which really wasn’t great anyway), I’ve found a great alternative to centralizing my bookmarks.
* I can’t get this to work right now, but I’m obviously doing something wrong because it’s working for others. [08/15/08 02:30:01 PM -0700] Sorry, you are not allowed to publish posts on this blog.” When I figure it out, I’ll let you know.
Note: No, I don’t work for Yahoo. I just really like the new version.
About Continuous Partial Attention
Aug 13th
I stumbled on this article through this Oreilly Radar entry. I’d say that a lot of people “suffering” from this already know it implicitly, but she words it efficiently.
Continuous partial attention describes how many of us use our attention today. It is different from multi-tasking. The two are differentiated by the impulse that motivates them. When we multi-task, we are motivated by a desire to be more productive and more efficient. We’re often doing things that are automatic, that require very little cognitive processing. We give the same priority to much of what we do when we multi-task — we file and copy papers, talk on the phone, eat lunch — we get as many things done at one time as we possibly can in order to make more time for ourselves and in order to be more efficient and more productive.
To pay continuous partial attention is to pay partial attention — CONTINUOUSLY. It is motivated by a desire to be a LIVE node on the network. Another way of saying this is that we want to connect and be connected. We want to effectively scan for opportunity and optimize for the best opportunities, activities, and contacts, in any given moment. To be busy, to be connected, is to be alive, to be recognized, and to matter.
What’s difficult is getting this through to a boss, colleague or friend who also is bogged down by it. As a programmer, it’s important that I be extra careful. I tend to easily sink into this pattern to the detriment of my work (and family).
(I figure there is possibly an RSS feed somewhere with all of Linda’s posts, but still, I created a Yahoo Pipes feed of the entries posted on the Huffington Post under her name. The pipe is accessible here)
Jackrabbit first steps – Getting the bunny hop to work
Aug 12th
I just got hired by a company that’s into content. Specifically, they’re building a product/platform on top of JSR-170. Should be pretty exciting to learn the new domain …
While I wait to start, I’m getting ready by reading up and trying out a few things so I can jump in right away.
Initial setup wasn’t as easy as I’d like … what can I say, I’m lazy and I like nicely packaged downloads. Jackrabbit doesn’t offer that except through maven, and I’m still not on board with maven, so I had to download the 56 dependencies manually (brand new home computer being used for the first time in dev – so I have none of the usual suspects which a dev machine would have; lucene, commons-x, …).
(Interestingly, this is the first project I see which uses the sl4j library. I’ve always been lazy and stuck to log4j cause it “just works”, so never bothered. This might be a good occasion to indirectly see it at work.)
Seems, up to now (yes, by now, I’ve done more than just the first hop), that this is a great abstraction for any content platform … wish I’d known before. A failed project in my current company was greatly due to a data model deemed complicated by the PHP guys … (yes, ellipsis denotes an unfinished or unexpressed thought or opinion)
Unmentioned SCM benefit
Aug 14th
Posted by mikem in programming
No comments
Cleaner code = more maintainable code
I’m a notorious code deleter. If I see something that doesn’t seem to be used, I won’t hesitate a second to delete it because I know that code is easily retrieved from SVN. The name of the game is maintainability. I don’t care for code that might be useful. If it’s not useful now, it’s in the way of me understanding what you’re tying to tell the computer.
Speaking of which, here’s a quick tip for the young ones. Never comment a block of code and check it into your SCM. This is a sign of weakness and uncertainty. If you’re checking something into a production branch, you better be sure it works!
This code committed to SVN tells me that the committer wasn’t sure what he was doing.
Fail