TITLE OF PAPER: Two Impromptus, or How Python Helped Us Design Our Kitchen URL OF PRESENTATION: _URL_of_powerpoint_presentation_ PRESENTED BY: Andrew koenig REPRESENTING: _name_of_the_company_they_represent_ CONFERENCE: PyCON 2004 DATE: 20040324 LOCATION: _venue_and_room_in_venue_ -------------------------------------------------------------------------- REAL-TIME NOTES / ANNOTATIONS OF THE PAPER: {If you've contributed, add your name, e-mail & URL at the bottom} Kitchen remodel with flexible builder. Didn't change much, extended kitchen, changed counter, easy tile cleaning, no particular design in mind. Counter: was laminated plastic over particle board had to be simple to fab, no pointy bits, new one of synthstone how to improve shape? Shape: 'superellipse' from 09/65 sci am Curve: x^n + y^n = r^n n -> inf => square n = 2.5 => piet hein curve, 'nice' shape But, would that curve work? How to fab it? Problem: - gen shapes, display shapes, output paper template - get reliable implementation w/min investment/effort Solution: - pic->troff->dpost->ps-preview - dpost can enlarge/crop to page Why Py? - rapid dev cycle - 5s to build/viz results in c++ - Rapid prototyping is one of the core reasons for using python Program: - ~90 lines - 'intersting' code was counter symmetry to gen other side from first. - tuples in param lists useful Problem 2: - tiling behind stove - how not to use an extra box of $$ tile How to design tile: - use markers & graph paper traditionally - knew of tkinter, created a simple ui w/buttons with it - tile == button - clicking a tile sets it to current color - addl button changes cur color - button management apparently a pain. schelp of code to show how prob solved - created a closure for each button to be the callback for that button - since callback takes no args, this is how he kept knowledge of which button was clicked while writing only one callback func - output as screenshots Lessons learned: - surprisngly small problems solved with tools/programming - fast turnaround encourages experimentation (5s too long if interrupts you) - tkinter simple, easy to learn/use - higher-order fns useful for passing hidden info via callbacks Questions: q: any suboptimalities in this project/experience? a: would like better way of producing sheets (large page-spanning output) wants package to take large drawing and chop it up by-hand tcl/tk knowledge made tkinter easy q: num pieces in countertop? a: 2 pieces, glued together (pix might be useful here) when assembled, discovered sink holes to small, cut glue joint w/diamond saw counter got shorter q: anyone recognize shape? a: nope, but people like it, and fit more people q: any unit tests? a: hehe. trick question. observed @ breakfast that couldn't test, since acceptance criteria was aesthetics. q: cat skinning question (no cats harmed) q: why not use large plotter? how did you explain writing software to wife/contractor? a: no plotter avail, give ps to kinkos? no idea if work. a: wife a geek too, dug. contractor said they were 'interesting' clients. q: kitechen cab design software sux0rs. a: responses to this (koenig) project somewhere between impressed and bemused -------------------------------------------------------------------------- Quotes: -------------------------------------------------------------------------- REFERENCES: {as documents / sites are referenced add them below} paper: http://www.python.org/pycon/dc2004/papers/52/main.html pic: http://www.gsp.com/cgi-bin/man.cgi?section=1&topic=pic -------------------------------------------------------------------------- CONTRIBUTORS: {add your name, e-mail address and URL below} Bob Kuehne, rpk@blue-newt.com, http://www.blue-newt.com Russell Finn, rsf@sprucehill.com, http://www.sprucehill.com/rsf/blog [future] -------------------------------------------------------------------------- E-MAIL BOUNCEBACK: {add your e-mail address separated by commas } rpk@blue-newt.com -------------------------------------------------------------------------- NOTES ON / KEY TO THIS TEMPLATE: A headline (like a field in a database) will be CAPITALISED This differentiates from the text that follows A variable that you can change will be surrounded by _underscores_ Spaces in variables are also replaced with under_scores This allows people to select the whole variable with a simple double-click A tool-tip is lower case and surrounded by {curly brackets / parentheses} These supply helpful contextual information. -------------------------------------------------------------------------- Copyright shared between all the participants unless otherwise stated...