<?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-5218850780972140108</id><updated>2011-04-22T04:36:00.562+02:00</updated><category term='ubuntu'/><category term='general'/><category term='conferences'/><category term='active-pattern'/><title type='text'>Teaching Myself Progamming in x years</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://moandjiezana.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5218850780972140108/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://moandjiezana.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Moandji Ezana</name><uri>http://www.blogger.com/profile/01507510837237294496</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>4</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5218850780972140108.post-4261290392182328999</id><published>2008-12-14T18:31:00.005+01:00</published><updated>2008-12-14T21:08:00.233+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='conferences'/><title type='text'>Devoxx 2008: Conference Day 1</title><content type='html'>&lt;span style="font-style:italic;"&gt;[Originally posted on the &lt;a href="http://www.javablackbelt.com/blog/2008/12/devoxx-2008-conference-day-1.html"&gt;JavaBlackBelt blog&lt;/a&gt;]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;One of the best things about conferences (if you're a consultant, at least), is catching up with a lot of former colleagues at once, even if it means missing the JavaFX/IBM keynote (the IBM part is widely deemed to have sucked). I also got the chance to talk to the guys at the &lt;a href="http://www.kaazing.org/confluence/display/KAAZING/Home"&gt;Kaazing&lt;/a&gt; stand, following up on &lt;a href="http://www.javablackbelt.com/blog/2008/11/javablackbelt-redev08.html"&gt;Nicolas's hype of a few weeks back&lt;/a&gt;. To complement his post, here's an &lt;span style="font-style: italic;"&gt;impromptu&lt;/span&gt;, Scoble-style &lt;a href="http://vimeo.com/2490067"&gt;interview with John Fallows&lt;/a&gt;, Kaazing's CTO.&lt;br /&gt;&lt;br /&gt;&lt;object height="375" width="500"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=2490067&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=0&amp;amp;show_portrait=0&amp;amp;color=00adef&amp;amp;fullscreen=1"&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=2490067&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=0&amp;amp;show_portrait=0&amp;amp;color=00adef&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" height="375" width="500"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Of course, I was there for the sessions and saw a couple particularly good ones.&lt;br /&gt;&lt;br /&gt;Brian Goetz outlined &lt;a href="http://devoxx.com/display/JV08/From+Concurrent+to+Parallel"&gt;the evolution from concurrency to parallelism&lt;/a&gt;, reminding us that &lt;a href="http://www.gotw.ca/publications/concurrency-ddj.htm"&gt;the free lunch is over&lt;/a&gt;. He took us on a tour of the &lt;a href="http://artisans-serverintellect-com.si-eioswww6.com/default.asp?W1"&gt;fork-join API&lt;/a&gt;, discussed work stealing and the higher-level abstraction (in terms of parallelism) introduced by &lt;a href="http://gee.cs.oswego.edu/dl/jsr166/dist/jsr166ydocs/jsr166y/forkjoin/ParallelArray.html"&gt;ParallelArray&lt;/a&gt;. He also stated that closures could have made the API a lot nicer, to which audience-member Joshua Bloch could not help but respond that they introduced a lot of overhead for relatively little gain.&lt;br /&gt;&lt;br /&gt;Bill Venners gave an awesome talk entitled &lt;span style="font-style: italic;"&gt;&lt;a href="http://devoxx.com/display/JV08/The+Feel+of+Scala"&gt;The Feel of Scala&lt;/a&gt;&lt;/span&gt;. Most Scala tutorials and examples I've read make the language seem really hard and concentrate on its functional aspects. Venners took a different approach, focusing on the wonderful DSL-ish syntax he relatively easily created for &lt;a href="http://www.artima.com/scalatest/"&gt;ScalaTest&lt;/a&gt; and augmentations to the type system such as type inferencing, structural types and traits.&lt;br /&gt;&lt;br /&gt;Pete Muir's &lt;a href="http://devoxx.com/display/JV08/Introduction+to+Web+Beans"&gt;&lt;span style="font-style: italic;"&gt;Introduction to Web Beans&lt;/span&gt;&lt;/a&gt; reassured me that Java web frameworks really are moving towards full-stack environments (UI, persistence and integration), but wasn't too exciting in itself. I wonder if we'll ever get to something like a Java version of Google App Engine.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://devoxx.com/display/JV08/How+to+hack+and+secure+your+Java+web+application"&gt;&lt;span style="font-style: italic;"&gt;How to Hack and Secure your Java Web Application&lt;/span&gt;&lt;/a&gt; is a great title, but things got off on the wrong foot when the presenter spent five minutes explaining the benefits of the wiki ("Everyone has the latest copy of the information!" - you don't say) and it kind of went downhill from there. The only benefit here was learning about the extensive security resources and tools &lt;a href="http://www.owasp.org/"&gt;OWASP&lt;/a&gt; has created.&lt;br /&gt;&lt;br /&gt;I'm looking forward to the videos coming up on &lt;a href="http://www.parleys.com/"&gt;Parleys&lt;/a&gt; so I can catch up with some of the talks I missed. Were you at Devoxx? Let us know in the comments!&lt;br /&gt;&lt;br /&gt;Some other Devoxx postings:&lt;br /&gt;The Java Posse's &lt;a href="http://www.javaposse.com/index.php?post_id=412440"&gt;live podcast&lt;/a&gt;&lt;br /&gt;&lt;a href="http://blogs.hippo.nl/jasha/2008/12/devoxx_2008.html"&gt;Jasha of Hippo CMS&lt;/a&gt;&lt;br /&gt;&lt;a href="http://kollerie.wordpress.com/2008/12/14/devoxx-08/"&gt;Guido Kollerie&lt;/a&gt;&lt;br /&gt;The Java Blog has an extensive report, starting with &lt;a href="http://thejavablog.wordpress.com/2008/12/08/devoxx-university-day-1/"&gt;University Day 1&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5218850780972140108-4261290392182328999?l=moandjiezana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moandjiezana.blogspot.com/feeds/4261290392182328999/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://moandjiezana.blogspot.com/2008/12/devoxx-2008-conference-day-1.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5218850780972140108/posts/default/4261290392182328999'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5218850780972140108/posts/default/4261290392182328999'/><link rel='alternate' type='text/html' href='http://moandjiezana.blogspot.com/2008/12/devoxx-2008-conference-day-1.html' title='Devoxx 2008: Conference Day 1'/><author><name>Moandji Ezana</name><uri>http://www.blogger.com/profile/01507510837237294496</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-5218850780972140108.post-1040866094261429395</id><published>2008-11-04T22:46:00.000+01:00</published><updated>2008-11-04T22:46:33.483+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>intrepid ibex, hp, wi-fi learn to make nice</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_m4isv41q84A/SRDCmNpLopI/AAAAAAAAFmI/N73L_hY0vOs/s1600-h/PICT1637.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://2.bp.blogspot.com/_m4isv41q84A/SRDCmNpLopI/AAAAAAAAFmI/N73L_hY0vOs/s400/PICT1637.JPG" alt="" id="BLOGGER_PHOTO_ID_5264921926149317266" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Ubuntu upgrades usually represent several steps fowards, but they can also take one or two back, at least temporarily.&lt;br /&gt;&lt;br /&gt;The process of upgrading to Intrepid Ibex started flawlessly, as expected. I was even happily surprised to see that my AZERTY keyboard no longer switched to QWERTY on the login screen (which it had started doing ever since I'd attempted to hook up a projector. Talk about bizarre side-effects!). But after that high, came a low: I couldn't connect to my wi-fi. In fact, the network card wasn't even being recognised.&lt;br /&gt;&lt;br /&gt;Some searching brought me &lt;a href="http://djkaos.wordpress.com/2008/11/02/running-wifi-on-ubuntu-810-hp-6515b"&gt;the answer&lt;/a&gt;:&lt;br /&gt;&lt;blockquote&gt;Add folowing &lt;span style="font-style: italic;"&gt;[sic]&lt;/span&gt; lines to /etc/modprobe.d/blacklist&lt;br /&gt;&lt;br /&gt;blacklist ssb&lt;br /&gt;&lt;br /&gt;blacklist b43&lt;br /&gt;&lt;/blockquote&gt;Since I have a HP nw9440 and he or she has a 6515b, I guess the advice applies to many models. What does it mean? I have no idea, but it works!&lt;br /&gt;&lt;br /&gt;I'll just add that you'll need to open the file with administrative privileges, for example with:&lt;br /&gt;&lt;br /&gt;sudo gedit /etc/modprobe.d/blacklist&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5218850780972140108-1040866094261429395?l=moandjiezana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moandjiezana.blogspot.com/feeds/1040866094261429395/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://moandjiezana.blogspot.com/2008/11/intrepid-ibex-hp-wi-fi-learn-to-make.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5218850780972140108/posts/default/1040866094261429395'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5218850780972140108/posts/default/1040866094261429395'/><link rel='alternate' type='text/html' href='http://moandjiezana.blogspot.com/2008/11/intrepid-ibex-hp-wi-fi-learn-to-make.html' title='intrepid ibex, hp, wi-fi learn to make nice'/><author><name>Moandji Ezana</name><uri>http://www.blogger.com/profile/01507510837237294496</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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_m4isv41q84A/SRDCmNpLopI/AAAAAAAAFmI/N73L_hY0vOs/s72-c/PICT1637.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5218850780972140108.post-781564690253145810</id><published>2008-11-01T01:29:00.000+01:00</published><updated>2008-11-01T01:29:10.836+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='active-pattern'/><title type='text'>active-pattern</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_m4isv41q84A/SQubrNSEK-I/AAAAAAAAFmA/L78ua_D4V58/s1600-h/P7133146b.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://2.bp.blogspot.com/_m4isv41q84A/SQubrNSEK-I/AAAAAAAAFmA/L78ua_D4V58/s400/P7133146b.JPG" alt="" id="BLOGGER_PHOTO_ID_5263471756114668514" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;One way to learn about programming is to actually, well, program.&lt;br /&gt;&lt;br /&gt;I've been thinking about the &lt;a href="http://en.wikipedia.org/wiki/Active_record_pattern"&gt;Active Record&lt;/a&gt; pattern for a while, and how different it is from the three-tier architectures I'm used to. Both the traditional Entity/DAO layering pattern and the API (since you're calling persistence methods outside DAO's) are quite different. Views seem to vary on what Active Record actually is, as Martin Fowler's &lt;a href="http://martinfowler.com/eaaCatalog/activeRecord.html"&gt;original description&lt;/a&gt; has it bundling data and behaviour, while Bob Martin&lt;a href="http://blog.objectmentor.com/articles/2007/11/02/active-record-vs-objects"&gt; limits it to pure data structures&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Brief looks at Ruby on Rails piqued my interest. Then, a &lt;a href="http://choixdegarde.appspot.com/"&gt;tiny (semi-finished) utility webapp&lt;/a&gt; I wrote on Google App Engine for my girlfriend gave me a first practical taste of Active Record (and of what an environment with out-of-the-box full-stack integration feels like). Currently, I'm writing a small in-house web framework on top of Struts 1 for a client, and I get the feeling that Active Record could be a good way of turning it into a full-stack environment.&lt;br /&gt;&lt;br /&gt;I'm aiming, first, for a very simple usecase to get a feel for the pattern: how it affects the overall design, the ORM challenges and integration with existing frameworks, effect on amount of boilerplate, etc. Later, maybe it could grow into something usable by a real-world, basic CRUDing app.&lt;br /&gt;&lt;br /&gt;Some of my initial assumptions:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;ActiveRecords are actually delegating to a DAO-like Repository. This Repository is injected into ActiveRecord instances (dependency injection is handled by &lt;a href="http://code.google.com/p/google-guice/"&gt;Guice&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;ActiveRecords mirror DB records exactly, except that foreign keys become object references&lt;/li&gt;&lt;li&gt;This whole thing is pointless if it doesn't remove a lot of tedious DAO-related boilerplate&lt;/li&gt;&lt;li&gt;It must be kept simple&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;With that, I give you the barely-born &lt;a href="http://code.google.com/p/active-pattern/"&gt;active-pattern&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5218850780972140108-781564690253145810?l=moandjiezana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moandjiezana.blogspot.com/feeds/781564690253145810/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://moandjiezana.blogspot.com/2008/11/active-pattern.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5218850780972140108/posts/default/781564690253145810'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5218850780972140108/posts/default/781564690253145810'/><link rel='alternate' type='text/html' href='http://moandjiezana.blogspot.com/2008/11/active-pattern.html' title='active-pattern'/><author><name>Moandji Ezana</name><uri>http://www.blogger.com/profile/01507510837237294496</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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_m4isv41q84A/SQubrNSEK-I/AAAAAAAAFmA/L78ua_D4V58/s72-c/P7133146b.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5218850780972140108.post-8238131798060302244</id><published>2008-10-08T23:05:00.000+02:00</published><updated>2008-10-08T23:12:44.231+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='general'/><title type='text'>purpose</title><content type='html'>I'm a professional programmer at &lt;a href="http://www.javablackbelt.com/"&gt;JavaBlackBelt&lt;/a&gt;. I read a lot of blogs, a good amount of articles and a fair amount of books. I watch a lot of videos. And I realised that I was forgetting a lot of what I consumed.&lt;br /&gt;&lt;br /&gt;The other day, I was watching &lt;a href="http://www.infoq.com/presentations/Craftsmanship-Scott-Dillman"&gt;Fostering Software Craftsmanship in a Corporate Setting&lt;/a&gt; and the speaker stated that writing a book review, for example, was a way of better absorbing its information. Seemed logical to me, so I've decided to do pretty much exactly that, except for every kind of programming tidbit I come across. Well, only the ones that strike me as interesting enough to remember.&lt;br /&gt;&lt;br /&gt;This blog's title is of course a more indeterminate variation on Peter Norvig's &lt;a href="http://norvig.com/21-days.html"&gt;Teach Yourself Programming In Ten Years&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5218850780972140108-8238131798060302244?l=moandjiezana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moandjiezana.blogspot.com/feeds/8238131798060302244/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://moandjiezana.blogspot.com/2008/10/purpose.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5218850780972140108/posts/default/8238131798060302244'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5218850780972140108/posts/default/8238131798060302244'/><link rel='alternate' type='text/html' href='http://moandjiezana.blogspot.com/2008/10/purpose.html' title='purpose'/><author><name>Moandji Ezana</name><uri>http://www.blogger.com/profile/01507510837237294496</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>
