Android do ps3?

Venturebeat.com dostali Android na Asus EEE, takze uz klonuju Kubuntu na VirtualBoxu, syncuju svn a zkusim to zbuildovat na ppc a nahrat na ps3 ;-). Takovej krasnej jednoduchej tutec (pro x86) jsem nasel treba tu…

Venturebeat.com dostali Android na Asus EEE, takze uz klonuju Kubuntu na VirtualBoxu, syncuju svn a zkusim to zbuildovat na ppc a nahrat na ps3 ;-). Takovej krasnej jednoduchej tutec (pro x86) jsem nasel treba tu…

Webovosti

http://www.nextdb.net/

http://aviary.com/tools/phoenix

http://www.roadsharing.com/

 http://mobilizy.com/

http://www.icerocket.com/?tab=web

http://www.oswd.org/

http://opengoo.org/

http://www.howstuffworks.com/

http://earth-api-samples.googlecode.com/svn/trunk/demos/milktruck/index.html

http://remindr.info/

http://www.nextdb.net/

http://aviary.com/tools/phoenix

http://www.roadsharing.com/

 http://mobilizy.com/

http://www.icerocket.com/?tab=web

http://www.oswd.org/

http://opengoo.org/

http://www.howstuffworks.com/

http://earth-api-samples.googlecode.com/svn/trunk/demos/milktruck/index.html

http://remindr.info/

Custom „modify content properties dialog“

There is this dialog present in Alfresco (edit-content-properties.jsp), but I wanted to write my own and also describe things I discovered during playing with browseBean.

There is this dialog present in Alfresco (edit-content-properties.jsp), but I wanted to write my own and also describe things I discovered during playing with browseBean.

Let's start with simple bean extending BaseDialogBean with just one getter (and also implementation of abstract methods, ie. getFinishButtonDisabled() or finishImpl()), which returns a Node (org.alfresco.web.bean.repository.Node).

public class ModifyContentProperties extends BaseDialogBean {

    public Node getNode(){
        return this.browseBean.getDocument();

   }
}

Our bean requies just one property – browseBean, so let's set it in faces config:

 <managed-bean>
       <managed-bean-name>ModifyContentProperties</managed-bean-name>
       <managed-bean-class>cz.shmoula.ModifyContentProperties</managed-bean-class>
       <managed-bean-scope>request</managed-bean-scope>
       <managed-property>
           <property-name>browseBean</property-name>
           <value>#{BrowseBean}</value>
       </managed-property>
   </managed-bean>

For successfully access to getDocument() method an action listener in web client config is needed. Without this listener (and parameter) the methodreturns null, which is really not expecting value :-). So you need to add that listener and parametr into action definition:

<action id="modify_content_properties">
    <label>Editovat vlastnosti</label>
    <image>/images/icons/edit_form.gif</image>
    <action>dialog:modifyContentProperties</action>
    <action-listener>#{BrowseBean.setupContentAction}</action-listener>
    <params>
        <param name="id">#{actionContext.id}</param>
    </params>
</action>

 A JSP page is very simple, just one component from repo.tld library – propertySheetGrid. More information about this componentcan be found in the alfresco devel wiki. I'm using a (default) externalConfig for describing which property to view or not. Information about config service should be found also in developer wiki, so check it out.

 <%@ taglib uri="/WEB-INF/repo.tld" prefix="r" %>
<r:propertySheetGrid id="content-details-contents" value="#{ModifyContentProperties.node}"  externalConfig="true" />

This simple configuration opens a dialog with properties editing inputs, which are filled by information of opened document (or node, if you apply this config – add action – to a Node). BUT you can't save changes. We don't have an OK button method handled. How to get this stuff working? Very simple, Gavinc already wrote this code in org.alfresco.web.bean.content.EditContentPropertiesDialog, so all we need to do is to change a class, which our ModifyContentProperties extending and add overriding methods for default Cancel and OK buttons calls.

 import org.alfresco.web.bean.content.EditContentPropertiesDialog;

public class ModifyContentProperties extends EditContentPropertiesDialog {
    
    @Override
    protected String getDefaultCancelOutcome(){
      return super.getDefaultCancelOutcome() +
                 AlfrescoNavigationHandler.OUTCOME_SEPARATOR +
                 "browse";
    }

