Uplevel e-solutions

Webware and Rich Internet Applications

Archive for the ‘Inne’ Category

Paymo Experiment

When you think about it, we’re living now in extremely time precisely world. A couple of years ago a term “time estimation” was a little bit abstract. Wasn’t a big deal to went wrong with time estimation at the level of days or weeks. Today we have different time granulation. In project estimation we are not operating on days or weeks, but in hours, what is more “every hour matters” because simple speaking - our client paying for it. So in this case, if we have so extremely tiny field for make mistake, we have to have totally different tools for time measuring. Nowadays everyone using timetrackers, different project management applications etc. I’m using Basecamp and TargetProcess now, but problem is in other thing. People haven’t motivation to track their time or simply for a work. On other hand, all these PM software usuallly have employee time monitoring, but it’s only for PMs not for them actually, so single programmer can’t see if he is now sufficiently effective opposite to others. To change this and for fun, I’ve made through a weekend very simple and funny “twitter like” app called Paymocontest. What it is ? It’s based on Paymo timetracker which we are using here and which is really really nice. So we’re using Paymo timetracker tool installed on desktop, then we have paymocontest app which allows you to add/remove/find/follow people you’re working with and track what they are doing or how much time they spent on some project. Moreover we have some bonuses: stars, clouds, and other figures to people with the longest day/week working time, or with the most completed tasks, day entries. Of course is not a complicated software which gave you the way to working better, and it’s not a reference GTD implementation. But it’s very funny and nice place to challenge your motivation to work. If you wanna try, go just to paymocontest.pl. Have fun :)

