Going to Debconf14

It's that time of the year, again, when I lan to go to Debconf, reserve vacation, get visa waiver, book tickets. Let's hope nothing blocks me from attending this time. It has been too long.

Now I just need to finish up photoriver before Debconf :) In fact it is quite close to being ready - I just need to finish up the GPS tagging feature, figure out why FLickr stopped working recently and optionally work on burst detection and/or FlashAir IP address autodetection in the network.

Wireless photo workflow

For a while now I've been looking for ways to improve my photo workflow - to simplify and speed up the process. Now I've gotten a new toy to help that along - a Panasonic FlashAir SD card with WiFi connectivity. I was pretty sure that build-in workflows of some more automated solutions would not be a perfect fit for me, so I got this card which has a more manual workflow and a reasonable API, so I could write my own.

Now I am trying to work out my requirements, the user stories if you will.

I see two distinct workflows: live event and travel pictures.

In both cases I want the images to retain the file names, Exif information and timing of the original photos and also have embedded GPS information from the phone synced to the time the photo was taken. And if I take a burst of very similar photos, I want the uploading process to only select and upload the "best" one (trivial heiristic being the file size) with an ability for me to later choose another one to replace it. There would need to be some way of syncing phone and camera time, especially considering that phones usually switch to local time zone when traveling and cameras do not, maybe the original time the photo was taken would need to be changed to local time zone, so that there are no photos that are taken during the day, but have a timestamp of 23:45 GMT.

When I am in Live Event mode I would like the photos that I take to immediately start uploading to an event album that I create (or choose) at the start of the shoot with a preset privacy mode. This assumes that either I am willing to upload via 3G of my phone or that I have access to a stable WiFi network on-site. It might be good if I could upload a scaled down version of the pictures during the event and then later replace the image files with full-size images when the even is over and I am at home in my high-speed network. I probably don't need the full size files on my phone.

When I am in Travel mode, I want to delay photo uploading until I am back at the hotel with its high speed Wifi, but also have an option to share some snapshots immediately over 3G or random cafe Wifi. I am likely to take more photos that there is memory in my phone, so I would like to clear original files from the phone while keeping them in the SD card and in the cloud, but still keeping enough metadata to allow re-uploading an image or choosing another image in a burst.

Now I need to flesh out the technical requirements from the above and write an Android app to implement that. Or maybe start by writing this in Python as a cross-platform command-line/desktop app and only later porting it to Android when all the rought parts are ironed out. This will have an extra benefit of people being able to run the same workflow on a laptop instead of a phone or tablet.

Let's assume that this is written in a pretty flexible way, allowing to plug in backends for different WiFi SD cards, cloud services, plug-in points for things like instant display of the latest photo on the laptop screen in full-screen mode and other custom actions, what else would people love to see in something like this? What other workflow am I completely overlooking?

Photo migration from Flickr to Google Plus

I've been with Flickr since 2005 now, posting a lot of my photos there, so that other poeple from the events, that I usually take photos of, could enjoy them. But lately I've become annoyed with it. It is very slow to uplaod to and even worse to get photos out of it - there is no large shiny button to Download a set of photos, like I noticed in G+. So I decided to try and copy my photos over. I am not abandoning or deleting my Flickr account yet, but we'll see.

The process was not as simple as I hoped. There is this FlickrToGpluss website tool. It would have been perfect .. if it worked. In that tool you simply log in to both services, check which albums you want to migrate over and at what photo size and that's it - the service will do the migration directly on their servers. It actually feeds Google the URLs of the Flickr photos so the photos don't even go trought the service itself, only metadata does. Unfortunately I hit a couple snags - first of all the migration stopped progressing a few days and ~20 Gb into the process (out of ~40 Gb). And for the photos that were migrated their titles were empty and their file names were set to Flickr descriptions. Among other things that meant that when you downloaded the album as a zip file with all the photots (which was the feature that I was doing this whole thing for) you got photos in almost random order - namely in the order of their sorted titles. Ugh. So I canceled that migration (by revoking priviledges to that app on G+, there is no other way to see or modify progress there) and sat down to make a manual-ish solution.

First, I had to get my photos out of Flickr. For that I took Offlickr and ran it in set mode:

./Offlickr.py -i 98848866@N00 -p -s -c 32

The "98848866@N00" is my Flickr ID which I got from this nice service, then -p to download photos (and not just metadata), -s to download all sets and -c 32 to do the download in 32 parallel threads. An important thing to do is to take all you photos that are not in a set in Flickr and add them to a new 'nonset" so that those photos are also picked up here, there is an option under Organize to select all non-set photos. It worked great, but there were a couple tiny issues:

  1. There is a bug in Offlickr that it does not honor pages in Flickr sets, so it only downloads first 500 images in each set, fix for that is in that bug;
  2. It also wanted Python2.6 for some reason, but worked fine with Python2.7
  3. With that number of threads sometimes Flickr actually failed to respond with the photo, serving a 500 error page instead. Offlickr does not check return code and happily daves that HTML page as the photo. To work around that I simply deleted the HTML errors and then ran the same Offlickr command again so that it re-downloads the missing files. Had to repeat that a few times to get all of them:
ack-grep -l -R "504 Gateway Time-out" dst/ | xargs rm

