Roads Less Taken

A blend of programming, boats and life.

ESUG 2011 in Edinburgh

| Comments

Each year I try to attend at least one developer conference. Earlier OOPSLA was a given but it lost its appeal quite a few years back and now it is not even called OOPSLA anymore. As a die hard Smalltalker I instead attended the ESUG conference in Brest 2009 and it was easily the most rewarding conference I ever have attended! Missed last year in Barcelona but this year I am going to Edinburgh for a week of Smalltalking.

I am not presenting anything but I hope I will get my HP Touchpad from Amazon before it starts so that I can demonstrate a WebOS app running on it written in Jtalk.

If you are going too, see you there!

WebOS 3.0 Is Coming - With Enyo!

| Comments

A few weeks ago I joined the Early Access program that HP/Palm has been offering for a while and I have been toying with the new WebOS 3.0 (SDK with emulator) that appeared in public on the 1st of july when the HP Touchpads hit the stores in the US. Since a week I also have a Palm Pre 2 phone running WebOS 2.1, hopefully to be upgraded later to 3.0.

What can I say, I am totally hooked! The SDK for WebOS 3.0 looks really nice and the Palm Pre 2 is the best phone I have ever used, if I disregard the poor battery life.

No, I have never owned an iPhone but my previous phone was the Samsung Galaxy, and that is a really good phone! :) Now, of course, getting the Pre 3 would be even better.

Screenshots

[nggallery id=2]

WebOS

Having used the phone for a week or two some things stand out:

  • The gesture and cards system for multitasking is a real joy to use. Hard to describe, should be experienced.

  • Notifications are really nicely done, non intrusive and slick.

  • The “just type” mechanism is awesome, typing in a name or a website or whatever - and WebOS will suggest and list “everything”. And even better, WebOS discovers new “search engines” when I surf and offer to include them in quick list for searching! Simple and so smart.

  • Synergy - the system merging all contact information together is amazingly good, much better than on my Android phone. It merges and syncs info from my LinkedIn, Facebook and Google accounts (and many other sources) brilliantly.

  • Messaging is uniform, I can SMS or Gtalk or whatever in the same threaded view for a given contact. Yay!

And there is lots more of these little things, adding up to a very smooth user experience.

Application frameworks

One of the primary new things in WebOS 3.0 (vs 2.x) is Enyo - the new application framework in Javascript that is replacing Mojo, the older framework. Enyo looks like a really well designed object oriented UI toolkit. It focuses on using code and not HTML to produce the user interface and the API looks nice, well documented with examples and quite complete!

Applications for WebOS 3.0 come basically in three flavors - Enyo/Javascript, OpenGL/SDL/C/C++, or hybrid.

  • An Enyo app is “just” Javascript running in V8 + Webkit and will be the framework that the majority of the applications will use. Given the push in Javascript land these days I would say it is a very interesting platform.

  • More demanding graphical apps, especially games, can be written in the C/C++ tool chain and use the OpenGL ES and SDL APIs. This seems to be a very friendly platform for game development.

  • Hybrid apps are Enyo apps (or Mojo) that can embed native components written in the C/C++ tool chain and allow them to render parts of the screen and also communicate with them. This is clearly an interesting option for many demanding apps.

An open eco system

Although WebOS is not open source it seems in many ways more “open” than the competition:

  • It is trivial to get “root” on the devices. Just type in ”upupdowndownleftrightleftrightbastart” and click the icon that appears!

  • HP/Palm seems to realize that the homebrew community is very important and this community is exceptionally strong.

  • Using the Preware homebrew app catalog and installing themes, patches, applications and more is just as easy and smooth as the regular app catalog (no, you can’t browse it on the web, only on a device)!

  • The OS is a real Linux at the base! In fact, the ipk package format for apps is the deb format.

  • The base technologies used are major open source projects like Webkit, V8, SDL, GStreamer etc etc.

  • HP is offering a multitude of distribution channels including a “web distribution” channel where you can market your own app outside of the regular app catalog - but people can still just click on a URL and buy/install the application! That is very nice.

…and there are many more aspects to this “openness”, but I think HP realize that they need to play this part of the game quite a bit better than the competition in order to be able to catch up.

