středa 9. listopadu 2016

Creating my own Point of Sale system, Part 1: Design

This took some time, I'm (mostly) back on track. When I chatted with my SI friends, the first thing I noticed was they asked a fuckton of questions. They grilled me about specifications, use cases, reliability or scalability. They also gave insane price quotes but I'll skip over that. The reason is simple: Specifications save time. I am definitely not used to that. I'm used to quickly hacking together a sqlite database for a chatbot in python and iterating bugfixes/feature additions as I go. So I thought, "Why not do it properly for once?"

Well, that was also a mistake.

The first thing one notices when starting a programming project is the sheer number of decisions. From the programming language to data types, databases and used design patterns, each choice has several impacts and you don't even know the right use case if you don't work with them for some time.

So let's start with the language. I am quite fluent with Python (as in, I can solve most given problems in Python without having massive headaches), which I also consider a scripting language not particularly fitting my "program" image in my head. I wanted to learn C# at some point, but I didn't want to turn get a situation where I don't know what I'm doing in a language I don't know. That's the same reason I turned down Scala, no matter how beautiful the syntax is. I'll probably end up with Java, because I used it at University for 2 years and I consider myself competent in it.

Of course, knowing Java (understanding OO and ORM, getting good grades in programming courses) at a University level is fucking nothing. The only design pattern I know is a singleton. I probably can understand DAO's but for me it's like a holy text to follow blindly. I understood how to design a database and the reasons for transactions, got an A in an exam and then never touched that shit again. So you kinda think you know how to do it but you've never actually coded it.

In machine learning terms, it's similar to how you can know theoretically how to use logistic regression or SVMs or different neural network architectures (An image? Just use convolution! Duh!) but it is also important to know how to do them. Like using Keras or Tensorflow or the sklearn package when no one is looking. That also takes practice.

I'm essentially at 0 knowledge.

Anyway. My vision starts with a simple underlying database. It would contain 3 tables:
  • Wares
    • barcode(str, primaryKey)
    • name(str)
    • unit price(float)
    • tax rate(float)
  • Receipts
    • id(int, primaryKey)
    • FIK (str) or "fiscal identification code"
    • DIC (str) or "tax identification code"
    • BK (str) or "security code"
    • Date (date)
    • total_before_tax(float) - These are actually redundant but I don't want to do a SQL query for everything
    • total_after_tax(float)
    • a list of wares for the given receipt, probably using foreign keys
  • Storage
    • a simple mapping of Wares to current amount
Now this is really easy to do using SQL (I know postgresql, but mostly use sqlite for simple things).  It is also braindead simple to do using Objects (in fact, in Java most of the code is generated by the IDE). But a simple ORM in Java? Nah. I've been told it's simple. Lmao. I don't even know what to use, a quick google lead me to hibernate. Well sure, I can spend time to figure out how to install it (I miss imports already), do a basic tutorial and write a XML file with the mappings. A perfect weekend project for fucking masochists. Oh my God.

But let's pretend I'd done all the Data Access Objects and their SQL implementations together with a databaseModel object that initalizes the database. Then we move along to the application. That's probably easier, right? I got two simple use cases. The first one is a bunch of text boxes where you input the name and the price and then do a barcode scan. Afterwards you press a button and the ware gets saved in the database.
The second one is the PoS itself. We need to:
  1. Load the barcodes from the scanner
  2. Get the corresponding Ware objects.
  3. Show the current price on the monitor (and possibly a serialbus output for a LED display too, but let's not get utterly insane here)
  4. Put them in a Receipt object
  5. Generate the XML code (using a opensource java library from github)
  6. Send it to the state
  7. Retrieve the return code (the FIK one)
  8. Add it to the Receipt, saving it to the database
  9. Print it
The storage table is to keep track of our wares and possibly some SQL inference to know how much profit we made (protip: probably low).
The worst part will be the GUI, which I hadn't done for 2 years. I actually thought (after a recommendation) to just use fucking python flask with a simple javascript frontend, which would probably cut like 70% of the time, but it just doesn't feel proper, even though java is verbose overkill.

So what's done is using the barcode scanner (it's a simple keyboard interface) and a shitty drawing of my database along with the java objects (without any annotations or XML mappings yet). After I get the ORM done, I'll try to cobble together some basic javaFX GUI without using an exit bag and we can start filling the database while I do the main app in the meantime.