    @Override
    protected String getDefaultFinishOutcome(){
       return super.getDefaultFinishOutcome() +
                 AlfrescoNavigationHandler.OUTCOME_SEPARATOR +
                 "browse";
    }

.  .  .

EditContentPropertiesDialog has an editableNode property, which is just a copy of original node, i which we can write our changes. So we need to assign this editableNode to our propertySheetGrid component.

<r:propertySheetGrid id="content-details-contents" value="#{ModifyContentProperties.editableNode}" externalConfig="true"/>

That is all, fast and simple … and now at one place, so you must not spent so much time to looking for how this works as me 🙂

Alfresco Quick upload

In Alfresco there is no simple way to modify uploading code. You can't just copy and customize org.alfresco.web.bean.content.AddConteneDialog class and /jsp/content/add-content-dialog.jsp ie you can use add-content-dialog.jsp and modify it, but when you try to use AddContentDialog class updated in your project, it doesn't work. I found somewhere on forums (sry, i can't find a link) that add-content-dialog.jsp is just a page snippet and when you coding your own dialog, you must write code for whole page and there is problem with r:upload component. So i'll try to describe my simple solution for QuickUpload content to Alfresco through a Servlet.

In Alfresco there is no simple way to modify uploading code. You can't just copy and customize org.alfresco.web.bean.content.AddConteneDialog class and /jsp/content/add-content-dialog.jsp ie you can use add-content-dialog.jsp and modify it, but when you try to use AddContentDialog class updated in your project, it doesn't work. I found somewhere on forums (sry, i can't find a link) that add-content-dialog.jsp is just a page snippet and when you coding your own dialog, you must write code for whole page and there is problem with r:upload component. So i'll try to describe my simple solution for QuickUpload content to Alfresco through a Servlet.

My servlet – UploadAnalysisFileServlet – extends javax.servlet.http.HttpServlet, i'm using both methods – GET and POST too. (If you don't know how servlets work, just look at this tutorial) I'm using asynchronous requests and iframe, which work "behind scene" and after success user can handle some more action. Actions are following:

  1. View page with select file input and upload button in a form 
  2. After file select and upload button press is AJAX Request fired and file and information are transfered between servlet and client
  3. If file is successfully loaded, iframe views a succesfully-uploaded-image.gif and ok button is enabled
  4. QuickUpload bean control is triggered – aspects and properties are added to new content
  5. File is succesfully uploaded and properties setted up, so back to space view

Simplified "action diagram":
 
 
Now let's look inside code snipets; firstly item one, View page with select file input and upload button in a form

<iframe id="dialog:dialog-body:upload_target" src="progress_anim.gif" style="visibility:hidden"></iframe>
<div id='dialog:dialog-body:fileDiv'>
      <h:inputHidden id="alfFileId" value="#{QuickUpload.fileId}" />
      <input type="file" id='dialog:dialog-body:alfFileInput' name="alfFileInput"/>
      <input type="button" value="upload" onclick="sendAjaxRequest();" id='dialog:dialog-body:uploadButton'/>
</div>

 This is just an hidden iframe with content of animation of progress icon and a simple form with upload input type and button, which triggers following JavaScript routine. Ajax calling is based on Prototype JavaScript Framework.
 function sendAjaxRequest(){
    var form = document.getElementById('dialog');
    document.getElementById('dialog:dialog-body:fileDiv').style.visibility = "hidden";

    form.action = '/alfresco/uploadAnalysisFileServlet';
    form.enctype= 'multipart/form-data';
    form.target = 'dialog:dialog-body:upload_target';

    var ifr = document.getElementById('dialog:dialog-body:upload_target');
    ifr.style.visibility = "visible";
    var doc = null;  
    if(ifr.contentDocument)  
      doc = ifr.contentDocument;  // note: this is varying for different browsers!

    var pars = "uploadid=" + document.getElementById("dialog:dialog-body:alfFileId").value;
    var myAjax = new Ajax.Request("/alfresco/uploadAnalysisFileServlet",
         { method: 'get', parameters: pars, onComplete: checkExists });

    form.submit();
    
    form.action = '/alfresco/faces/jsp/dialog/container.jsp';
    form.enctype= 'application/x-www-form-urlencoded';
    form.target = '';
}

First action is getting a form of dialog, then default action of this form is redirected to my servlet. After that is an ID sent through get method to servlet and a file is sent too, viapost metod, thanks to form.submit(). After this sending is dialog form redirected back to original value and onComplete method is called (it just reads a responseText and check, if it is true or false), which enables OK button.
 
How are post and get methods handled in servlet? A org.alfresco.web.bean.FileUploadBean class is used:
 
 public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException{
       this.fileUploadBean = new FileUploadBean();
       this.uploadId = request.getParameter("uploadid");
       PrintWriter out = response.getWriter();
       out.println("uploadId = "+this.uploadId);
   }
A doGet method just creates a new FileUploadBean and sets and returns ID of file (I'm using this just for debugging and experimenting purposes, it can all be placed just in a Post method). Now let's handle post method data:
 
public void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException{
       HttpSession session = request.getSession();
       ServletFileUpload upload = new ServletFileUpload(new DiskFileItemFactory());
      
       List<FileItem> fileItems = upload.parseRequest(request);
       for (FileItem item : fileItems){
           if(item.getFieldName().equalsIgnoreCase("alfFileInput")){
               String filename = item.getName();
               filename = FilenameUtils.getName(filename);
               final File tempFile = TempFileProvider.createTempFile("alfresco", ".upload");
               item.write(tempFile);
               this.fileUploadBean.setFile(tempFile);
               this.fileUploadBean.setFileName(filename);
               this.fileUploadBean.setFilePath(tempFile.getAbsolutePath());
           }
       }
      
       session.setAttribute(FileUploadBean.getKey(uploadId), this.fileUploadBean);
       response.setContentType("text/html");
       PrintWriter out = response.getWriter();
       out.println("<img src="/alfresco/images/icons/deploy_successful.gif"/>");
   }
This snippet is hardly simplified, but idea is still readable: it reads all file items and if one of them is our file input (alfFileInput), temporary file is created and fileUploadBean properties are set. Then is set an attribute in a session – whole fileUploadBean and a response is sent back to JavaScript client – view of succesfull_upload inside iframe.
 
At this phase a user can do "OK", so QuickUpload's finishImpl method is triggered. It handles a uploaded file following simple way:
FacesContext ctx = FacesContext.getCurrentInstance();
FileUploadBean fileBean = (FileUploadBean)ctx.getExternalContext().getSessionMap().
                                get(FileUploadBean.FILE_UPLOAD_BEAN_NAME.concat("-"+this.getFileId()));
       
if(fileBean != null){
    this.file = fileBean.getFile();
    this.fileName = fileBean.getFileName();
 
    NodeRef spaceRef = this.navigator.getCurrentNode().getNodeRef();
    FileInfo fileInfo = this.getFileFolderService().create(spaceRef, fileBean.getFileName(), ContentModel.TYPE_CONTENT);
    NodeRef fileNodeRef = fileInfo.getNodeRef();
               
    Map<QName, Serializable> fileDesc = new HashMap<QName, Serializable>(3, 1.0f);
    fileDesc.put(ContentModel.PROP_TITLE, this.fileName);
 
    ContentWriter writer = this.contentService.getWriter(fileNodeRef, ContentModel.PROP_CONTENT, true);
    writer.putContent(this.file);
}
Firstly a FileUploadBean is extracted back from SessionMap, then a content inside currentNode is created with specified parameters (it is also possible to add some aspects and properties there). After all that just "return outcome;" and hooray, we have simple working QuickUpload routine for Alfresco ;-).

Ahr – to the – Rem – to the – Pa

Ráno v Aachenu bylo stejně voňavé, jako noc, byla tu poblíž asi nějaká pekárna, nebo tak něco. Vlastně už si vzpomínám, přímo v nádražní budově byla kavárnička, takže jsme posnídali Laté a výborný šneky s rozinkama. Dnešní plán byl dostat se do Ahrweileru, prohlídnout Cold War bunkr a potom přespat někde na vinici. Žel bohu, osud bývá nevypočitatelná mrcha. Nebo bohudík?

Ráno v Aachenu bylo stejně voňavé, jako noc, byla tu poblíž asi nějaká pekárna, nebo tak něco. Vlastně už si vzpomínám, přímo v nádražní budově byla kavárnička, takže jsme posnídali Laté a výborný šneky s rozinkama. Dnešní plán byl dostat se do Ahrweileru, prohlídnout Cold War bunkr a potom přespat někde na vinici. Žel bohu, osud bývá nevypočitatelná mrcha. Nebo bohudík?

Plánem bylo pořídit S-Bahen lístek, což je jakási obdobanašeho Integrovaného dopravního systému. Je to celodeňák až pro 5 osob a platí jeden den, cena = E33. To jsme ovšem nevěděli. Tento lístek nám nabídla nějaká důchodkyně, že jej neprojede a nechánám jej za 30 Eur. Vypadalacelkem věrohodně, tak jsem podojil cash-machine u nádraží, babča dostala 30 éček a my s klidným svědomím nastoupili do vlaku. Zajímalo by mě, jestli nás přechcala záměrně, nebo to nevěděla – došel průvodčí a nastal virvál, v němčině, protože anglicky neuměl. Nakonec jsme to uhráli na to, že si zapíšeme na interrail pas další den a on nám dá pokoj. Zbytek cesty až do Kolína nad rýnem jsme nadávali, jak se nám povedlo zašantročit 30Eur a jeden den na projetí.

V Kolíně neměli ani sprchu, takže jsme nacpali batohy do plně automatické úschovny – pěkná věc, je to malá skříňka uprostřed haly a bagáž odjede někam do podzemí :-). Následovalo stručné vyfocení přednádražního prostoru a výlet vlakmo směr Bonn – Remagen – Ahrweiler.

img_0345

Ahrweiler je moc pěkný městečko obklopený vinicema, kde už hrozny dozrávaly :-p a všude byla cítit natěšenost na vinobraní. V tomhle lázeňským městě to ovšem bylo přeplněný "turistama nad 65 roků", takže jsme se vydali vzhůru do kopců přímo do studenoválečného bunkru.

Street in Ahrweiler

Za mnoha a mnoha těžkými panceřovými dveřmi se skrývá komplex, který měl uchránit vládu (tenkrát sídlící v Bonnu) po třicet dni od hermetického uzavření tohoto prostoru. Potom, vážený pane kancléři, následuje ne příliš pěkná smrt ;-). Zkusím spáchat vlastní blogpost s touto tématikou (nenepěkné umírání, ale tento bunkr). Teď zatím fotka velína ve stylu Death Star.