High hopes

I think HP has a diamond here in WebOS and if they play their cards right they should be able to find their piece of the market share. And that share just needs to be “descent” in order to be fruitful. But in order for that to happen I am hoping that:

  • The products (Touchpad, Pre 3, Veer) really hit the stores all over the world ASAP.

  • The 3G/4G versions of the Touchpad will show up soon. Just wifi is not enough.

  • The next generation of products keep up with the competition in hardware specs.

  • The major apps people want and need start appearing.

The first three are primarily up to HP. The fourth is hopefully not a problem since the eco system is so appealing to developers. And I think HP is trying to make sure some crucial apps are not missing - for example, I think HP made sure the Facebook app is there - and it is indeed a really good app!

Next up? Well of course, using Smalltalk to build Enyo applications… :)

Konsten Att Måla Ett Drev, Del 2

| Comments

Dags för andra delen i artikelserien om att måla ett drev. Första delen avhandlade mest teori om målningsprocessen. Nu är det dags för avmontering av drevet från skölden samt applicering av färgstripper.

Demontering

Dags att börja meka. Min ambition är att komma åt det mesta av drevets delar utan att gå så långt som att plocka isär det i alla sina beståndsdelar. Köpte Selocs manual - “Volvo Penta Stern Drives 1992-2002 Repair Manual” - från www.drev.se (finns en från Clymer också, vet ej vilken som är bäst) och följer instruktionen för att plocka av drevet.

Det första man noterar är att den lyftögla som man ska använda i oljestickans hål för att enkelt kunna hänga upp drevet inte går att köpa hos min Volvo Penta dealer. De berättar att de tillverkat egna sådana öglor! Ok, det ska alltså vara en lyftögla med tumgänga, 1/2”. Kollar med en rad järnaffärer och handlar till slut hos Stockholms expertbutik - Sifvert. Där plockar jag med lite hjälp ihop en lös ögla + en stoppskruv och landar på 150:-. På vägen hem trillar jag in på Jula och tror knappt mina ögon när de faktiskt har en enda sorts lyftögla - precis en sådan jag vill ha! För 29:-, ok.

[nggtags id=1 template=caption2 gallery=tag1]

Med öglan iskruvad och en provisorisk stång monterad över båtens akter kan jag skrida till verket med avmonteringen av drevet vilket visar sig vara en relativt enkel operation. Kåpan har jag ju tagit av tidigare, tre enkla muttrar så att man kommer åt växelmekanismen. (Grattis Finland, ni tog precis VM-guldet!) Momenten i översikt:

  1. Plocka loss trimstängerna från drevet.

  2. Plocka loss växelvajern från växelmekanismen.

  3. Plocka loss de sex låsmuttrarna som håller drevet och dra ut drevet från skölden.

Vad gäller trimstängerna så varnade varvet för att låsringarna kan gå sönder när man knackar av/på dem, och de kostar 50:- styck! Mina höll dock, men jag var försiktig. Därefter fick jag tålmodigt knacka axeln rakt igenom drevet ut till andra sidan, använde ett armeringsjärn för att kunna knacka vidare när den försvann in i hålet. Seloc säger att man ska använda gummiklubba, men hade ingen sådan :)

[nggtags id=1 template=caption2 gallery=tag2]

Växelvajern var också lätt att plocka bort - tricket här är nog att dokumentera väl hur den var monterad. Jag räknade varven som låskuben var påskruvad på vajern, och tog lite foton! När man lossat vajern är det dags att lossa dess infästning på baksidan. När skruven är lös kan man dra ut låsblecket åt sidan så att vajern går att dra ut. På bilden ser man att blecket är utdraget cirka 1 cm och man ser också skåran i växelvajerns plasthölje som blecket var instucket i.

[nggtags id=1 template=caption2 gallery=tag3]

