Our robotic shopping overlords

30.06.2009 19:36

These days I usually buy my groceries at a Slovenian supermarket chain Mercator - they opened a new store recently just across Zemanta's offices. Since it's a new building it boasts a row of automatic check-out machines.

It must have been gut feeling, but I've never went near those things until a couple of weeks ago, when store employees started insisting that you try to use them.

Well, I'm not an expert in the field of usability, but I did my share of interface designs and I think that system can go down as a wonderful example of how not to make a human-machine interface. Especially not one that is intended for such a broad use.

It's downright confusing: you have no less than 6 ways of interaction, each one on a visually very distinct piece of the machine:

  • The bar code scanner,
  • touch-sensitive LCD,
  • coin and banknote slot,
  • returned change slot,
  • card reader with its own keypad and
  • scale for verifying the weight of the merchandise

You have to use all of these in correct order - even if you pay with cash, you have to use the smart card reader to insert their customer loyalty card.

I don't know about the average shopper, but my brain is only able to process one input channel at a time. When a machine is trying to tell me something in voice, plus displaying something different on the screen (plus there's an employee near-by, helpfully telling you his own instructions), I get annoyed in the best case.

Then there's paperwork. You get 6 different pieces of paper back (printed by two distinct printers). Some of which you are supposed to throw back into the machine! Don't ask me which ones - I just stuffed in pieces that didn't look like the master receipt. Or do they expect me to completely read those two meters of paper on the spot while a queue is building behind me?

And finally, the straw that broke the camel's back and the reason I'll never use the machine again: they force you to get a new plastic bag for each visit. No, you can't bring your own. I tried, successfully triggered an alarm and got told that that is a feature, not a bug (why, everyone likes a free plastic bag!).

Great. At the time where everyone is talking about sustainable economy and how to change the throw-away society, they introduce a service that gives out plastic bags in the thousands which will be thrown away the moment the happy shoppers get home.

I can understand a plan to take over the world by replacing people with cold, heartless machines, but this is ridiculous!

Posted by Tomaž | Categories: Life | Comments »

Weather machine

28.06.2009 21:16

Here's another piece of electronics I saved from being dumped in a landfill: it's a wireless temperature and humidity sensor from one of those home weather stations. My sister gave it to me after I expressed my interest in it, but unfortunately I was too late to save the broken base station with the receiver. Now I'm playing with the idea of building a new receiver from scratch.

On the outside the sensor has a couple of buttons for setting up its connection with the receiver, self-test and choosing temperature display in Celsius or Fahrenheit (Kelvin fans are left out in the cold). There's a small LCD display on the unit that shows the current sensor readings.

Weather station transmitter, top side

Top side

Weather station transmitter, bottom side

Bottom side