After all that I had my photos, all 40 Gb of them on my computer. Should I upload them to G+ now? Not yet! See the photos all had lost their original file names. It turns out Flickr simply throws that little nugget of information away. It is nowhere to be found, neither in metadata or the UI or the Exif of the photos. Also some of my photos had clever descriptions that I did not want to loose or re-enter in G+ and also geolocation information. Flickr does not embed that info into the Exif of the image, instead it is provided separately - Offlickr saves that as an XML file next to each image.

So I wrote a simple and hacky script to re-embed that info. It did 3 things:

  1. Embed title of the photo into the Description EXIF tag, so that G+ automatically picks it up as title of the photo;
  2. Embed the GEO location information into the proper EXIF tags, so that G+ picks that up automatically;
  3. Create a new file name based on original picture taken datetime and EXIF Canon FileNumber field (if such exists), so that all photos in an album are sequential.

It uses exiftool for the actual heavy lifting.

After all that was finished I tested the result by uploading a few images to G+ and testing that their title is being set correctly, that they have a sane file name and that geo information works. After that I just uploaded them all. I tried figuring out the G+ API (they actually have it) but I was unable to pass the tutorial, so I abandoned it and simply uploaded the photos of each set int their own tab via a browser. That took a few hours. But that is much faster that with Flickr. Like 4 MB/s versus 0.5 MB/s faster. And here is the result. So far I kind of like it. We'll see how it goes after a year or so.

Now on to an even more fun problem - I now have ~40 Gb of photos from Flickr/G+ and ~100 Gb of photos locally. Those sets partially intersect. I know for a fact that there are photos in Flickr set that are not in my local set and it is pretty obvoious that there are some the other way round. Now I need to find them. Oh and I cann't use simple hashes, because Exif has changed and so have the file names for most of them. And not to forget that I often take a burst of 3-4 pictures, so there are bound to be a some near-duplicate photos in each set too. This shall be fun :)

Kā ir jāpārtaisa Rīgas Satiksmes e-talona sistēma

Esmu mazliet paceļojis pa pasauli un esmu redzējis vairākas sistēmas sabiedriskā transporta apmaksai un katru reizi atgriežoties Latvijā un Rīgā mani pārņem tāds mikslis ar sajūtām, kurā ir iespraucies gan optimisms par to, ka mums ir bezkontakta e-talonu sistēma, gan bezcerīgums par to cik tizli tā ir pie mums realizēa salīdzinot ar to kāda ir pasaules labakā prakse un kā tas vispār varētu ideālā izskatīties.

Tāpēc es aprakstīšu ideālu - kā e-talona sistēma varētu izskatīties un darboties, ja pie tās realizācijas pieietu ar mērķi izveidot patiešām labāko un ērtāko sistēmu pasaulē. Par iedvesmu pārsvarā jāpateicas Londonas Oyster, Hong Kongas Octopus un Tokijas Pasmo un Suica sistēmām.

Ļaujiet man prezentēt Latvijas contactless maksājumu sistēmu - Lasis

Galvenā atšķirība no e-talona un galvenā ideja, ko jāpārņem no augstāk minētajām sistēmām ir tā, ka kartēs tiek glabātas nevis biļetes, bet gan nauda un biļetes, jeb tiesības lietot sabiedrisko transportu tiek pirktas par šo naudu biļetes reģistrācijas brīdī. Tas ļauj realizēt ļoti svarīgu niansi - biļetēm var būt dažāda cena! Un tad paturpinot šo domu tālāk - tām vairs nav noteikti būtu jābūt transporta biļetēm!

Tipiskais lietošanas piemērs:

Tūrists atbrauc uz Latviju un lidostā iegādājas Lasis karti par 15€. Šajā kartē jau ir 10€ naudas iekšā, pārējie 5€ ir depozīts par fizisko karti.

Tūrists iekāpj 22. autobusā pieiet pie braucienu reģistrātora ar Lasis simbolu (lasi no lata monētas) uz kura ekāna rādās brauciena cena - 0.6 un nopīkstina karti, reģistrātors viņam parāza zaļo gaismu un divus ciparus: -0.6 un 9.4, kas ir cik tika noņemts no kartes un kartes atlikums.

Atbraucot centrā tūrists redz uz McDonalds durvīm Lasis sistēmas simbolu ienāk tajā un pasūta čīzburgeri, pie kasses ir pieslēgts aparāts, kas strādā ar kasses aparātu identiski kā kredīt karšu terminālis un pēc pasūtījuma pieņemšanas uz šī aparātiņa parādās pirkuma summa. Pieliekot pie aparātiņa Lasis karti atskan tas pats pazīstamais pīkstiens, parādās zaļā gaismiņa un uz ekrāna atkal parādās pirkuma summa (ar mīnus zīmi) un naudas atlikums kartē.

Braucot tālāk ar mikroautobusu uz Jūrmalu tūrists nosauc šoferim savu gala mērķi un šoferis pārslēdz mikroautobusa reģistrātoru uz vinu no iepriekš definētajām četrām cenām, kas tad parādās reģistrātora ekrānā un pieliekot karti ir tas pats process - pīkstiens, zaļā lampiņa, noņemtā summa, atlikums.

Atgriežoties Rīgā ar vilcienu parādās jauns maksājuma veids - distances maksājums. Iekāpjot Dubultu stacijā uz perona tūrists pieliek Lasis karti pie iekāpšanas termināla, kas nopīkst, parāda zaļo gaismu, bet summu vietā parāda tikai ziņu, ka tūristam ir atļauts braukt ar vilcienu, izkāpjot savā gala pieturā tūrists pieliek Lasis karti pie izkāpšanas termināla un tajā brīdi arī tiek parādīta galējā ceļojuma izmaksa (kas ir atkarīga tikai no attāluma starp gala pieturām, tūrists var pārsēsties citā vilcienā, atgriezties pieturu atpakaļ, ...) un kartes atlikums.