sobota 29. října 2016

Creating my own Point of Sale system, Part 0: Start

I had several topics I wanted to write about (both from my dabblings in machine learning and travel stories), but a more urgent thing came up. With a change in Czech legislature, all shopkeepers are now required to authorize all transactions at the Ministry of Finances' servers. They call it EET - Elektronicka Evidence Trzeb. (electronic records of sales) Sadly, POS just reminds me of part-of-speech tags. To deal with the ambiguity, I'll just refer to it as EET system, even though it contains more.

So what exactly is EET?

From march on, every time we make a sale, we have to contact their servers and send them the amount with our hashed ID we got from them by registering. Afterwards, they send an unique receipt ID back, which we have to print and give to the customer. The customer can then at any point check the receipt on their website. The specifications are all published and the state doesn't require any license to use it.

It's rather annoying and requires certain investment, but I'm not going to complain about that. I'm still trying to prove people wrong about the Vietnamese stereotypes by example. Even though I might confirm some stereotypes instead. We (as in, mostly my parents) used a simple cash register until now, and kept track of sales using a notebook.

The state promised everyone to give them a 5000 czk (~280 eur) tax refund for the equipment and software. Of course they don't consider ongoing costs such as the internet provider or software license, but hey, better than nothing! The common use case is a android tablet with a bluetooth printer, which could probably squeeze into the 5k. That is of course not very acceptable for a 20m^2 shop. Being a cheap person, I looked for windows apps instead, as I got a spare thinkpad x61 I could use. The software I found either cost around 1500 czk or had a 200 czk monthly fee for support. We have to add 2k for a receipt printer and potentially 1.5k for a barcode scanner and other things.

