<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7339701402270520951</id><updated>2012-02-16T17:55:31.512-08:00</updated><category term='logging'/><category term='GWT'/><category term='charity'/><category term='anti-pattern'/><category term='persistence'/><category term='case management system'/><category term='ORM'/><category term='Wicket'/><category term='RDBMS'/><category term='eclipse'/><category term='Java'/><category term='Legacy'/><category term='Ajax'/><category term='database'/><title type='text'>salk31</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://salk31.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7339701402270520951/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://salk31.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>salk31</name><uri>http://www.blogger.com/profile/08694533018262817563</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>15</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7339701402270520951.post-2262017869942141405</id><published>2011-04-28T01:04:00.000-07:00</published><updated>2011-04-28T01:05:39.556-07:00</updated><title type='text'>Brutally simple deployment has advantages</title><content type='html'>&lt;span class="Apple-style-span" style="color: rgb(102, 102, 102); font-family: Palatino, Georgia, Baskerville, serif; font-size: 14px; line-height: 18px; "&gt;"one of the main reasons why operations stop and restart processes in applying a managed change – to be sure the process can indeed be restarted"&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(102, 102, 102); font-family: Palatino, Georgia, Baskerville, serif; font-size: 14px; line-height: 18px; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(102, 102, 102); font-family: Palatino, Georgia, Baskerville, serif; font-size: 14px; line-height: 18px; "&gt;&lt;a href="http://williamlouth.wordpress.com/2009/07/03/jazoon-%E2%80%9809-the-conference/"&gt;http://williamlouth.wordpress.com/2009/07/03/jazoon-%E2%80%9809-the-conference/&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7339701402270520951-2262017869942141405?l=salk31.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://salk31.blogspot.com/feeds/2262017869942141405/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://salk31.blogspot.com/2011/04/brutally-simple-deployment-has.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7339701402270520951/posts/default/2262017869942141405'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7339701402270520951/posts/default/2262017869942141405'/><link rel='alternate' type='text/html' href='http://salk31.blogspot.com/2011/04/brutally-simple-deployment-has.html' title='Brutally simple deployment has advantages'/><author><name>salk31</name><uri>http://www.blogger.com/profile/06416618492555845473</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7339701402270520951.post-1729934577423763656</id><published>2011-03-11T01:21:00.000-08:00</published><updated>2011-03-11T01:22:31.452-08:00</updated><title type='text'>Eclipse CTRL+SHIFT+t</title><content type='html'>On a class name will show you which "file" that class is coming from. Thanks to Virender!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7339701402270520951-1729934577423763656?l=salk31.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://salk31.blogspot.com/feeds/1729934577423763656/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://salk31.blogspot.com/2011/03/eclipse-ctrlshiftt.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7339701402270520951/posts/default/1729934577423763656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7339701402270520951/posts/default/1729934577423763656'/><link rel='alternate' type='text/html' href='http://salk31.blogspot.com/2011/03/eclipse-ctrlshiftt.html' title='Eclipse CTRL+SHIFT+t'/><author><name>salk31</name><uri>http://www.blogger.com/profile/08694533018262817563</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7339701402270520951.post-8433471359606021986</id><published>2011-01-27T03:44:00.001-08:00</published><updated>2011-01-27T03:54:02.801-08:00</updated><title type='text'>Common management diseases</title><content type='html'>Noticed these three recently:&lt;div&gt;&lt;ul&gt;&lt;li&gt;Incapacitated by worrying about long distant problems - this sort of manager when asked a question will fail to solve the simple problem we have now because of pondering how it would be solved if we were 100 times bigger than we are now. So when asked who should have the final word on certain issues the manager responds with a lecture on the problems of organisations like IBM and Google managing architectural decisions... There are only ten of us!?&lt;/li&gt;&lt;li&gt;Bored by their real job - this manager will neglect the work they are meant to be getting on with and put huge amounts of energy into a daily series of fads.&lt;/li&gt;&lt;li&gt;Blinded by glitter - a manager that doesn't real know what is going on is totally blinded by the buzzword compliant and the "bored by their real job" people. The plain speaking guy that is not constantly coming up with wiz bang projects is of no interest and the manager can't spot who is actually doing useful work.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Yep. I'm bitter.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7339701402270520951-8433471359606021986?l=salk31.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://salk31.blogspot.com/feeds/8433471359606021986/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://salk31.blogspot.com/2011/01/common-management-diseases.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7339701402270520951/posts/default/8433471359606021986'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7339701402270520951/posts/default/8433471359606021986'/><link rel='alternate' type='text/html' href='http://salk31.blogspot.com/2011/01/common-management-diseases.html' title='Common management diseases'/><author><name>salk31</name><uri>http://www.blogger.com/profile/08694533018262817563</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7339701402270520951.post-1495206190800060181</id><published>2010-12-15T03:19:00.000-08:00</published><updated>2010-12-15T03:23:07.284-08:00</updated><title type='text'>Advantage to meta data not hanging off RDBMS meta data</title><content type='html'>Is still denormalisation but one big advantage of not just augmenting the database meta data is that you can describe types without needing actual database tables. It is still re-inventing the wheel but it is hard to sell having lots of tables in the database even though the database is very able to cope. Tooling may struggle opening 1000s of tables in the UI.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;e.g. You want to describe a model and user interface but never want to collect the data in a table. So you want the model definition but no need for the actual table (if not using the meta data).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I think I'd still vote for using real tables but would need to test that all parts of the database and tooling can cope.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7339701402270520951-1495206190800060181?l=salk31.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://salk31.blogspot.com/feeds/1495206190800060181/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://salk31.blogspot.com/2010/12/advantage-to-meta-data-not-hanging-off.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7339701402270520951/posts/default/1495206190800060181'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7339701402270520951/posts/default/1495206190800060181'/><link rel='alternate' type='text/html' href='http://salk31.blogspot.com/2010/12/advantage-to-meta-data-not-hanging-off.html' title='Advantage to meta data not hanging off RDBMS meta data'/><author><name>salk31</name><uri>http://www.blogger.com/profile/08694533018262817563</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7339701402270520951.post-5512208116676765239</id><published>2010-07-12T06:09:00.000-07:00</published><updated>2010-07-12T06:15:06.706-07:00</updated><title type='text'>Project management notes to self</title><content type='html'>&lt;ol&gt;&lt;li&gt;Panic early. Reduce features and complexity early, you can always add them later. Better than having to drop them at the last minute.&lt;/li&gt;&lt;li&gt;Clear roles and responsibilities - obvious but doesn't always happen. Who do I have to ask to get X approved...&lt;/li&gt;&lt;li&gt;Before you say no to an idea make sure you have an alternative to propose - &lt;/li&gt;&lt;li&gt;Don't fiddle with time estimates just because they are inconvenient.&lt;/li&gt;&lt;li&gt;Don't isolate yourself from critical voices.&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7339701402270520951-5512208116676765239?l=salk31.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://salk31.blogspot.com/feeds/5512208116676765239/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://salk31.blogspot.com/2010/07/project-management-notes-to-self.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7339701402270520951/posts/default/5512208116676765239'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7339701402270520951/posts/default/5512208116676765239'/><link rel='alternate' type='text/html' href='http://salk31.blogspot.com/2010/07/project-management-notes-to-self.html' title='Project management notes to self'/><author><name>salk31</name><uri>http://www.blogger.com/profile/08694533018262817563</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7339701402270520951.post-8837872026225072008</id><published>2010-06-08T08:51:00.000-07:00</published><updated>2010-06-08T08:52:26.165-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GWT'/><title type='text'>Google Web Toolkit Blog: Look ma, no plugin!</title><content type='html'>&lt;span class="Apple-style-span"   style="  border-collapse: collapse; color: rgb(51, 51, 51); line-height: 18px; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family:'trebuchet ms', verdana, arial, sans-serif;font-size:13px;"&gt;Still not sure if a hoax.&lt;br /&gt;&lt;br /&gt;Many months on I'm still not sure if &lt;a href="http://googlewebtoolkit.blogspot.com/2010/04/look-ma-no-plugin.html" style="font-weight: bold; color: rgb(51, 102, 204); "&gt;GWT Quake&lt;/a&gt; is real. Looks like too much of a pig to get running to find out for real.Already my pointy haired boss has got the wrong end of the stick and thinks GWT is all about making a website look pretty.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7339701402270520951-8837872026225072008?l=salk31.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://salk31.blogspot.com/feeds/8837872026225072008/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://salk31.blogspot.com/2010/06/google-web-toolkit-blog-look-ma-no.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7339701402270520951/posts/default/8837872026225072008'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7339701402270520951/posts/default/8837872026225072008'/><link rel='alternate' type='text/html' href='http://salk31.blogspot.com/2010/06/google-web-toolkit-blog-look-ma-no.html' title='Google Web Toolkit Blog: Look ma, no plugin!'/><author><name>salk31</name><uri>http://www.blogger.com/profile/08694533018262817563</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7339701402270520951.post-3080333895872085135</id><published>2009-12-17T13:06:00.001-08:00</published><updated>2009-12-25T02:11:07.380-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RDBMS'/><category scheme='http://www.blogger.com/atom/ns#' term='ORM'/><title type='text'>Composition for happy ORM?</title><content type='html'>&lt;span style="font-size:0;"&gt;&lt;span style="font-size:0;"&gt;None of the polymorphic mapping strategies for ORM seem to work very well. &lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Table per class hierarchy - Is too evil to mention.&lt;/li&gt;&lt;li&gt;Table per class - Very similar to composition?&lt;/li&gt;&lt;li&gt;Table per concrete class - Makes queries and FKs painful.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Composition seems to map nicely to relational databases. Also in the real world composition can model the world nicely.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7339701402270520951-3080333895872085135?l=salk31.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://salk31.blogspot.com/feeds/3080333895872085135/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://salk31.blogspot.com/2009/12/composition-for-happy-orm.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7339701402270520951/posts/default/3080333895872085135'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7339701402270520951/posts/default/3080333895872085135'/><link rel='alternate' type='text/html' href='http://salk31.blogspot.com/2009/12/composition-for-happy-orm.html' title='Composition for happy ORM?'/><author><name>salk31</name><uri>http://www.blogger.com/profile/08694533018262817563</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7339701402270520951.post-214142748366312540</id><published>2009-10-07T02:46:00.000-07:00</published><updated>2009-10-07T02:48:13.848-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='database'/><title type='text'>A database is for life not just christmas</title><content type='html'>If your wiz bang framework requires the database to be in a particular style (random fields, denormalisation) then dump your framework before you contaminate your database. If your design has any merit the database should be around much longer and have different clients that don't want your rubbish in their face.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7339701402270520951-214142748366312540?l=salk31.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://salk31.blogspot.com/feeds/214142748366312540/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://salk31.blogspot.com/2009/10/database-is-for-life-not-just-christmas.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7339701402270520951/posts/default/214142748366312540'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7339701402270520951/posts/default/214142748366312540'/><link rel='alternate' type='text/html' href='http://salk31.blogspot.com/2009/10/database-is-for-life-not-just-christmas.html' title='A database is for life not just christmas'/><author><name>salk31</name><uri>http://www.blogger.com/profile/08694533018262817563</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7339701402270520951.post-717718564116652237</id><published>2009-09-03T06:47:00.000-07:00</published><updated>2009-09-03T07:05:22.569-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='charity'/><category scheme='http://www.blogger.com/atom/ns#' term='case management system'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><title type='text'>How can software be so bad?</title><content type='html'>Currently working on a database system that costs customers serious amounts of cash per year and big money for configuration. It does pretty much what the &lt;a href="http://redabout.com/"&gt;charity case management system&lt;/a&gt; database we wrote but where as that takes about a week to produce a 250 field database this system takes months to do something vastly simpler. It is also slow and near impossible to use. Some of it can be put down to short timescales and people without the right skill sets but the bulk of it seems to be just lack of a tidy mind. Muddling different concerns and concepts. Ah well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7339701402270520951-717718564116652237?l=salk31.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://salk31.blogspot.com/feeds/717718564116652237/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://salk31.blogspot.com/2009/09/how-can-software-be-so-bad.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7339701402270520951/posts/default/717718564116652237'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7339701402270520951/posts/default/717718564116652237'/><link rel='alternate' type='text/html' href='http://salk31.blogspot.com/2009/09/how-can-software-be-so-bad.html' title='How can software be so bad?'/><author><name>salk31</name><uri>http://www.blogger.com/profile/08694533018262817563</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7339701402270520951.post-7333739947556377818</id><published>2009-08-28T05:31:00.001-07:00</published><updated>2009-09-03T07:05:49.203-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='persistence'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><title type='text'>database as persistence bucket</title><content type='html'>RDBMS are rubbish as persistence stores for OO systems so why is it the norm to use them? It leads to sensible people using them as just a persistence bucket. Using them as the point of integration is seen as being very old fashioned. Maybe due to their age rather than elegance the tools alone make it very attractive.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7339701402270520951-7333739947556377818?l=salk31.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://salk31.blogspot.com/feeds/7333739947556377818/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://salk31.blogspot.com/2009/08/database-as-persistence-bucket.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7339701402270520951/posts/default/7333739947556377818'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7339701402270520951/posts/default/7333739947556377818'/><link rel='alternate' type='text/html' href='http://salk31.blogspot.com/2009/08/database-as-persistence-bucket.html' title='database as persistence bucket'/><author><name>salk31</name><uri>http://www.blogger.com/profile/08694533018262817563</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7339701402270520951.post-8965967638647527747</id><published>2009-08-25T08:20:00.001-07:00</published><updated>2009-08-28T05:34:41.890-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Legacy'/><category scheme='http://www.blogger.com/atom/ns#' term='RDBMS'/><title type='text'>Data legacy</title><content type='html'>Nice things like automated testing means coders can relax when it comes to code structure and actual implementation but definitely does not mean we can relax about data legacy. External APIs, even for people, build up a very hard to change legacy. Even more often forgotten is the rubbish that sometimes gets put into customer databases in a hurry to get a new version out. &lt;div&gt;Seems to me it is worth being very anal and putting a lot of thought into everything that will build up legacy. Public APIs, UIs, datastores...&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7339701402270520951-8965967638647527747?l=salk31.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://salk31.blogspot.com/feeds/8965967638647527747/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://salk31.blogspot.com/2009/08/data-legacy.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7339701402270520951/posts/default/8965967638647527747'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7339701402270520951/posts/default/8965967638647527747'/><link rel='alternate' type='text/html' href='http://salk31.blogspot.com/2009/08/data-legacy.html' title='Data legacy'/><author><name>salk31</name><uri>http://www.blogger.com/profile/08694533018262817563</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7339701402270520951.post-504326084255483924</id><published>2009-07-16T05:05:00.000-07:00</published><updated>2009-07-16T05:56:17.946-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><title type='text'>Eclipse and CTRL-t</title><content type='html'>To remind myself in the future as much as anything. In interface heavy code bases like EJB3 apps CTRL-t in eclipse is very handy for finding the actual code you want to look at rather than the interface. btw I really need to get out more given how ugly I find "public" keyword on interface methods.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7339701402270520951-504326084255483924?l=salk31.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://salk31.blogspot.com/feeds/504326084255483924/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://salk31.blogspot.com/2009/07/eclipse-and-ctrl-g.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7339701402270520951/posts/default/504326084255483924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7339701402270520951/posts/default/504326084255483924'/><link rel='alternate' type='text/html' href='http://salk31.blogspot.com/2009/07/eclipse-and-ctrl-g.html' title='Eclipse and CTRL-t'/><author><name>salk31</name><uri>http://www.blogger.com/profile/08694533018262817563</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7339701402270520951.post-1606334521352765945</id><published>2009-07-13T08:45:00.000-07:00</published><updated>2009-07-13T08:47:55.649-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='logging'/><title type='text'>Logging hell</title><content type='html'>How did we manage to make such a mess of logging in Java? Yet another project that has been all the way through log4j, commons-logging (the worst), slf4j and managed to leave traces of all of legacy behind. Need to be brighter than me to work out where the logs are going. slf4j is miles better than commons-logging but don't think I've ever actually needed the abstraction.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7339701402270520951-1606334521352765945?l=salk31.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://salk31.blogspot.com/feeds/1606334521352765945/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://salk31.blogspot.com/2009/07/logging-hell.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7339701402270520951/posts/default/1606334521352765945'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7339701402270520951/posts/default/1606334521352765945'/><link rel='alternate' type='text/html' href='http://salk31.blogspot.com/2009/07/logging-hell.html' title='Logging hell'/><author><name>salk31</name><uri>http://www.blogger.com/profile/08694533018262817563</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7339701402270520951.post-7523187080628728172</id><published>2009-07-13T06:51:00.003-07:00</published><updated>2009-07-13T08:48:33.264-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GWT'/><category scheme='http://www.blogger.com/atom/ns#' term='Wicket'/><category scheme='http://www.blogger.com/atom/ns#' term='Ajax'/><title type='text'>Wicket Ajax</title><content type='html'>&lt;span class="Apple-style-span"   style=" color: rgb(85, 85, 85);  font-family:arial;font-size:13px;"&gt;&lt;p style="margin-top: 0px; "&gt;(Particular comparison with GWT)&lt;/p&gt;&lt;ul&gt;&lt;li&gt;pro - very good for HTML only&lt;/li&gt;&lt;li&gt;pro - good security - e.g. just as Java removed pointer arithmetic Wicket doesn't expose property paths, ids etc by default&lt;/li&gt;&lt;li&gt;con - request synchronized on Session so Sjax&lt;/li&gt;&lt;li&gt;con - very heavy server side requirements&lt;/li&gt;&lt;li&gt;con - very complex code base&lt;/li&gt;&lt;li&gt;con - ugly API compared to Swing etc&lt;/li&gt;&lt;li&gt;con - every click goes to server (unlike GWT)&lt;/li&gt;&lt;li&gt;pro - very helpful community&lt;/li&gt;&lt;li&gt;con - requirement for ids is more annoying than useful&lt;/li&gt;&lt;li&gt;con - dual HTML and component tree is annoying&lt;/li&gt;&lt;li&gt;con - components must be serialised! Real pain.&lt;/li&gt;&lt;li&gt;con - if server state is lost can't just get user to login again as state of UI is on the server.&lt;/li&gt;&lt;li&gt;con - more care needed as action runs in same VM as page state (e.g. ensure tx does not fail before updating page state).&lt;/li&gt;&lt;/ul&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7339701402270520951-7523187080628728172?l=salk31.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://salk31.blogspot.com/feeds/7523187080628728172/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://salk31.blogspot.com/2009/07/wicket-ajax.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7339701402270520951/posts/default/7523187080628728172'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7339701402270520951/posts/default/7523187080628728172'/><link rel='alternate' type='text/html' href='http://salk31.blogspot.com/2009/07/wicket-ajax.html' title='Wicket Ajax'/><author><name>salk31</name><uri>http://www.blogger.com/profile/08694533018262817563</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7339701402270520951.post-8880926292034409033</id><published>2009-07-13T06:51:00.001-07:00</published><updated>2009-09-03T07:06:07.584-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='anti-pattern'/><category scheme='http://www.blogger.com/atom/ns#' term='RDBMS'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><title type='text'>Value anti-pattern</title><content type='html'>&lt;span class="Apple-style-span"   style=" color: rgb(85, 85, 85);  font-family:arial;font-size:13px;"&gt;It seems painfully common that software engineers decide to build a database on top of a relational database. Your lovely RDBMS can model columns, relations (duh), datatypes in a wonderful way and do all sort of clever optimisations when you query this data. When the wunderkind decides to have a table with columns name and value, to stuff any old rubbish in, they throw away all this good stuff and invent a very broken wheel on top of a very good wheel. Alfresco CMS manages to make very simple things very complicated and slow by using this pattern.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7339701402270520951-8880926292034409033?l=salk31.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://salk31.blogspot.com/feeds/8880926292034409033/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://salk31.blogspot.com/2009/07/value-anti-pattern.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7339701402270520951/posts/default/8880926292034409033'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7339701402270520951/posts/default/8880926292034409033'/><link rel='alternate' type='text/html' href='http://salk31.blogspot.com/2009/07/value-anti-pattern.html' title='Value anti-pattern'/><author><name>salk31</name><uri>http://www.blogger.com/profile/08694533018262817563</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
