
If you would like a CD please send a stamped addressed envelope to : TACITUS PROJECT EDINBURGH COLLEGE OF ART 79 GRASSMARKET EDINBURGH , UK EH1 2HJ Past Events September 14th , 2004 ' Creative digital interaction ' symposium . September 13th , 15th , 2004 Demo days for designers to try haptic system September 8th-10th , 2004 Ann Marie Shillito presented a paper at the Challenging Crafts conference in Aberdeen . July 2004 Idea Storming with members of the design and art community about ways haptics and colocation can aid and benefit computer aided design . July 2004 The Tacitus project has been awarded funding from Scottish Enterprise 's Proof of Concept fund . June 2004 Mark Wright presented a Tacitus paer ' 3D Modelling is Not For WIMPs Part II : Stylus/Mouse Clicks ' at Eurohaptics 2004 . May 2004 David Gauldie and Ann Marie Shillito gave a demo day to the student of Edinburgh College of Art . July 2003 The Tacitus Team has entered the Research Councils 2003 Business Plan Competition . June 2003 Mark Wright presented a Tacitus paper ' 3D is not for WiIMPS ' at the HCI International Conference in Crete . April 2003 Ann Marie Shillito presented a Tacitus paper ' HAPTICS : FOR A MORE EXPERIENTIAL QUALITY IN A COMPUTER INTERFACE ' at the European Academy of Design Conference held in Barcelona . December 2002 Ann Marie Shillito presented the Tacitus Project at the AHRB/Design Council event " Design research - Design and education working for each other " at The Design Council , London . November 2002 Ann Marie Shillito presented a Tacitus paper at the Conference " Craft in the twenty-first century " , held at the Edinburgh College of Art . An opportunity to try out the haptic system was taken up by conference delegates . Her work was used on the poster and in the website . Conference website . There was also an exhibition of Ann Marie 's Fellowship work . July 2002 Open Lecture by Professor Malcolm McCullough , author of a major influential book , ' Abstracting Craft - the practiced digital hand ' . He presented his Eurohaptics International Conference keynote lecture at Edinburgh College of Art . The Eurohaptics 2002 international conference was been hosted jointly by Edinburgh College of Art and Edinburgh University on 8th - 10th July 2002 . March 2002 Ann Marie Shillito gave a talk at Pixel Raiders , Victoria & Albert Museum . The Tacitus Project was presented to the Society of Designer Craftsmen . November 2001 Ann Marie Shillito and Dr Mark Wright presented at ' Capturing the Real World - The Role of 3D Imaging ' . Edinburgh College of Art . July 2001 Ann Marie Shillito , Karin Paynter and Steven Wall presented a poster at the Eurohaptics 2001 conference in Birmingham Steven Wall presented a paper entitled ' Design of a Multiple Contact Point Haptic Interface ' at Eurohaptics 2001 and was a member of the conference programme and organising committee . April 2001 Ann Marie Shillito and Karin Paynter presented the project at the CADE conference and the resulting paper will be published in Digital Creativity Journal in December 2001 . Upcoming Events & News . : : T acitus project : : . Prior of using any material on this web site please contact 