img_0310

img_0267

No ale tradá zase rychle ven do tepla, přímo k výhledům od vchodu do bunkru. Pánové by měli určitě radost, kdyby z bunkru byl "sklépek" a oni se mohli upít, jenže tohle štěstí by bývali neměli.

img_0236

Teď teda zpět do Remagenu podívat se na legendární most. Ovšem k vidění tu toho moc není, především díky faktu, že most jaksi spadl :-). Tak aspoň tankery plující po Rýně, příjemná koupel nohou a obejití torza mostu s muzeem v tomto torzu se nacházejícím. Příjemné, škoda, že odtud musíme pryč, zase směrem Bonn – Koln.

img_0328

img_0339

Kolínem to ovšem dneska nekončí, ještě musíme chytnout spoj na Paříž skrze Bruxelles. Takže nás čeká první TGV a poté noční Thalys. Hnusný vlaky to jsou, nevím, co na nich kdo vidí. Díky tomuto pitomýmu Thalys jsem dostal vlka, takový nepohodlný a nepříjemný sezení jsem snad ještě nezažil. Hlavně že za tenhle expres chtěli příplatek, holt skoro jako České dráhy :-(. Ale o Paříži až někdy příště, dneska už na to nemám žaludek!

Ohleduplnost českých řidičů…

…nezná mezí – jsou milí, usmívají se na sebe, občas stáhnou okýnko, aby mohli slušně pozdravit, nebo se jen zeptat, jak se dneska máte. Nikam nespíchají, za jízdy si zpívají, na přechodu chodce pustí a na křižovatkách nikdy neblokují šalinu při odbočování. Ještě jsem neviděl řidiče, který by předjel autobus a dupl na brzdu, stejně tak nepředjíždí přes plnou čáru, myšku znají pouze jako neškodné malé zvířátko. Vědí, že zip není pouze součástka na oblečení, když je hlavní ucpaná, jsou schopní pustit někoho z vedlejší ulice. Ještě je mnoho hezkých věcí, které se mně na nich líbí, opravdu! Hoši, děkuju!
…nezná mezí – jsou milí, usmívají se na sebe, občas stáhnou okýnko, aby mohli slušně pozdravit, nebo se jen zeptat, jak se dneska máte. Nikam nespíchají, za jízdy si zpívají, na přechodu chodce pustí a na křižovatkách nikdy neblokují šalinu při odbočování. Ještě jsem neviděl řidiče, který by předjel autobus a dupl na brzdu, stejně tak nepředjíždí přes plnou čáru, myšku znají pouze jako neškodné malé zvířátko. Vědí, že zip není pouze součástka na oblečení, když je hlavní ucpaná, jsou schopní pustit někoho z vedlejší ulice. Ještě je mnoho hezkých věcí, které se mně na nich líbí, opravdu! Hoši, děkuju!

Konečně přes kanál

Oukej, konečně došlo na Den D, sbalili jsme saky-paky a vyrazili na blinda směr Londýn. Nebo spíš ani ne tak na blinda, tušil jsem tam existenci nějaké cestovky, která bude schopná dodat interrail jízdenku na počkání a bohudík tomu tak skutečně bylo, takže jsem si případněj průser, kdybychom lístek nesehnali uvědomil, až když bylo nebezpečí zažehnáno.

Oukej, konečně došlo na Den D, sbalili jsme saky-paky a vyrazili na blinda směr Londýn. Nebo spíš ani ne tak na blinda, tušil jsem tam existenci nějaké cestovky, která bude schopná dodat interrail jízdenku na počkání a bohudík tomu tak skutečně bylo, takže jsem si případněj průser, kdybychom lístek nesehnali uvědomil, až když bylo nebezpečí zažehnáno.

Takže zpátky k plánu – flákat se po Londýně a někdy před půlnocí nastoupit do vlaku směr Dover a tam někde přečkat noc. Co o Londýně? Těžko říct, připadlo mi, že po tom roce, co jsem tu nebyl je všechno pořád stejný. Ani nevím, proč mám takovou slabost pro tohle město, nebo spíš pro jeho jeden park 😉 . Každopádně letos jsme jenom proběhli cípkem poblíž speeking corner a to ne při této návštěvě, ale až cestou zpět. Při této příležitosti jsme pouze mrkli na dno řeky při odlivu (pěknej bordel tam je, jen co je pravda!) a počkali si u Tower Bridge na večer.

Roots of society

Cesta směr Dover byla více než pohodová, i když jsme jeli načerno – zřejmě, protože platnost interrail byla až od půlnoci, jenže dle pravidel je možné využít vlak přes půlnoc po sedmé hodině večerní, takže tahle skutečnost je docela sporná, asi by nevěděl ani štiplístek, kdyby se zastavil – chodil pouze kolem a kolem celou cestu a nic nekontroloval. Každopádně do Doveru jsme dorazili tuším něco po půlnoci, plán byl stručný: najít přístav a přespat v něm na sedačkách. Dostat se k přístavu se nám nakonec po nějaké době podařilo, spát se dá v příjezdové hale, poměrně pohodlné sedačky – měkkoučký polstrování, navíc jsme tu nebyli sami. Většinu noci byl klid, jen nad ránem začaly přijíždět trajekty a kolem chodilo docela dost lidí, ale spánek to moc nerušilo – v jednu chvíli jsem se probudil a nade mnou stál chlap a telefonoval – spal jsem totiž přímo pod veřejnou linkou na půjčovnu aut, tak jsem jen rozloupl oko a mrknul nahoru a za chvíli spal dál :-). Po úplným vzbuzení ráno, tuším něco po sedmé hodině, následovala stručná hygiena – xicht a zuby v přidružených hajzlících a výlet pro lístek na trajekt a po zjištění, že jede až za cca 2 hodiny procházka do místního Mourissona pro koblížky a flašku mlíka.

