Thermal imager gradient fix

One of the thermal imagers I have been con­sid­er­ing using is the Seek Thermal cam­era. An impress­ive cam­era, cur­rently only avail­able in the US, they use a Ray­theon sensor to cre­ate a small USB cam­era designed to be used with a mobile phone. Most import­antly for me it sup­ports a wide range of tem­per­at­ure, an inten­tional lim­it­a­tion with the FLIR cores.

Sadly the cam­era has some issues. All thermal sensors require post-processing to clean up the image and work around qual­ity issues with the image, it is a bit more com­plex than a stand­ard CCD. The Seek cam­era does some basic pro­cessing in the device but most of the image manip­u­la­tion required to get the cam­era work­ing is per­formed in the Android applic­a­tion. Seek has been prom­ising an SDK since the product was first announced, pre­sum­ably this will allow other cli­ents to be used, but no SDK has been forthcoming.

I have been spend­ing a fair bit of time try­ing to under­stand how to use their fact­ory cal­ib­ra­tion val­ues and get a good tem­per­at­ure read­ing out of the device, so far unsuccessfully.

As a side effort I spent a bit of time work­ing on another prob­lem with the device, with more success.

When first released the cam­era had an erro­neous thermal gradi­ent at the edges and par­tic­u­larly the corners. This was par­tic­u­larly obvi­ous if you poin­ted the cam­era at a thermally flat sur­face, such as a wall, the auto­scal­ing would high­light the error as the only vari­ation in the image. Vari­ous people repor­ted that adjust­ing the lens holder helped and that the prob­lem var­ied with time. I believe that the issue is a com­bin­a­tion of the lens holder being imper­fectly aligned and so its tem­per­at­ure influ­ences the sensor, the lens holder is heated by the cir­cuitry around it and so gets worse with time.

Early this year Seek cor­rec­ted the prob­lem with a soft­ware update. Look­ing at ver­sion num­bers of each com­pon­ent it was clear that the fix was purely post-processing per­formed by the Android applic­a­tion. They have never respon­ded to ques­tions on how this was achieved.

I have man­aged to fig­ure out their tech­nique and have doc­u­mented it in an Octave/Matlab func­tion which repro­duces the pro­cess used. Hope­fully this will allow people mak­ing inde­pend­ent cli­ents to apply sim­ilar cor­rec­tions and allow the cam­era to be used with non-phone devices.

I dis­cuss details of the tech­nique on the eevb­log forum where most of the Seek dis­sec­tion has taken place. The script is also rel­at­ively simple and com­men­ted for any­one with Mat­lab experience.

Some before and after pho­tos of the pro­cessing. A thermally flat image and some ugly face.


Before — Floor

After — Floor


Before — Face

After — Face

It is inter­est­ing to see that the cor­rec­tions to the face go far fur­ther than I ini­tially expec­ted.
The fixup in the bot­tom right corner is obvi­ous, the gradi­ent gets changed to a flat back­ground.
How­ever the fixes around the bot­tom of my face were start­ling, my neck gets cor­rec­ted to a much bet­ter tem­per­at­ure, the beard cools down and the jumper col­lar cools right off. I think all these revised details are more accurate.

Source code, includ­ing the raw data of my face and usage instruc­tions, is on github.

Door design

Design­ing a door

Design­ing the door to the microwave is turn­ing out to be a bit more fiddly than I hoped. This is a com­bin­a­tion of mech­an­ic­als being new to me and reg­u­lat­ory con­cerns about keep­ing the dan­ger­ous radi­ation in the box.

The cri­teria isn’t too com­plex, dis­cov­er­ing that non-Australian stand­ards are a touch more expans­ive was an unpleas­ant sur­prise though:

  1. Must open to allow foods in and out.
  2. Must com­ply with Aus, US & EU standards.
    • Must provide RF seal when shut (no cook­ing bystanders).
    • Must have double inter­lock to pre­vent oper­a­tion when open.
    • Must be dur­able and main­tain seal through lifespan.
  3. Must indic­ate when sealed to allow operation.
  4. Must provide mech­an­ism to open/lock.
  5. Should allow view­ing of food.

Stand­ards

