tag:blogger.com,1999:blog-65721252024-02-08T12:15:37.340+02:00Tim's BlogThe edge of my mind.Anonymoushttp://www.blogger.com/profile/02474958549024992378noreply@blogger.comBlogger102125tag:blogger.com,1999:blog-6572125.post-85534050251098614992012-11-28T22:14:00.004+02:002012-11-28T22:14:41.332+02:00Service Architecture ToolsA few weeks ago, I found some useful tools. Shortly thereafter, I lost my bookmarks. This is more of a "note-to-self" listing a couple of the interesting tools out there relating to certain service oriented technologies. I was looking for API Axle but I had forgotten the name and forgotten how I found it.<div>
<a href="http://www.blogger.com/blogger.g?blogID=6572125"></a>
<blockquote>
</blockquote>
<div>
<br /></div>
<div>
<b><u>API Proxy/Manager</u></b></div>
<div>
<ul>
<li>http://apiaxle.com/</li>
<li>http://wso2.com/products/api-manager/</li>
<li>http://www.soa.com/api/</li>
<li>http://www.aepona.com/</li>
<li>http://apiphany.com</li>
</ul>
<div>
<b><u>Reverse Proxy</u></b></div>
<div>
<ul>
<li>http://nginx.org</li>
</ul>
</div>
<div>
<div>
<b><u>Web Cache</u></b></div>
<ul>
<li>https://www.varnish-cache.org/</li>
</ul>
<div>
<b><u>SOA Suite</u></b></div>
</div>
<div>
<ul>
<li>http://wso2.com/ - soa suite</li>
<li>http://www.soa.com/api</li>
</ul>
<div>
<b><u>Elastic Virtualisation</u></b></div>
<div>
<ul>
<li>https://github.com/Netflix/eureka</li>
</ul>
</div>
<div>
<b><u>API Development Management</u></b></div>
<ul>
<li>http://www.mashery.com</li>
<li>http://apigee.com</li>
<li>http://apiary.io/</li>
<li>http://wso2.com/</li>
<li>http://www.soa.com/</li>
</ul>
<div>
<u><b>API Catalogue</b></u></div>
</div>
<div>
<ul>
<li>https://www.mashape.com/</li>
</ul>
<div>
<u><b>XML Schema Catalogue</b></u></div>
<ul>
<li>http://schemas.liquid-technologies.com/</li>
</ul>
</div>
<div>
<b><u>General Description</u></b></div>
<div>
<ul>
<li>http://apievangelist.com/2012/06/15/api-service-provider-roundup-for-2012/ - great roundup</li>
</ul>
<div>
<b><u>Unsorted</u></b></div>
</div>
<ul>
<li>http://www.layer7tech.com</li>
<li>http://www.3scale.net/</li>
<li>http://www.vordel.com/</li>
<li>http://www.socrata.com/</li>
<li>http://www.webservius.com/</li>
<li>http://www.emergentone.com/</li>
<li>http://www.nevatech.com/</li>
</ul>
</div>
</div>
Anonymoushttp://www.blogger.com/profile/02474958549024992378noreply@blogger.com0tag:blogger.com,1999:blog-6572125.post-26756003643205059362012-09-04T23:28:00.003+02:002012-09-04T23:28:35.513+02:00Arguments<a href="http://www.blogger.com/blogger.g?blogID=6572125"></a>
<blockquote>
</blockquote>
<div>
I find the following quote to so simply describe my problem with humanity's arguments and self delusions. It is applicable in almost every argument from family, political, and religious arguments, to our daily view on life and self justification.</div>
<blockquote class="tr_bq">
<span style="background-color: white; color: #171717; font-family: 'Lucida Grande', Helvetica, Arial, sans-serif; font-size: 13px; line-height: 20px;">"I have become somewhat obsessed with it," he said. Even if the interactions don't usually go beyond two emails, he never tires of hearing the responses. "It's the depths of their commitment that's so amazing, that they will go to such mental contortions to try to think of a way to preserve their beliefs in spite of evidence to the contrary."</span></blockquote>
<a href="http://www.theawl.com/2012/09/nasa-apocalypse-expert">http://www.theawl.com/2012/09/nasa-apocalypse-expert</a><br />
<br />
If only people had the capability to accept the facts, admit that they are wrong, move on, and be positive.Anonymoushttp://www.blogger.com/profile/02474958549024992378noreply@blogger.com1tag:blogger.com,1999:blog-6572125.post-63738763661439572942012-06-02T12:30:00.001+02:002012-06-02T12:33:05.256+02:00Blackberry Playbook<br />
<b id="internal-source-marker_0.6851265274453908" style="font-weight: normal;"><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap;">I recently purchase a Blackberry Playbook. This article provides my critique of the playbook in contrast with my use of the iPad 2.</span><br /><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap;">I have owned an iPad 2 for approximately one year and it has changed the way I live. My web browsing at home is exclusively using the ipad and i have two sets of airplay speakers. Needless to say, iTunes really shines when you use it in conjunction with airplay. I can wake up and change my music playlist without leaving my bed. Coupled with a morning read of my news sites, and a game or two on its large display, I am comfortable that the iPad has set a standard that will not easily be beaten in the home. </span><br /><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap;">This domination at the home is not so great as compared in the office. My expectations in the office are clear. Any device must compete with pen and paper, a physical notebook for meetings, a laptop for presentations, and blackberry email for consolidated mobile email. Security and corporate manageability is furthermore critical. Battery life of such a device must be at least 10 hours and should hold up to a full day of note taking in a training course.</span><br /><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap;">I am already completely convinced in DRM and device security proposition proposed by the iPad. Android and its security landscape does not look anywhere near as convincing as iOs and suspect that, in the next two years, we will see Android releases whose focus is purely focused on corporate security.</span><br /><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap;">Blackberry Playbook offers the promise of such a device but how does it truly stand up to corporate use?</span><br /><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-size: 16px; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;">Advantages:</span><br /><span style="font-size: 16px; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap;">1. I never have to connect to WIFInetwork at another corporate. My Internet browsing and email always works successfully due to tethering on my BB. Connecting to WIFI networks is trivial but not necessary.</span><br /><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap;">2. I am paying for a single contract with my mobile operator and usage is free due to BIS. I do not want another 3G device and another monthly bill to receive calls and messages. It uses a little more more battery life. The more energy efficient bluetooth 3 or 4 will make this work even more effectively as it promises longer battery life. My BB9900 did drain faster than usual during a full day of training, and by extension, browsing using my playbook. This is a minor problem.</span><br /><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap;">3. Its size is perfect. My iPad 2 is too large and I worry about dropping it. I do not like protector coverings. Without my coat, it is still possible to put my playbook into my pant pocket so that my hands are free. It does not look good but sometimes you need both hands and don’t have a table nearby.</span><br /><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap;">4. It feels much more rugged in comparison to my iPad 2.</span><br /><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap;">5. Email is great. See suggestion 2.</span><br /><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap;">4. The multitasking is much more effective during meetings. This is a very subtle advantage.</span><br /><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap;">5. This may sound absurd but i can comfortably throw my playbook onto my bed or couch without me perceiving it breaking. An iPad feels too large and fragile to throw.</span><br /><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap;">6. The menu system feels much more organised than the iPad.</span><br /><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-size: 16px; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;">Disadvantages:</span><br /><span style="font-size: 16px; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap;">1. Poor application ecosystem. At first, I expected this to be much more of an issue but it turns out to be less important because your biggest competition is actually pen and paper. See suggestion 1. It is actually quite an absurd disadvantage as the playbook has arguably the broadest application framework for corporates. It supports Adobe Air, Flash, Html 5, Native C++ applications, simplified Android apps, and potentially (it may get killed) a java runtime. What impresses me is the Air application framework, as it introduces a potentially rich and mature application framework and development environment giving corporations the options to leverage their skills to develop.</span><br /><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap;">2. The password lock only has a 10 minute option.... I'd like a quicker lock timer.</span><br /><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap;">3. Exchange corporate address book is needed for both BB and for playbook. Windows Phone is going to have this function and its gonna be useful. I don't use BES so maybe this has already been solves.</span><br /><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap;">4. The size of the iPad keyboard is much more effective for typing long emails.. You tend to use your thumbs more for typing than expected. I have, however, written this article on the playbook and don't think that it is too much of a problem. It is much easier to touch type on the iPad.</span><br /><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap;">5. I had to turn off the predictive text as it was getting annoying. This is a minor cosmetic issue.</span><br /><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap;">6. Text selection is not as easy on your BB. Minor cosmetic issue and i probably need to read the help.</span><br /><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap;">7. When my playbook is charging next to my bed, and I turn it upside down so that the light doesn't disturb me, I don't believe it goes into locked mode after 10 minutes.</span><br /><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-size: 16px; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;">Suggestions:</span><br /><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap;"> </span><br /><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap;">1. The biggest competitor is pen and paper. The notes app that comes with BB is ridiculously simple and almost useless in comparison to the Paper and Evernote applications. This is a shocking omission.</span><br /><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap;">2. Mail and tethered mail should optionally be merged or linked. I have a gmail account linked to my playbook and to my phone. If both are configured independently, then I do not want to see an extra mailbox in BB bridge.</span><br /><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap;">3. A Micro-SD card reader would be nice to allow photo management and upload to websites while travelling. I do not like to log into my email accounts while travelling because of keyloggers/trojans. This would make me much more comfortable.</span><br /><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-size: 16px; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;">General Observations:</span><br /><span style="font-size: 16px; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap;">1. Battery life is great. I need to record meetings, take photos of whiteboards, take notes, file notes, and project powerpoint files.</span><br /><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap;">2. The automatic upgrade to the latest BBX OS version was impressive and simple.</span><br /><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-size: 16px; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;">Still to use:</span><br /><span style="font-size: 16px; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap;">1. I have not yet used the print to playbook functions. My problem with this feature is that you sometimes do not have the time to print every document. You almost need a file-sharing function like dropbox giving you access to project/view (but not copy or distribute (based on corporate settings)) files.</span><br /><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap;">2. I need to test out projecting using a HDMI converter. If this can project PowerPoint, I would be quire happy.</span><br /><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap;">All in all... The pro/con/suggestions are prioritised in terms of importance and fundamental impact on my day to day life. The advantages clearly outweigh the disadvantages and the suggestions would complete the device. The suggestions, and the lack of their capability, are actually more fundamental disadvantages and should be taken more seriously than the disadvantages raised.</span><br /><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap;">I was seriously sceptical when I purchased the Playbook however I have been pleasantly surprised and look forward to future BBX releases!</span></b>Anonymoushttp://www.blogger.com/profile/02474958549024992378noreply@blogger.com1tag:blogger.com,1999:blog-6572125.post-22489909687336151802011-06-16T14:06:00.000+02:002011-06-16T14:07:10.234+02:00When Good things Go Bad<div>When does Olive Oil become bad? Why do we buy Olive Oil and cook with it in preference to other oils. What principles can I apply to reap the benefits without becoming an over-concerned health fanatic?</div><div><br /></div><div><br /></div><div>The smoking point of oil is the point at which good oil becomes bad oil (<a href="http://en.wikipedia.org/wiki/Smoke_point">Smoking Point</a>).</div><div><div><div><ul><li>Butter 170 C</li><li>Avocado Oil 270C</li><li>Coconut Oil 170C</li><li>Olive Oil - Extra Virgin - 160 C</li><li>Olive Oil - Virgin - 216 C</li><li>Olive Oil - Pomace - 238 C</li><li>Olive Oil - Extra Light - 242 C</li><li>Sunflower Oil - 232 C</li></ul><br />I'm not going to harp on about the benefits when you can read about them (<a href="http://en.wikipedia.org/wiki/Olive_oil">Olive Oil</a>). I suspect that to gain the benefits you have to consume an olive oil by eating salads/bread with olive oil daily/weekly. My diet is therefore only avoiding the use of bad oils.</div></div><div><br /></div></div><div><br /></div><div>Principles:</div><div><ul><li>The more refined, the higher the burning point. Use Extra Virgin or Virgin Olive Oil for salads, use anything more refined for frying and cooking.</li><li>When cooking, do not fry/cook above 220 C.</li><li>Do not use butter to fry above 170 C.</li></ul></div><div><br /></div><div>Remember, using Olive Oil to fry food does not make frying healthy (<a href="http://www.live-in-green.com/health_info/problematic_food/carcinogenic/burnt.html">Burnt</a>).</div><div><br /></div><div>Principles:</div><div><ul><li>Do not burn/overly burn your food. Turn regularly.</li></ul></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div>Anonymoushttp://www.blogger.com/profile/02474958549024992378noreply@blogger.com0tag:blogger.com,1999:blog-6572125.post-75408771743138824642010-08-15T22:37:00.000+02:002010-08-15T22:38:06.080+02:00Just Plain AwesomeThis is just awesome... an F1 simulator strapped to a robotic arm for physics simulation.<br /><br /><a href="http://crave.cnet.co.uk/cartech/giant-robot-arm-used-as-f1-simulator-50000319/">F1 Simulator</a>.<br /><br />-TimAnonymoushttp://www.blogger.com/profile/02474958549024992378noreply@blogger.com0tag:blogger.com,1999:blog-6572125.post-46059647375099255512009-10-08T15:44:00.000+02:002009-10-08T16:14:24.837+02:00Large Batch Processing using HibernateWhen using hibernate for the retrieval of large amounts of data, one should remember that memory is limited and that incorrect usage of the hibernate session will cause the first and second level cache to explode in size.<br /><br />There are two ways to prevent this, either (a) evict the objects once you are finished with them, or (b) use a stateless session. Another point to remember is that you cannot use the list method on the Query because this will retrieve the entire result set.<br /><br /><br /><br /><br /><span style="font-weight:bold;">Statefull Session:</span> <br /><br />Remember to evict the associated objects from the first level cache once you are finished with them:<br /><br /><pre style="background-color: #E8E8E8; font-size:12px;"><br /><br />Query query = session.getNamedQuery("large");<br />ScrollableResult result = query<br /> .setCacheMode(CacheMode.IGNORE)<br /> .scroll(ScrollMode.FORWARD_ONLY);<br /><br />while (result.next()) {<br /> Object[] v = result.get();<br /> Object a = v[0];<br /> Object b = v[1];<br /><br /> … batch process …<br /> Session.evict(a);<br /> Session.evict(b);<br />}<br /><br /></pre><br /><br /><span style="font-weight:bold;">Stateless Session:</span><br /><br />There is no need to evict objects from the first level cache however all lazy relationships will be unavailable.<br /><br /><pre style="background-color: #E8E8E8; font-size:12px;"><br /><br />Query query = session.getSessionFactory()<br /> .openStatelessSession()<br /> .getNamedQuery("large");<br /><br />ScrollableResult result = query.scroll(ScrollMode.FORWARD_ONLY);<br />while (result.next()) {<br /> Object v = result.get(0);<br /> … batch process … <br />}<br /><br /></pre><br /><br />Another useful feature is to utilise the setProperties method on the query object set appropriate query parameters instead of setting each parameter individually.<br /><br />Bind using parameters:<br /><br /><pre style="background-color: #E8E8E8; font-size:12px;"><br /><br />Query query = session.getNamedQuery("mydosageQuery");<br />query.setString("dosageForm", "SLS");<br />display(query.list());<br /><br /></pre><br /><br />Bind using setProperties:<br /><br /><pre style="background-color: #E8E8E8; font-size:12px;"><br /><br />query = session.getNamedQuery("mydosageQuery");<br />query.setProperties(new MyDosageQuery(“SLS”));<br />display(query.list());<br /><br /></pre><br /><br /><br />(This is more of a note to self really...)Anonymoushttp://www.blogger.com/profile/02474958549024992378noreply@blogger.com0tag:blogger.com,1999:blog-6572125.post-33906975998266454812009-07-08T10:32:00.000+02:002009-07-08T10:42:01.642+02:00Statements of TruthEvery statement and/or argument must be supported by evidence, and this evidence should be provided.<br /><br />Without evidence, a statement could be called opinion and your confidence that the statement is true is related to your opinion of the person making the statement.<br /><br />Furthermore, the fundamentals of the statement may change over time (due to a change in technology, performance, environment, implementation, etc) making the statement's supporting arguments and statements invalid, and therefore invalidating the claimed statement of truth.<br /><br />Without the original evidence, you will not allow the reader to determine whether the statement is still applicable. This evidence should be sufficiently verbose for a reader, at the same time to reproduce and come to the same conclusion.Anonymoushttp://www.blogger.com/profile/02474958549024992378noreply@blogger.com1tag:blogger.com,1999:blog-6572125.post-77460243321733053482009-04-10T00:16:00.006+02:002009-04-10T01:24:32.526+02:00Google AppEngine - Maven POMGoogle have standardised java hosting and deployment with the release of a scalable, standards based java hosting platform. PHP had this 14 years ago and its about time.<br /><br />The first question is <i>how do I take advantage</i>?<br /><br />1. After studying the terms of service it seems as though you do not cede intellectual property rights and that it is quite suitable for commercial use where you would normally use a public hosting solution. (You would obviously not store financial transactions in the cloud and you would not store medical or any data that has legal restrictions on where the data may physically reside) and who may look at it.)<br /><br />2. I still have to determine the confirm BigTable reliability: Will it ever loose data?<br /><br />3. The Maven POM - What is the difference between the SDK and the real environment.<br /><br /><h2>Investigation</h2><br /><br />I provide a maven POM that describes the Java Google App-Engine capabilities based upon the classes available to a deployed application. To determine the classes available, I generated a list of all classes included in the SDK and executed Class.forName(String) within a test application that I deployed to Google App Engine.<br /><br />The results were interesting and are the foundation of the POM that is provided below.<br /><br /><h2>Repositories</h2><br />From a maven perspective there are only two significant libraries within the SDK that must be installed into your local repository because the can be obtained publicly.<br /><br />From the root of the SDK execute the following maven commands:<br /><br /><blockquote style="background-color: #E8E8E8; font-size:12px;"><br /><br />mvn install:install-file -Dfile=lib/shared/appengine-local-runtime-shared.jar -DgroupId=com.google -DartifactId=appengine-local-runtime-shared -Dversion=1.2.0 -Dpackaging=jar -DgeneratePom=true<br /><br />mvn install:install-file -Dfile=lib/shared/jsp/commons-logging-1.1.1.jar -DgroupId=com.google -DartifactId=commons-logging-repackage -Dversion=1.1.1 -Dpackaging=jar -DgeneratePom=true<br /><br /></blockquote><br /><br />I have the following two repositories specified in my maven settings.<br /><br /><pre style="background-color: #E8E8E8; font-size:12px;"><br /><br /> <repositories><br /> <repository><br /> <id>datanucleus</id><br /> <name>Datanucleus Repository</name><br /> <url>http://www.datanucleus.org/downloads/maven2</url><br /> </repository><br /> <repository><br /> <id>atlassian</id><br /> <name>Atlassian Repository</name><br /> <url>https://maven.atlassian.com/repository/centralmirror</url><br /> </repository><br /> </repositories><br /><br /></pre><br /><br /><h2>Maven: Provided POM</h2><br /><br />The following POM describes the libraries for the "provided" maven scope. Google seem to have an API proxy for their data layer and I have not included those libraries in my analysis. I will provide a more comprehensive POM once I understand the technologies and the dependencies.<br /><br />For now, this is the pom that best describes the "provided" scope:<br /><br /><pre style="background-color: #E8E8E8; font-size:12px;"><br /><project xmlns="http://maven.apache.org/POM/4.0.0"<br /> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"<br /> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0<br /> http://maven.apache.org/maven-v4_0_0.xsd"><br /><br /> <modelVersion>4.0.0</modelVersion><br /> <groupId>tim.app.test</groupId><br /> <artifactId>TestLab</artifactId><br /> <packaging>war</packaging><br /> <version>1.0.0</version><br /> <name>Test Lab</name><br /><br /> <dependencies><br /> <dependency><br /> <groupId>com.google</groupId><br /> <artifactId>appengine-local-runtime-shared</artifactId><br /> <version>1.2.0</version><br /> <scope>provided</scope><br /> </dependency><br /> <dependency><br /> <groupId>com.google</groupId><br /> <artifactId>commons-logging-repackage</artifactId><br /> <version>1.1.1</version><br /> <scope>provided</scope><br /> </dependency><br /><br /> <!-- the following are available on repositories --><br /> <dependency><br /> <groupId>commons-codec</groupId><br /> <artifactId>commons-codec</artifactId><br /> <version>1.3</version><br /> <scope>provided</scope><br /> </dependency><br /> <dependency><br /> <groupId>org.apache.geronimo.specs</groupId><br /> <artifactId>geronimo-jsp_2.1_spec</artifactId><br /> <version>1.0.1</version><br /> <scope>provided</scope><br /> </dependency><br /> <dependency><br /> <groupId>org.apache.geronimo.specs</groupId><br /> <artifactId>geronimo-servlet_2.5_spec</artifactId><br /> <version>1.2</version><br /> <scope>provided</scope><br /> </dependency><br /> <dependency><br /> <groupId>ant</groupId><br /> <artifactId>ant</artifactId><br /> <version>1.6.5</version><br /> <scope>provided</scope><br /> </dependency><br /> <dependency><br /> <groupId>ant</groupId><br /> <artifactId>ant-launcher</artifactId><br /> <version>1.6.5</version><br /> <scope>provided</scope><br /> </dependency><br /> <dependency><br /> <groupId>commons-el</groupId><br /> <artifactId>commons-el</artifactId><br /> <version>1.0</version><br /> <scope>provided</scope><br /> </dependency><br /> <dependency><br /> <groupId>tomcat</groupId><br /> <artifactId>jasper-compiler</artifactId><br /> <version>5.0.28</version><br /> <scope>provided</scope><br /> </dependency><br /> <dependency><br /> <groupId>tomcat</groupId><br /> <artifactId>jasper-runtime</artifactId><br /> <version>5.0.28</version><br /> <scope>provided</scope><br /> </dependency><br /> <dependency><br /> <groupId>jstl</groupId><br /> <artifactId>jstl</artifactId><br /> <version>1.1.2</version><br /> <type>jar</type><br /> <scope>provided</scope><br /> </dependency><br /> <dependency><br /> <groupId>taglibs</groupId><br /> <artifactId>standard</artifactId><br /> <version>1.1.2</version><br /> <type>jar</type><br /> <scope>provided</scope><br /> </dependency> <br /> </dependencies><br /><br /> <repositories><br /> <repository><br /> <id>datanucleus</id><br /> <name>Datanucleus Repository</name><br /> <url>http://www.datanucleus.org/downloads/maven2</url><br /> </repository><br /> <repository><br /> <id>atlassian</id><br /> <name>Atlassian Repository</name><br /> <url>https://maven.atlassian.com/repository/centralmirror</url><br /> </repository><br /> </repositories><br /><br /> <build><br /> <plugins><br /> <plugin><br /> <artifactId>maven-compiler-plugin</artifactId><br /> <configuration><br /> <source>1.6</source><br /> <target>1.6</target><br /> </configuration><br /> </plugin><br /> </plugins><br /> </build><br /><br /></project><br /></pre><br /><br /><br /><h2>Ant: Launch and Deploy</h2><br /><br />The following build.xml file can be used to launch the local GAE development server and it may also be used to publish the latest version to the production GAE server. <br /><br />Run the deploy from the commandline at least once as you have to put in your username and password.<br /><br /><pre style="background-color: #E8E8E8; font-size:12px;"><br /><br /><project name="Google App Engine"><br /><br /> <target name="deploy"><br /><br /> <java fork="true"<br /><br /> dir="c:/development/lib/appengine-java-sdk-1.2.0"<br /> classpath="C:/Development/lib/appengine-java-sdk-1.2.0/lib/appengine-tools-api.jar"<br /> classname="com.google.appengine.tools.admin.AppCfg"><br /><br /> <arg value="update"/><br /> <arg value="C:\Development\General\TimAppTestlab\target\TestLab-1.0.0"/><br /><br /> </java><br /> </target><br /><br /> <target name="launch"><br /><br /> <java<br /> fork="true"<br /> dir="c:/development/lib/appengine-java-sdk-1.2.0"<br /> classpath="C:/Development/lib/appengine-java-sdk-1.2.0/lib/appengine-tools-api.jar"<br /> classname="com.google.appengine.tools.KickStart"><br /> <br /> <arg value="com.google.appengine.tools.development.DevAppServerMain"/><br /> <arg value="C:\Development\General\TimAppTestlab\target\TestLab-1.0.0"/><br /><br /> </java><br /> </target><br /><br /></project><br /><br /></pre><br /><br /><br />Enjoy,<br /><br />-TimAnonymoushttp://www.blogger.com/profile/02474958549024992378noreply@blogger.com4tag:blogger.com,1999:blog-6572125.post-48801282672815090512008-10-10T10:49:00.004+02:002008-10-10T11:11:30.218+02:00Maven<a href="http://nexus.sonatype.org">Sonatype Nexus</a> is great as it simplifies maven. Maven is a useful java tool that allows for simplification of development within a team by removing unnecessary complexity within build scripts however it may seem overwhelming with configuration and repository management.<br /><br />Development teams should use Sonatype Nexus to provide a cache of public repositories. This also ensures that each developer is using the same internal repository and simplifies configuration on each machine.<br /><br />The following public repositories should be added to nexus. Note: www.ibiblio.org is a maven 1 repository and you would have to tell nexus to remap virtually present this as a maven 2 repository.<br /><br />* http://repo1.maven.org/maven2/<br />* http://download.java.net/maven/2/<br />* http://repository.codehaus.org/<br />* http://www.ibiblio.org/maven/<br /><br /><br /><br /><h3>Flexibility</h3><br /><br />If you need to still need to customise your build you can still use ant by using the antrun plugin.<br /><br /><pre><br /><plugin><br /> <groupId>org.apache.maven.plugins</groupId><br /> <artifactId>maven-antrun-plugin</artifactId><br /> <executions><br /> <execution><br /> <phase>generate-sources</phase><br /> <configuration><br /> <tasks><br /> <echo message="Hello World"/><br /> <mkdir dir="target/sample"/><br /> <javac classname="tim.HelloWorld" classpathref="maven.plugin.classpath" fork="true" dir="target/sample"/><br /> </tasks><br /> </configuration><br /> <goals><br /> <goal>run</goal><br /> </goals><br /> </execution><br /> </executions><br /> <dependencies><br /> <dependency><br /> <groupId>tim.example</groupId><br /> <artifactId>MyHelloWorld</artifactId><br /> <version>1.0.0</version><br /> </dependency><br /> </dependencies><br /></plugin><br /></pre>Anonymoushttp://www.blogger.com/profile/02474958549024992378noreply@blogger.com2tag:blogger.com,1999:blog-6572125.post-23341253864996074532008-10-03T16:55:00.006+02:002008-10-03T17:13:44.429+02:00ZimbabweZimbabwe is slowly heading back to the stone age - Banks are now unable to do internet transfers, or even internal transfers within the same bank ( <a href="http://www.fin24.com/articles/default/display_article.aspx?Nav=ns&ArticleID=1518-25_2404033">Banking Chaos in Zim</a> ). In some sick morbid way this is an interesting study of how a government can meltdown.Anonymoushttp://www.blogger.com/profile/02474958549024992378noreply@blogger.com0tag:blogger.com,1999:blog-6572125.post-40642902295659869142008-09-28T09:08:00.005+02:002008-10-03T17:13:58.189+02:00S/PDIF and positional audio using DTS ConnectThe ALC889A and ALC1200 with DTS Connect, DTS Interactive and/or Doldby Digital Live.<br /><br />Gigabyte ALC889A with software can fully encode positional DTS for 3d games and general windows use. This is a function of the bundled software and I dont think it would work on Linux.<br /><br />When buying a new PC one of my big concerns was sound quality and sound drivers. I did not want to buy a separate sound card and I wanted to use my home theater system. Unfortunately due to a hasty purchase some years back I somehow managed to buy a home theater system that takes Stereo In, SPDIF Coaxial In and SPDIF/Toslink Optical In. This means that to get surround my sound card must produce a DTS or Dolby digital signal with more than 2 channels. Also, the home theatre system only had a single Stereo. Some sound cards have multiple analog stereo outputs which plug into many stereo inputs on the home theatedr system which relies on the sound card to produce 3 or 4 analog signals.<br /><br />In persuit of fewer cables, the important bit again: the sound card must produce a DTS or Dolby signal with more than 2 channels. Many sound cards will encode to DTS or Dolby but produce a stereo digital signal. That means you have stereo and in 3d games and it will not be positional sound. When watching movies the sound card will pass the digital signal directly to the sound card but it will not perform any positional encoding. Some sound cards will label this as "DTS" and "Dolby" which is deceptive.<br /><br />For 3d games or any funky usage of winamp you PC needs to be able to encode DTS or Dolbly signals on the fly. Realtime encoding of DTS and Dolbly goes under the name of "DTS Connect", "DTS Interactive" or "Dolby Digital Live" and involves a combination of software or hardware to produce the multi-channel digital output. (Rember: A 2 channel DTS signal is not the same as 7.1. Many sound cards will perform stero encoding which is not what you want).<br /><br />I bought a Gigabyte GA-MA78-S2H which has the ALC889A sound chipset and this implements DTS Connect and DTS Interactive and I get positional sound in games and music via my optical out. The software that comes with this Gigabyte mainboard is great and allows you to tweak all sorts.<br /><br />One of the more impressive tweaks is to adjust the center channel which is usefull when you play stereo music on 5 speakers. Typically you end up getting all of the voice out of the center channel and its nice to distribute this across other channels by making the center channel wider.<br /><br />Some websites suggest that the using DTS Connect and DTS Interactive takes 1-3% CPU power to perform this. I dont notice a difference so I dont really care. Dolby Digital Live encoding is supposed to be slightly more efficient to encode in software but I dont currently notice a difference so I dont really care - it works.<br /><br />My experience with Gigabyte is good. Now although the ALC889A that is used on the gigabyte mainboard can fully encode DTS I believe that this is a feature of the gigabyte software. The ALC889A is a customised ALC885 and is made by Realtek for exclusively for Gigabyte.<br /><br />One of the alternatives to Gigabyte was ASUS which also has an exclusive sound chipset from Realtek - the ALC1200. I did quite a bit of research and could not confirm that it is able to do DTS Connect. I would imagine it is more advanced because its version number is higher [How technical is that :-) ] but nowhere could I see any mention of realtime positional encoding of Dolby Digital Live, DTS Connect or DTS Interactive and they fall into the same trap where the mainboard supports Steria Digital encoding, will pass DTS and dolby signals from a DVD to your amp or will render the DVD digital to your 4 analog stereo outputs. Very Deceptive.<br /><br />I dont think that this board will have DTS for linux since the DTS Connect / DTS Interactive has to be implemented by software drivers. In comparison, there has only been one "perfect solution" which was implemented completely in hardware. The nVidia Soundstorm along with its nForce 2 transparently produced full digital signals. This was implemented in hardware.<br /><br />Enjoy,<br /><br />-TimothyAnonymoushttp://www.blogger.com/profile/02474958549024992378noreply@blogger.com3tag:blogger.com,1999:blog-6572125.post-71365600650786065202008-09-19T23:54:00.009+02:002008-09-20T00:46:57.536+02:00<h1>Installing Windows</h1>Its that time again - I have a new computer. Its been about 6 to 8 years since I have bought something new for my home PC. I'm buying a beast in a box (Micro ATX, Quad Core, 8gig memory, Blue-ray, Wifi, etc) and hopefully it will be another 6 to 8 years before I have to buy another PC.<br /><br />The big question is what software I should re-install?<br /><br />Windows ultimately ends up as an unstable dog with fleas due to failed attempts at finding reasonable software. Having learned from my many mistakes with software of all types, the following is a list that I consider being the most effective in their category. I have linked to the author's website so that in future the latest version may be downloaded.<br /><br />There are still a few items that I am looking for (suggestions welcome):<br /><ul><li>Photo touchup and image Editing</li><li>Media Player and Media Organiser</li><li>Offline CD Collection Organiser</li><li>Archive Organiser (Old Documents, Projects, Backups, etc)</li></ul>The following list is linked to its author's website. Free may be open source, freeware or freely downloadable (subject to license, eg: ie8, etc).<br /><br /><table><tbody><tr><td colspan="4"><h2> Operating System</h2></td></tr> <tr><td><a target="_blank" href="http://www.microsoft.com/"> Windows Vista </a></td><td> Operating System </td><td> <br /></td><td> Retail </td></tr><br /><tr><td><a target="_blank" href="http://www.microsoft.com/"> Windows XP SP3 </a></td><td> Operating System </td><td> <br /></td><td> Retail </td></tr><tr><td colspan="4"><h2> Office Suite</h2></td></tr> <tr><td><a target="_blank" href="http://www.microsoft.com/"> Microsoft Office </a></td><td> Documents </td><td> <br /></td><td> Retail </td></tr><tr><td><a target="_blank" href="http://www.openoffice.org/"> Open Office </a></td><td> Documents </td><td> <br /></td><td> Free </td></tr><tr><td><a target="_blank" href="http://www.sun.com/software/staroffice"> Star Office </a></td><td> Documents </td><td> <br /></td><td> Retail (Inexpensive) </td></tr> <tr><td colspan="4"><h2> Internet Browser </h2></td></tr> <tr><td><a target="_blank" href="http://www.getfirefox.com/"> Fire Fox </a></td><td> Internet </td><td> <br /></td><td> Free </td></tr><tr><td><a target="_blank" href="http://www.google.co.za/intl/en/options"> Google Chrome </a></td><td> Internet </td><td> <br /></td><td> Free </td></tr><tr><td><a target="_blank" href="http://www.microsoft.com/"> IE 8 </a></td><td> Internet </td><td> <br /></td><td> Free </td></tr><tr><td colspan="4"><h2> DVD Player</h2></td></tr><tr><td><a target="_blank" href="http://www.microsoft.com/"> Windows Media Player 11 </a></td><td> Media </td><td> <br /></td><td> Free </td></tr><tr><td><a target="_blank" href="http://www.cyberlink.com/"> Power DVD </a></td><td> Media </td><td> <br /></td><td> Retail </td></tr><tr><td colspan="4"><h2> Tools </h2></td></tr> <tr><td> <br /></td></tr><tr><td><a target="_blank" href="http://www.adobe.com/products/acrobat"> Acrobat </a></td><td> Documents </td><td> <br /></td><td> Free </td></tr><tr><td><a target="_blank" href="http://www.tranglos.com/free/keynote.html"> KeyNote </a></td><td> Documents </td><td> <br /></td><td> Free </td></tr><tr><td><a target="_blank" href="http://www.dvdshrink.org/"> DVD Shrink </a></td><td> File Archive </td><td> <br /></td><td> Free </td></tr><tr><td><a target="_blank" href="http://www.imgburn.com/"> Image Burn </a></td><td> File Archive </td><td> <br /></td><td> Free </td></tr><tr><td><a target="_blank" href="http://www.izarc.org/"> IZArc </a></td><td> File Archive </td><td> Slick </td><td> Free </td></tr><tr><td><a target="_blank" href="http://www.dynadns.org/"> Dyna DNS </a></td><td> Internet </td><td> Dynamic DNS name </td><td> Free </td></tr><tr><td><a target="_blank" href="http://www.freedownloadmanager.org/"> Free Download Manager </a></td><td> Internet </td><td> <br /></td><td> Free </td></tr><tr><td><a target="_blank" href="http://www.utorrent.com/"> uTorrent </a></td><td> Internet </td><td> <br /></td><td> Free </td></tr><tr><td><a target="_blank" href="http://www.google.co.za/intl/en/options"> Google Earth </a></td><td> Map </td><td> <br /></td><td> Free </td></tr><tr><td><a target="_blank" href="http://www.videolan.org/vlc"> VLC Media Player </a></td><td> Media </td><td> <br /></td><td> Free </td></tr><tr><td><a target="_blank" href="http://www.microsoft.com/NET"> Dot Net </a></td><td> Platform </td><td> <br /></td><td> Free </td></tr><tr><td><a target="_blank" href="http://java.sun.com/"> Java 6 </a></td><td> Platform </td><td> <br /></td><td> Free </td></tr><tr><td><a target="_blank" href="http://get.adobe.com/shockwave"> Shockwave </a></td><td> Platform </td><td> <br /></td><td> Free </td></tr><br /><tr><td><a target="_blank" href="http://www.ccleaner.com/"> CC Cleaner </a></td><td> OS Tool </td><td> I don’t like it phoning home </td><td> Free </td></tr><tr><td><a target="_blank" href="http://www.daemon-tools.cc/"> Daemon Tools </a></td><td> OS Tool </td><td> Mount CD images (old games, etc) </td><td> Free </td></tr><tr><td><a target="_blank" href="http://www.toniarts.com/"> Easy Cleaner </a></td><td> OS Tool </td><td> <br /></td><td> Free </td></tr><tr><td><a target="_blank" href="http://www.officerecovery.com/freeundelete"> FreeUndelete </a></td><td> OS Tool </td><td> Install this before you need to </td><td> Free </td></tr><tr><td><a target="_blank" href="http://www.microsoft.com/technet/sysinternals/Security/ProcessExplorer.mspx"> Process Explorer </a></td><td> OS Tool </td><td> Replace Task manager </td><td> Free </td></tr><tr><td><a target="_blank" href="http://www.jam-software.com/treesize"> Treesize </a></td><td> OS Tool </td><td> <br /></td><td> Free </td></tr><tr><td><a target="_blank" href="http://www.codeforge.co.uk/"> Tweak All 3 </a></td><td> OS Tool </td><td> Helps removing Browser Helper Objects </td><td> Free </td></tr><tr><td><a target="_blank" href="http://unxutils.sourceforge.net/"> UnixShell </a></td><td> OS Tool </td><td> wget, grep, etc </td><td> Free </td></tr><tr><td><a target="_blank" href="http://www.dr-hoiby.com/WhoLockMe"> Who Lock Me </a></td><td> OS Tool </td><td> <br /></td><td> Free </td></tr><tr><td><a target="_blank" href="http://www.codeplex.com/Terminals"> Terminals </a></td><td> Remote Desktop </td><td> Multi Tab - VNC, Telnet, SSH, Citrix</td><td> Free </td></tr><br /><tr><td><a target="_blank" href="http://www.google.co.za/intl/en/options"> Google Desktop </a></td><td> Shell </td><td> <br /></td><td> Free </td></tr><tr><td><a target="_blank" href="http://launchy.net/"> Launchy </a></td><td> Shell </td><td> Incredible ** </td><td> Free </td></tr><tr><td><a target="_blank" href="http://www.codesector.com/teracopy.php"> TeraCopy </a></td><td> Shell </td><td> <br /></td><td> Free </td></tr><tr><td><a target="_blank" href="http://lifehacker.com/399155/five-best-alternative-file-managers"> Xplore2 </a></td><td> Shell </td><td> Plugins required </td><td> Free </td></tr><br /><tr><td><a target="_blank" href="http://www.nliteos.com/"> nLite </a></td><td> Slipstream </td><td> <br /></td><td> Free </td></tr><tr><td><a target="_blank" href="http://www.virtualbox.org/"> Virtual Box </a></td><td> Virtual Machine </td><td> 3-5% slower than VMWare but free </td><td> Free </td></tr><br /><tr><td><a target="_blank" href="http://tomcat.apache.org/"> Tomcat 6 </a></td><td> Web Server </td><td> <br /></td><td> Free </td></tr><tr><td colspan="4"><h2> Development Tools</h2></td></tr><tr><td><a target="_blank" href="http://hibernate.org/"> Hibernate </a></td><td> Development </td><td> <br /></td><td> Free </td></tr><br /><tr><td><a target="_blank" href="http://hsqldb.org/"> HSSQL </a></td><td> Development </td><td> <br /></td><td> Free </td></tr><tr><td><a target="_blank" href="http://www.innosetup.com/"> Inno Setup </a></td><td> Development </td><td> <br /></td><td> Free </td></tr><tr><td><a target="_blank" href="http://www.jetbrains.com/"> IntelliJ IDEA </a></td><td> Development </td><td> Amazing </td><td> Retail </td></tr><br /><tr><td><a target="_blank" href="http://java.sun.com/"> JDK 1.4.2, 5.0, 6.0 </a></td><td> Development </td><td> <br /></td><td> Free </td></tr><tr><td><a target="_blank" href="http://maven.apache.org/"> Maven </a></td><td> Development </td><td> <br /></td><td> Free </td></tr><tr><td><a target="_blank" href="http://subversion.tigris.org/"> Subversion </a></td><td> Development </td><td> <br /></td><td> Free </td></tr> <tr><td colspan="4"><h2> Internet Tools</h2></td></tr> <tr><td><a target="_blank" href="http://firefox%20plugin/"> FireFTP </a></td><td> Firefox Plugin </td><td> <br /></td><td> Free </td></tr><br /><tr><td><a target="_blank" href="http://firefox%20plugin/"> Adblock Plus </a></td><td> Firefox Plugin </td><td> <br /></td><td> Free </td></tr><tr><td><a target="_blank" href="http://firefox%20plugin/"> Bookmark Duplicate Detector </a></td><td> Firefox Plugin </td><td> <br /></td><td> Free </td></tr><tr><td><a target="_blank" href="http://firefox%20plugin/"> Foxmarks Bookmark Synchronizer </a></td><td> Firefox Plugin </td><td> Same bookmarks at home and at work </td><td> Free </td></tr><tr><td><a target="_blank" href="http://firefox%20plugin/"> FoxyProxy </a></td><td> Firefox Plugin </td><td> <br /></td><td> Free </td></tr><tr><td><a target="_blank" href="http://firefox%20plugin/"> IE Tab </a></td><td> Firefox Plugin </td><td> <br /></td><td> Free </td></tr><tr><td><a target="_blank" href="http://firefox%20plugin/"> NewsFox </a></td><td> Firefox Plugin </td><td> <br /></td><td> Free </td></tr><tr><td><a target="_blank" href="http://firefox%20plugin/"> PDF Download </a></td><td> Internet </td><td> Better flexability when clicking on PDFs </td><td> Free </td></tr><tr><td colspan="4"><h2> Web Resources</h2></td></tr> <tr><td><a target="_blank" href="http://http//feeds.gawker.com/lifehacker/full"> Life Hacker</a></td><td> Internet Resource </td><td> Life </td><td> Free </td></tr><tr><td><a target="_blank" href="http://http//www.dzone.com/feed/frontpage/rss.xml"> DZone </a></td><td> Internet Resource </td><td> Development </td><td> Free </td></tr><tr><td><a target="_blank" href="http://http//news.google.com"> Google News</a></td><td> News Resource </td><td> <br /></td><td> Free </td></tr><tr><td><a target="_blank" href="http://http//rss.slashdot.org/slashdot/slashdot"> SlashDot </a></td><td> News Resource </td><td> Technology </td><td> Free </td></tr><tr><td><a target="_blank" href="http://http//oldversion.com"> Old Version </a></td><td> Internet Resource </td><td> <br /></td><td> Free </td></tr><br /><tr><td><a target="_blank" href="http://http//www.softpedia.com"> Softpedia </a></td><td> Internet Resource </td><td> <br /></td><td> Free </td></tr></tbody></table><br />Thats my list of software. Suggestions and recommendations welcome. This list is actually future documentation for myself and it may help others make their life easier.<br /><br />-TimAnonymoushttp://www.blogger.com/profile/02474958549024992378noreply@blogger.com2tag:blogger.com,1999:blog-6572125.post-75531200426253726432008-09-08T19:34:00.003+02:002008-09-08T19:42:10.500+02:00<h1>International Shipping</h1><br /><br />I have been playing with <a href="http://www.myus.com">myus.com</a> which is a US re-mailer and gives me a US address in Florida. This allows items purchased from US companies that only deliver to US postal addresses. This costs about $60 a year which has already payed for itself when buying high cost items.<br /><br />The price of a mid-range / cheap goods turns out to be only slightly cheaper (R100-R500) when purchasing them locally. High end goods seem to attract a very high margin locally so you can easily save up 50% of the cost by purchasing from overseas when taking advantage of exclusive US discounts.Anonymoushttp://www.blogger.com/profile/02474958549024992378noreply@blogger.com6tag:blogger.com,1999:blog-6572125.post-50662604564761146432008-08-30T09:42:00.003+02:002008-08-30T09:47:51.377+02:00<h1>IDE + SATA to USB converter</h1><br /><br />The <a href="http://www.vantectw.com/eng/products/nexstar/cb_isatau2/cb-isata.html">Vantec IDE+SATA to USB converter</a> is useful and allows you to easily access old IDE drives via USB without cluttering your desk. In addition it seems you can use an IDE drive and a SATA drive at the same time.Anonymoushttp://www.blogger.com/profile/02474958549024992378noreply@blogger.com2tag:blogger.com,1999:blog-6572125.post-52544832423642645422008-08-02T19:49:00.004+02:002008-08-02T20:33:33.810+02:00<h1>Improving Java Swing Performance<br /></h1> I propose a method to improve java swing performance by force-loading commonly used classes.<br /><br />It is commonly thought that Java is slow and that Swing GUI applications are slow however after the JVM has been running for some time this is shown to be incorrect. It is obvious that poorly designed Swing applications will be slow however is there anything we can do to speed up well designed swing applications?<br /><br />Part of my perception of a java application's "slow speed" is due to the fact that java loads the classes it needs when the class is used. This means that when you use a feature for the first time the JVM will spend a small amount of time loading the necessary classes. Milliseconds can affect our perception of performance. The solution is to simply move this processing elsewhere and force load these classes before first use.<br /><br />I recommend loading these classes while the splash screen is being displayed.<br /><h2>How?</h2>1. Track what classes are used<br />2. Identify which classes you want to load during your splash sequence<br />3. Load your classes<br /><br /><h3>1. Track what classes are used</h3>The following class is used to instrument java and track class loader activity. Pack the following files into a jar along with the manifest and add the following to your application's command line:<br /><pre>-javaagent:MyInstrument.jar=dummyArg</pre><br /><br /><b>eg:</b> <pre>java -javaagent:MyInstrument.jar=dummyArg -jar MyApp.jar</pre><br /><br /><b>ClassLogger.java</b><br /><pre style="background-color: lightyellow;">public class ClassLogger implements ClassFileTransformer {<br />String output;<br /><br />ClassLogger(String output) throws Throwable {<br /> this.output = output;<br />}<br /><br />private void log(String s) throws FileNotFoundException {<br /> PrintWriter writer =<br /> new PrintWriter(<br /> new FileOutputStream(new File(output),true));<br /> writer.println(s);<br /> writer.close();<br />}<br /><br />public static void premain(<br /> String agentArgs,<br /> Instrumentation inst) throws Throwable {<br /> System.out.println("Class Logger Active");<br /> inst.addTransformer(new ClassLogger("loaded.txt"));<br />}<br /><br />public byte[] transform(<br /> ClassLoader loader,<br /> String className,<br /> Class classBeingRedefined,<br /> ProtectionDomain protectionDomain,<br /> byte[] classfileBuffer)<br /> throws IllegalClassFormatException {<br /> try {<br /> log(className.replaceAll("/","."));<br /> } catch (FileNotFoundException e) {<br /> e.printStackTrace();<br /> }<br /> return classfileBuffer;<br />}<br />}<br /><br /></pre><b>manifest.mf</b><br /><pre style="background-color: lightyellow;">Premain-Class: tim.build.instrument.ClassLogger</pre><br /><br /><h3>2. Identify which classes should be force loaded</h3>The above will create a file <i>loaded.txt</i> which will contain a list of classes. You will have to review this class list and remove any classes that should not be loaded.<br /><br />It is easy to identify common functions. Consider using the most common features in the application and forcing these to be preloaded.<br /><br />Classes created by CGLIB are dynamically generated and do not exist in your application. These should be removed from the list of classes.<br /><br /><h3>3. Load classes during the splash sequence</h3>The following code will have to be customised based upon your application. Basically it loads the list of classes and executes Class.forName on each of them. Java does have <i>java.lang.Compiler</i> which has a method <i>compileClass(Class)</i> and, although I call it below, I believe that it does nothing with JDK6 (I secretly hope it improves performance).<br /><pre style="background-color: lightyellow;"><br /> public static void precacheClasses() {<br /> try {<br /> InputStream is = Thread.currentThread()<br /> .getContextClassLoader()<br /> .getResourceAsStream("precache.txt");<br /> try {<br /> java.lang.Compiler.enable();<br /> } catch (Throwable t) {<br /> log.warn("Compiler force JIT is not enabled",t);<br /> }<br /> if (is != null) {<br /> String s = IOUtils.toString(is);<br /> for (String sv:s.split("\n")) {<br /> String value = sv.trim();<br /> if (value.length()>0<br /> && value.charAt(0) != '#') {<br /> try {<br /> Class clazz = Class.forName(value);<br /> java.lang.Compiler.compileClass(clazz);<br /> } catch (Throwable t) {<br /> log.warn("Could not compile class ["+<br /> value+"]",t);<br /> }<br /> }<br /> }<br /> }<br /> } catch (Throwable t) {<br /> log.warn("Problem trying to precache classes",t);<br /> }<br /> }<br /></pre><h3>Usage</h3>Small Applications: Force load every class used. A small utility may be used many times and there is no chance for the JVM to store pre-loaded classes.<br /><br />Larger Applications: Force load only the classes related to the most commonly used features because of memory constraints.<br /><br /><h3>Success</h3>This makes a well designed application snappy right from the start.<br /><br />Enjoy,<br /><br />-TimAnonymoushttp://www.blogger.com/profile/02474958549024992378noreply@blogger.com0tag:blogger.com,1999:blog-6572125.post-17810704506365071302008-02-16T23:14:00.005+02:002008-02-16T23:52:49.715+02:00I've recently been fiddling with a range of Java technologies with ideas involving the application of XWork and EventBus in the context of remote rich clients. With this in mind, I've been porting some of my older applications to the newer frameworks with renewed interest in seeing how much code I can delete using the most advanced features from the various tools.<br /><br />Some of the tools I've covered are:<br /><ul><li>Hypersonic SQL<br /></li><li>OGNL</li><li>XWork</li><li>Hibernate / EJB3 Annotations<br /></li><li>Spring Framework<br /></li><li>SWT</li><li>JGoodies</li><li>EventBus</li><li>MigLayout</li><li>XFire</li><li>JGoodies Binding</li><li>JIDE<br /></li></ul><br /><br /><span style="font-weight: bold;">Most Impressed With:</span><br /><ol><li>Hypersonic SQL - Its ease to setup and has certain deployment possibilities that are not possible with another database.<br /></li><li>EventBus - The conceptual application of this is quite broad.<br /></li><li>MigLayout - Simplicity - It makes SWT and Swing layout simple.<br /></li></ol><span style="font-weight: bold;">Most Dissapointing:</span><br /><ul><li>SWT - Binding seems horrible and JFace seems annoying to use if you dont use Eclipse. Maybe I'm not using the correct data binding frameworks or using it incorrectly. The basic component layer is incredible but the binding is severely lacking.<br /></li></ul><span style="font-weight: bold;">Most Eager to Work With:</span><br /><ul><li>OGNL - This could be applied in quite a few areas.</li><li>EventBus - Conceptual application could simplify a few areas.</li></ul><span style="font-weight: bold;">Most Mature:</span><br /><ul><li>Hibernate - Its come along way from when I last used it and the documentation is good.<br /></li><li>Spring - It still does what I expect of it.<br /></li></ul><span style="font-weight: bold;">Most Flexible: </span><br /><ul><li>Hibernate - Its event listeners are mighty useful.<span style="font-style: italic;"></span><br /></li></ul><span style="font-weight: bold;">Most Lusted After:</span><ul><li>JIDE - If only it were free. If I were developing commercial rich client projects this would be good value.<br /></li></ul><span style="font-weight: bold;">Most Complex:</span><br /><ul><li>JGoodies Binding - Admittedly, binding is a complex problem, especially when considering Swing. <span style="font-style: italic;">(After being exposed to SWT I feel that the SWT component hierarchy has a level of simplicity around which binding might be made slightly easier. I dont think it will be less complex but there would be at least one or two layers of abstraction less.)</span></li></ul><br />Having listed the above, I'll go into more detail in future posts however. I still need to look at a few gaming libraries for Java (Java 3D, AI, Swing & SWT Theming, etc).<br /><br /><span style="font-weight: bold;"><br /></span>Anonymoushttp://www.blogger.com/profile/02474958549024992378noreply@blogger.com1tag:blogger.com,1999:blog-6572125.post-26457321434184387452008-02-08T11:06:00.000+02:002008-02-08T11:10:37.345+02:00Well, its been a while. In that time a lot has happened... I've climbed Kilimanjaro, scuba dived in Zanzibar and I've even started painting (water paints, still learning before I move to acrylic).<br /><br />I have a renewed interest in a few technologies so I expect to post more technical commentary and technical ideas/concepts. Over the last 7 years I have great opportunities to experience a very wide range of technologies and paradigms and I am reviewing certain paradigms and technologies a good 7 years later. I hope to blog on my understanding of some of the changes.<br /><br />-TimAnonymoushttp://www.blogger.com/profile/02474958549024992378noreply@blogger.com0tag:blogger.com,1999:blog-6572125.post-1155000448298719512006-08-08T03:17:00.000+02:002006-08-08T03:27:28.323+02:00To Bryan and Katherine,<br /><br />To Brattex and Badkat,<br /><br />The future has always been yours share.<br /><br />I hope its filled with tears of happiness and songs with laughter.<br /><br />Only the best for the the two of you.<br /><br />Miss you lots.<br /><br />Congratulations on your engagement!!!!<br /><br />Love you both.<br /><br />-TimAnonymoushttp://www.blogger.com/profile/02474958549024992378noreply@blogger.com1tag:blogger.com,1999:blog-6572125.post-1154027624799696332006-07-27T21:09:00.000+02:002006-07-27T21:13:46.010+02:00Photos are up...<div style="float: right; margin-left: 10px; margin-bottom: 10px;"> <a href="http://www.flickr.com/photos/twelves/196285210/" title="photo sharing"><img src="http://static.flickr.com/68/196285210_ce1dd212fa_m.jpg" alt="" style="border: solid 2px #000000;" /></a> <br /> <span style="font-size: 0.9em; margin-top: 0px;"> <a href="http://www.flickr.com/photos/twelves/196285210/">Villa</a> <br /> Originally uploaded by <a href="http://www.flickr.com/people/twelves/">Tim Twelves</a>. </span></div>I've put some photos up on my blog. This entry is more of an excuse to see Flickr (yahoo) integrate with Blogger (google). It seems as though they've got some nice site integration and its great to see the end user benefiting from the cooperation.<br clear="all" />Anonymoushttp://www.blogger.com/profile/02474958549024992378noreply@blogger.com0tag:blogger.com,1999:blog-6572125.post-1148065289207307302006-05-19T20:41:00.000+02:002006-05-19T21:14:43.313+02:00Its been a while since I last posted to my blog but I've made up by posting alot of photos. Most of the photos are either taken by my cellphone or they are group photos from weekends away, etc that i've assembled in online.<br /><br />A weekend or two ago, I spent rafting down the Orange River. A great weekend although it wasnt without its troubles. On the way there, about 5 hours out of JHB when we were having breakfast at Wimpy after which I realised that I had left my passport behind. This was a blunder of the biggest proportions as the base camp from which we would start was on the Namibian side of the border. I spent about 4 hours on the phone over about 7 hours. During this time, we had taken an accidental 300km detour and we fought with home affairs and they wouldnt get me an emergency passport (it was a public holiday). By the time we got to Pofadder I was slightly hysterical and had happily consigned myself to staying in Springbok for the next 5 days while everyone else went rafting.<br /><br />Everything eventually sorted itself as I eventually had my passport flown to Capetown and couriered to Springbok (on a public holiday) and by 5am I had my passport. Good times. I'd spent the night in springbok in a bed and breakfast while everyone went ahead. This wasnt such a bad thing as the B&B was kitted out with this massive down duvet and huge bed with a hot shower. The 6 days that followed this were unbelievably awsome. 44 of us struggling down a river, alcohol in hand and sometimes being pursued. We had quite a few rafts topple. Sight of cooler boxes floating down river were some of the sad moments. Fortunately we managed to recover the beer. Great times.<br /><br />Since then (its been about 2 to 3 weeks now) I've been grafting and spending some hectic time at work getting stuff finished. Tomorrow is the beginning of 23 days away from work. This is probably the first time I'm taking more than 2 consecutive days of leave in the last 6 years. I am not counting the leave I had that I was forced to take around christmas so maybe I shouldnt say 6 years - however - its not the same thing. You cannot move the Monaco F1 GP to christmas.<br /><br />I'm off to the UK for a while and then i'm going to spend a week in Monaco. We've got a villa for a week and will be partying and watching the F1 GP which is going to be awsome. Definately going to head past a few french vineyards. I usually spend sundays watching the GP with a small braai on the side and a cheeky tomato relish for whatever is ooking. I've watched an A1 GP and I'm definately going to have a mad week. The other days, i'll be chilling and travelling. I hope it'll blow away all my expectations.<br /><br />Im going to have lots of photos as I'm set on getting a camera while i'm in Dubai. I'm looking for a Canon IXUS 65 but I couldnt find any prices specific to Dubai so I dont know if the pricing is "outa this world" or "outa my league". Will see.<br /><br />Anyway...<br /><br />Good times.Anonymoushttp://www.blogger.com/profile/02474958549024992378noreply@blogger.com0tag:blogger.com,1999:blog-6572125.post-1143756379960310372006-03-30T23:56:00.000+02:002006-03-31T00:06:20.026+02:00Whats the worst steak you've ever had? Well, McGinty's sandton... the steak was horrible, the service worse.... the beer was good. Next time, just drink beer.<br /><br />Johann + Sybrand: This is the telescope I'm getting - <a href="http://www.telescope.com/jump.jsp?itemType=PRODUCT&itemID=366">SkyQuest XT8</a>. Its +- R3500, which is reasonable. I've been warned that it might not fit in my car.Anonymoushttp://www.blogger.com/profile/02474958549024992378noreply@blogger.com0tag:blogger.com,1999:blog-6572125.post-1143207814576967782006-03-24T13:43:00.000+02:002006-03-24T15:43:34.633+02:00Well... its been a busy 2 weeks. I've had very little sleep over the past 3 weeks and well... I'm tired. It may be the sushi I just had for lunch. The smacks of wasabi didnt manage to wake me up (its a shame how weak they're making wasabi these days).<br /><br />In the last 3 weeks i've been quad biking, done a bit of paintball, watched some amazing cricket (I lost 10 cases of beer when RSA beat AUS @ 434 runs), went to watch Metallica at the Coca Cola Colab, went to a lion farm to check out a few cats, played in an MTG tourneyment, started playing GO again, pretty much been having a good time outside work. I've posted a few photos in my photo album (on the right) and I've got more to post.<br /><br />The Colab was good, Metallica were great and the chap selling air guitars on the side of centurion cricket stadium - you're a life saver. (Managed to get him to run to the bottle store and buy about 6 bottles of vodka and 6 2L cokes.) Unplanned but typical - dave and I ended up bumping into Mike, Stu and Miles. This, chantelle and craig managed to get us to skip the entire queue (about a kilometer long). More photos on the way.<br /><br /><br /><br /><em>On a more computer related topic:</em><br />I also been thinking and i think i've come up with a "killer" app. Will have to see.<br /><br />I've recently been annoyed at why people deviate from best practices. Why reinvent the wheel? For this reason I now understand the real meaning of history. Those who dont understand the history are doomed to repeat it. Learn from your forefathers.<br /><br /><br /><em>Back to food:</em><br /><br />You really have to try sushi with the hottest wasabi possible.Anonymoushttp://www.blogger.com/profile/02474958549024992378noreply@blogger.com0tag:blogger.com,1999:blog-6572125.post-1139403066962166762006-02-08T10:43:00.000+02:002006-02-08T14:51:07.030+02:00Its been a while since I last posted. Christmas and New Years Day has come and gone. So has the feeling of being exhausted (company year end). Since then, a few things have happened...<br /><br />My sister's birthday on the 9th of Jan.<br />Finally recovered from the year end on the 25th of Jan.<br />A1GP on the 29th of Jan.<br />Lion park this last weekend.Anonymoushttp://www.blogger.com/profile/02474958549024992378noreply@blogger.com1tag:blogger.com,1999:blog-6572125.post-1135170090923560252005-12-21T11:31:00.000+02:002005-12-21T15:47:01.310+02:00It is done. I have a new car - 2005 A3 2.0 fsi. The Smurf lasted well and has some good memories but alas, trustworthy brakes, a handbrake that works, 110 kilowatt of power and a CD player is something that is worth it. The last straw was the Smurf getting stolen. I would possibly still be driving it as i was not in a hurry to change my car (I'm not worried about safety/status/ego). Cost was possibly the biggest issue. I do not mind spending money aslong as I'm getting good value for what I spend and there are no problems with what I buy. I'm quite comfortable with an old Uno Fiat and I could have waited. After my car was stolen it pressed me to find what was good value and what I'm comfortable with. I spent a good 6 months looking and its a good car and I'm happy.<br /><br />I test drove an A3, A4, two different 318ti, a Yaris, a Getz, and an old automatic nissan. The A3 (my car) was the best of the lot and it has a good interior and the previous owner was kept good care of it. The automatic is was great. I would have to get an automatic at some point in the far future.<br /><br />On a side note, went out during lunch to drop off a DVD at a video store. I had this TP option enabled on my radio and it switched to a radio report and returned to play my CD once the radio report had finished. Nice.<br /><br />I'm listening to Coldplay X&Y and Madonna Confessions. Both are great CDs. The confessions CD is possibly one of the best dance CDs. My impression of Hung Up is that its a great hit but thats where it ends. The other songs on that CD have alot more depth (for dance songs) and the compilation will last longer than that particular song. X&Y is a great compilation and its going to be on my favorites for along time.Anonymoushttp://www.blogger.com/profile/02474958549024992378noreply@blogger.com2tag:blogger.com,1999:blog-6572125.post-1134898661977833952005-12-18T11:28:00.000+02:002005-12-18T11:37:42.033+02:00I went to watch DooM the movie on the weekend. Lotsa memories came flooding back. In particular, they missed a huge part of the movie.<br /><br />(a) No monsters - sure they had these imp like things with eyes. They missed the cacodemons, lost souls, hell knights and most importantly - the cyberdemon and spiderdemon. The cyberdemon is by far the most fear inspiring thing i've ever experienced in my not so long 26year life.<br /><br />(b) They missed the whole 'from hell'. I guess they were afraid of the religious activists. In the end they settled for the whole genetic experiment gone bad plot. Lame.<br /><br />I do not think that the movie did the game justice. It could have been alot more frightening.Anonymoushttp://www.blogger.com/profile/02474958549024992378noreply@blogger.com0