Dags att göra den stora manövern. Lossar de sex muttrarna och när jag försöker få loss den sjätte börjar tappen att snurra! Blir lite stressad eftersom jag inte förstår hur jag nu ska göra - men det visar sig att det bara är att skruva vidare, hela skruven kommer ut istället, puh! När alla sex är borta tar jag tag i drevet och rycker ut det sakta men säkert, ta emot drevaxeln bara så att den inte trillar ner och får sig en smäll. När drevet väl hänger kan jag känna efter hur tungt det är och visst, tungt är det men jag orkar lyfta det så inte så svårt att hantera ensam.

[nggtags id=1 template=caption2 gallery=tag4]

Värt att notera är de nästan helt bortrostade fästena för plastskydden på sidorna om drevet, samt saltavlagringarna väl synliga i huset. Där är det också en del korrosion faktiskt, ska se ifall man kan kromatera lite där. Det viktigaste - knuten - ser dock väldigt bra ut :)

[nggtags id=1 template=caption2 gallery=tag5]

För att senare kunna rengöra och måla delarna av drevet som sitter kvar på båten vill jag i alla fall få bort det yttre “huset” för att komma åt bättre. Läste om en annan kille i USA som plockat isär sitt drev och plastblästrat det - men jag orkar nog inte gå lika långt som han gick för att ta loss “gimbal ring” osv, det verkar krävas en del specialverktyg också.

Börjar med att lossa bälgarna, den övre är enkel att “trycka in”. Med hjälp av en stor skruvmejsel bänder man enkelt den över halskanten. Den under avgasbälgen är svårare - här behöver man verkligen en sk “inre ringtång” för att ta tag och få loss den inre metallringen som säkrar bälgen runt halsen. Åter ett inköp på Jula. Manualen tipsar om att vara försiktig för den kan sprätta iväg ordentligt ifall man tappar ringen.

[nggtags id=1 template=caption2 gallery=tag6]

Därefter ska vi skruva loss de två feta “bultarna” på sidorna, eh… ok. Seloc säger att jag ska använda en 1/2” hex drive with a ratchet. Ehum, ok? Efter lite förvirring kring metriska insexnycklar (som tyvärr nästan passar) inser jag att det jag måste ha är alltså en halvtums insexhylsa, dvs insexnyckel för montering på hylsnyckeldragare. Problemet är att de flesta vanliga L-formade insexnyckelsatser i tum, inklusive den jag redan har, stannar precis på storleken innan, dvs 3/8”. Jula verkade inte ha något och inte heller en Claes Ohlson jag sprang förbi. Till slut hittar jag en lös insexhylsa hos TOOLS i Täby - tack, tack! Men mer om det i nästa artikel, nu går vi vidare med att försöka strippa drevet…

[nggtags id=1 template=caption2 gallery=tag7]

FedEx levererar

Som jag nämnde i förra artikeln beställde jag fyra spännande kemikalier från www.chemical-supermarket.com:

  1. EFS 2500, färgstripper.

  2. Metalprep 79, metallpreparationsvätska.

  3. T5900 TCP, kromateringsvätska.

  4. Stratocoat Green Epoxy primer, superprimer.

[nggtags id=1 template=caption2 gallery=tag8]

Allt levererades prydligt inslaget och nu har det blivit dags att se ifall strippern är så otrolig som den verkar! Jag börjar med att använda Henkels Degreaser som jag köpt på Seasea, enklast att hälla över i en vanlig sprayflaska, spraya och torka av med en gammal T-shirt som trasa (luddar ej).

Därefter tar jag och häller upp strippern i en liten mugg och penslar på med en vanlig pensel. Använder gummihandskar men denna vätska känns inte alls “farlig” att hantera, som tapetklister egentligen. Tyvärr är temperaturen relativt låg, kanske 17 grader som mest på dagen. Helst ska det vara 25-29 grader varmt, men det ska fungera i låga temperaturer men då kan det ta flera dagar tills det är helt klart. Penslar hela drevet överallt där jag kommer åt, har vid detta laget bestämt mig för att göra “rent hus”.

Slår därefter in hela drevet i en sopsäck eftersom det är risk för regn. Efter några timmar ser man hur färgen “bubblar upp”, både delar av lacken och självklart också resterna av den hårda Triluxen som bubblar upp bara inom någon timme, den färgen är ju inte alls lika hård som själva lacken.

[nggtags id=1 template=caption2 gallery=tag9]