That is reasonable, but most of the newer solutions did not support a bar code scanner (a must, since my father is really bad at typing prices and a typo on a EET system can turn bad really quick). We didn't have a bar code scanner until now, but it feels shitty to pay money for something that doesn't fit your use case. They were usually very simple calculator-like programs where you typed the price and the tax percentage. One allowed you to predefine items, which I found quite OK, but it still involved a lot of clicking. (That one I'm keeping as backup in case I fail during the next 2 months)

Of course, full-blown system with a touch screen and everything costs 20-30k which we can't afford. We were thus at a crossroads of sorts. We don't really need to buy all that new hardware just to keep track of some newspapers and alcohol, but writing each sale would take way too long.

So I had an incredibly bad idea.

Why not make one myself?

As a disclaimer I'm an average computer science student. There is a distinct difference between computer scientist (which should be people using computers and maths, for science) and software engineers, who actually design software and know all the correct structures and templates. People often see the 2 categories as one. Of course, there are also code artisans, full stack devs and all sorts of bullshit terms, but I never met one of those.

I always felt that being able to program to solve your problem was not the same as doing it correctly. Scalable, secure, with error handling, logging and all that. That's a lot of work we usually skipped while doing sick polynomial complexity graph algorithms.

I usually code in python at work and sometimes make my life easier with bash scripts. My last big project was a semester project in java (multiplayer minesweepers). I have absolutely no experience with software engineering apart from database design (where I teamed up with 2 software engineering students and only did the "difficult" sql querries while they coded the app). My last GUI was written in Swing, which I heard has been discontinued for JavaFX. (it was also hideous) I never ever touched javascript. I never did git truly properly (apart from that one time my mentor gave me 78 code formatting issues, which scarred me for life). I spent a year doing neural networks, NLP and ML.

So yeah, I'm the perfect candidate to write production software.

This is going to be more of an exploratory learning session where I hack together a (probably insecure) system which keeps track of our wares using a barcode scanner and which is able to both authenticate the the sale with the state server and print the receipt afterwards. Something my 60 year old parents are able to use with relative ease. If I fail to come up something usable in the next 2 months (or my SE friends cringe too much), I'll buy them the shitty software and we'll have to deal with it some other way.

pátek 12. srpna 2016

Asian Squad

One of the things I always had problems with was getting along with fellow Vietnamese. At some point I actually hated them. It's hard to name the main reason, so I'll try to talk around it instead. We start with the context. Many Vietnamese (at least the ones I know) came to the Czech Republic from Russia after the split of Czechoslovakia, because it was relatively easy to slip though the borders. They mostly had a similar background - not particularly educated, but with a ruthless (they are fucking brutal  and will stop at nothing to succeed) business sense and a desire for financial security. The main income was selling fake  brand clothes at the market, smuggling other Vietnamese and tax evasion. My parents sold vegetables and fruit, which was at the time kinda good (after 10 years, we had our own flat, even though we came with 1000$), but could not compare to clothes. As a comparison, there was a family who lives next to us that arrived at the same time with the same amount of money. They now have their second BMW while we could barely afford our used VW.

Now this might be  gross  generalization (similar to  "all  computer scientists  have aspergers") and I  will say  this mostly applies to the community centered around the sapa marketplace in Prague and people we met there during the last 15 years.

I think my main beef was actually their education. Some of them were from Vietnamese villages (actual peasants) brought by their more established relatives. I mean you can have a good heart , not all people are the same  and shit, but some mannerism were borderline unacceptable. They were the most judgmental (would constantly compare their children and try to oneup each other with their childrens achievements, though I was mostly safe there), smug(at some point THEY got mad for being caught doing something wrong) and plain manipulative people I have ever seen. Their children were not particularly better and I had really few Vietnamese friends (Those I did consider very good and close friends, however). My mother taught medicine at a University in Hanoi so there was a certain rift between us and "the community". I disliked them because I considered the way they made money wrong and, bluntly said, sometimes I thought they were stupid.  (Altough most Vietnamese excelled  at  highschool, they soon stopped giving a fuck  after the first semester of university and ended up  doing economics and then working at their parents shop) They disliked me because I was awkward and we were dirt poor. Money was an actual tangible reason.

Times changed and marketplaces lost their popularity. Thus some Vietnamese moved into actual shops, others switched to doing nails (I think almost every nail shop I have seen is Vietnamese) and a couple started making grocery stores with extended selling times (so called večerky), those were insanely popular due to convenience and competitive pricing. Few Czechs could compete with "our" work ethic which included working until 22 in the evening. It also required a certain cunning to make it more profitable, such as buying discounted items in bulk in supermarkets.  (mostly really early in the morning too, there was a running joke that  seniors can't afford food because the Vietnamese would buy all the discounted wares) They usually had a item limit, which the  Vietnamese circumvented by bringing along their children and switching cashiers. They even told each other which cashiers were "nice" and let them buy  more. Everybody knew they did it and I also had to do it a couple of times. I hated it. I felt ashamed everytime I had to go, because I would also shop for my own food there. But you can't really reject the way your parents make money and live with them at the same time, so I went along with it. It was a constant struggle though, It felt two-faced when you judged  others for being  POS but then doing the same. You could argue that the reasoning  for doing so was different but I  used to think that wrongness  was boolean.

 I also had to work at our shops, which I found honorable and thus something completely okay. I acquired a certain skillset which I later used in Germany as Tutor, making mad cash for the dorm.
. But I always disliked the shady parts. I wish I stayed ignorant of those.

So this is why I don't particularly like my Vietnamese heritage. While the stereotypes included "hardworking", "good customer service", "friendly", I only saw the bad parts, such as "evades tax", " cheats" or "rips people off". It drove me insane. I tried working doubly hard on being honorable/competent /good just to prove those wrong, but it seemed forced to some people.

I still desperately wanted to actually meet other Vietnamese, despite my combination of self-hatred and shame. And I did. Slowly. Awkwardly. And it was amazing.

We first presented Vietnam together, something  I  got approached by the international  student office

 Selling Banh mi at the Campus
 Me in a traditional vietnamese dress, with sneakers and a fanny pack. The ultimate Czech-Vietnamese fusion
I didn't see any VN university students in my uni (it seems I was the only one in the whole year) so it was a pleasant surprise. Well educated, normal, fun people. Amazing! They accepted me right away and we hung out despite my rather limited conversational skills. I must say that Erasmus did ease my prejudices a lot and made less angry at other people.


neděle 7. srpna 2016

Erasmus fin

I'm sitting on the bus to Prague right now, it will take about 14 hours. The last week has been incredibly hectic, because I moved out of my dorm room to save money and stayed at friends' places. I had to juggle 2 exams with cancelling my bank account/phone number and deregistering at the city council. It was incredibly stressful and I was frankly rather miserable doing all those things at the same time. But from friday to saturday I was completely free. I said goodbye to a couple people (Czechs, Americans,  Computational Linguists, even 2 erasmus friends showed up) and drank beer at the Saar.

It's hard to summarize my  Erasmus year.  It was  an unforgettable experience  which taught me  a great deal.  I probably  did not improve academically (some  courses were pure garbage and in fact I feel I lost my edge here),  but  I learned a lot about dealing with people and making the right friends to get free KFC at 1 am. I also got to know a lot about myself (things you don't notice unless you completely change the environment you are in) and living in general.

I met incredible people from all sorts of fields. I rave a lot about my CoLi friends, but there were all sorts of amazing backgrounds and life paths and just talking to them was at times mindblowing. I think this is something most erasmus people would say but I do wholeheartedly believe they do it for a good reason: Because it's fucking true.

 I am blessed to have finally gotten my asian squad. I had incredible mensa lectures about deep learning from J. I enjoyed yelling valhalla and drinking shots with an american fratboy. I had fun awkwardly knocking on every door in the dorm at 1 am with freshly baked cookies. I impressed japanese  people with my weeaboo knowledge. I was impressed by a  barefoot  South African  philosopher/computer scientist. A basque gentle giant brought me after drinking too much. We tested american  IPAs  every other week with  a beer  lover from Washington. I got destroyed skating 24km through the city with the Polish computer scientist.

My life in the dorm was at first rather lonely and boring until I started meddling with the politics, which lead to incredible fun and annoyance at the same time. I learned a fuckton of baking recipes which I tested on J for the whole year.

Erasmus is not just drinking (although I did have plenty drinking buddies, uh oh), it was for some people the first time they leave their home and learn to survive in a completely different country and build new social circles from nothing. Unless you are Italian. Then you get a premade social circle straight away. I would say some of my erasmus friendships (distinct from regular ones) were rather shallow, but I do think there was as  a sort of bond for the last year which I will cherish.

It seems very difficult to go back now. Back to my friends who moved on with their lives.  Back to my old university, where most of my classmates graduated. Back to my family after living independently for so long.   It doesn't feel like returning to my old life, I see it as leaving my new life. I'm so torn between then and now and what scares me is that there will be even more such moments in the future.

neděle 31. července 2016


After playing Tutor for 2 months I became what I at first refused to do because it seemed like a lot of stress for a meager 20 euros more. And guess what. It was. I was quite comfortable with my job (because I was also really successful with both making the Heimbar profitable and doing the dorm events), but the Russian candidate looked really incompetent to me. As in, absolutely useless. I
spent a month convincing the previous president to keep his job, but he refused. I found rather ironic that he did it after voting to reduce the tutors and presidents wages. Thank you prick.

The actual election was boring. I had a talk with the Russian (He tried to convince me that he wanted to help the dorm) and we split the positions. I would play president and he would be the Tutor. Since there were no other candidates, I won be default. On the other hand, the fight for the 3 floor manager positions was rather wild. Not surprising, since we did end their heimbar requirement (and started to pay for it instead) and gave them a wage. We had 7 different choices, some of them rather not desirable. The whole process was shitty, because people just voted for those they knew.

My initial theme was like the Tutor one, 1984 with a mean dictator and a fun-police, which I mentioned in the flurfest. The Russian Tutor wanted "Roman Empire" (because we kinda have the same name) and in the end I decided for Dormking as my title.

The first few weeks of my presidency were uneventful. I had to introduce myself to the Hausmeister and the studentenwerk and deal with the dorm bank account. I only had to chill in my room with the universal key to every single room (so much power~) I no longer stocked the heimbar and just show the Russian how to do it with some tips. We was kinda slow but I didn't have any expectations anyway. I once had to clean his clogged Staubsauger because he had no idea how it worked, which I found riddiculous.

Then shit hit the fan.

One day before my trip to Amsterdam, I named the Russian the temporary president and gave him the universal key. That exact day he ripped the projector from the fucking ceiling. I guess that would still be ok, but he refused to take responsibility for 2 weeks even though I asked him several times about the event. I baked the day before that and only 6 people have the key to the Heimbar.

When I came to the heimbar it was him trying to hold it up with his buddy. It's not that hard to figure out. I think when he refused to take responsibility was the moment I lost any respect. He planned to make a silly poster with me and him but I refused to because I was pissed.

I asked him to tell the haismeister to fix it but he also failed to do that, "becase he didn't have time". In all the heimbars he led, he would play shitty russian music and play kicker instead of standing behind the bar. To top it off, he would always bring his other russian friends over.
That's somehow okay, since he is a resident and I kinda did it too for horror nights, but he refused  to clean up afterwards. The single worst part was the moment his russian friends came and thought he was the president, because he told them that. Even though it was a petty reason, I was upset, because I had to fix his shit and he pretended he owned the place.

So right after I came back, there was nonstop repairs. I fixed the projector with the hausmeister, ordered a repair of our small fridge (something the previous president ignored), helped installing a new projecting screen, asked the homeless guy (the one who used to sleep in the heimbar because he was the presidents friend) to remove his motorcycle from our parking place, regularly threw people out of the  heimbar at midnight and had a presidium meeting to formalise rules of conduct.

This looks like me showing off, but the point of this was that the previous presidents didn't do this shit for a reason. It's a thankless job that fostered some sort of codependence between me and the dorm. I was happy to help the dorm and the dorm was happy to let me and stay useless. People got used to it and started expecting and demanding things that I thought should've been fixed years
ago. When you try to maximize a monotonous function (i.e. your usefulness) you just end up working until you burn yourself out.

So the actual lesson I learned wasn't how to organize shit (which I would say I am quite good at), but rather ignore problems I don't have to fix.

As my last act, I had to find an replacement. I wasn't particularly keen on the
Russian (since he actually made it personal) and I wanted to name the cat living in the parking place instead. There was no one who wanted to do that job. I wasn't surprised, as 85 euro for all that work and responsibility was fucking nothing. The netzwart even complained to me that it was my fault that
we have to find a replacement (ideally non-Russian)  president now, ignoring the fact that it was only the Russian back then too, which made these 2 months of thankless working completely sour. It was like I tried so hard for nothing. In the end, a wonderful girl showed up and took the work after some student politics, so now I am free. It was a wonderful experience with stressful environmnets and lazy people.

středa 25. května 2016


It seems I'll be switching to English. I originally wanted to write in Czech to preserve the last bits of my writing style I started losing ever since enrolling in university. I believe my 2 readers won't mind the change. I have been rather busy in the second semester of my Erasmus stay,  but I do intend to fill the gaps. Now is also the perfect time to do so, because it's the exam period.

So let's start with what happened after  coming back to Saarbrücken, flunking ML and then becoming Tutor.

One of the few duties of the floor managers is to make a so called flurfest once per semester. It's a party for the residents, where we collect 7.5 euros from everyone and then use part of it to pay for washing machine maintenance and spend the rest on food and drinks. As the tutor, I was supposed to help with the organization. I was very excited to organize, as it was a new experience for me, but none of the 4 floor managers shared my conviction. I first chose a date  (21st of May) and asked them if it was okay. One guy, F, told me it's something for them to discuss. Well, they didn't discuss shit. After a week I just got annoyed and sorta forced them to comply, which was not really smart, because it seems F resented me for that.

All of them (except 1) kinda lost interest so I did most of the organizing and planning myself (inviting people, preparing activities, gauging food and booze consumption). I even wrote a semi-witty flyer and had it printed out. That was one week before the party.  The other duty of the floor managers is to collect the 7.50 euros from their assigned floor. F wouldn't do it, but my dear neighbour offered she would do his floor.
I would call them my knights and send them on  quests  to slay dragons

On the day of the party, me and 2 floor managers went to buy food for grilling.  I then spent 4 hours grilling while F just annoyed me by asking for things I couldn't get. I'm grilling surrounded by 20 people. Can't you ask the 3 other guys? I was really mad at him and I felt he was being useless on purpose. He stood behind the bar in a party with free drinks.

 One stressful part that turned out really well was collecting money. I should've been more upfront and just demanded the money right away from outsiders, but Italians would simply refuse to commit (they can't possibly fathom the meaning of planning) so I let some pay when they came. This was bad because I couldn't keep track of everybody next to the grill. Luckily they all did come to me and pay me and everything checked out. I was surprised by their honesty because, well, I honestly did not expect many things from them. So we turned profit on a party where you pay 5 euros to eat and drink whatever you want. Fuck yeah.