I was a bit annoyed to dis­cover the US FDA stand­ard Part 1030 in work­ing through the door design. The Aus­tralian microwave stand­ards simply spe­cify a max­imum allowed external radi­ation level. The US stand­ards cover the radi­ation level, door inter­locks and also man­date the pres­ence of a user manual, ser­vice manual and a pair of warn­ing stick­ers. The EU stand­ards fur­ther pro­scribe dur­ab­il­ity tests.

Accord­ing to a com­pletely reput­able source I actu­ally only have to com­ply with the Aus­tralian reg­u­la­tions, if I ship a product to the US then the per­son buy­ing it is con­sidered the importer and are respons­ible for the local com­pli­ance. This is a touch dodgy, even for me. My plan is to com­ply and cer­tify with the rel­ev­ant Aus­tralian, US and EU (IEC) stand­ards for a domestic microwave. As most coun­tries have form­ally har­mon­ized with the IEC stand­ard or based their stand­ard off the US or Europe stand­ards I should actu­ally com­ply with basic­ally every­one world­wide. I am not going to pay for hun­dreds of cer­ti­fic­a­tion marks and the doc­u­ment­a­tion required to make it formal though.

Radi­ation leakage

All the stand­ards spe­cify lim­its on radi­ation leak­age. Dur­ing oper­a­tion a radi­ation detector is moved around 5cm from the unit and the level must not exceed 1mW/cm². The areas of con­cern are any holes in the cav­ity like air holes or the front view­ing panel, any seams to ensure they are wel­ded cor­rectly and my biggest con­cern is the edge around the sides of the door.

Delib­er­ate holes are the easi­est issue to handle. Radi­ation has a wavelength, for a microwave oven this is roughly 120mm. You can do com­plex maths around radi­ation holes by treat­ing them as wave­guides but it basic­ally boils down to a 120mm wave needs a 120mm hole. As the hole gets smal­ler than 120mm you get an expo­nen­tial drop in the radi­ation slip­ping through. Often a hole less than 1/4 or 1/10th of the wavelength is approx­im­ated as hav­ing zero trans­mis­sion. My Panasonic microwave has holes of 1mm at the front, 2mm on the top and 3mm on the side, all less than 1/40th of the wavelength. I think the small holes are pre­ferred by the man­u­fac­tur­ers for their strength rather than due to radi­ation concerns.

The microwave radi­ation cav­ity is going to be made of sev­eral sheets of metal wel­ded together. As radi­ation can slip out a nar­row slit just as hap­pily as a gap­ing hole care has to be taken at the joins to pre­vent this. My vic­tim microwaves both put a dent in just before the join to block the radi­ation from reach­ing the slit. The spot welds they used also seem to involve indent­a­tion which would assist in break­ing up any slit, the welds are spaced every 22mm. Dents like that are a bit harder with my man­u­fac­tur­ing tech­niques but are pos­sible, I think this one can be solved in con­sulta­tion with the man­u­fac­turer and a little bit of testing.

Metal plate with a long dent parallel to the edge and a series of weld dents closer to the edge

Panasonic’s RF safe weld­ing join

The most con­cern­ing issue is the edges of the door. These are nice big slits, just per­fect for radi­ation to spew out of. Look­ing at the Sam­sung microwave I think the way this is gen­er­ally solved is very sneaky and clever. They haven’t fol­lowed the obvi­ous solu­tion of try­ing to cre­ate a tight seal, with the Sam­sung microwave door shut I can see light from a torch shin­ing through, a piece of paper moves without res­ist­ance. How­ever if you look closely the alu­minium outer frame of the microwave over­laps the door by a few mm. I’ve checked and found this in three microwaves, all dif­fer­ent brands. I think what is hap­pen­ing is that the alu­minium lip catches the radi­ation that slips out and lim­its the amount that gets through. The lip isn’t present on the bot­tom, so I think they have been dif­fer­ently sneaky there. For the test­ing of the device it would be reas­on­able to assume it would be placed a hori­zontal sur­face, the manual prob­ably spe­cifies this as the stand­ard oper­at­ing con­di­tion. This pos­i­tion would pre­vent the detec­tion device being placed 5cm below the microwave door, com­pli­ance achieved, prob­lem solved.

Door Inter­locks

An inter­lock is a switch which pre­vents oper­a­tion of a device when it is open. For example robots often have a prox­im­ity sensor or gate, get too close and the robot imme­di­ately shuts down. A com­mon example of this is the auto­mated air­port bag drop sys­tems, if you are too close to your bag the con­veyor will shut down. Given that a microwave is a touch dan­ger­ous it is only sens­ible that we employ an inter­lock to pre­vent oper­a­tion when the door is open. How­ever US stand­ards require that we take this a fair bit further.