Blir otroligt spännande att se ifall det blir så rent som det ser ut på hemsidan! Ifall allt går enligt plan ska jag kunna blåsa av flagorna med högtryckstvätten eller skrubba bort med en grov tvättsvamp.

Konsten Att Måla Ett Drev, Del 1

| Comments

Vi som kör inombordare i våra båtar har typiskt drev från Volvo Penta eller Mercruiser. Dreven är av aluminium, eller typiskt någon sorts aluminiumlegering och att måla aluminium är en tekniskt sett mycket intressant process och de flesta som gjort detta kan säkert vittna om att det inte funkar så bra, färgen lossnar helt enkelt efter ett tag. Det verkar gått så långt att många helt enkelt inte ens bryr sig om att försöka bygga upp en korrekt målning utan istället slänger på lite primer och antifouling direkt på aluminiumet och får göra om samma visa efter nåt år!

Ifall du frågar ditt lokala båtvarv, din färgaffär, din billackeringsfirma eller kanske din marinbutik så tror du att de borde veta hur man gör detta på bästa sätt, eller hur? Men det är inte alls troligt! I alla fall inte enligt mina erfarenheter när jag gjorde just detta.

Mitt drev - ett Volvo Penta DP-SM drev från 1998-99 - hade råkat ut för en hel del ytkorrosion, antagligen under föregående ägares sista säsong med landström på bryggan (ajajaj). Det märktes dock inte eftersom hela drevet var målat i svart Trilux-färg (vilket i sig känns lite knepigt - visst, koppartiocyanat, men ändå…), men när jag började skrapa så slutade det med att jag fick slipa ner drevet till aluminium på kanske 30% av ytan! Ja, båda anoderna var ordentligt slut, på bara en säsong.

OBS! Slipa bara med aluminiumoxid-papper, icke metalliska saker eller sand. Absolut inte stålborste (om den inte är av rostfritt stål) eller stålull, dessa släpper ifrån sig stål in i aluminiumytan och det kommer sedan att rosta som attans. Jag använde tyvärr en stålborste på borrmaskin (osäker på vad den är av, men knappast rostfri) och har försökt slipa ytterligare för att bli av med det, osäker på om det lyckas.

Nörd som jag är så ville jag veta hur Volvo Penta anser att man bör lacka upp ett drev från grunden och lyckades till slut få tag på verkstadshandboken på nätet för detta drev. Värt att notera i detta sammanhang är att boken för min motor från 1998 (V8 5.7GS) har gamla instruktioner och den lite nyare handboken för 5.7Gi etc har uppdaterade instruktioner för målning av DP-S/SX-drev!

Jag utgår ifrån att Volvo Penta insåg att de behövde justera råden eftersom DP-S/SX-dreven är gjutna i en kisel-aluminiumlegerin. Har ej bekräftat detta med Volvo Penta, men en annan teori kan ju vara att de ändrade tillverkningsprocessen av SX/DP-S efter några år, men det verkar osannolikt. Tacksam ifall någon kan bringa klarhet i detta.

Hur som helst, följande text återfinns i verkstadshandboken (tror inte Volvo Penta blir arga ifall jag återger den här):

  1. Remove all marine growth.
  1. Remove all loose paint and corrosion by sanding or sandblasting. If sandblasting, use an aluminum oxide blasting media with a particulate size of 0.008-0.028 in. (0.2-0.7 mm).

  2. Remove all trace of grease and wash with hot water and detergent. Roughen all painted surfaces with medium 3M ScotchbriteTM pad. Rinse thoroughly with water.

  3. Treat any bare aluminum with chromate conversion coating. Clean the entire area with an acid cleaner that does not contain fluoride, such as DuPont 5717. Scrub the surface with 3M ScotchbriteTM pad until it is completely “wetted” with no beads of water.

Note! Fluoride in a cleaner causes a “smut” (dark discoloration on silicon-alloy aluminum castings), and paint will not stick to “smut”. If this happens, sand the surface and start over using a different acid cleaner.