I had an agreement with F that since I did.. a bit more.. than others, he would then clean the heimbar. Of course, at midnight he suggested we do it together.  I would be happy to help normally but after baking 2 cakes and sleeping 6 hours, I was really upset.

 He started complaining that I asked people to take over his job and decided things without him (which was kinda true, though). Then we also added some complaints from students that he wasn't a particularly good bartender, because he would ignore people and take too long to open the door. I mean I don't expect people to have 5 years experience in a shop, but  I had hoped  they would be willing to learn new things if taught. F just did the bare minimum  and ignored the rest. This was after agreeing to increase their wage (by lowering mine). one. I wish I  could do that sometimes. It was a  great lesson in human interaction for me, because  it seems it is NOT  normal to expect  excellency from everyone.   We kinda convinced him to stay in the end but I haven't talked to him since.

 After 5 hours of standing around  I finally got to sit and drink my czech beer.
Grilling on a gas grill was extremely fun

 I also made cinnamon rolls.
 We had to appease vegetarians as well.
Complementary cheesecake.

úterý 24. května 2016

Rapid deployment model

Jak jsem se naučil (poživatelné) skořicové šneky za 72 hodin. Na Saarlandské univerzitě máme každou středu prezentaci nějaké země. Většinu práce (kontaktování ambasády pro promo materiály)  odvede centrum pro mezinárodní studenty.  Naše role  vetšinou spočívá v tom tam stát a blbě se usmívat.  K tomu dělá mensa jedno typické jídlo, ale to je slušně řečeno odporné.