Šeit parādās vairākas niances. Ja kartē izrādās pārāk maz naudas konkrētā brauciena apmaksai, tad kartes bilance var aiziet mīnusā līdz pat -5€ (kartes depozīta apjoms) un šo karti nāksies papildināt pirms to varēs atkal jebkam lietot. Ja kāds "aizmirst" reģistrēt karti izejot no stacijas, tad nākošreiz, kad šī karte tiks izmantota, pirms paša pirkuma veikšanas no tās tiks noskaitīta "soda nauda", kas būs atkarīga no iekāpšanas stacijas un būs prinicpā vienāda ar dārkāko braucienu, kas no šīs stacijas ir iespējams. Kontrolei tad vajadzēs tikai parbaudīt vai cilvekiem ar Laisis kartēm ir piereģistrēta ieeja sistēmā un viss. Braukāšanu sistēmā visticamāk vajadzēs arī ierobežot laikā, piemēram, ja nav piereģistrēta izeja 6 stundu laikā, tad kontrolei parādītos, ka šī vairs nav derīga biļete un izejot vēlāk jebkurā stacijā tiks vienalga noņemta "soda nauda". Vēl viena niance ir, ka ienākot un pēc stundas izejot no tās pašas stacijas arī būtu jānoņem kaut kāda maksa par minimālo braucienu.

Iestādēs vai situācijās, kur lielam cilveku skaitam ir ātri jāmaskā vienāda naudas summa, piemēram, pusdienu piedāvājumos restorānos, dzērienu automātos, koncertu ieejas biļešu pārdošanā, daudzstāvu stāvvietas apmaksā, maksas ceļa izmantošanas apmaksā, vingrošanas zales vai baseina ieejā ... varētu tikt novietoti reģistrātori ar fiskētu cenu, kas varētu strādāt bez citu iekārtu starpniecības processā un ātri apstrādāt standarta maksājumus.

Papildināt karti varētu visās vietās kur pašlaik var papildināt zilos e-talonus: kioskos, pasta nodaļās, RS automātos, ...Tās arī varētu identificēt ar laša logo, tikai iekrāsotu, piemēram zaļā krāsā, lai atškirtu vietas, kur var naudu kartē ielikt, no vietām, kur var naudu no kartes iztērēt.

Parastā karte fiziski izskatītos līdzīgi kā tagad izskatās zilie e-taloni (ar vai bez personalizacijas, līdzīgi kā tagad), bet cilvēku ērtībai nepersonalizētā karte varētu būt izveidota arī atslēgu piekariņa, telefona uzlīmes vai citās formās.

Atgriežot atpakaļ karti tūrists varēs saņemt atpakaļ savu 5€ depozītu plus atlikušo naudu kartē. Bieži vien tādās sistēmās tiek noteikts sods, piemēram 2€, ja karte tiek atgriezta mazāk nekā 6 mēnešus pēc tās izdošanas jo realistiski kartes nevar pārdot atkal - tas būtu pamatīgu higiēnas problēmu perēklis. Atgrieztās kartes jāiznīcina un jāveido jaunas. Tāpēc nav vēlams, lai cilveki tās mainītu pārāk bieži.

Ņemot vērā informāciju par iepriekšējiem darījumiem, pakalpojumu sniedzēji varētu automātiski dod atlaides biežajiem lietotājiem. Viens piemērs ir viegls veids kā pilnīgi automātiski aizvietot mēnešbiļešu konceptu - laikā bāzēti tērēšanas limiti. Ja Rīgas sabiedriskajā transportā viena brauciena cena ir 0.6€, dienas biļetes cena ir 3 braucienu cenā, nedēļas biļetes cena ir 15 braucienu cenā, bet mēnešbiļetes cena ir 60 braucienu cenā, tad var izveidot vienkāršu programmiņu Rīgas Satiksmes reģistrātoros, kas analizētu pieliktās Lasis kartes pirkumu vēsturi tieši ar Rīgas Satiksmi un samazinātu biļetes cenu līdz nullei, ja šī karte jau ir nopirkusi (par pilnu cenu) 3 braucienus pēdējo 24 stundu laikā vai 15 braucienus pēdējo 7 dienu laikā vai 60 braucienus pēdējā mēneša laikā. Tādā veidā mēnešbiļetes cilvekiem vairs nekad nebūs jāpērk - visiem vienkārši būs jāņem Lasis kartes un jāreģistrē katru braucienu un viņi automātiski maksās minimāli efektīvo summu, ko viņi būtu samaksājuši, ja būtu perfekti zinājusi tieši cik braucienu viņi nākotnē nobrauks. Tas sekmēs braukšanu ar sabiedrisko transportu, jo cilvekiem nebūs jādomā un jāparedz vai viņi nākošā mēneša laikā nobrauks pietiekoši daudz reizes, lai tā biļete atmaksātos - viņi varēs vienārši braukt pārliecībā, ka viņi nepārmaksās.