The US Fed­eral Reg­u­la­tions are very spe­cific about what safety inter­lock must be employed and that spe­cial pro­vi­sion must be taken to pre­vent them from being dis­abled. Being able to dis­able an inter­lock is often a desired fea­ture, the think­ing is that if you want to delib­er­ately bypass the safeties then you have chosen to accept the risk and know what you are doing. I assume some­body in the US dis­abled the inter­lock on their microwave and got fried, per­son­ally I feel they achieved their desired out­come but the reg­u­lator obvi­ously felt differently.

The reg­u­la­tions aren’t easy to read, it comes down to this example cir­cuit. Mod­ern microwaves have tweaked it slightly but all fol­low roughly this pat­tern. You have three switches, your primary inter­lock which shuts off power to the sys­tem, your sec­ond­ary or mon­itor inter­lock which shorts the unpowered sys­tem and a sense switch for the con­trol logic. The com­bin­a­tion of these two inter­locks means that if either one of them fails or is dis­abled then the short cir­cuit causes the fuse to blow, as these are small mech­an­ical com­pon­ents this is a com­mon microwave fail­ure point.

There are addi­tional restric­tions how­ever, the primary inter­lock must be designed such that it can­not be delib­er­ately dis­abled. Spe­cific­ally a mech­an­ical inter­lock must be con­cealed such that it can’t be poked by any body part or straight object, a mag­netic inter­lock can’t be tripped by stick­ing a mag­net against the body of the microwave. Also the primary and mon­itor inter­locks must be mech­an­ic­ally and elec­tric­ally dis­tinct. The ubi­quit­ous double hook design that every microwave uses makes far more sense with this under­stand­ing. A hook is required to meet the con­cealed require­ment and two hooks are required to keep things distinct.

There are oppor­tun­it­ies to vary the double hook pat­tern how­ever. A single hook could be used for the primary inter­lock with an altern­at­ive method used for the other switches. A flex­ible stick would also meet the cri­teria if it was guided into a bend. My pref­er­ence though is for a non-mechanical switch, some­thing more eleg­ant to con­trast against the clunky nature of a door. For­tu­nately there are lots of options. I am lean­ing towards a mag­net des­pite the restric­tions imposed by the stand­ard, I think with a non-magnetic chassis I should be ok as it won’t self-support and there are other ways to skin the cat such as coded mag­nets.

Dur­ab­il­ity

The European/International stand­ard is IEC 60335−2−25 ed6.1. I can’t actu­ally find a copy of the doc­u­ment so I might have to buy it. How­ever from the pub­lic doc­u­ment­a­tion you can see that it con­tains the restric­tions in the US reg­u­la­tions, with some slight vari­ation, and some addi­tional dur­ab­il­ity tests. I have found a brief writeup of the dur­ab­il­ity tests and the news isn’t good. I don’t think passing the tests will be dif­fi­cult, just need decent hinges. How­ever get­ting the test house to open and shut the door 100,000 times is going to be expens­ive. Assum­ing one second to open the door and one second to close it, that is 56 hours of con­tinu­ous test­ing using their 6-DOF robot. The other tests will take another day, this has prob­ably just doubled my test­ing expenses. I’ll build a basic push/pull robot for my pretest­ing which could be fun.

Options

Under­stand­ing the cri­teria I now have to design a door.
There are sev­eral obvi­ous options, each with their own drawbacks.

I can design a clone of the stand­ard door and make my own. Start­ing with this one to get it out of the way. The cost of doing this makes it a non-starter. I spoke to the very help­ful staff at SK Plastic to under­stand the costs around injec­tion mold­ing. To build the latch for a microwave door would prob­ably cost roughly $10k-15k for the tool, $1 per part and some other costs for the design and run start etc. At my pri­cing quant­ity of 500 units the latch alone would come to roughly $26. The cost of the other lar­ger plastic parts would be higher and the metal screen would either have to be stamped (at least another $10k tool­ing) or every hold punched indi­vidu­ally (sev­eral dol­lars per sheet).