Note! Do not use steel wool. Small pieces of steel wool become embedded in the aluminum and will cause severe corrosion.

  1. Rinse thoroughly with water. The area must appear “wetted” or the surface is not clean, and paint will not adhere.

  2. While the surface is still wet from rinsing, treat all bare aluminum with DuPont 226S chromate conversion solution. Brush the chromate solution as required for 2 to 5 minutes to prevent it from drying on the surface. Rinse the surface thoroughly with water and allow to air dry. Follow the label instructions exactly.

–If the chromate is allowed to dry anywhere on the bare aluminum surface, chromic acid salts will form which will prevent paint adhesion and promote corrosion. Sand the surface to bare metal. –It is best to let the part air dry, but if you must wipe the surface to speed up drying, use lint free wipes not treated with anything that may contaminate the surface. Do not scrub the surface, wipe very lightly. –Do not blow dry with shop air unless it is completely free of dirt, oil, and water. –Do not heat the part above 150°F, before painting. –Do not touch the treated surface with bare bands before painting. –The part should be primed soon after it dries, or at least within 24 hours.

  1. Where the prime coat is thin or where the surface is unpainted, prime with Volvo Penta Primer or PPG Super Koropon epoxy primer. Do not apply primer over hard finish coat. Primer solvents must be allowed time to evaporate and the primer must harden before applying the finish coat. Allow 8 to 12 hours drying time.

  2. Apply finish coat. The parts catalogs list numbers for finishing products.

Ok… här visar det sig gömmas ett helt kunskapsområde att gräva i som de flesta inte har en aning om vad det är. Pröva med att fråga ditt varv om de vet vad kromatering eller passivering av aluminium är, eller om de hört talas om Alodine!

Medlen som nämns, DuPont 5717 samt DuPont 226S är en metallpreparationsvätska resp. en kromateringsvätska. Dessa ämnen finns i olika tappningar från olika leverantörer, exempelvis motsvarande DX533 samt DX503 från PPG eller olika varianter kallade Alodine från Henkel. Preparationsvätskan kallas ofta för Alumiprep 33 (dock ej den vi ska använda till ett DP-S/SX-drev, läs vidare) och kromateringsvätskan kallas generellt för Alodine, det är visserligen ett produktnamn men har blivit näst intill synonymt med “kromateringsvätska för aluminium”.

NOT: “State of the art” idag är tydligen elektrokeramisk behandling kallad Alodine EC2

Preparationsvätskan är i grunden baserad på forsforsyra som helt enkelt djuprengör ytan från oxidering, korrosion och annat jox. Kromateringsvätskan genomför en kromatering (även kallat mer generellt för passivering) av aluminiumets yta, dvs det är ett extremt tunnt lager som kemiskt binds mycket starkt med det yttersta skiktet av aluminiumet. Detta skikt förhindrar korrosion och ger en mycket bättre yta att måla vidare på. Detta är otroligt viktigt för resten av målningsprocessen ifall vi vill ha en lackering som håller lika bra som Volvo Pentas originallack dsv mer än några få säsonger - kort sagt, kromateringen sitter benhårt på aluminium och primern sitter benhårt på kromateringen i sin tur! Volvo Penta har (läste jag någonstans) under 30 år använt denna kromatering i deras lackprocess.

Alodine har traditionellt varit baserat på sexvärt krom, giftigt som satan! Kommer du ihåg Erin Brockovich)? Japp, sexvärt Krom. Kallas “hexavalent” på engelska. Jag utgår ifrån att Volvo använt Alodine baserat på sexvärt krom. Ifall man googlar på nyckelord som passivering av aluminium, kromatering osv så hittar man svenska industriföretag som sysslar med detta.

Jag hittade också denna mycket bra beskrivning av en person som använt ovanstående process själv för att måla drev, med goda resultat.

Men hur ska vi göra som privatpersoner? För det första hittar jag inga affärer i Sverige som saluför dessa ämnen, rätta mig ifall jag har fel. För det andra vill i alla fall inte jag ta i sexvärt krom med en 5 meter lång tång ens, det är cancerogent och man måste ha avancerad skyddsutrustning osv. Inget för hobby-Pelle hemma på gården alltså! Men under senare år har det alltså dykt upp en rad olika alternativa vätskor/processer som exempelvis ChromitAL TCP, Surtec 609 Zetacoat osv. Flera av dessa baseras på trevärt krom som inte alls är giftigt!