Minulý semestr jsem prezentoval Vietnam s dvěma holkama. V mense dávali smažené rýžové nudle ale když jsem přišel, tak měli rýži.

Zeptali se nás, jestli nemůžeme přinést nějaké drobné jídlo, což jsem tehdá absolutně netušil.

Tenhle semestr jsem se ale rozhodl něco udělat. Matfyzák mi dal pár nápadů. Jeden z nich byl kynuté těsto, které jsem nikdy nedělal. Máma jednou dělala plněné knedlíky, ale jinak to byla naprostá enigma. Tak jsem si řekl proč ne. Bohužel je u mě většinou první pokus naprosté fiasko, potřebuju průměrně tak 3 iterace. Dost jsem to odkládal a najednou byla neděle. Ve středu byla prezentace.


Musel jsem si každý den naplánovat po jednotlivých hodinách, abych zvládal všechnu školu. Dovolil bych si tvrdit, že jsem ani jedno nezanedbal a místo toho to bylo neskutečných 72h, kdy jsem ani trošku neprokrastinoval.  Přirovnal bych to k transu. Ten pocit se mi zatím nepodařilo replikovat.

Prvni iterace byla  fiasko. Nemám ani fotku  po upečení. Udělal jsem jenom 12 monstrózních šneků a v troubě  vytekla skořicová hmota  a  utvořila  karamelovou  krustu.  1/10  would not share. Matfyzák mě naštestí zachránil.
Druhá iterace byla  trochu připálená, ale měl jsem jich podstatně víc.  Spirálovité formy mě mimochodem děsí, protože jsem četl hororovou mangu Uzumaki (Spirála) od Junji Ita , kde takové věci probíral do detailů. 

Třetí iterace  (udělaná v  úterý odpoledne) kterou jsem prezentoval, s polevou.  Těsto už bylo decentně měkké a   musím řict, že se to dalo jíst.  Po první iteraci jsem si nebyl vůbec jistý, že to zvládnu.

U kynutého těsta mě stresovalo, že tam je mnohem víc parametrů jako  množství cukru v kvásku, teplota pokoje a doba kynutí. V tomhle ohledu mi chybí 'baking common sense', protože jsem se všechno učil z ničeho. Nikdo v rodině nepeče a prostě vám pár pokusů potrvá než zjistíte kolik kypřího prášku a vajec na jaké množství mouky pro danou konzistenci. Buď vám to řekne maminka nebo holt celý semestr dva-  až  třikrát týdně pečete.
Hardcore baking.

Estetika pořád nic moc, ale  chutný  byly. 
Potom co jsem v  úterý úspešně napekl, jsem šel na party a pak měl další ráno menší kocovinu. Přišlo mi to jako úsměvná reprezentace Česka.

Tohle byla německá představa svíčkové.........

Tohle už bylo  na  Flurfest  a tam si už jsem poměrně jistý.