I can buy a door. All the doors are the same, so there is obvi­ously a few com­pan­ies mak­ing these doors. A logical option would be to buy an exist­ing door, either whole or in parts. For example Alibaba has man­u­fac­tur­ers offer­ing the door latch, I haven’t enquired as to the price but expect it would be well under $1 per unit. Going half way down this path is dif­fi­cult, the stand­ard latch means I have to use the match­ing catches and microswitches with the related dur­ab­il­ity issues. The latch also dic­tates the thick­ness of the door, which pushes again towards plastics as metal would be very heavy. Buy­ing exist­ing outer plastics would res­ult in the microwave hav­ing the same appear­ance as every other microwave, prob­ably look­ing like the cheap end of the spec­trum as that is what is avail­able. Vacuum formed plastic is prob­ably within my price envel­ope as the setup costs aren’t too bad, I am wary about a heat sens­it­ive plastic in a microwave but appar­ently PET and HDPE can work.

I can design some­thing new. The big risk here is fall­ing prey to not-invented-here syn­drome and a belief that I my design skills are super­ior to all the major man­u­fac­tur­ers com­bined. How­ever this entire exer­cise is essen­tially pre­dic­ated on that case so I’ll just move on. Doing this will allow me to dif­fer­en­ti­ate the product in a way that is obvi­ous to any­one inter­act­ing with it. It will add time and cost to put it all together.

Going for­ward my plan A is going to be to design from scratch, plan B is to buy in com­pon­ents. Get­ting half way through a scratch design and then buy­ing in parts where required would prob­ably be a reas­on­able com­prom­ise out­come so blun­der­ing for­ward on my own isn’t a total loss.

Draft design

The mod­ern microwave is almost entirely injec­tion mol­ded plastic and stamped steel, both tech­niques require mass pro­duc­tion I can’t rely on. My man­u­fac­tur­ing is primar­ily ori­ent­ated around bend­ing sheet metal and for the door, glass.

The pre­lim­in­ary design is for a metal and glass sand­wich, in my head it is rather eleg­ant. The lay­ers to the sand­wich are a metal inner frame, glass plate, metal RF mesh, glass plate, metal outer frame, some trim. Each glass sheet is 2mm thick, the metal 1mm thick and the RF shield 1mm, so the total thick­ness is just 7mm com­pared to my Samsung’s 30mm. Being thin won’t just look awe­some, it also helps keep my weight down.

As bonus fea­tures I should also be able to get the door to open almost 180 degrees and be able to sup­port left handed doors.

I have envis­aged that the sand­wich will be assembled and then the two metal sheets spot wel­ded to seal the glass in. Then a trim piece of metal glued on to cover the spot welds and pretty it up.

I am yet to settle on the hinges, latch or inter­lock mech­an­isms. At the moment I am think­ing of them as accessor­ising for the door. Real­ist­ic­ally some trial and error is going to be required for all three of these areas.

Pencil sketch of the lower right corner of each layer showing their assembly and relative size.

Pen­cil sketch of door sandwich

RF Shield

Every microwave I have seen has a solid metal sheet in the front win­dow with cir­cu­lar holes stamped in it. The two microwaves I have meas­ured both have holes roughly 1mm in size. As dis­cussed earlier this is 1/120th of the wavelength and excess­ively cau­tious, internal air vent holes are 3mm for example. The pat­tern is a tradeoff between min­im­ising the metal between the holes, struc­tural strength and ease of clean­ing. I think with my door struc­ture the tradeoff isn’t required so I can bet­ter optim­ise the visibility.

A typ­ical guideline for RF shield­ing is 1/4 of the wavelength allow­ing holes up to 3cm. Because it is easier to buy I am going to use a square hole, radi­ation is sneaky and can sneak out on the diag­onal so to main­tain 1/4 wavelength the square hole must be smal­ler than 21x21mm.

A wire mesh at 20x20mm is a fairly cheap option and at roughly 75% open area provides bet­ter vis­ib­il­ity than the exist­ing microwaves. The RF per­form­ance will be worse than the exist­ing stand­ard due to the increased hole size and decreased thick­ness how­ever I think it should be within spec, test­ing will con­firm this before the design is finalised.

Poten­tial suppliers:

If I had suf­fi­cient quant­ity what I really want to do is have a piece of glass man­u­fac­tured with the metal screen built into the glass. This would sig­ni­fic­antly reduce com­plex­ity by remov­ing the lay­ers and the glass would pro­tect the screen from dam­age. How­ever doing this would require a spe­cial man­u­fac­tur­ing rig with asso­ci­ated costs that can only be recovered with large quantities.