Morning in Dover

Potom už následovalo nalodění se a nezáživná plavba směr Žabožroutov. Cestou nás doprovázely davy racků a reklamní hlášení; nákup levného alkoholu jsme zneužili až při zpáteční cestě ;-). V Calais v budově přístavu jsou sprchy zdarma, výborný překvápko, krásně čistý, teplá voda, sprchový gel (aka tekuté mýdlo na ruce ;-)) a potom už jen schnutí a oběd před terminálem.

Calais ferry port

V Calais se nám nějak nepodařilo vychytat spoje autobusu na nádraží, tak jsme vyrazili pěšmo směr city center. Gare de Ville se nám podařilo najít poměrně rychle, na spoj jsme měli štěstí, vlak odjížděl za 5 minut, takže vzhůru směr Lille. Obloha bez mráčku, vedro vskutku tropický, vlak prázdnej, sice z roku raz-dva, ale aspoň se stahovacíma okýnkama. V Lille na "Flanďákově nádraží" byl docela shon. Díky strýčkovi googlovi mám aspoň pohled na nádražní budovu a přílehlé okolí (naše návštěva se rovnala rychlýmu exitu z nádraží, pochodu do Carrefouru pro lahev pití a návrat zpět), protože v Lille už frčí Street View. Bohužel, v hale jsme si ještě poseděli nějakou dobu a naučili se první slovíčko – fermeture. Frantíci totiž mají vůči angličtině averzi, takže žádné mezinárodní psané informace či hlášení nádražního rozhlasu se nevedou. Bohudík aspoň na informacích chlapík mluvil anglicky, takže jsme dohodli náhradní spojení směr Bruxelles s jedním přestupem v [muchro:], musel mi chudák spelovat název tohoto města několikrát, ale stejně jsem tomu jeho chrochtání nerozuměl, takže tiskárna to jistila ;-).