There are no markings of any kind that would identify the manufacturer. That could be intentional, guessing from the sloppy way it's soldered together. Looks like the cost of assembling one of these things together was the primary concern of the designers: there's a single IC in the middle that uses direct chip attachment. Everything is SMD except for a couple of through-hole components that appear to be soldered by hand - in fact, whoever did it forgot to solder one of the pins of the trimmer capacitor (so I'm wondering if the base station was actually working just fine). Battery, buttons and LCD display all connect to the PCB by just being pressed against it - connectors really must cost a fortune these days.

Here's a schematic of the RF part. It appears to be a classical case of a cheap transmitter in the 433 MHz band. Basically it's a tuned oscillator: you have an amplifier and two tuned resonant circuits on both sides. One is a R433A SAW resonator and the other is a LC circuit that can be tuned with the trimmer. Because of the resonance the feedback can be minimal. In this case just the parasitic capacitance in the transistor's base-collector junction (Cbc) appears to do the trick. The antenna is just a fancy trace on the circuit board. I'm guessing there's only a simple amplitude modulation going on: either the transmitter is on, or it's off. But I have yet to hook up an oscilloscope to the circuit the verify that.

Schematic of a 433 MHz weather station transmitter

I'm planning to build a simple super-regenerative receiver, reverse engineer the data protocol and hook it up to an Arduino or some similar microcontroller. I know I could probably get a receiver module already built, but I want to get my hands dirty and finally try working with some RF circuit designs.

What I found so far on the internet seems encouraging. There's a really nice document about super-regenerative receivers by Eddie Insam and the protocol for weather stations has been broken before.

Posted by Tomaž | Categories: Analog | Comments »

Daydreaming

24.06.2009 0:40

Yesterday I attended the opening of the astrophotography exhibition in Tivoli, Ljubljana (part of the events celebrating the international year of astronomy).

I don't know about you, but I still get goosebumps whenever I see a picture like this.

International Space Station

Image by NASA

Having grown up watching Star Trek and building LEGO moon base sets, these photographs remind me that at least some small part of the promises we were given in elementary school did come true. There's a permanent international outpost in the Earth's orbit!

Now imagine seeing something like this with your own eyes. And if our unfashionable corner of the galaxy has wonders like that to offer, what kind of unimaginable sights are there to see around other stars?

And then comes the realization that all progress in space flight has been achieved with what, one tenth of a percent of resources put world-wide into senseless wars and destruction?

There are a number of technologies that could bring at least the rest of the solar system within our grasp, if only some more effort could be put into it.

Posted by Tomaž | Categories: Life | Comments »

Planinsko polje from above

22.06.2009 13:36

Here's a nice video shot from a camera aboard my father's model airplane:

(can't see embedded video?)

The airplane is EProjekt4, a fully aerobatic radio-controlled model airplane. It was designed and built from scratch by dad two years ago. The plane is propeller-driven and uses an 1.2 kW electronically commutated brushless DC electric motor. Power is provided by a 5-cell 4000 mAh lithium-ion polymer battery pack.

Video was recorded on a SD card using the tiny ACME FlyCamOne2 which was mounted under the airplane's fuselage (you can just see the propeller at the top of the frame).

The recording shows a panoramic view of a few villages around the model airfield on Planinsko polje, Slovenia, and a first-person view of a couple of aerobatic maneuvers.

Posted by Tomaž | Categories: Life | Comments »

Entering PIN without confirmation, part 2

20.06.2009 19:44

In my last post I was trying to figure out an optimal strategy for guessing a combination for a lock that only checks the last m symbols entered.

It turned out my venture into the graph theory was a bit of a dead end. As Luka Rahne pointed out to me (on Facebook, no less), there's a different branch of mathematics that offers a much better approach to this problem and even has a connection to my home field of electronics.

Linear feedback shift registers are actually direct solutions to such a problem, albeit only if you limit yourself to two characters (n = 2). These are digital circuits that will generate all 2m-1 different sequences of length m in a shift register (i.e. for each step they insert a single digit at the beginning of the register and drop one at the end). Exception is the state that contains all zeroes, but that is easy to correct with a special case.

It turns out that there exists a generalization of the LFSR for n states. Basically you replace the XOR operations in the feedback loops with arithmetic multiplication and addition modulo n. There is quite a bit of theory behind, of course, but I had trouble finding a higher-level description of it on the internet. A great deal also appears to be patented judging by the ratio of patents that came up in the search.

Just like with ordinary LFSRs, where you need to find the correct locations of the feedback taps, you need to find the correct set of m+1 multiplicative constants in order to get the maximum length sequence (or M-sequence) out of it. This is not really straightforward, as it involves finding a primitive polynomial for the finite (Galois) field GF(nm). Luka posted his Mathematica code to calculate the polynomial's coefficients, but I found it easier to use COS.

Diagram of a non-binary Galois LFSR

Here Si are memory cells holding register states and aj are coefficients of the polynomial:

a_4 x^4 + a_3 x^3 + a_2 x^2 + a_1 x + a_0

My knowledge of this field is a bit superficial and I don't completely understand the connection between this polynomial and the fact that its coefficients will produce the M-sequence. I admit I only skimmed the most interesting parts of an introductory book yesterday. Even my curiosity has limits.

There was only one obstacle left: a finite field only exists for prime characterics n, which means that you can't get a M-sequence for, say, 10 symbols directly. The answer is to factor n and produce a M-sequence for each prime factor (2 and 5 for 10 symbols). You then run two sequences in parallel and assign a symbol to each unique ordered pair you get in this way. So for ordered pairs where the first element can have one of 2 different values and the second element can have one of 5, you get 10 different pairs.

It's easy to show that two sequences ran in parallel with periods

n_1^m \qquad \mathrm{and} \qquad n_2^m

have a composite period of

(n_1 n_2)^m

if n1 and n2 are prime.


So, the final result, a sequence of 10003 keypresses that checks all 4-digit combinations, is below. C code that calculated it and checked for its correctness is here if anyone wants to play with it.

00007559254372858084599981873643682873396507388560205737258390890406577109057085
84407755656998452440953103431203840871976305548700449533810790452084777529615001
28865995256970698666717343853647244639134769304182425975616718038220171921697881
22883937678958816840159505057807206235198963108968447113618950692228573181015663
86685937212772232024957943835883460493374181748586283133070574410206513727615467
46423377876136810868191927035025480677350167368920043177812754478240711183257227
86425153254550496826957587659209644291712969724740441319298114038042533189239285
44227331436116270606531581499603224811334367500940227153898374812000175583453629
48085599890972652682973387417289460215736349380980407577018156094844177547479885
42441953012530212840971967215449600459532901780542085777438714010288759943479607
88667717252952656244739125679205082435974707708128221171830796890228939367699489
06841159414156816206335189873009868457112709940782229573090114672866959363037623
22025957852934892460593365091649486293132161564500207513636714476464333769671269
00869191836134034480777341077269820053176903744568241711092356236864351523455405
86827957496758218644391703879625640451318389104128043533098338294442373305271063
60607531490598612224911325277401840237152989364902001175492552638480955989819627
42683973296516298460315727259281880417576109146184845177456578894424519521035203
02841971876314458600559523811681442095776529704100289759852578616886777163439427
46245739034778214082535965617609028231170921786980229939276798498068511585051469
06207335098972018868557103619841682239572181104762867959272136632220359569439249
82461593274190658486393123071465400217512727704566465333678770278008791909271241
24481777250176278820153167813645468251710183346326865351432554414868379565877483
08645391612978634640551309299005028053532189328384443373214370072606175305815887
02225911234376410840337143899265802011174583542728481955898918636426939723875063
88461315636358290880517567019047084855176547568984425519430134212028519709673045
48601559432910690442195767439605000299758943568706887777072538436462557381257683
04083535874716618028331161831687880239938367788588069511494150478062173341899621
08869557012718850682339563091005662877958363126722221359478538258824715923651807
48487393032170474400317503637605466475332769760368009791818370250244917763411663
68821153076912654468351701093247226875350523544504869379474976492086553907039687
24641551218398014028153523099229284453372305360162607175214914896022359103253665
00841337052998274802111165493443628491954989908726427939632974072884713147273483
80881517476118056084955167457469884435518521124302029519618772054486115585239007
80443195676538614000399749853469606897776163528526463557290356692040935349657067
08029331070930696880339929277689488079510585140568063173250998630088795561037089
40683339472190014662977949273027622231358569528348825715832750816484973921231605
64401317412736614466575323679661268019790909360340245917672510672688311521679027
44469351610192256226975341433445404879378565966582087553816138696246515503093881
04029153432198238284553363215261062617174305904986023359012352674008513361439883
64803111074592452628591945899809626437938723964162885713056372492808915165671081
46085955076556478884535509431025202039518709762144487115494338016804531947675287
04001399658952478606997767073429426473556381346782041935258756076080393301619207
86881339838376698488179501495041468073172341988720089795470136098406933385631801
04663977858372036622331349479429248835714923740906485973830330614644113165037267
04467575232778670268119781819261240255916763500762689311430778036444793507011823
46227975250532454404979369475867482097552907128786247515412192890040391525231883
28285553272314270062717165215805886033358103342764009513270538892648131101655825
42629591854998818626537929633865062895712147362582809915074770090460959541675465
68885535418530034202139509619663044497114585328106805531856774296040113987499425
68607997676172438426573547291247682051934349746166081393210718216868913389293667
88489179410594050468173163251889620099794561126188407933294730810046739769493621
26623331258578438248935705833641806495972921320704645113074136276044775743237687
60269119690918270240355907673401662699310521768126445793416110832462379743415225
44405979278574876482197543817029686257514503182980041391434330892282955523633043
60063717074314814886133349013243664019512361528982649131010754834426395909459889
08627537838732874062995703057263482819914165760180461959450774474688955345095201
24203139418718672044597105495229006815530947764386041113896598434686179967671625
28427573456390256682151925259647066091392301708306869913298392676884991785015841
40469173072350898620199785471027088417932385720900047739678592630266333303495685
28249935614932650806595963831221604655112165126366045775652336696602791187819083
60241355816772410662799301431669026455792507100922463379652514234444159783695649
66483197452916038686357505413083880051390525320982283955432732052600737161653049
04887133258112252664119503271429882659130101744924427395818558898086375369297229
64063995612156272482919905075661080471958541764564689955254194210242131385097087
62045597014594238006915521857665286051112987588524687179876770634284375725473803
46683151834358656066191383211609206879912389382766885991694114850404791721633409
88621199694570036088517923295621800057738769582720267333212594694282599347059227
40807595872930230604755103075027266055774743326786603791096918092602513549077625
00663799210530678026555783417001822473378743504324445159692794658664931965439061
28687357414512092880151381435221882293954523722142601737070752058048971323491023
42665119412370438882759121011645824437394909548988087375278396238640739947031463
62483919814174670080571949451665464699954345184300243131294196096620555961055843
28007915430956674286151103897489424697178967760724285375634572812466931509253487
46067191292310618206979903299283666895990785104940405791630732418886311987855601
26089517832394630800157729679483620277332303584784283599256158236408175949639203
20605755012174036266155765653227686613790187908182603513458176634006737983015207
68027555692516010822573369653405224455158783784748665931874538070286973565055021
82881151290534230882393945433623042611736161742148049971232590032426751185033605
28883759030110654824537385819449888097374369386328641739856130472624939189051647
60081571858550674464799945255085200253130385186186621555870154852280179145219467
64287151012996498424797169877661624295374725562902467931418352496460771903833007
08207979812398292666995981695005840415790721722508887311896954610260995169233847
20801157638778492620377323213485684293598347148326409175858738212206157541031641
26267155674752236686713781097809082613512549166724007737892114216680375547835061
00823573278752414224555149693685648675930965528160287973474154030828911503815243
20883393854532632042711727071643048059970323580122427751094132614288937581211007
44825537294918458888197365279287228651738947120562625939098150656600915709495407
64465799854354094200353121295087086631554961144942281179054318476642971501039865
88425797078976670624395365635463802477930509342586461771812932016082179789033883
82667995890794014840515781631623408897310987944700261995078332856208111567297685
82621377232312494684393589257049226419174949728302207157450130650262771547657423
26687713690196818082713503459067624017736983104306681375456934070008335723697425
04225555058792694648775921875429060297972565144120829911412914252208933929455227
22043711636170652048159961233481022437750185122704289937490310016448355363859085
48889197274378296228751729857021462635938189140746601915618594416644757989453441
84201353030394096086731545871045842291178145308566643971410138874884357961699667
60625395274734472802577921419243486471770903922106083179698132892826779949817841
04841515690730632408997301897845600271994169322946209111476396694826313763233025
84685393498356058226519165859629202217156541120740263771456756432266977127811869
08083713412558076624117727893005206691374547924160009335632796434042355541497827
84649775830974438060397963475045020839910503904342209933838554236220537107271607
42049159870332490022537741095023604299936581300106449355272958094488991963653683
86229751638956030462735929099041646611914709584506645757898552450842113521213841
86087731454970054842391169055209466653970501128964885357870798676606353943657245
62803577830518252486571761813823006093178789122982827779858916850048515147817207
22409997210996854600371985079223846219110567386784827313672332034846953925893461
48227519074958638202317147451021640273770547746522267977036910878080937125035481
66625117636992014206791365457825060019334723786524043355450596836846597749219645
28061397872574054020939901413805242219932929544326221537016370616420591589613225
80023537650194032604399927491201006459354363948184489991872752692862397507299461
20463735838198050646711905619485406655756989542540843113430312850860977305459601
44843391078154218466753961411029864895356961788766607353852756254628135769215083
42487571670912832006193169699023882837778949906940049515056916216224199963019869
44601371894178232846319101477287684837312763322124847953834992470482375181659487
28203317056550030640373761457647422277976127900968081937034134490666351167279821
04207791274556834060119325633687424053354541586926847597658318654280713969635641
44021939810512814242319923839445226231536107360706421591498712234800335367411841
22605399836590210006559345273849084499990963742782863397416398470204737349291881
40647711814718494406755747899443440853112521302940861977214558610448533901691443
08467753870510038864995347871689666617352943746344629135678314092424975707619029
22007193078798032882937769859807840059514147906306225199872118878446113709851683
22847319010576296684937303673223024857952925982560483375090758496282133161475401
20641373670556656422377967037801868091936125124580667351076378830042177903655469
24061119234732696424153345451487826857596749308744281713878734650440319389015029
04243319832938454226331527017261606431590589702324801335276510850226153989275803
000

In conclusion, it turned out that there is quite a lot more than one way optimal way to guess the combination (as each finite field has multiple primitive polynomials and each polynomial yields an unique M-sequence). Still, you won't hack into a beer store anytime soon with this, as any practical implementation surely locks you out after some number of tries or adds an delay.

Posted by Tomaž | Categories: Ideas | Comments »

Entering PIN without confirmation

16.06.2009 19:52

A brand of electronic locks marketed by a certain security company in Slovenia has a peculiar way of recognizing the correct code.

To unlock it, you need to enter a four digit PIN. However, instead of the usual way where you have to press a confirm key after entering four digits this one unlocks as soon as you enter the correct sequence.

So basically, if the correct code is 1-2-3-4, it will unlock after pressing 9-8-1-2-3-4, or whatever sequence of digits comes before the 1-2-3-4.

It's certain that such a design reduces the time needed to guess the right combination. In theory you can check a new combination for every keypress where a normal lock would require four plus one for confirmation. For example, entering 9-8-1-2-3-4 checks 9-8-1-2, 8-1-2-3 and 1-2-3-4 with 6 presses while a normal lock would require 15 presses).

I'm wondering. What is the optimum strategy for guessing the combination? Is the theoretical one combination per key possible? Or is there necessarily some overlap between sequences entered in this way?

In the general case of n digits and m places I'm picturing this as a directed graph with nm vertices, one for each possible combination, where each vertex has n outgoing edges (corresponding to n possible keys you can press next). So the problem translates to finding a Hamiltonian path in such a graph (which is a NP-complete problem in the general case).

Hamiltonian path for n=5 m=2

Path for n=5 m=2

Hamiltonian path for n=2 m=3

Path for n=2 m=3

I have been able to find nicely symmetrical paths for simple case of m = 2. At least from those examples it seems that you can construct the path incrementally, by first exhausting all combinations with n digits before moving to n + 1

It appears possible that an analogue way exists for more places, but I'm having problems drawing three and four-dimensional grids on paper.

Posted by Tomaž | Categories: Ideas | Comments »

Wireless heisenbug

14.06.2009 13:18

It seems even hardware is not immune to heisenbugs.

A week ago my wireless access point in Logatec (an old version of SMC Barricade G) started behaving weirdly. A network scan showed the SSID broadcast, but association was not possible. I tried several different devices (among those my Eee 901 with Atheros card and the work laptop with an Intel IWL), but none was able to connect. iwconfig just showed not associated and an ever increasing Rx invalid nwid counter.

Interestingly, kismet found the network and showed constant traffic on it. It also warned of broadcast disassociate requests which it seemed to indicate a denial of service attack on the network. But I just couldn't believe that someone would keep such an attack going for that long in that part of the country.

The problem fixed itself after a couple of days. But since it started working just after I moved the access point around, I thought that maybe there's a bad connection somewhere. So I took it apart.

SMC Barricade g wireless router

The only two things that caught my attention were a loosened nut on the left antenna connector and plenty of dust on the RF part of the circuit.

I tightened the connector and vacuumed the dust and the access point has been working flawlessly since then.

I'm not sure I actually did anything. It's conceivable that the loosened nut did something to the grounding of the circuit or that there was something nasty in that dust that shorted a trace or changed its impedance enough, but I find that hard to believe.

SMC Barricade g, RF front-end

Here's a close-up of the RF front-end of the transceiver (minus the dust). The chip in the middle is the receive/transmit and diversity switch.

The microstrip line carries microwave frequencies, so the correct characteristic impedance is very important. There's no solder resist over he line to prevent it from affecting its characteristics and the upper and lower ground planes are well connected with a lot of vias.

Posted by Tomaž | Categories: Digital | Comments »

On proper use of units

12.06.2009 21:12

Proper use of units is another one of my pet peeves. I usually can't keep my mouth shut when I see someone throwing around numbers without clearly defining what unit of which quantity they represent.

A while ago I stumbled upon the Electronics Engineering videocast, and unfortunately the very first episode I watched left a very bad impression in this regard. While the show was informative, I just couldn't forgive the presenter the way he did his calculations live on a piece of paper.

It was a bit of a shock to see an engineer have amperes squared on one side of the equals sign and watts on the other, or the result presented in watts per second. Of course I sent a comment and the answer I got back was that we're not in school and this is how real-life engineering looks like.

It's engineering, Jim. But not as I know it.

I find that being strict with notation is most helpful especially in quick back-of-the-envelope calculations. When you're skipping two steps at a time in solving some equation it's easy to make a mistake. And if you're only working with dimensionless numbers, it's nearly impossible to spot the error. Well, if you're lucky and you've made a big one you have a chance that your gut feeling will tell you your result is off by a couple of orders of magnitude.

However, if you keep units attached to all the values you write down all the way through to the final solution, you have a number of ways to easily spot mishaps early on. A sum of values of a different quantity (e.g. you've come to a point where you would have to add 3 volts to 1 ampere) is a reliable indicator that you should recheck your calculation. At least in my experience when I'm expanding polynomials in my mind I often miss a factor somewhere and conflicting units in a sum make the error obvious.

Another useful rule is that the argument of exponent or trigonometric functions may only be a pure number. That's of great help when you can't exactly recall an equation, but know the general form.

Once you get the result you also have an additional means of boosting your confidence in it. If you want to calculate the amount of work required and you arrive at watts per second that should start ringing some pretty big bells.

I agree that there are situations where a system of measurement is agreed-upon and well defined and the field of electric engineering is full of them. Just think how many circuit diagrams say 10 k instead of 10 kΩ. But there such notation is unambiguous because it's accompanied with a symbol for a resistor and giving resistance in ohms is a de-facto standard.

On the other hand if you're writing such a document for long-term use, you're (hopefully) doing that with much more care than some napkin calculation at the last minute.

Anyway, being strict with your calculations is certainly most useful outside of the classroom. And in fact, my advice would be not to believe anyone that says that a particular skill is only useful in school.

Posted by Tomaž | Categories: Life | Comments »

A cubic inch of Ethernet

10.06.2009 16:28

Back when I was a student I designed and built an UTP cable tester. It's a battery operated hand-held device that uses finite state machine (more exactly a Moore automaton implemented with ROM and some logic - no microcontrollers with unreliable software here) to control some simple analogue circuits that check for proper connections and polarity of pairs in a standard Ethernet cable.

It was designed from the start to have two separate parts that need to be connected on the opposite ends of the cable. One part plays an active role and has all the logic and the diagnostic lights, while the other is a simple passive terminator with a diode circuit.

At the start I implemented both in a single case for simplicity, but that meant that you had to be able to bring both ends of the cable into one spot. Since I'm planning to lay some cables in my new apartment in Ljubljana I went on and made a second, separate terminator so I will be able to test cables once they are already fixed on the walls.

UTP cable terminator, before closing the box

I didn't bother to make a circuit board. It's going to be sealed shut and filled with hot resin, so nobody will be able to see the rat's nest anyway.

UTP cable terminator, finished box

On the second though it would probably be better if I made a metal box that would provide some shielding. But I had this piece of plywood at hand and no conductive paint. It works this way just as well and it's not something that will be in continuous operation anyway.

UTP cable terminator, painted black

Finally I gave it a coat of black paint to match the metal box of the tester.

Posted by Tomaž | Categories: Analog | Comments »

Powerball not a ball

08.06.2009 20:53
Power cylinder with a spherical cap

I guess Power cylinder with a spherical cap just doesn't have the same ring to it.

Posted by Tomaž | Comments »

Open-plan offices and rocket science

03.06.2009 17:21

There's an article on Wired about SpaceX. The text is a bit light on details, but there are plenty of photos that are worth a look.

SpaceX is a startup company that developed the first privately-funded launcher capable of reaching orbit (they had their first successful launch last September)

While the Falcon production line looks like something I would expect in a shop like that, there's one photo on the first page that really surprised me. They seem to use an open-plan type of an office. That's just incredible. These are not telemarketers or some people typing in PHP from 9 to 5, but engineers doing (I hope) some serious thinking.

I would love to see their company policy on Blackberry pings and beeps and general distraction-making in the big room (you can see several people chatting on the photo).

Posted by Tomaž | Categories: Life | Comments »