Faktiski šādai sistēmai vairs nav īpaša sakara ar Rīgas Satiksmi - to būtu jāveido neatkarīgam uzņēmumam no kura visi pakalpojumu sniedzēji šo pakalpojumu pērk maksājot, piemēram 1% no visiem darījumiem, līdzīgi kā kredītkaršu apstrādē. Tokijas piemērs rāda, ka faktiski ir iespējams noteikt komunikāciju standartu un ļaut kartes, automātus un reģistrātorus tirgot diviem neatkarīgiem uzņēmējiem ja abas kartes var brīvi gan papildināt, gan lietot ar abu firmu termināliem. Tas gan varētu būt mazliet par sarežģītu, tāpēc Latvijas mērogiem būtu labāk, ja to veiktu viena valsts vai bezpeļnas kompānija.

Kartē būtu ierakstīts pensionāra, studenta, skolēna vai represētā vai maznodrošinātā statuss un tad visi pakalpojumu sniedzēji varētu to izmantot lai automātiski piešķirtu atbilstošās atlaides pēc vēlēšanās. Ja RAPLM to atbalsta, tad kartē varētu būt arī pieraksta pašvaldības indentifikātors, lai arī uz tā bāzes varētu piešķirt kaut kādas atlaides.

Skolēniem šāda karte varētu pilnībā aizvietot maku - uz kartes būtu skolēna info un fotogrāfija padarot to grūtāk nozogamu un kartē varētu būt ierakstīti arī tēriņu limiti dažādām pirkumu kategorijām, piemēram, 3€ dienā sabiedriskajā transportā, 3€ dienā skolas ēdnīcā, 1€ dienā visur citur (lai nevar nopirkt našķus par pusdienu naudu).

Izmantojot standarta NFC tehnoloģiju karšu atlikumu un pilnu darījumu vēsturi varētu apskatīt ar jebkuru ar NFC aprīkotu viedtālrunu uzstādot atbilstošu programmu. Līdzīgi caur šādu telefona programmu vecāki varētu uzstādīt tēriņu limitus savu atvašu kartēm un tas aizslēgt limitu izmaiņas ar paroli.

Citu pilsētu sabiedriskais transports viegli varētu ieviest šis kartes, jo karte vairs nav piesieta Rīgas biļešu cenai - katrā pilsētā var būt sava cena, savas mēnešbiļetes un savas atlaides un to visu varētu lietot ar vienu un to pašu karti.

Lai šo utopiju realizētu vajag izdarīt tikai dažas lietas:

  • Atdalīt e-talonu apkalpošanu no Rīgas Satiksmes.
  • Pārstāt tirgot dzeltanos e-talonus un to vietā visās tajās pašās vietās pārdot zilos nepersonalizētos e-talonus
  • Nomainīt programmatūru reģistrātoros, automātos, terminālos un kontrolieru terminālos lai apstrādātu naudu nevis talonus
  • Visos esošajos e-talonos vai nu pārkonvertēt atlikušos talonus naudā vai arī ļaut tos turpināt izmantot pārejas processā, bet ļaut papildināt tikai jau ar naudu
  • Izstrādāt jaunus reģistrātorus lietošanai restorānos un citās ne-transporta vietās
  • Izstrādāt distances biļešu reģistrātorus un visos pārējos reģistrātoros ieviest "soda naudas" apstrādes kodu.
  • Popularizēt, izplatīt, pilnveidot, ...

Vai tas ir reāli? Teorētiski - jā! Sādas sistēmas strādā citu pasaulē un ļoti veiksmīgi. Praktiski - vai pie mums būs griba pārtaisīt kaut ko ejošu tā, lai tas strādātu patiešam pareizi un ļautu daudz plašāku pielietojumu ārpus tās sfēras, kas pašlaik to veido? Mani māc nopietnas šaubas vai mums ir pietiekoši vizionāri cilvēki un pietiekoši politiskās gribas lai ko tādu novestu līdz realitātei.

Domas?

Edit: Starp citu izskatās, ka kāds Rīgas Satiksmē šajā virzienā domā taču atkal absurdā kārtā cilvēkam ir jāiet un jāstāv rindā klientu apkalpošanas centrā un jāraksta kaut kāds iesniegums, lai varētu sākt šo funkciju lietot. Kāpēc šo funkciju nevarēja vienkārši ieslēgt visiem esošajiem zilajiem e-taloniem? Ja tur ir jāapstiprina lietošanas noteikumi, tad to varētu likt izdarīt pirmo reizi papildinot un miers. Kāpēc e-maciņu nevar lietot biļešu iegādei transportos un mikriņos? Kāpēc vispār nepersonalizēto e-talonu nepārdod Narvesenā un Statoilā blakus dzeltenajiem e-taloniem? Kādam kaut kā Rīgas Satiksmē acīmredzami pietrūkst.

Translation management workflows

Whatever you do with translations, consider translation management issues. For example, you are developing a multilingual web site. All kinds of labels and buttons and form fields are nicely translatable with trans template tag and ugettext. You have po files that follow your code from dev to stage to production environment.
Now you add a CMS into the mix. And suddenly - you translations are in more than one place, in more than one format and follow different routes to production.
Now imagine that you need to add Chinese language to your entire site. The translator is an off-site contractor. What files would you send to him to translate? How would you generate them? How will you integrate them?
If someone adds or changes a page on production in English: how will your developers see that change? how will you know that an updated translation for Chinese is needed? how will you manage the update of the translation?
If you make a CMS and don't have at least the export_po_file and import_po_file management commands, then you are not really multilingual. It is either that or figuring out your own answer for the above questions.
I have finally found a Django-based CMS that has those - http://pythonhosted.org/django-page-cms/ . Have not really tried it yet, but I am hopeful.