screenshot

  • Comments
  • Filed under: Inne
  • The User Interface Resource Center

    This is very useful site: www.uiresourcecenter.com , you can find there many free articles and White Papers written by industry leaders about user interface design and rich Internet applications (RIAs). It is maybe one of the most important thing in web development - user interfaces, even if you create applications in Seaside, Rails or something incredible fancy, without good UI it will be still rubbish and useless. So go there and make your user interfaces properly :)

  • Comments
  • Filed under: Inne
  • DSL and Metaprogramming with Smalltalk

    Today I’ve been thinking about beauty of Smalltalk, about how productive we can be with Squeak or Seaside. Of course everone has a different opinion about productivity and efficiency. For me it means that I don’t need to worry about nothing else but only logical aspect of some programming problem, I mean - code at the speed of thought. It’s more a pragmatic, practical way of thinking but it works. Today we have many outstanding frameworks, languages, but even if you choose my favorit Ruby on Rails you have to still answer on several questions:

    • What IDE or Editor is the best for me ?
    • What version controll system is more powerfull, SVN ? GIT ? ok GIT so I must change my repository.
    • What debugging tools are the best for my new environment or language ?
    • WTF ? Why it doesn’t work again ?!

    This is only the top of the iceberg. You haven’t these problems with Squeak or Seaside, you have one image and there is everything - version controll, IDE, debugger (great debbuger!), editors. What is more, you can save your image and copy to other computer in one move and it still works , it’s so simple. For me Seaside or Squeak is something like an iPod, you have only features which are really important nothing else. One small shiny button which gives you unlimited possibilities :).

    But back to my topic DSL (domain-specific language) with Smalltalk, it’s really iteresting because I was always talking here about Ruby and power which gives us. For example BNL (Business Natural Languages) or of course simple stunnig Ruby DSL example - RSpec. But .. again things still could be better, Ruby is great to build DSL although Smalltalk is even better. Smalltalk seems much more a notation, we can simple say “that can do nothing but build domain specific languages.” - sentence from really good onsmalltalk blog. Why it is so ? “Ruby isn’t object oriented at the level Smalltalk is, is still falls back to procedural constructs and special syntax for many things. Smalltalk, is pure, objects all the way down, at every level, even the simplest and most common domain specific language of all, predicate logic. When you create a domain specific language in Smalltalk, your code never looks different than code provided by the compiler writer himself, it’s one syntax to rule them all.”. There is also an interesting podcast called Smalltalk is a DSL. DSLs have always been part of the Smalltalk farbic  - “Code should read like a conversation“. Sounds nifty and it really is, Smalltalk is so elegant in all these things and this elegance is in my opinion simple way to create great programs.

    Another thing is Metaprogramming, discipline in which Smalltalk always wins. Here is a good example of metaprogramming from Randal Schwartz’s blog:
    “You can even create anonymous classes and give them behavior, then instantiate them.”

    
    | myClass myInstance |
    myClass := Behavior new. "create anon behavior"
    myClass compile: 'theAnswer ^42'. "add a method for instances"
    myInstance := myClass new. "create an instance"
    Transcript show: myInstance theAnswer; cr. "shows 42"
    

    Look also at SOUL(The Smalltalk Open Unification Language). If we are in “Meta World” there is another interesting thing in smalltalk called Magritte - fully dynamic meta-description framework.

    So generally as we can see Smalltalk is very very flexible and powerful language in which we can solve all our problems in very elegant and simple way.

  • Comments
  • Filed under: Inne
  • Object and Native XML databases

    Last time I haven’t much time to write here but there is an interesting issue I’m always thinking about. The problem is I really don’t like SQL. I know, it’s good in many situations, people always use it, and I’m one of them. But this is not really elegant solution, even if i’m using ORM’s like ActiveRecord or DataMapper in Rails for example, or GLORP in Seaside. Of course it works, what is more, it works really good, I’ve been using it for many comercial projects so i cant simple say - it’s rubbish. But things still could be better. It’s a little bit complicated  to converting objects to sql, sql to object and so on and so on. Object databases is more natural choice, i’m programming in Object Prorogramming Language and the “simplest” way is to choose Object Database. What is more Object Databases are much better for Agile development than RDBMS. “Modern software development processes are evolutionary in nature, but more often than not agile. Agile techniques include refactoring, agile modeling, continual regression testing, configuration management of all development assets, and separate sandboxes for developers to work in. The use of relational database (RDBMS) technology complicates the adoption of these techniques due to the technical impedance mismatch, the cultural impedance mismatch, and the current lack of tool support. Object databases (ODBMSs) make it easier to be agile.” full article. Somebody also said that Object Databases are not ready for real production software - not true. Look at GemStone for example ! or DB4O (there is also  Ruby implementation), GOODS (great Smalltalk implementation by Avi Bryant) or MAGMA (for Seaside !). The similar problem is in the XML world. I’m working with Flex and there are situations that all communication (backend - frontend) is providing by XML rather than AMF. And again of course you can use e.g. Rails as a backend ORM and converting objects to XML and sending it to Flex app and back. But is it the simplest way ? Probably not, in my opinion more elegant and easier way is to store XML in the Native XML database and manipulate it by using XQuery or XPath. It’s definitely natural solution, of course again there are many ways like databases XML enable (IBM DB9 or MSSQL) - but expensive and really complicated. If you’ll choose Native XML interesting thing is Sedna (I even created admin app for it :p) , eXist or Berkeley DB XML - my friend Evgenios Skitsanos is using it probably, so you can ask him ;). You should read also interesting articles about NXD (Native XML databases): Managing XML data, Introduction to NXD. Have fun :)

  • Comments
  • Filed under: Inne
  • Playing with Squeak and Seaside

    Like I said Seaside is really outstanding framework created by Avi Bryant. Outstanding is also Squeak (Smalltalk implementation) which you can directly using within Seaside. Both things are really great so I want to share with you with some interesting materials.

    Last time I found on webdevradio interview with Randal Schwartz (now Seaside evangelist). He gave his talk about Seaside future and other things like Squeak and GemStone. Here is a podcast:


     Get MP3 (49 MB | 72:35 min)

    Generally if you want to start with Smalltalk here is great site with free books about it Free Smalltalk Books. But my favorite is Squeak so if you want to play with it, your first book should be this: Squeak By Example. Useful is also Squeak Wiki or Sqeak news. Last time was also Smalltalk Solutions 2008 conference which you can find interesting materials like GLASS(GemStone, Linux, Apache, Seaside, and Smalltalk) or Randal Schwartz’s talk “Persistence for Seaside“.

    Finally there is an another interesting blog about techniques for using GemStone/S and Seaside called GemStoneSoup.

    So again, if you haven’t yet tried Seaside or Squeak you should do it now :)

  • Comments
  • Filed under: Inne
  • Singularity Conference

    What is Singularity?

    “Singularity is a global web conference that links geographically-dispersed local communities in a common experience via the Internet.”

    It’s really exciting because we don’t always have time to traveling. But I love conferences!  meeting new people, learning new things, and being exposed to new ideas. So internet gives us solution and Singularity Conference is that solution :) You can read more here.

    In July, they’re getting ready to launch the new Singularity web site that Aral Balkan has been building in Python with Django and Google App Engine. So it’s time to signup there now ! Also read about speakers at http://singularity08.com/.

  • Comments
  • Filed under: Inne
  • Vertebra - cloud computing platform

    Like I said last time, cloud computing and generally cloud architecture is a future in my, and not only my opinion. On last RailsConf 2008 Ezra Zygmuntowicz gave his talk about Vertebra - next generation Cloud Computing Platform built with Erlang/Ruby and centered around Ejabberd and XMPP. Very cool stuff, here is a PDF of the slides from presentation: Vertebra.pdf. Theory -  “Vertebra can be used for automating the cloud as well as for distributed real time application development. The whole idea of Vertebra is to democratize the cloud, abstracting the cloud interface API’s and allowing folks to utilize multiple cloud providers based on a number of cost/benefit factors. It also has large potential for enterprise integration projects.” What is more Ezra said that he’s got approval to release all of Vertebra as open source with a GPL license, of course they will also offer paid support for it as well as hosted Jabber/Erlang infrastructure as a service. So generally great news to someone wants to start with cloud architecture :)

  • Comments
  • Filed under: Inne
  • Interesting stuff

    There are two really interesting tools (or maybe a business solutions) I want to share with you. I was working with both and i’m simple impressed.

    First one called Dabble DB.

    It is a web-based application that lets you work with data on your own terms. Instead of downloading an application, you upload your data and then build your own database application. Import Data,  Extend it or change it as you go. Restructure and redefine how you organize your data on a whim. Its made by Avi Bryant and working on SeaSide framework !! (also listen Avi conversation about SeaSide and Dabble DB) You can find video presentation there which will tell you why its so good :)

    Second one (maybe not so staggering and powerfull but also good) called Viviti

    It’s a website builder in which you can easy create structure, content and design of your website. And it really good works, has nice usability and everything you need. Viviti is integrated with many social portals like flickr, youtube etc.. So just try it ;) if you want to do it now i have some invitations on my account so tell me only.

  • Comments
  • Filed under: Inne
  • Seaside and continuations

    Generally if you haven’t read about continuations yet, you have to do it now ! There are also good IBM’s articles to understand continuations idea : Crossing borders: Continuations, Web development, and Java programming and Use continuations to develop complex Web applications - really cool stuff.

    The basic idea is this: You can let your programming framework load your application’s state before a request and save your application’s state after each request. It may shock you to learn that you can do Web development and get a stateless experience for the user with a stateful model for the programmer. Of course there are not only adventages but you will see that continuations represent a real advancement in web development frameworks and makes you more productive.

    Several languages have continuations-based approaches. The most common: Lisp, Ruby, and of course Smalltalk. The most popular continuation server and framework is Seaside. Im writing about it because I’ve just started to use it and I’m really excited about it :) See Seaside tutorials and videos. Other interesting projects are: Iowa (Ruby framework), Wee (Ruby), Continuity (Perl) or VieWeb (Lisp). Have fun ! :)

  • Comments
  • Filed under: Inne
  • usability + efficiency

    Mimo technologii, które mamy dziś dostępne, podstawowym zadaniem powinno być to, żeby nie zabić od razu tego kto będzie używał rzeczy w nich zrobionych (usability). Drugim zadaniem jest to, by nie zabić też  samego siebie przez ciągłe stanie w miejscu (efficiency). Podstawową lekturą jesli chodzi o pierwszy punkt powinno być Creating Passionate Users. Pomocny jest tez serwis stworzony przez effectiveui pod nazwą: User Interface Resource Center(dużo dobrych artykułów). Warto  przejrzeć www.usability.gov i przeczytać super książkę Steve Krug - Dont Make Me Think.

    Co do efektywności jako takiej dobrze jest odwiedzić David Allen Company i przeczytać jego książkę Getting Things Done. Znakomite są też dwa wykłady z konferencji Ruby: Jim Weirich - Shaving with Occam i Ryan Davis - Hurting Code for Fun and Profit. No i trzeba ciągle pamiętać o K.I.S.S (Keep It Simple Stupid),  YAGNI (You Ain’t Gonna Need It), DRY (Don’t Repeat Yourself) i Simplify. Tony Hoare :

    There are two ways of constructing a software design:

    One way is to make it so simple that there are obviously no deficiencies..

    and the other way is to make it so complicated that there are no obvious deficiencies.

    Pierwszy sposób jest znacznie, znacznie trudniejszy….

  • Comments
  • Filed under: Inne
  • Merapi Project - współpraca Adobe Air i Java

    Merapi to jakby most, połączenie pomiędzy aplikacjami napisanymi w Javie i tymi działającymi i napisanymi w Adobe AIR. Dlaczego i po co ?

    Dzięki temu połączeniu w prosty sposób można uzyskać dostęp do całej mocy i funkcjonalności, którą oferuje Java (miliardy bibliotek) z poziomu Aplikacji napisanej w Adobe AIR. Żeby nie być tu gołosłownym poniżej znajduję się przykładowy screencast z działającą w ten sposób aplikacją . Jednym słowem nowe ekscytujące możliwości :P .

    Merapi Hello World :

  • Comments
  • Filed under: Flex, Inne