V Brusselu jsme se dověděli, že se asi do Kolína nedostaneme, takže jsme vykoumali alternativní způsob dopravy – nějakým expresem z jihu možná až do Berlína. Něco přes hodinku čekání jsme vyplnili procházkou kolem nádraží a sehnání večeře v jakýmsi bistru, kde chlapík neuměl slovo anglicky, ale dostali jsme mega porci hranolek, sendvič, pití a já nevím co ještě za tuším 7éček dohromady, což je opravdu zadarmo! Hned vedle ještě bagetky za babku a nějakej pakistánec s levnýma čajama a vodou. Radost ovšem zkazila cesta zpět na nádraží – nějakej arabskej shop o velikosti 2×2 metry se čtyřma kamerama a 2 hlídačema (když pominu 2 prodavače za mini pultíkem), kde jsme nechali docela slušnou pálku za sýr a 2 "nejsilnější belgické ležáky".

V expresu, nebo spíš odporným doupěti jsme byli nacpáni do hitláku, kde jela rozjařená Hitler-jungend odněkud z paříže – všude lahve, konopa, bordel… ale byli docela společenští, tak jsme se dověděli, že tu jedou nějací dva šéfkové, kteří jsou specialisti na kontrolování interrail pasů a asi nás vyhodí z vlaku. Takže jsme si ustlali na chodbičce mezi sušícíma se pohorama s ponožkama a opřeni o batoh a stojan na kola usnuli hnusným spánkem (po vysrkání onoho belgickýho humusu – bohužel už nevzpomenu, jak se ten odpornej patok jmenoval). Po cca 2 hodinách vlak zastavil na červenou (nebo spíš se asi rozpojoval) v Aachenu, takže jsme vyrazili dveře a vypadli směr noc. Kolem nádraží hrůza a děs – opilci, boveři, loveři a podobná havěť, naštěstí jsme poblíž našli flek na spaní – parkoviště (na druhej pokus, na prvním ideálním spacím fleku spal bover a když jsme se přiblížili, začal si docela nepěkně povídat sám se sebou, což s jeho děsivým vzhledem stačilo k tomu, abychom se fofrem dekovali pryč). Já měl alumatku, brácha bivakoval na vrstvě plakátů, kterou jsme urvali poblíž. Na betonu to bylo ne zrovna dvakrát příjemné, ale únava byla silnější, takže druhá homeless noc proběhla taktéž bez problémů (až na nehoráznou zimu, brr!!).