Latch

Once closed the door has to stay closed until it is delib­er­ately opened. I have a strong pref­er­ence for a latch that releases by being pulled on, the push but­ton to open design feels clumsy to me. Again we have options :)

A hook latch is stand­ard in microwaves. The hook is on the door and hooks into a static hole on the body of the microwave. A spring on the hook keeps it closed until delib­rately opened. A slope on the back of the hook allows it to be shut while closed, the hook slides up the latch until it is over then pulls shut. There are two com­mon open­ing mech­an­isms, the stand­ard push but­ton works by phys­ic­ally push­ing against the hook to raise and released it. The doors you can simply pull open have an oval shaped hook, basic­ally a slope on the inside of the hook allows it to be pulled out much like it is pushed in.

Grav­ity is an inter­est­ing option. By mak­ing the door on an angle I can have it nat­ur­ally sit in the closed pos­i­tion but little force would be required to open it again. This would be cheap but have the down­sides of not look­ing sturdy and not work­ing if the microwave wasn’t flat. Pair­ing this with a top open­ing door might work.

Spring loaded hinge is an easy solu­tion. Put­ting springs into hinge mech­an­isms is fairly com­mon prac­tice for auto-closing doors, gates or cup­boards. The spring hinge can be fit­ted without much addi­tional work and allows easy oper­a­tion. I don’t know if an auto­clos­ing door is an advant­age or disadvantage.

Mag­nets are awe­some. Mag­nets are also a pos­sible door latch mech­an­ism, the com­mon stain­less steel isn’t mag­netic so I would do this by put­ting a mag­net in both the door and body of the microwave. The mag­net would help close the door if it was almost closed and keep it closed until tugged open. Best of all I should be able to hide them so it just hap­pens magically.

Closed detec­tion

Both my vic­tim microwaves have three microswitches that get hit by the latch when the door is closed. Two of these are used to imple­ment the stand­ards required inter­lock sys­tem, the third is a low voltage sig­nal to the con­trol circuitry.

The stand­ards require that there be at least two inde­pend­ent detec­tion devices, one of which must be tamper resistant.

Again, there are mul­tiple options.

A hook latch paired with microswitches like every other microwave. Rather bor­ing though.

Dir­ectly push­ing a microswitch stuck on the sur­face, prob­ably hid­ing under a plastic film for clean­ing. This is simple, noth­ing is required on the door and con­tact is meas­ure dir­ectly. It doesn’t meet the tamper res­ist­ant require­ments but is suit­able for a sec­ond­ary switch.

Mag­netic prox­im­ity detec­tion works by mount­ing a per­man­ent mag­net on the door and then look­ing for it. For this to be tamper res­ist­ant it can’t be triggered by pla­cing a mag­net on the microwave, I think this is free because a stain­less steel body shouldn’t be mag­netic. This couples nicely with a mag­netic clos­ing mechanism.

Light gate detec­tion much like a shop uses a light beam and mir­ror I can do the same. Requir­ing a mir­ror to be moun­ted on the door ful­fills the primary switch require­ments. I can prob­ably use pol­ished steel which would be reflect­ive enough to achieve this and with a tiny hole on the body it would be suf­fi­ciently magic to be awe­some. The down­side is that any food or grime that block the mir­ror would pre­vent the switch from clos­ing. And being fairly magic like it wouldn’t be obvi­ous which bit of grime was the problem.

A rota­tion sensor posi­tioned in the hinge would also work. This would com­plic­ate the hinge area a bit but would meet all the require­ments for the primary switch. One could be placed on the top and bot­tom to get two inde­pend­ent con­trols. This would require a micro­chip for each sensor (ATTiny — yay!) to read the value and con­trol a high voltage relay but we are still in the few dol­lars price range.

Fifteen Twenty

I am pub­lish­ing my first Word­Press theme, Fif­teen Twenty. Born out of frus­tra­tion at the Word­Press theme struc­ture when attempt­ing to update the theme of this blog it demon­strates an altern­at­ive. This theme is designed as a tech­nical demon­stra­tion of struc­tur­ing a Word­Press theme with a single core lay­out file. As this is an inver­sion of the stand­ard struc­ture of the default theme Twenty Fif­teen I have dubbed it Fif­teen Twenty. The appear­ance, styl­ing and gen­er­ated html is the same as the original.