Moved to Mezzanine

After my server that has hosted my blog for some years had given out its last breath (second motherboard failure), I decited it was time for a change. And not just server change, but also change in the blog engine itself. As I now focus on Python and Django almost exclusively at work, it felt logical to use some kind of Django-based blog or CMS. I tried django-cms and mezzanine and ... Mezzanine is so fast and simple, that I simply stopped looking.

After simply following the tutorial and creating a skeleton project, I had a ready-to go site with all the CMS features, incuding a blog. I just had to change a few settings to have the blog module be the home page of the site, change site settings for the title and Google Analytics settings and such and tweak the theme a bit to my liking.

This was my first real exposure to a Bootstrap design. I must say - it is very simple to understand and modify if your needs fit within its limits. For example, I wanted to remove the left sidebar and expand the main content block to fill that. All I had to do was to remove the div element with class "left-sidebar span-2" and change the class of the main content part from "span-7" to "span-9". To do that I simply copied the templates/base.html file from mezzanine default templates and modified it. The information from django-debug-toolbar showed me what files were used in rendering the page.

But the feature that really got me hooked was the Wordpress import. Using a simple management command I was able to feed into Mezzanine instance the XML export file from Wordpress. It created blog posts, categories, comments, static pages and even redirects from Wordpress permalinks to Mezzanine permalinks. It was not flawless - there were a few issues:

  • I had to set the COMMENT_MAX_LENGTH setting to something higher than the default 3000 chars to accomodate some longer comments
  • As I failed to clean up the comments before exporting, comments marked as spam in Wordpress still got into the XML and showed up in the new blog without being marked as spam there
  • Some comments (mostly spam) had a much longer user name than 50 char maximum. Even with a --noinput setting that should have truncated the names, the import errored-out as Django passed the long strings to the Postgress database which promptly refused to store too much data or to truncate it. I chose to work around that by increasing the column size in Postgress.
  • One of the posts did not have a set title, so the import took the whole first paragraph as the title and then failed to create a good slug from it. This caused the redirect creation to fail. I fixed this by editing the XML file and setting a title.
  • It looks like the slug creation for the redirect and the actual slug are slightly different. Some permalink redirects for posts with non-ascii symbols in the title failed to link up correctly

After that was done it was a relatively straightforward process of picking up the code and data and deploying it to a Django-friendly hosting service. There is a plenty of good competition out there, most now offer a simple one-click Django installation, so I just created a simple Django skeleton via their web interface and then replace what they generated with my app while keeping their settings as local_settings.py . I should probably write a bit more details about the process. After I create a custom fabric file for this.

It is quite a strange feeling to have a Mezzanine blog that responds faster from a shared server half a continent away, compared to a Wordpress on dedicated server in the same room

There are a few features that I am still missing - most notably draft post autosave. That has bitten me hard while writing this post :P Also a Twitter digest post feature. But on the bright side - that is a great motivation to write such features, preferably in a portable way that other people can use too :)