På nätet finns det en affär som de flesta jänkare refererar till, och där finns alla dessa ämnen - men de levererar inte internationellt… Efter att ha pratat med tonvis med folk så hade jag vid det här laget bestämt mig för att hoppa över kromateringen och köra på den varianten som de flesta rekommenderar:

  1. Slipa ner, undvik stål och sand. Jag försöker behålla originallackskiktet där det går. Har ingen bläster som såklart är det bästa utan använder skrapa + aluoxidpapper + borrmaskin med slipstift eller icke stålborste.

  2. Använd avfettning, typ Henkel Degreaser, finns i båtshoppen. Tar bort fetter och oljor osv.

  3. Högtryckstvätta som en idiot. Möjligen slabba på slutet med avjoniserat vatten för att bli av med salter i kranvattnet.

  4. Måla med en 2-komponents epoxy primer enligt instruktion. Jag valde att köpa Henkels standardprimer från båtshoppen. Första lagret ska målas förtunnat, sedan 3-4 lager till.

  5. Dags för Volvos originalfärg på sprayburk. DP-S har metallic.

  6. Metallic behöver klarlack, Volvos återigen på sprayburk.

Värt att notera med ovanstående är:

  • Vi använder inte självetsande primer. För det första är det enligt flera “old school”. För det andra tycks epoxy primern har svårt att fästa på sådan primer och de flesta avråder från det. För det tredje har International slutat att sälja sin Etching Primer och rekommenderar istället att göra som Henkels epoxy primer beskriver - förtunnat lager och därefter en rad lager till, direkt på aluminiumet. De anser att det blir bättre än etsande primer tydligen, enligt en kille på färgaffären.

  • Degreasern klarar inte av att få bort oxidationen och jag är osäker på hur effektiv den är mot kiseln som ju finns inne i aluminiumet. Detta tillsammans med att vi inte fått stopp på aluminiumets korrosionsförmåga och att primern har svårt att fästa på aluminiumet är de stora svagheterna. Inte undra på att alla som sysslar med detta säger att, “Tja, du får vara beredd på att måla om efter några säsonger…”. Färgen fäster helt enkelt inte tillräckligt bra och oxidationen kommer tillbaka.

Det gnagde i mig att det borde gå att få tag på de där två vätskorna ändå. Det var då jag till slut hittade www.chemical-supermarket.com - aha! De har både giftiga varianter och moderna sorter fria från sexvärt krom. Game on!

Jag satsar på Chromital TCP från Henkel dvs T5900-TCP samt Metal Prep 79 som preparationsvätska istället för Alumiprep. Detta eftersom jag hittat på nätet att Metal Prep 79 rekommenderas av Henkel för kisel-aluminiumlegeringar eftersom den ej innehåller fluor, också noterat i Volvos instruktion. Alumiprep 33 avråder Henkel ifrån. T5900-TCP (TCP står för Trivalent Chromium Process) har också erhållit militärt godkännande i USA och visar näst intill lika bra egenskaper som referensprodukten Alodine 1200S (sexvärt krom) samt är inte alls lika giftig och läskig att använda. De helt kromfria varianterna visar inte riktigt lika bra resultat som TCP-varianterna.

När jag ändå bestämt mig för att köpa saker från chemical-supermarket så slog jag också till på deras Epoxy Primer som verkar vara riktigt vass, också godkänd för militärt bruk, samt deras stripper EFS 2500 för färgborttagning, uppenbarligen något i hästväg. Ska bli intressant att se ifall strippern kan ta resten av färgen på drevet utan slipning!

Alla fyra produkter landar totalt på 174 dollar, men FedEx-frakten går lös på 253 dollar! Vi landar således på 427 dollar dvs cirka 2700:-, inte billigt direkt.