Word­Press is an open source blog­ging plat­form, it is the most pop­u­lar blog­ging plat­form with over 60 mil­lion web­sites using it. To enable all of these web­sites Word­Press has a theme sys­tem which allows the user to rad­ic­ally change the appear­ance of their blog with just a few clicks. Most of these themes are con­trib­uted by users but the Word­Press team does release a theme every year, this is the default theme and acts as a best prac­tices tem­plate for theme design­ers. The default themes are named after the year, the cur­rent one is Twenty Fifteen.

Word­Press themes con­sist of a col­lec­tion of php tem­plate files. Word­Press chooses a tem­plate based on the type of con­tent being reques­ted, this allows a dif­fer­ent tem­plate to be used for search res­ults or an audio attach­ment. The decision is made using the tem­plate hier­archy depic­ted below. Word­Press pro­ceeds from left to right until it finds a file which matches the desired pat­tern, on the far right index.php acts as a catch all for any file types not spe­cially handled.

The advant­age of this struc­ture is that it allows for a huge degree of flex­ib­il­ity in the styl­ing. Any con­tent can have a com­plete dif­fer­ent set of styl­ing provided to it and the hier­archy allows for very spe­cific spe­ci­al­ity pages to be created.

The dis­ad­vant­age is that every tem­plate requires a duplic­a­tion of the site struc­ture. Changes such as reorder­ing the HTML struc­ture require the rework­ing of every single tem­plate file, this was exactly the prob­lem I faced when work­ing on this blog’s tem­plate Piano Black.

In prac­tice I feel the theme hier­archy struc­ture is a poor design choice as you want to retain the same look a feel across the entire site. This means that the lay­out is con­sist­ent and the vari­ations are typ­ic­ally isol­ated to the cent­ral con­tent pane. Theme authors attempt to reduce the amount of duplic­a­tion by using a header and footer file which is pulled into each tem­plate, this helps to reduce work for minor changes but makes struc­tural alter­a­tions even harder.

The altern­at­ive tech­nique is to have a single tem­plate file which sets the struc­ture of the web­site. This file then pulls in par­tial tem­plates based on the con­tent being reques­ted. The par­tial tem­plates provide a reduced level of flex­ib­il­ity com­pared to the full tem­plate model but are sim­pler as they do not need to include as much of the site’s struc­ture. The Twenty Fif­teen theme actu­ally uses both full and par­tial tem­plates, the par­tial tem­plates are used within the full tem­plates to cus­tom­ise dif­fer­ent cat­egor­ies of posts.

I do not mean this as an attack or cri­ti­cism of the Word­Press team, the choice was a trade off and they chose the more flex­ible approach lead­ing to a product far more suc­cess­ful than any I have ever pro­duced. This choice was also made for the ini­tial release in 2003, a dif­fer­ent online envir­on­ment with altern­at­ive aes­thetic (MySpace) and less use of javas­cript. They have made a fant­astic product and the flex­ib­il­ity built through it allows for novel uses, like mine.

By remov­ing all the cus­tom tem­plate files Word­Press will always use index.php as a tem­plate. As the tem­plate is a full php file it can exam­ine the reques­ted con­tent type and pull in the required par­tial tem­plate. This tech­nique uses the Word­Press par­tial include func­tion which enables sub-themes to cus­tom­ise spe­cific partials.

To demon­strate this lay­out tech­nique I chose to rework the Twenty Fif­teen theme as it is designed as a basis for theme authors to work from, which is also my goal. I took each of the tem­plate files and pushed the com­mon ele­ments up to index.php con­vert­ing them into a par­tial. The files designed to reduce duplic­a­tion such as header.php, footer.php and sidebar.php were also pushed into index.php. I then set up a demo site using the wptest​.io test data and used wget –mir­ror, HTML tidy, a tiny bit of sed and diff to beat the last bugs out and ensure that the final res­ult was unchanged from the ini­tial Twenty Fif­teen design.

In the future I’ll be releas­ing my updated ver­sion of Piano Black, this blog’s theme, with mobile sup­port (respons­ive lay­out) and other mod­ern­ising updates under the hood. I may also make an Angu­larJS powered demon­stra­tion ver­sion of Fif­teen Twenty for fun.

Return top