Twitter Weekly Updates for 2013-09-14 - 2013-09-20

  • One of the best movies ever gets a defence too :) http://t.co/pjo7paTnqV via @TheEscapistMag 00:11:52, 2013-09-14
  • RT @daGrevis: Random! http://t.co/psKuOVASsw 00:37:03, 2013-09-14
  • Twitter Weekly Updates for 2013-09-07 - 2013-09-13 http://t.co/h6GX55u0vU 03:20:17, 2013-09-14
  • RT @raubrey: Err, hello, I am lost. Is this the way out? #craftyfox http://t.co/0D9KAUo1wX 14:46:45, 2013-09-16
  • Paldies @100LVstasti http://t.co/QzxeadyibJ ir vienkāši fantastiski! 11:12:34, 2013-09-17
  • RT @krizdabz: Spotify kalpo kā laika mašīna. Uzlieku Deftones un esmu atpakaļ Ķīpasalas kojās pie Mu online un nebeidzamajiem IRC sviesta č… 11:33:46, 2013-09-17
  • RT @krizdabz: Turpat ap stūri arī System of a down, Rage against the machine un virtuvē uz plīts aizmirsts nu jau sārti gailošs katliņš. 11:33:50, 2013-09-17
  • RT @PiratePartyUK: German Pirate Party Crashes Spy Drone in Front of German Chancellor Angela Merkel http://t.co/EubwefSMSp via TorrentFreak 15:29:42, 2013-09-17
  • Starp citu - grillēta kukurūza ir brīnišķīgi saldena veģetāra uzkoda pie šašlikiem. Tagad arī Latvijā audzē :) 08:55:24, 2013-09-18
  • Skatos uz meteo prognozēm "15mm līdz 19mm lietus šodien", domāju "hmm, wideangle rain" ... doh! :D 09:15:43, 2013-09-18
  • RT @koffboy: Вот как бывает. Живешь-живешь, а потом - http://t.co/zFykGUNyjZ 11:28:40, 2013-09-18
  • @mauzins neizskatās nemaz ticami. Kāpēc biomassai un saulei vajag alvu, bet ātomam vai hidro - nē? Un varu visi lieto vadiem. in reply to mauzins 11:49:35, 2013-09-18
  • RT @KlubsRobots: WWW:VVF pierādīja, prezidents var būt sieviete, Zatlers, ka prezidents var būt jebkurš, Bērziņš, ka bez prezidenta Latvija… 15:09:20, 2013-09-18
  • RT @KasparsMisins: "Daces Lindes stāsts par dalību 168km garajā Ultra Trail du Mont Blanc skrējienā" http://t.co/Tz1jL8RTZ0 18:06:59, 2013-09-18
  • RT @RigasPP: Uz jautājumu, vai Jums, draugiem, radiniekiem gada laikā bijusi vajadzīga policijas palīdzība, 60% atbildēja, ka "Jā", 40% - "… 09:17:52, 2013-09-19
  • RT @3knivesfood: Drīz pavisam drīz sāksim TEST režīmā strādāt ! Un tas notiks šodien, kaut gan tā nemaz neizskatās :) http://t.co/a3J8YmzeOt 09:21:40, 2013-09-19
  • RT @3knivesfood: Esam atvērti! Gaidām ciemos!!! 17:13:01, 2013-09-19
  • Sanāk, ka esmu starp pirmajiem @3knivesfood klientiem. Let the testing/tasteing begin! 17:57:25, 2013-09-19
  • RT @3knivesfood: Svaigi drukātās pirmās ēdienkartes ! http://t.co/OXa9Rwhomn 19:36:10, 2013-09-19
  • G+: There is a new restoraunt in Riga today - 3knives. Located in the same spot where 3fishes was and run... http://t.co/A5IOvLBChe 20:28:02, 2013-09-19
  • RT @arniskrauze: Šovakar atcerējos, ka pirms desmit gadiem šajā vakarā televizora tiešraidē no Zaķusalas kopā ar kolēgām skaitījām par/pret… 21:32:23, 2013-09-20
  • Twitter Weekly Updates for 2013-09-07 - 2013-09-13

    • Rīgā šodien trako nams. Tētu gājiens pie MK dala saldējumus, Betmens un Supermens pie Saktas protrestē pret Afleku, pie Operas bļaustās kāds 11:22:12, 2013-09-07
    • @AndaBurve wait, no rīta arī ir Panorāma??? in reply to AndaBurve 20:09:10, 2013-09-10
    • RT @attackerman: Wait, you mean a major NSA technology partner like Apple is introducing a biometrics database? 20:10:11, 2013-09-10
    • RT @JamesWallis: Apple announces solution to Syria conflict: "make it thinner with a slightly better screen". World media ecstatic. 20:15:06, 2013-09-10
    • RT @ArnisKaktins: Visu sapņu apmierināšanai LV iedzīvotājiem patlaban vidēji pietiek ar Ls1542.Tas ir par 14% vairāk kā pirms gada. :) http… 12:23:05, 2013-09-11
    • RT @geofft: Kind of disappointed that Subversion (the project) hasn't moved its source control to git. Get with the program guys 23:39:13, 2013-09-11
    • Iepirkšanās brauciens uz jaunatvērto IKEA lielveikalu Viļņā -50% https://t.co/vfKnkOg794 07:31:50, 2013-09-12
    • RT @phoronix: Linux 3.12 Codenamed "Suicidal Squirrel": After the Linux 3.11 kernel was codenamed "Linux for Workgroups" in ... http://t.co… 07:34:35, 2013-09-12
    • @laumapret http://t.co/Bfuo504F3H , es to kombinēju ar http://t.co/0OXNKXYGdQ in reply to laumapret 17:51:25, 2013-09-12
    • Fez is really quite EPIC! Get it now with the Humble Bundle ;) 19:20:12, 2013-09-12
    • G+: Another new look for me. This time for autumn/winter :) http://t.co/3uUE5MdyH5 19:50:03, 2013-09-12
    • RT @miculis: Būtu Teslas mašīna - varētu no Eiropas pašas augšas (Norvēģijas) nobraukt lejā līdz Spānijai PAR BRĪVU. http://t.co/K3hKhOAm14 20:45:33, 2013-09-12
    • Twitter Weekly Updates for 2013-08-17 - 2013-08-23

      • Twitter Weekly Updates for 2013-08-10 - 2013-08-16 http://t.co/pGv33pjYsf 03:20:14, 2013-08-17
      • Noskatījos Kick Ass 2. Nekad vēl tik daudz un nepārtraukti nebiju smējies kino. Iesaku pirmo pirms tam atkārtot - vēl jautrāk tad. 20:48:33, 2013-08-17
      • RT @TheAVClub: Review: Kick-Ass 2 is a juvenile comedy of excess http://t.co/4pLmUW8iz7 20:57:16, 2013-08-17
      • @pornelski @daGrevis how does it conpare to WebP? in reply to pornelski 21:02:39, 2013-08-17
      • RT @stephenfry: Help make it happen for 'Ubuntu Edge' http://t.co/We8jEaKFkF #indiegogo via @indiegogo Exciting project I reckon! 11:26:31, 2013-08-18
      • @EvijaVaikina visi brauc uz vienu pusi - pretējā pusē transports parasti tad tukšs. Bez maksas vajadzētu vairāk reisu, bet ceļi būtu brīvāki in reply to EvijaVaikina 22:06:56, 2013-08-18
      • @EvijaVaikina vienalga maksāsi. Vai par biļetēm vai ar nodokļiem. Vai nu pilni busi, vai arī varāk busu vai arī sēdi, bet korķī pusdienu in reply to EvijaVaikina 22:10:45, 2013-08-18
      • @EvijaVaikina domā bomži no kontroles baidās? Pat ja vizinās svētkos, tas ātri apniks ikdienā. Bet mazturīgajiem stipri vieglāk strādāt būtu in reply to EvijaVaikina 23:26:31, 2013-08-18
      • LinkedIn mani šorīt baida - "Microsoft is looking for people like you" :D 11:56:04, 2013-08-19
      • @EvijaVaikina ņemot vērā cilvēku koncentrāciju pilsētās, sabiedriskais transports ir vienīgais reālais risinājums satiksmei. Auto = luksus. in reply to EvijaVaikina 12:37:59, 2013-08-19
      • @EvijaVaikina tas ir viens no retaiem veidiem kā viņus motivēt šo transportu reāli izmantot, jo tiem, kas lieto, būs lētāk kā mēnešbiļetes. in reply to EvijaVaikina 13:27:05, 2013-08-19
      • @maris_t @ibrante @Ga4a minimālā alga nav iztikas minimums. Tas ir cik maz tev drīkst maksāt par vienu pilnu slodzi. Rīgā != Rēzeknē in reply to maris_t 13:29:58, 2013-08-19
      • @ilze_la @ibrante @Ga4a tāpēc, ka jo lielāka ir valstī minimālā alga, jo sliktāka valsts konkurentspēja pasaulē. Tas ir balanss. in reply to ilze_la 13:31:02, 2013-08-19
      • @EvijaVaikina emm, dzīvojam gan. Vismaz salīdzinot ar ASV. Skandināvi gan mums tur vēl mazliet priekšā. in reply to EvijaVaikina 14:09:07, 2013-08-19
      • @ilze_la @ibrante @Ga4a yep, UK *ir* mazāka konkurentspēja. Ļoti daudz rūpniecības no UK ir aizpeldējusi. Palicis tikai high-tech. in reply to ilze_la 14:10:18, 2013-08-19
      • @maris_t @ibrante @Ga4a izt.min. nerēķina nedz divu cilveku darbu ģimenē nedz dzīvošanas izmaksas Rīgā. Vidējā T slimnīcā. in reply to maris_t 14:12:36, 2013-08-19
      • @ilze_la lai būtu ko darīt apkalpojošai sfērai ir jābūt high-tech, kas nes valstī lielo naudu. Mēs - dārgāki par Indiju, mazāk tech kā UK/DE in reply to ilze_la 14:42:59, 2013-08-19
      • @Ga4a UK ir vairāk fabriku un raktuvju gruvešu ap Mančesteru vien nekā LV jebkad ir bijis. Mazkvalificētiem palikusi tik apkalpojošā sfēra. in reply to Ga4a 14:45:10, 2013-08-19
      • http://t.co/pvVexyKwhM - Videos from #Debconf13 are there, enjoy :D 20:29:33, 2013-08-19
      • RT @krizdabz: Oho, Tesla Model S atzīta par drošāko auto ASV. Elons patiešām zin a kā pārdot savas mantiņas! http://t.co/CFoPPgbmSG 08:15:17, 2013-08-20
      • RT @AmbMarkPekala: I'm no @nilushakov, but we just adopted this little guy. http://t.co/OtcDAdm8AH 17:44:15, 2013-08-20
      • RT @newsyc150: Guido van Rossum Deconstructing Twisted's Deferreds http://t.co/gjHXGe7j1H ( http://t.co/mmgHQcRCKt ) 17:57:01, 2013-08-20
      • @arniskrauze ar ko/kur/pie kā smuka un gudra jauniete varētu sāk, ja grib kļūt par TV žurnālistu/diktori? 20:40:55, 2013-08-20
      • RT @pecisk: Kāmēr tauta iztiks ar indīgām piezīmēm Twitter, nevis ies piedalīties vēlēšanās, Ušakovam ne silts ne auksts ka jums pludo. 22:23:28, 2013-08-20
      • RT @USEmbassyRiga: Cik vērta tevis izvēlētā programmēšanas valoda? Ieskats atalgojuma ciparos | http://t.co/QU8pCYI5YC 09:54:43, 2013-08-22
      • @klavina akcīzi vajadzētu visiem produktiem, kuru patērētājus pēc tam, visticamāk, nāksies ārstēt (par sabiedrības naudu) :D in reply to klavina 18:20:01, 2013-08-22
      • @klavina "if used as directed". Cigaretes arī "pareizi" lietojot bojā veselību. Līdzīgi sāk domāt arī par taukiem un cukurdzērieniem. in reply to klavina 18:30:44, 2013-08-22
      • @eRiky @klavina Latvijā visus ārstē par sabiedrības naudu. Domā tas pac. iemaksas lats par vizīti nosedz ģimenes ārsta un medmāsas algas? in reply to eRiky 18:33:27, 2013-08-22
      • @klavina privātklīnikas, ja ir nauda. Bet reāli visu var arī bez tās ārstēt. Citur (ASV?) tādas iespējas vispār nav. in reply to klavina 18:36:46, 2013-08-22
      • @klavina @eRiky ja es lai normāli aizbraukt lietoju taksi, tas nenozīmē, ka sabiedriskā transporta Rīgā nav. in reply to klavina 18:39:11, 2013-08-22
      • @klavina pie mums tāda eksistē. Dažās citās valstīs par ko tādu cilvēki sapņo. 2000+ USD rēķins par renģenu un ģipsi, lētā slimnīcā in reply to klavina 18:42:29, 2013-08-22
      • Twitterspēks, palīdziet - ar ko/kur/pie kā smuka un gudra jauniete varētu sāk, ja grib kļūt par TV žurnālistu/diktori? 20:23:37, 2013-08-22
      • @j_puce veseli - jā. Ja cilvēks sevi bendē (alko, cigas, tauki, cukurs, ..), sabiedrībai viņš pēc tam būs jaārstē. Lai samaksā jau patērējot in reply to j_puce 21:33:36, 2013-08-22
      • @normis iedomājies kāds spektra piesārņojums mežos būtu! Tā tik vienu koku ik pa pārdesmit metriem vajadzētu. in reply to normis 21:35:24, 2013-08-22
      • @normis kaut kā pārāk bieži tie, kas strādāja, tā vietā lai mācītos, strādā ja ne labāk, tad vismaz tik pat labi. in reply to normis 21:37:20, 2013-08-22
      • @j_puce priekš tam ir apdrošināšana. Bieži vien tā vai nu ir, vai arī tiek uzskatīta par obligātu. in reply to j_puce 21:39:19, 2013-08-22
      • @j_puce valstij jābalansē cilvēka izvēles ar to izmaksām sabiedrībai. Lai sods par ķēpāšanu būtu lielāks par neķēpāšanas izmaksām, piemeram. in reply to j_puce 21:46:06, 2013-08-22
      • @j_puce @jjerums ar sevi ko dara nav tik svarīgi, ja vien sabiedrība nav uzņēmusies to pēc tam par brīvu labot in reply to j_puce 22:01:08, 2013-08-22
      • @jjerums @j_puce plus tie "paši domātāji" bieži apčakarē sabiedrību, ja viņiem rokas par brīvām in reply to jjerums 22:03:09, 2013-08-22
      • @j_puce @jjerums jo ir izdevīgāk salabot cilvēku nekā pazaudēt viņa nākotnes devumu, jo viņam nepietika operācijai, piemēram in reply to j_puce 22:05:00, 2013-08-22
      • @j_puce vai arī, sabiedrībai vajag ceļus, pat ja tos ostu kravinieki izdangā. in reply to j_puce 22:07:55, 2013-08-22
      • @j_puce @jjerums valsts investē cilvēkam labvēlīgas vietas tēla uzturēšanā, nevis konkrētā cilvēkā. Riskā, ka tas varētu būt tu. in reply to j_puce 22:10:30, 2013-08-22
      • @j_puce @jjerums ja ir slikta ģimene - lai pūst? Valsts nosaka minimālo cilvēcības līmeni. Dažās ģimenēs būs vairāk, bet nekur nebūs mazāk in reply to j_puce 22:12:37, 2013-08-22
      • @j_puce @jjerums ja muļkības risku ir iespējams izskaitīt un iekļaut biļetes cenā, tad ir bezatbildīgi to nedarīt :-) in reply to j_puce 22:15:25, 2013-08-22
      • @sirmais_martins diez vai, ļoti retās vielas caur ādu vispār tiek cauri. Visticamāk placebo ar kafijas smaržu. in reply to sirmais_martins 20:38:13, 2013-08-23
      • Watched Le Mis. Spoilers: it's miserable and then all the good people die. Meh. 23:07:32, 2013-08-23
      • Twitter Weekly Updates for 2013-08-10 - 2013-08-16

        • Twitter Weekly Updates for 2013-08-03 - 2013-08-09 http://t.co/qtt4CobcTg 03:20:15, 2013-08-10
        • Not going after all http://t.co/OCGW0IGP5C 10:47:57, 2013-08-12
        • RT @golan: Amazing. Undersea cables are all sheathing; the internet runs on just 3 strands of fiber optics. http://t.co/KP1Lw9E7ei via @rac14:55:53, 2013-08-12
        • RT @elonmusk: Hyperloop Alpha at http://t.co/ZRTcT2b8bP and http://t.co/7cucKKprPB http://t.co/LYhuRxUntA 09:09:52, 2013-08-13
        • @elonmusk the PDF file is broken on the Tesla Motors site. Fine on the SpaceX site. in reply to elonmusk 10:04:03, 2013-08-13
        • RT @LieneCipule: Bezkaunības barometrā beigušās skalas. Нил Ушаков: «Россияне спасли центр Риги» http://t.co/tuD4uebtzb via @Tvnet_Rus 18:42:28, 2013-08-13
        • @NellijaL @bonappetit_lv tas ir legāli tikai ASV, kur tas arī tika filmēts. Pie mums lētāk maizi vai miltus piejaukt. in reply to NellijaL 23:01:20, 2013-08-13
        • Humble Bundle just DDOSed Origin servers :D 21:35:53, 2013-08-14
        • @daGrevis IKEA in reply to daGrevis 11:03:40, 2013-08-15
        • @daGrevis iridea.lv vai arī aizbraukt ar busiņu un pāris draugiem uz jauno Lietuvas veikalu in reply to daGrevis 11:05:07, 2013-08-15
        • RT @daGrevis: «Varu tev pateikt priekšā - PHP ir deprecated. Vajadzēja vairāk kā 5 gadus, lai to saprastu.» #MadeMyDay 10:54:35, 2013-08-16
        • Izlasīju dībeļu lietošanas instrukciju. Uzzināju daudz jauna. Būs mājās pāris lietas jārefaktorē :-) 16:05:01, 2013-08-16
        • RT @editeu: Kāpēc, vērtējot dzimstības datus, neņem vērā,ka nākotnē visvairāk dzemdēs pēc 30 un pat pēc 35 gadu vecuma? 16:09:39, 2013-08-16