Showing posts with label technology. Show all posts
Showing posts with label technology. Show all posts

Wednesday, December 26, 2012

The boundaries are blurring

1981759130 caster semenya zwitter leichtathletik 9It's interesting to watch how the recent trend to mobile and browser applications is changing the traditional understanding of client-server separation and how the traditional territories of some technologies are blurring.

Two recent examples in the field of persistence technologies illustrate this blurring of boundaries quite well:

  • JBoss Errai
    JBoss Errai represents the opposite trend compared to Rack::CoreData: It takes JPA into the browser! JPA is traditionally a server-side (or at least server-interfacing) technology. I am pretty sure that it was not intended as a browser technology. But with the rise of HTML5 and browser-side persistence there is the pressure to take that programming model to the web client.

It seems that the triumph of mobile apps and rich internet applications has quite a disruptive effect on the traditional server-side technologies and frameworks.
I am wondering where this will lead? Both of the above examples do not feel quite right in my opinion… but hey, maybe we will get JPA support in HTML6 or Oracle will include direct CoreData support in the future ...

Monday, August 29, 2011

From SVN to TFS: The Good, The Bad and The Ugly

For my recent MSDN TechTalk I did some research how to migrate a source control repository from SVN to TFS. While I am not advocating this migration, here are the options:

The Good:

Currently you have a choice of three tools:

imagesvn2tfs:
svn2tfs is a simple tool written in VB.NET. You need to have SVN installed in order for this tool to work. It basically replays every revision from SVN as changeset into TFS.

imageTFS Integration Platform:
The TFS Integration Platform is the Swiss army knife for many possibilities to get data in and out of TFS. The TFS integration platform is available as supported Microsoft product on Visual Studio Code Gallery and as bleeding-edge release on Codeplex. The SVN adapter is currently only part of the codeplex release.

imageTimely Migration:
Timely Migration is a commercial tool. There are different modules for different source version control systems. To migrate from SVN to TFS the SVNToTFS module is needed. It costs $1995. Trial versions can be requested, but they do not migrate the content of the files.

svn2tfsIntegration PlatformTimely Migration
open sourceopen source, from Microsoftcommercial, $1995
simple and easy to usemany features, complex, complicatedpowerful features, easy to use
enough documentationsparse documentationgood documentaion
SVN tags can be migrated as branchesSVN tags are migrated as branchesSVN tags are migrated to TFS labels
user-mapping is enforceduser-mapping is possible but not enforceduser-mapping is enforced and comfortable
migration is aborted in case of an errorsome errors can be manually resolved and migration can be then be resumedmigration gets resumed when restarting after error resolution

With each tool I was able to successfully migrate an example project from a local SVN repository.

The Bad:

svn2tfs: I was not able to migrate SVN repositories from Google Code. The tool systematically failed, because the initial repository revision for the project layout (dirs for trunk, tags and labels) has not author. The tool can not deal with that. On the positive side was, that the source code of the tool is very simple so that I was quickly able to create a patch, that fixed this problem. On the negative side was, that there was no reaction on the patch I submitted. The project seem pretty dead.

TFS Integration Platform: It seems not possible to do an aynonymous login to SVN. If you do not provide valid user/password, the migration fails with an ugly “NullReferenceException”. The documentation for the SVN adapter is sparse. For instance there was no documentation at all how to map svn users to TFS users. fortunately (after some nudging from my contact at Microsoft) my question in the forum was answered. Some days later even a blog post about the topic was published. Another shortcoming is, that the mapping from svn users to TFS users is not enforced. If no mapping is specified, each svn user is silently mapped to the user that is running the migration tool. There is no support in checking if all users from svn are mapped to TFS users.

Timely Migration: The only negative thing is the price since you probably need the tool only once.

The Ugly:

With none of the tools I was able to migrate the Nerd Dinner repository from Codeplex. Each tool either reported an error or froze indefinitely.

Thursday, August 25, 2011

Is there any hope for other DVCS in the Git imperium?

Lego star wars chr1

As we are entering the era of language wars on the JVM there is another war looming on the horizon...

This new war is coming out of the realm of distributed version control systems:

Git seems to have a nearly undisputed imperium in this realm and recently has squished its known competitors:

