Back to rails

And back to MindFood, my own small reference webapp (a small and naive multi-user notebook for notes about movies). Written in PHP to learn PHP, and it was -not- love at first sight. So from time to time, I play with a web framework, reimplemeting bits and pieces to get a grasp on a new toy. And a few months ago, I played with Rails, found it quite nice, till I discovered that the abstraction was somewhat blocking, forcing me to write raw SQL requests again. Nice, but premature. I came back to Rails recently, and was really happy to see the evolution of ActiveRecord and the improved find API. So I'm playing with Rails again. Hey, maybe I'll be able to include some Ajax effect.

Frameworks and reuse

An interesting interview on Artima (as always), with Erich Gamma. Why framework design is (really) hard, why the OOP promises of the past were often over-hyped (in a nutshell: inheritance is not reuse). Interesting distinction between three different levels of 'reuse'. Lowest level is basically library level, design patterns are middle level - describing class interrelations. Highest level is the framework layer, where you want to "distill design" through "key abstraction".

It's notable that when he explains this, the discussion of the 'hollywood principle' and hook-and-subclass (what I often call the "framework dual nature - both mould and conductor') seems to come as a consequence of the reuse constraints. I must admit I was somewhat puzzled by the mix of concrete and architectural levels in these three layers.

Another interesting point is the gradual exposition of API and that new API should be driven by existing client needs, or even better with existing replicated code. API design is hard. API design coming from hypothetic needs is harder -and- high-risk. The conclusion is also worthwhile: don't try to have everything in a big framework, build several smaller frameworks instead. I tend to agree, but this often comes with a new difficulty: mixing frameworks means mixing different ways of delegating control to hooked objects, which complicates interactions. And often, complex interactions are not that explicit or formalizable in code.

Something different: some notes from a conversation with LC. At class-level, the encapsulation principle is often viewed as a way to hide data and internals, but it should also be viewed as a way to encapsulate and control life-cycle for an instance. Data/behavior and dynamics equally important in encapsulation?



Endian little are we. Interesting information:


Helping a switcher (2: terminal tools)

As an introduction, read http://www.kernelthread.com/mac/osx/ , which is a really good summary of OS X from an "Unix" point of view. The Ars Technica review is also a very good read for 10.4 improvements.

The Apple Developer Connection also has some interesting documentations, check Mac OS X Technology Overview, Porting UNIX/Linux Applications to Mac OS X or Security Overview.

Some OS X specific command line tools (see also this list by Amit Singh):

Helping a switcher (1: GUI apps)

Recently, a friend of mine switched to the Mac, from Linux/x86. So I compiled a short list of applications I'm using or that might be interesting for him, and other tips and tricks and URLs to ease his acclimatization on the platform. I'm posting this here in case it's useful for somebody else.

IRC client: Colloquy. The holy grail ? an IRC client that I find useful and nice to use, and I think I tried absolutely every IRC client on the platform. Really customizable, including the display styles, open-source, nice architecture.

Camino. If you're a regular Firefox user on another platform and a little uneasy with Safari, then you should try Camino. It is the Mozilla Gecko engine, embedded in a native GUI, including with what you would expect from an OS X browser (keychain integration, etc).

Adium: a multi-procol Instant Messaging client. I'm not -really - using this one (I'm an iChat user), but it looks quite nice and I often read good reviews about it.

Chicken of the VNC: a simple and cool VNC client. Note that with 10.4, every mac comes with a VNC server (in System Preferences, choose Sharing and then "Apple Remote Desktop", in the "Access Privileges" sheet, you'll find settings for VNC viewers).

DiskInventory X, a graphic disk usage tool. I'm using it a lot.

Non-X11, native UI Emacs implementations:http://www.wordtech-software.com/aquamacs.html or http://mindlube.com/products/emacs/index.html

A really nice port of GraphViz to OS X

MySQL Administrator: they have a native OS X version of the administration tool. Update ! they released also the Query Browser at the WWDC.

NetNewsWire: an excellent RSS aggregator. Freeware and shareware versions available.

This page is powered by Blogger. Isn't yours?