Nu ser vår reviderade process ut såhär:

  1. Pröva EFS-2500 Paint Stripper. Ifall den funkar extremt bra så gör jag drevet 100% rent. Annars försöker jag behålla originallacken där det går. Har ingen bläster som såklart är det bästa utan använder skrapa + sandpapper + borrmaskin med slipstift eller icke stålborste.

  2. Använd avfettning, typ Henkel Degreaser, finns i båtshoppen. Tar bort fetter och oljor osv.

  3. Högtryckstvätta.

  4. Använd Metal Prep 79 enligt instruktion. Penslas på några minuter och sköljs av, skall ej torka på ytan. Vattnet skall sluta bilda droppar. Gummihandskar, förkläde och skyddsglasögon samt god ventilation är viktigt!

  5. Högtryckstvätta samt skölja med avjoniserat vatten för att bli av med salter i kranvattnet.

  6. Använd T5900-TCP enligt instruktion. Penslas på några minuter och sköljs av. Gummihandskar, förkläde och skyddsglasögon samt god ventilation är viktigt!

  7. Måla med Stratocoat Green epoxy primer enligt instruktion. Antagligen 2-3 lager.

  8. Dags för Volvos originalfärg på sprayburk. DP-S har metallic så det blir klarlack på det också.

  9. Klarlack, Volvos återigen.

Vi är därmed uppe i cirka 6 lager, vilket ju är barnsligt jämfört med Volvos 19 i deras process! :) Steg 8 och 9 skulle kunna vara mer avancerade men jag kör gärna Volvo originalprylar på den nivån.

Detta är sålunda planen, i nästa artikel tänker jag visa steg för steg med bilder och detaljerade instruktioner samt tidsåtgång.

Ifall jag har faktafel, kommentera så justerar jag gärna. Ifall någon har mer kunskaper i ämnet, kommentera så lägger jag gärna till. Ifall någon firma erbjuder tjänster för kromatering av drev - maila så kan jag lägga in länkar till er.

Tirade, Supporting Embedded Text

| Comments

Two years ago I ended up creating Tirade - a new “file format” for Smalltalkers. Or rather, a way to serialize stuff into a sequence of Smalltalk messages with literals as arguments. I have written a few blog articles about Tirade so I will not go into details in this one.

One thing that has been disturbing with Tirade is that I wanted it to be the main format for serializing Deltas, the new implementation of “21st Century ChangeSets”. This means I want Tirade to handle Smalltalk source code in the best possible way. Ideally I would want the Tirade file to be editable in a text editor if I wanted, and not being broken by that.

So, what properties do we want:

  1. No escaping of special characters. In regular Tirade strings (just like in Smalltalk) need to escape the single quote as doubled single quote, and that would suck for Smalltalk code of course.

  2. No length encoding. One way to avoid escaping is to store the length of the data before the actual data - like a Netstring for example. This prohibits easy editing in a text editor though, since that would change the length.

  3. A reasonable syntax. Tirade so far has been a subset of Smalltalk (disregarding lack of receiver to the left), but I think we might have to break that a bit here.

After pondering this for a while I have come up with this solution which feels kinda nice, but if someone has an even better idea I am all ears. This is how it could look embedding a method source in Tirade:

class: #MyClass selector: #at:put: source: [
    at: pos put: arg
    "Put something here"

    ^array at: pos put: arg
].

So what gives here?  We are reusing the syntax for Smalltalk blocks without arguments. Simply […content…]. The content will be delivered as a String and the guarantee is that it will be received exactly as sent. There is a trick here - this is what Tirade will do:

  1. Write the starter $[ and then a CR

  2. Before each line in the string (a line being all characters up to and including the next CR or up to end) we insert a TAB. This means that the String begins on the line after the opening $[ and all lines will be prefixed with a TAB.

  3. Then, regardless if the last line ended with a CR or not - we add a CR before the closing $]. This makes sure the closing $] ends up on its own line.

The above trick gives us the ability to detect the end of the string because if a line starts with something else than a TAB then we have reached the end. Thus we do not have to escape the $] inside the string and we still don’t need to do length encoding. We DO however need to make sure all lines begin with a TAB, but if you are editing a Tirade file you should just learn that fact. :)

I am not sure if the above is a good solution, but it is ONE solution and I can’t come up with a better one, unless we would use a really “odd” marker at the end in order to not have to escape it, but that feels “dirty” to me.