Despite the seemingly striking dominance of Git, there are still brave contenders sprouting out of the dvcs land:

All of them featuring some unique features (although features I am not always sure I would like to see coupled to a source control system ...) and most of them somehow promising more simplicity compared to Git.

I wonder if they have any chance against the massive momentum of Git and its ecosystem ...

Monday, April 18, 2011

Published: My podcast about Reactive Extensions for .NET (RX) with Bart De Smet

OnTechTalksMind-Icon My interview with Bart De Smet about Reactive Extensions for .NET has been published last week.

You can download the podcast episode directly or you can can subscribe to our podcast feed in iTunes.

RX Reactive Extensions is a really interesting project from Microsoft for the .NET platform and also for JavaScript. It is a fresh approach to asynchronous and event-based programming. Looking at the concepts of Reactive Extensions definitely did broaden my horizon.

Bart_De_Smet

Bart De Smet is a very interesting guest.
He is actively involved in the design and implementation of Reactive Extensions.
I liked his theoretical approach to the topic of reactive programming and his ability to explain complex things in a simple way.

And the coolest thing about him: He titels himself “Functional Programming Geek” on his Microsoft business card!

Wednesday, December 23, 2009

Maven gets partially absorbed by modern JVM languages …

matroschka250pxMaven has a lot of interesting and useful ideas, but its usage is often over-complicated and several concepts are too much entangled. (examples: 1, 2, 3)

The foremost feature of Maven that comes to mind is probably dependency management. Maven probably standardized dependency management for the Java platform. That’s probably also the reason for its wide adoption.

At this time there are already several attempts for smaller and easier solutions that repackage the ideas about dependency management from Maven. Their promise is to be a cleaner and easier to use.

Foremost there is Ivy, which provides Maven-like dependency management for Ant.

There are even two JRuby projects that bring simplified Maven-like dependency management to the JVM: maven_gem and javagems.

Especially interesting is Grape, which provides dependency management for Groovy at a language level (by integrating Ivy).

I think these examples are an impressive demonstration how the Java platform grows and how good ideas and concepts are adapted and evolved.

Thursday, August 6, 2009

Learned today: Reverse Ajax

http://directwebremoting.org/dwr/media/dwr-logo-200.gif Issue 1.09 of Javamagazin has an interesting article about DWR.

Particularly nice is the explanation and overview of Reverse Ajax.