Národní knihovna v Brdech

Včera, když jsem si trochu srknul opravdu hnusného vína, mě napadlo, že v Brdech se zřejmě nestaví radar, ale národní knihovna! Proto ji kopcolezec nechce na Letné a tak moc touží po romantice brdskách lesů s nějakým podivným bílým blobem. Proč se jim sakra nelíbí ten zelený, to nevím. Nechápu, proč nechtějí radar na Letné :-(. Je mi jedno, která z těch dvou věcí tam bude (jsem pro obě), ale přidávám se: chci to na Letný! Stejně, jako mnoho dalších.

Včera, když jsem si trochu srknul opravdu hnusného vína, mě napadlo, že v Brdech se zřejmě nestaví radar, ale národní knihovna! Proto ji kopcolezec nechce na Letné a tak moc touží po romantice brdskách lesů s nějakým podivným bílým blobem. Proč se jim sakra nelíbí ten zelený, to nevím. Nechápu, proč nechtějí radar na Letné :-(. Je mi jedno, která z těch dvou věcí tam bude (jsem pro obě), ale přidávám se: chci to na Letný! Stejně, jako mnoho dalších.

Nuda v Birminghamu

Počátek Eurotripu jsem si "užil" kde jinde, než ve východisku mých anglických dobrodružství, Birminghamu. Tentokrát jsem se tam ovšem zdržel dýl, než jednu noc (a než je zdrávo), takže musím dát za pravdu známým, kteří říkali, že je to hnusný a nudný město a kterým jsem nevěřil.

Počátek Eurotripu jsem si "užil" kde jinde, než ve východisku mých anglických dobrodružství, Birminghamu. Tentokrát jsem se tam ovšem zdržel dýl, než jednu noc (a než je zdrávo), takže musím dát za pravdu známým, kteří říkali, že je to hnusný a nudný město a kterým jsem nevěřil.

Důvodem ke zdržení byla nemožnost sehnání Interrail lísku, jak jsme byli domluvení z důvodu selhání zdroje, takže jsem si zbytečně ve West Bromu proseděl (a prochodil) pár dní, kolik, už radši nevím. A pokud bychom nevyrazili na Londýn s touhou sehnat lístek, asi bych tam seděl dodnes, ale o tom později…

Birmimnghamští jsou dle mého krátkého pozorování asi velcí milovníci Petra Iljiče Čajkovského, protože takovou koncentraci "Swan věcí" jsem snad ještě neviděl – počínaje "Swan village", přes různé další labutí aves, closes, drives, streets… až "Swan pool" konče, nevím, co je tolik fascinuje na baletu, když se tváří, že neumí do pěti napočítat a znají snad jen GB a potom fucking Pakies, Indes a Polish, což je celá zbylá Evropa bez výjimky.

img_0145

Nemůžou být snad ani tak vypití, protože v měste platí prohibice (i když hned cestou z letiště jsem v autobuse koukal na bandičku sotva zletilých, kterí se napájeli nějakou Whiskey a šikanovali starší okoloí, především potom ty snědší). Taky tu je docela málo hospod, resp. hospod je tu dost, ale nápaditých jejich názvů málo. Tady ovšem převažují koně a hlava královny. Názvy stylu "Queens head", "Four horse shoes", "White horses"…těžce převažují; jedinou výjimku tvořila hospoda "Coach and Horses" v sousedství, která byla snad jediná tohoto názvu v celém Bhamu, proto se její název dostal i na název sousedící autobusové zastávky. Jedna krátká jízda autobusem několik zastávek (které jsou většinou jen pár kroků vzdáleny) odhalí hned několik hospod stejného jména vedele sebe. No proč ne, stejně k žádným koním nechodím, mají to pivko docela drahé (GBP2.5 a výš za pintu).

img_0120

Všude tu panuje nehoráznej bordel – odpadky. Když je mi u nás smutno z toho, jak se všude válí okolo silnic z auta odhazovaný odpad, je to nic v porovnání s Birmáčem. Mládež chlastá po parcích, pokud jsou z dohledu všudypřítomných kamer a i pod nimi, samozřejmě veškerý odpad, kterého bývá požehnaně, zanechají na místě rozházený okolo, takže se člověk při procházce v parku doslova brodí odpadky. Nejinak je tomu v autobusech – sice je tu za odhazování odpadků vysoká pokuta, ale nikoho to zjevně netrápí. Před sednutím je nutno ze sedadel shrnout hromady pet lahví, útržků novin, kelímků, promaštěných papírů kdoví od čeho a v neposlední řadě zkontrolovat, jestli pod vším tím není nablito, nebo pod sedadlem nasráno.

img_0165

Jak jsem napsal výše, pro mláděž (řekněme cca do 20 let) jsou všichni cizinci fuckin' Polish, případně Pakies a podobně. Nejprve jsem nevěřil, že některé skupinky hážou po našincích šutry, ale po tom, co jsem jedním málem dostal do lebzny jsem uvěřil. Na druhou stranu starší generace je slušná a uctivá (není samozřejmě pravidlem). Při toulání kolem kanálu rybáři i další poutnící s úsměvem zdraví, občas se i na ulici dá někdo do řeči a nešetří zdvořilostními frázemi.

Kanály jsou kapitolou samou pro sebe, je to jedna z mála oáz klidu a mají i svoje kouzlo. Taky je okolo hodně kešek, ale když jsem se za nima vypravil, jako by se propadly do země, holt asi jsou Angláni lepší v maskování. Když už mluvím o kanálu vzpomínám si, že jsem potkal jeden z hausbótů, utržený a vypálený, plný děcek (cca 13 let). Pozdravili jsme se a poté, co se ujistili, že mám nějakou divnou výslovnost a asi teda nebudu jejich spoluobčan se opakoval příběh s kamením dokreslený navíc ukázkami obnažených pozadí, krása!

img_0166

Mluvil jsem o oázách klidu – nejen kanály skýtají útěchu v ruchu velkoměsta, stejně tak i "parky" obklopené a protkané dálnicemi a golfovými hřišti. V hustě zarostlých loukách se naštěstí dají najít i kešky, jinak je tam klid občas porušený běžcem se psem, jinak tam snad nikdo nechodí.

img_0116

Tolik o Birmáči. Byl jsem z města na začátku nadšenej, ale čím více času jsem tam trávil, tím více se mi znechucovalo, bohužel. Možná bych si časem zvykl, ale na tu nenávist omladiny bych si asi nezvykl, je to docela potupný pocit a oplácet kámen kamenem si netroufám. Tak jsem aspoň pořídil něco málo fotek – foťák jsem s sebou tahal pořád, ale dost často se vracel bez jediné fotky, protože prostě není co fotit; stejné domy, stejné ulice, stejnej bordel… – a dal je na flickr, do setu s Eurotripem.

Android jen pro vyvolené? Ale kdeže…

Vývojáři Androidích aplikaček nadávají, že SDK není aktualizované, resp. proslýchá se, že nové SDK je dostupné pouze těm, kteří se umístili na vyšších pozicích v soutěži o nej… básničku prográmek pro Androida. Jasně, vývojáři prchají, ale zdravé jádro vítězů vyvíjí.
Vývojáři Androidích aplikaček nadávají, že SDK není aktualizované, resp. proslýchá se, že nové SDK je dostupné pouze těm, kteří se umístili na vyšších pozicích v soutěži o nej… básničku prográmek pro Androida. Jasně, vývojáři prchají, ale zdravé jádro vítězů vyvíjí.

Možná Googlu stačí jen pár aplikací, které zahrne do výchozí distribuce a které budou mít nálepku „oficiální“ (rozuměj napíchnuté) a v určité fázi projekt uzavře a bude úplně uzavřený (jasně, je vyvíjený pod Apache Licencí), ale je možné, že armáda Googlích právníků v něm našla nějakou skrytou díru…vždyť jak to bylo s „ukradenou javou“. Jen k čemu bude platforma bez vývojářů? Možná se poveze na hypu značky, iPhone taky nemá (nebo neměl – zdarma) SDK a existujících aplikací si troufám tvrdit, že pro něj není moc, ale pořád se najde hodně lidí, kteří tento přístroj mají třeba jen proto, že má na sobě nakousnuté jablíčko. Tak proč by někdo nechtěl „telefon made by google“, zvlášť pokud má googlími aplikacemi prošpikován celý život? Já bych se možná i zařadil do stáda, bohužel, i když po některých aférách bych možná volil v jiných vodách.
Edit 19.srpna: Tak už je to pasé, jako klobouky, protože: „Announcing a beta release of the Android SDK„. Tož uvidíme, jak se to bude ubírat dále!