There are three techniques how to realize Reverse Ajax:
  • Polling - bases on continuous requests by the client, if the server has data he can put it in a response.


  • Comet - based on long requests, there is always a request available on which the server can send a response. Comet itself can be realized in two ways:

  • Long Polling: Server sends a complete HTTP Response. Request is closed. Client immediately sends a new request.

  • Streaming: The server returns only a Partial HTTP Response, the initial request is not closed.

  • Piggyback - fully passive, client events are needed. Server sends additional data on top of a normal response.


  • Thursday, July 16, 2009

    OS X: fink messes with your java classpath

    Recently I spent half of a night correcting the consequences of a stupid decision:
    I thought it would be a good idea to install Ant with Fink...

    Generally I am a big fan of the OSX package managers Fink and MacPorts. They have saved me a lot of work before.

    But after last night I am very skeptical if it is really a good idea to install a java application via Fink.

    I just typed fink install ant ...

    ...and after the installation finished, my java classpath was quite borked!
    Fink added tons of jars to my classpath (specifically everything listed in /sw/share/java/classpath).

    This had the effect, that Canoo Web Test was not working any more!
    Reason: Fink has put an incompatible version of Rhino on my classpath ...

    My first error was probably, that I installed the ant package and not ant-base package. Because ant comes with a lot of java dependencies ...

    Nevertheless I don't think people usually want fink to mess with their java classpath ... this has such a potential to break things ...

    After finding out the reason, I spent some time with fink purge -r to get rid of all those packages that polluted my classpath... It turns out that installing stuff with fink is a lot easier than getting rid of it again ...

    Wednesday, June 17, 2009

    IE vs. Firefox - Microsoft has to be desperate?

    If this is not a joke, I don't know what is ...



    Well, we all know how David versus Goliath ended ... though it is not bequeathed that Goliath went for a blow below the belt line ;-)

    Wednesday, April 15, 2009

    Moving into the cloud, loosing your freedom?

    clouds.jpg I am a fan of the recent cloud computing hype. I have my own attempts to merge into the cloud.

    I am also a fan of opensource software, of which the FSF and GPL are important proponents.

    Google, Facebook, Twitter and friends, with all their free cloud applications lured me into thinking that the cloud and opensource are best frinds.


    But recently two articles opened my eyes:
  • The JavaScript Trap by Richard Stallman (founder of GNU and FSF):
  • Silently loading and running non-free programs is one among several issues raised by "web applications".
  • GPL's cloudy future by Jeremy Allison (lead Samba developer):
    In such a world, service providers can use GPL-licensed code in proprietary back-end server farms with impunity. This seems contrary to the spirit of the authors of much of the GPL-licensed code used in this way, although it strictly complies with the license.
  • inside-of-a-prison-cell.jpg
    Well, this does not yet stop me from using cloud applications, but I think it is important to realize that there are not just Alphas in this brave new cloudy world...

    Tuesday, March 17, 2009

    reCAPTCHA / Crowdsourcing

    WindTurbine.jpgreCAPTCHA is an interesting idea.

    Seemingly 150'000 hours are spent every day, solving Captchas. This is quite a waste of intellectual energy. reCAPTCHA now tries to recycle this intellectual energy... something like a mental wind-power-plant...

    Tuesday, February 24, 2009

    Do you think you have seen it all?

    I actually have met people in our industry, that told me in all sincerity, that they know how to program, that they don't have to learn any more!

    Well, I for myself don't think that I will ever reach that stage of bliss ...

    Every day proves that the world in IT is far from settled.

    Last autumn Adam Bien was giving a lecture about 'Designing The Boundary - Rich UI Meets Efficient Java EE Backend'. The heavily interactive UI of an IDE was the perfect example for an application, that should/must be realized as a Rich/Fat-Client...

    ... fast forward half a year ...

    ... say hello to the web based IDE.



    Bespin, the web-based code editor from Mozilla is quite exciting, something I did not think would even be possible ...
    And there is also herokugarden...

    I am looking forward to do some heavy web-based code refactoring over the touch screen of my iPhone :-)

    Saturday, November 22, 2008

    Some requirements are different...

    Last week I was at a requirement engineering course.

    One thing that stuck was, the Kano model, which can be used to classify requirements:
    http://upload.wikimedia.org/wikipedia/commons/1/14/Kano_Model.gif


    Depending on their category (excitement-, performance- or basic-attibutes) the corresponding requirements have a very different influence on customer-satisfaction.

    Basic attributes can easily be overlooked, if you are not familiar with the domain, because often they are not explicitly mentioned.

    Excitement attributes are the factor that make the difference.

    Over time, with each new product-version, given attributes drift from excitement to performance to basic.

    Thursday, October 23, 2008

    stackoverflow - let it flow some more!

    http://stackoverflow.com/Content/Img/stackoverflow-logo-250.png I am pretty late in joining the choir, but I think stackoverflow.com is an amazing site.

    This is the very definition of Web 2.0. Just try it: ask a question and be amazed ...

    The brains behind the site are the heavyweights Joel "on Software" Spolsky and Jeff "Coding Horror" Atwood.

    There are two interesting podcasts with Jeff Atwood, discussing the creation of the site: Herding Code #14 and Hanselminutes #134.

    The podcasts reveal some particular interesting facts about the technical realization [see also here]:
  • The site is based on the Microsoft ASP.NET MVC framework, which is still beta!
  • The DBMS is SQL Server 2005
  • The whole site is running on one server: two quad-core CPUs with 4GB RAM
  • Web-Server and Database take about the same load
  • The DB-schema consists of about 16 tables

  • Basing a heavy-traffic application on beta-technology, thats probably what they call extreme courage.

    The server seems quite a lightweight! I have seen enterprise applications with a lot less load that supposedly needed much more horsepower...

    I would have expected more tables in the schema... but maybe they were talking only about the dynamic part of the data...

    Monday, October 13, 2008

    Backing up iTunes Library

    I have a Netgear Ready NAS NV+.

    I am using rsync to backup my music library to a share on the NV+. This is the exact command I am using:
    rsync -av --progress --stats Music/iTunes/ /Volumes/media/Music/iTunes/

    [I am posting this mostly as a reference for myself, because I keep forgetting rsync syntax]

    Thursday, September 25, 2008

    Making money getting real ...

    images.jpg 37signals shows us an elegant way to make money ...

    ... a nice fact to throw into the face of the next one who claims there is no money in Ruby on Rails.

    Wednesday, July 16, 2008

    Converting html to pdf

    I wanted to put the content of the SCEA 5 Study Guide in one single pdf document.
    This is what I did:

    Download all the files used by the page with wget:
    wget -r http://java.boot.by/scea5-guide/

    Convert the downloaded html-pages into one pdf with htmldoc:
    htmldoc index.html pr01.html pt01.html ch*.html pt02.html --outfile scea5-guide.pdf --footer /

    On the Mac you can easily install wget and htmldoc with fink:
    fink install wget htmldoc-nox

    Wednesday, July 9, 2008

    Web 2.0.1 - a realityloop feeding itself?

    nickieatmirror.jpg
    Folks are staring at themselves in the monitor staring at themselves in the monitor staring at themselves in the monitor, on and on, completely trapped in a reality loop that never ends.

    -- Shannon McFarmland

    (in Invisible Monsters by Chuck Palahniuk)


    I blogged about not not getting Web 2.0.

    In the meantime I yielded to the hype... I have accounts on twitter, reddit, readbag, flickr, del.icio.us, Scripd ...

    But it seems I am lagging behind the hype again! The current hot new thing are sites that aggregate all that valuable Web 2.0 content!

    Sites and technologies like FriendFeed, Yahoo Pipes and Gnip are the next bubbles of coolness...

    ... so content itself seems to be available in abundance. The trick is now to aggregate and filter all this content that's floating around on the web, and then re-present it again as (new) content ...

    Welcome to the age of information-overflow!

    Time will tell how this affects us and our notions of information-consumption.
    This article has some interesting observations: Is Google Making Us Stupid?

    Here is my private manifestation of the realityloop: I export my Google Reader Shared Items to my FriendFeed which I then subscribe again in Google Reader ... senseless, but happily trapped in an endless loop ...

    Tuesday, July 8, 2008

    Grab them while they are hot ... (remember napster?)

    logo.gifJust discovered Scripd...

    The interface is really neat ... yet another trendy rails app?
    iPaper is also slick at first glance... but do you really want to read documents in your browser?

    But then again, is it really more than just riding the Web 2.0 hype? Time will tell ... and I am grabbing the interesting documents while they are still available :-)

    Sunday, May 25, 2008

    IntelliJ IDEA Caret Placement

    One of the most annoying behaviors in IntelliJ IDEA is the placement of the caret in the text editor. When you click in the editor, the cursor is paced exactly at the position where you pointed the mouse, even if there is no text anywhere nearby!
    I cant see the benefit or a sensible use-case for this behavior...

    Picture 2.png


    In every other graphical text editor I know of, the cursor jumps to the end of the text on the respective line.

    Now I finally found the setting that lets IntelliJ behave like the other text editors I know:
    Under Settings->Editor->Behavior switch off "Allow placement of caret after end of line" (in the box "Virtual Space").

    Picture 1.png


    I think this should be the default , new users probably expect this behavior.

    Wednesday, May 14, 2008

    Leap into your sources

    Leap seems to be quite an interesting product. It aims to be an alternative to the Finder in Mac OS X.

    Leap implements some advanced and interesting UI-concepts. Especially the "Go Deep"-mode combined with filtering allows interesting usages.
    Picture 1.png

    In combination with Quick Look, Leap can really be helpful.
    Especially when browsing through java projects with their nested directory structure Leap can help you avoid to step up and down the directory ladder i.e. when looking at a domain object and a related service.

    Leap offers a lot of other features (like tagging), but I have not yet found the way to using them efficiently ...

    But I have not yet decided if it is really worth it's price for me ...
    Related Posts Plugin for WordPress, Blogger...