diff --git a/bacon/case/Makefile b/bacon/case/Makefile index e91af65..d3522d3 100644 --- a/bacon/case/Makefile +++ b/bacon/case/Makefile @@ -17,11 +17,17 @@ GP2RML = $(CAE_TOOLS)/gp2rml/gp2rml # Z1 = -44 # PIECE_Z = 7.9 -X0 = 5 -Y0 = 45 -Z1 = -44 +# run with acrylic (corner at 4, 0) +# #1: 15, 10 +# #2: 15, 50 +# #3: 80, 10 +# PIECE_Z = 5.15 + +X0 = 80 +Y0 = 10 +Z1 = -45 PIECE = -5 -5 30 55 -PIECE_Z = 5.5 +PIECE_Z = 5.15 Z_STEP = 2 CLEARANCE = 2 SPEED_XY = 1 @@ -32,13 +38,21 @@ Z_OFFSET = 0.1 FIN_SPEED_XY = 3 FIN_SPEED_Z = 3 -PARAMS = X0=$(X0)mm Y0=$(Y0)mm Z1=$(Z1)mm PIECE_Z=$(PIECE_Z)mm \ +# acrylic +# ~0.1 mm / 12 mil tool correction # not needed +#MILL = 120mil +SPEED_XY = 2 +SPEED_Z = 2 +FIN_SPEED_XY = 5 +FIN_SPEED_Z = 5 + +PARAMS = X0=$(X0)mm Y0=$(Y0)mm Z1=$(Z1)mm MILL=$(MILL) PIECE_Z=$(PIECE_Z)mm \ Z_OFFSET=$(Z_OFFSET)mm PARTS = top mid bot PART = top -.PHONY: all plot mill pos cng clean +.PHONY: all plot plot-fin mill pos cng clean all: $(PART)-mill.rml $(PART)-finish.rml @@ -73,7 +87,10 @@ $(PART)-finish.rml: $(PART)-finish.gp Makefile $< >$@ || { rm -f $@; exit 1; } plot: $(PART)-mill.gp - echo 'splot "$(PART)-mill.gp" with lines' | gnuplot -persist + echo 'splot "$<" with lines' | gnuplot -persist + +plot-fin: $(PART)-finish.gp + echo 'splot "$<" with lines' | gnuplot -persist mill: $(PART)-mill.rml $(PART)-finish.rml PORT=/dev/ttyUSB0 $(SPOOL) $^ @@ -88,5 +105,9 @@ clean: rm -f case.gp rm -f $(PARTS:%=%-piece.gp) $(PARTS:%=%.gp) rm -f $(PARTS:%=%-area.gp) - rm -f $(PARTS:%=%-mill.gp) $(PARTS:%=%-mill.rml) - rm -f $(PARTS:%=%-finish.gp) $(PARTS:%=%-finish.rml) + rm -f $(PARTS:%=%-mill.gp) + rm -f $(PARTS:%=%-finish.gp) + +spotless: clean + rm -f $(PARTS:%=%-mill.rml) + rm -f $(PARTS:%=%-finish.rml) diff --git a/bacon/case/cam.sh b/bacon/case/cam.sh index 93d1019..d0180f9 100755 --- a/bacon/case/cam.sh +++ b/bacon/case/cam.sh @@ -5,7 +5,7 @@ while [ "$1" ]; do done : ${MILL:=125mil} -: ${OVERLAP:=0.5mm} +: ${OVERLAP:=1.6mm} : ${X0:=0mm} : ${Y0:=0mm} : ${Z1:=0mm} diff --git a/bacon/case/case.fpd b/bacon/case/case.fpd index 02a8f65..8ac835a 100644 --- a/bacon/case/case.fpd +++ b/bacon/case/case.fpd @@ -76,11 +76,12 @@ frame top_window { frame top_pcb { loop if = 1, top_pcb - set off = topborder+topridge + set inside = topborder+topridge frame top_outline @ - ll: vec @(off, off) - RRECT(pcb_, ll, width-2*off, length-2*off, ri_ridge) + ro: vec @(topborder, topborder) + ri: vec ro(topridge, topridge) + RRECT(ridge_i_, ri, width-2*inside, length-2*inside, ri_ridge) } frame top_ridge { @@ -264,13 +265,13 @@ table { part, z, top_surface, top_window, top_pcb, top_ridge, mid_ridge, mid_pcb, mid_body, bot_posts, bot_base, bot_surface} - { "top_surface", 2.5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 } - { "top_window", 1.5, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 } -// { "top_pcb", 0.5, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 } + { "top_surface", 3.3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 } + { "top_window", 2.3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 } + { "top_pcb", 1.2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 } { "top_ridge", 0.5, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 } - { "mid_ridge", 0.5, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 } - { "mid_pcb", 1.0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 } - { "mid_body", 4.5, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 } + { "mid_ridge", 0.6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 } + { "mid_pcb", 1.2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 } + { "mid_body", 4.7, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 } { "bot_posts", 1.2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 } { "bot_base", 2.0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 } { "bot_surface", 2.7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 } @@ -291,8 +292,9 @@ table table /* usb_roff = offset from right outer case edge */ + /* usb_d = 10 mm for prototypes (mini-USB); reduce to 6.0 mm for micro */ { usb_w, usb_d, usb_roff } - { 8.5mm, 6.0mm, 4.5mm } + { 8.6mm, 10.0mm, 4.9mm } table /* post_y is from the edge of the battery bay. post_x is from the edge */ @@ -331,8 +333,8 @@ frame bot_surface @ measx top_outline.edge_ul -> top_outline.edge_ur 4mm measy top_outline.edge_ll -> top_outline.edge_ul 4mm -measx top_pcb.pcb_ul -> top_pcb.pcb_ur 3mm -measy top_pcb.pcb_ll -> top_pcb.pcb_ul 3mm +//measx top_pcb.pcb_ul -> top_pcb.pcb_ur 3mm +//measy top_pcb.pcb_ll -> top_pcb.pcb_ul 3mm measx top_ridge.ridge_o_ul -> top_ridge.ridge_o_ur 4mm measy top_ridge.ridge_o_ll -> top_ridge.ridge_o_ul 4mm diff --git a/fisl2012/Makefile b/fisl2012/Makefile new file mode 100644 index 0000000..facc4f2 --- /dev/null +++ b/fisl2012/Makefile @@ -0,0 +1,80 @@ +SHELL=/bin/bash + +#DL=USB.png Nano_cola.jpg Atben_atusb_prod_03.jpg Atben_atusb_prod_05.jpg \ +# M1_dmx_video.jpg \ +# UBB_production_08.JPG ubb-vga-pub-plugged-medium.jpg \ +# ubb-vga-pub-1024-medium.jpg SIE_KICAD.png +#GEN=schhist.png fped.png kicad.png achieve.pdf flow.pdf +#PNG=atusb-front.png + +.PHONY: spotless clean upload upload-es + +all: talk.pdf + xpdf talk.pdf + +talk.pdf: talk.tex $(GEN) $(DL) $(PNG) + pdflatex talk + +talk-es.pdf: talk-es.tex $(GEN) $(DL) $(PNG) + pdflatex talk-es + +kicad.png: eeschema.xwd pcbnew.xwd + pnmcomp -xoff=0 -yoff=300 \ + <(convert eeschema.xwd ppm:-) \ + <(convert pcbnew.xwd ppm:- | \ + pnmpad -white -left=900 -bottom=300) | \ + convert - $@ + +schhist.png: schhist.xwd + convert $< $@ + +fped.png: fped.xwd + convert $< $@ + +USB.png: + wget http://projects.qi-hardware.com/schhist/atusb/847b3546d90d7271690bcd17014cf2cae9482538/diff/USB.png + +Nano_cola.jpg: + wget http://en.qi-hardware.com/w/images/7/78/Nano_cola.jpg + +Atben_atusb_prod_03.jpg: + wget http://en.qi-hardware.com/w/images/0/06/Atben_atusb_prod_03.jpg + +Atben_atusb_prod_05.jpg: + wget http://en.qi-hardware.com/w/images/c/ce/Atben_atusb_prod_05.jpg + +M1_dmx_video.jpg: + wget http://en.qi-hardware.com/w/images/5/55/M1_dmx_video.jpg + +UBB_production_08.JPG: + wget http://en.qi-hardware.com/w/images/8/83/UBB_production_08.JPG + +ubb-vga-pub-plugged-medium.jpg: + wget http://downloads.qi-hardware.com/people/werner/ubb/vga/web/ubb-vga-pub-plugged-medium.jpg + +ubb-vga-pub-1024-medium.jpg: + wget http://downloads.qi-hardware.com/people/werner/ubb/vga/web/ubb-vga-pub-1024-medium.jpg + +SIE_KICAD.png: + wget http://linuxencaja.com/images/9/9d/SIE_KICAD.png + +achieve.pdf: achieve.fig + fig2dev -L pdf $< $@ + +flow.pdf: flow.fig + fig2dev -L pdf $< $@ + +talk.ps: talk.pdf + pdf2ps $< $@ + +p16: talk.ps + mpage -8 $< | lpr + +spotless: + rm -f $(DL) + +clean: + rm -f $(GEN) talk.ps + +upload: talk.pdf + qippl talk.pdf fisl13.pdf diff --git a/fisl2012/abstract.txt b/fisl2012/abstract.txt new file mode 100644 index 0000000..d321334 --- /dev/null +++ b/fisl2012/abstract.txt @@ -0,0 +1,18 @@ +Making Hardware with KiCad and Friends + +KiCad is a well-established Open Source EDA suite that provides tools +for most of the basic tasks in circuit design. In larger projects, +and especially those of an open and collaborative nature, additional +requirements appear that KiCad can only partially satisfy. + +Specifically, collaborative projects benefit from visualization that +helps to quickly follow the work of others and to track a project's +revision history. Furthermore, an automated and thus easily +reproducible workflow lowers the barrier of entry and avoids costly +mistakes. + +In the Qi-Hardware project, we use KiCad as the centerpiece for various +hardware designs and enhance its functionality with patches or external +programs. This presentation will describe the complete workflow from +design to fabrication, introduce the various tools we use to complement +KiCad, and also briefly address common design rules. diff --git a/fisl2012/bio.txt b/fisl2012/bio.txt new file mode 100644 index 0000000..6d17ece --- /dev/null +++ b/fisl2012/bio.txt @@ -0,0 +1,10 @@ +Werner got hooked on Linux in the days of the 0.12 kernel and started +to get his hands dirty from early on with contributions like the LILO +boot loader, the initial RAM disk (initrd), and the MS-DOS file system. +Later activities led him into networking, with the Linux-ATM project as +part of his PhD thesis, and he eventually landed in the Openmoko project. + +Having had a taste of hardware there, but eager to do more, he then +journeyed deeper into the world of electronics and finally joined the +Qi-Hardware project, where he now dabbles with making gadgets that aim +to blend software and hardware under common principles of freedom. diff --git a/fisl2012/talk.tex b/fisl2012/talk.tex new file mode 100644 index 0000000..0866ca3 --- /dev/null +++ b/fisl2012/talk.tex @@ -0,0 +1,443 @@ +\documentclass[14pt,trans]{beamer} +\usepackage{color} +\usepackage{url} +\usepackage{colortbl} +%\usepackage{soul} +%\usepackage{verbatim} +\usefonttheme{structurebold} +\setbeamertemplate{navigation symbols}{} +\setbeamertemplate{items}[ball] +%\setbeamersize{sidebar width left=-5mm} +\title{\Large Making Hardware with KiCad and Friends} +\author{Werner Almesberger \\\url{werner@almesberger.net}} +\date{July 21, 2012} + +%\setul{}{1.5pt} + +\begin{document} + +\begin{frame} +\titlepage +\end{frame} + +% --- Overview ---------------------------------------------------------------- + +\begin{frame}{Overview} +\begin{itemize} + \item KiCad introduction + \item Qi-Hardware workflow + \item $\dots$ and tools +\end{itemize} + +\url{downloads.qi-hardware.com/people/werner/fisl13.pdf} +\end{frame} + +% --- KiCad Introduction ------------------------------------------------------ + +\begin{frame}{KiCad} +\begin{itemize} + \item Complete EDA solution + \item Free Software: GPL, LGPL + \item Text files $\rightarrow$ extensible + \item C++, wxWidgets + \item Multi-platform: Linux, Windows, Mac +\end{itemize} +\end{frame} + +% --- Schematics -------------------------------------------------------------- + +\begin{frame}{KiCad: Schematics} +eeschema + component editor: netlist, BOM + +SCREENSHOTS +\end{frame} + +% --- Layout ------------------------------------------------------------------ + +\begin{frame}{KiCad: Layout} +cvpcb + pcbnew + module editor -> gerbers (gerbv) + +SCREENSHOTS +\end{frame} + +% --- Fped -------------------------------------------------------------------- + +\begin{frame}{Footprint Editor (fped)} +%\begin{center} +% \includegraphics[height=6cm]{fped.png} +%\end{center} +SCREENSHOT (highlight vector) + +\begin{itemize} + \item Fully parametric + \item Automated repetition (loops, tables, sub-frames) + \item GUI or text-based + \item Automatic measurements + \item Output: KiCad, Postscript, Gnuplot +\end{itemize} +\end{frame} + +% --- Qi-Hardware ------------------------------------------------------------- + +\begin{frame}{Qi-Hardware} +\begin{itemize} + \item Collection of loosely connected projects + \item Loose collective of like-minded developers + \item Copyleft Hardware with Free Software + \item Development and manufacturing + \item Toolmaking +\end{itemize} + +Products: +\begin{itemize} + \item Ben NanoNote (Handheld computer) + \item Ben-WPAN (IEEE 802.15.4 wireless) + \item Milkymist One (FPGA-based Video synthesizer) +\end{itemize} +\end{frame} + +% --- Collaborative Design ---------------------------------------------------- + +\begin{frame}{Collaborative Design} +\begin{itemize} + \item Track other people's work + \item Review other people's work (libraries) + \item Shared design information + \item Shared version control (git) + \item Shared procedures and rules +\end{itemize} +\end{frame} + +% --- KiCad Limitations ------------------------------------------------------- + +\begin{frame}{KiCad Limitations} +\begin{itemize} + \item No integrated version control system support + \item Integration leads to weak peripheral tools + \begin{itemize} + \item Footprint editor + \item Component catalog + \item Module catalog + \end{itemize} + \item Scattered libraries CHECK +\end{itemize} +\end{frame} + +% --- Qi-Wardware Adaptation -------------------------------------------------- + +\begin{frame}{Qi-Hardware Adaptation} +\begin{itemize} + \item Command-line oriented use + \item Extend KiCad with patches + \item External scripts/programs + \item Own component and module libraries with common rules +\end{itemize} +\end{frame} + +% --- What goes into git ------------------------------------------------------ + +\begin{frame}{What goes into git} +KiCad: +\begin{itemize} + \item Project file: {\tt {\em project}.pro} + \item Schematics: {\tt {\em project}.sch}, {\tt {\em subsheet}.sch} + \item Footprint mapping: {\tt {\em project}.cmp} + \item Layout: {\tt {\em project}.brd} +\end{itemize} + +Qi-Hardware: +\begin{itemize} + \item Makefile ({\tt sch}, {\tt brd}, {\tt fab}, {\tt clean}) + \item Bookshelf (for dsv) + \item Project-local libraries +\end{itemize} +\end{frame} + +% --- What doesn't ------------------------------------------------------------ + +\begin{frame}{What doesn't} +KiCad: +\begin{itemize} + \item Netlist: {\tt {\em project}.net} \\ + Generate with eeschema from {\tt *.sch} and {\tt {\em project}.cmp} + \item Caches and backups: {\tt {\em project}.bak}, {\tt {\em project}.000}, + {\tt {\em project}-cache.lib} + \item Postscript: {\tt {\em project}-{\em layer}.g{\em XX}} + \item Gerbers: {\tt {\em project}-{\em layer}.g{\em XX}} + \item BOMs: {\tt {\em project}.lst}, {\tt {\em project}.cvs} + \item Fab outputs: {\tt {\em project}.drl}, {\tt {\em project}.pos} + \item And so on: {\tt {\em project}.erc}, {\tt {\em project}.rpt}, + {\tt {\em project}.wrl}, $\ldots$ +\end{itemize} +\end{frame} + +% --- Project File ------------------------------------------------------------ + +\begin{frame}{Project File} +Project settings. Lists of libraries. + +Issues: +\begin{itemize} + \item Local absolute paths + \item Default libraries + \item Timestamps $\rightarrow$ commit noise +\end{itemize} + +Solution: +\begin{itemize} + \item Maintain manually + \item {\tt purge} script \\ + \url{wernermisc/bin/purge} +\end{itemize} +\end{frame} + +% --- Makefile ---------------------------------------------------------------- + +\begin{frame}[fragile]{Makefile} +Issues: +\begin{itemize} + \item Shortcuts + \item Glue tools together + \item Avoid mistakes + \item Share common procedures +\end{itemize} + +Example: +\begin{verbatim} +front: + pcbnew --plot=ps --plot-fill-all-zones --layers=Front \ + --plot-mirror $(PROJECT).brd + lpr $(PROJECT)-Front.ps +\end{verbatim} +\end{frame} + +% --- KiCad Command-Line Patches ---------------------------------------------- + +\begin{frame}{KiCad Command-Line Patches} +Original hack by Werner Almesberger, clean rewrite by Wolfgang Spraul. +\begin{itemize} + \item Idea: command-line access to main output functions + \item eeschema + \begin{itemize} + \item Visualization: Postscript (and SVG, DXF) + \item BOM $\rightarrow$ BOOM + \item Netlist, ERC + \end{itemize} + \item pcbnew + \begin{itemize} + \item Fabrication: Gerbers, drill (Excellon), component positions + \item Visualization and DIY: Postscript + \item Attributes: mirror, size, origin, fill zones, $\ldots$ + \end{itemize} +\end{itemize} + +\url{eda-tools/kicad-patches} +\end{frame} + +% --- Data Sheet Viewer (dsv) ------------------------------------------------- + +\begin{frame}[fragile]{Data Sheet Viewer (dsv)} +\begin{itemize} + \item Bookshelf: name and aliases $rightarrow$ PDF or ZIP with PDF + \item Download (wget) to local cache + \item Hierarchical lookup by name or alias + \item Example: \\ + {\tt dsv avr} $\rightarrow$ ATtiny87 ({\tt doc8265.pdf}) + $\rightarrow$ xpdf +\end{itemize} + +Bookshelf example: + +\begin{verbatim} +N: attiny87 +A: attiny167 +A: avr +D: http://www.atmel.com/Images/doc8265.pdf +\end{verbatim} +\end{frame} + +% --- Data Sheet Viewer (dsv) ------------------------------------------------- + +\begin{frame}{dsv Motivation} +\begin{itemize} + \item Make sure everybody uses the same data sheet + \begin{itemize} + \item Same component + \item Same manufacturer + \item Same data sheet revision + \end{itemize} + \item Copyright: can't just check in PDF + \item Industrial pragmatism: mail or ``internal'' repository + \item Qi-Hardware: send {\tt BOOKSHELF} around +\end{itemize} + +\url{eda-tools/dsv} +\end{frame} + +% --- Schematics Symbol Catalog ---------------------------------------------- + +\begin{frame}{Schematics Symbol Catalog} +\begin{itemize} + \item For selection, review + \item Hierarchical order with alphabetic index + \item Short descriptions and data sheet links + \item Added value: indicate pin types + \item TODO: connect to dsv +\end{itemize} + +DRAWING (hierarchy + descr + com libs ---genkicat--> PDF) +\end{frame} + +% --- Footprint Catalog ------------------------------------------------------ + +\begin{frame}{Footprint Catalog} +\begin{itemize} + \item Likewise, for footprints + \item Added value: measurements, pad types +\end{itemize} + +DRAWING (hierarchy + descr + com libs ---genkicat--> PDF) + +\url{eda-tools/genkicat} +\end{frame} + +% --- Schematics History ------------------------------------------------------ + +\begin{frame}{Schematics History} +\begin{itemize} + \item Schematics revision history + \item {\tt git diff} produces gibberish +\end{itemize} + +EXAMPLE + +\url{http://projects.qi-hardware.com/schhist/} +\end{frame} + +% --- Schematics History (cont'd) --------------------------------------------- + +\begin{frame}{Schematics History (cont'd)} +How it works: +\begin{itemize} + \item Walk git revision history + \item Check out project whenever schematics change + \item Run eeschema to make Postscript + \item Convert to PNG (find diffs, with highlighting) and PDF + \item Wrap in HTML +\end{itemize} + +Issues: +\begin{itemize} + \item Nasty shell script + \item Resource-hungry (partial caching) + \item Large schematics get confusing + \item Projects spanning multiple repositories +\end{itemize} + +\url{eda-tools/schhist} +\end{frame} + +% --- Layout History ---------------------------------------------------------- + +\begin{frame}{Layout History} +\begin{itemize} + \item Layout revision history + \item To do $\ldots$ +\end{itemize} + +\url{eda-tools/brdhist} +\end{frame} + +% --- Gerber Renderer --------------------------------------------------------- + +\begin{frame}{Gerber Renderer} +\begin{itemize} + \item ``Photorealistic'' view of PCB + \item Combines Gerber and Excellon + \item Easy see issues with solder paste, silk screen, solder mask, $\ldots$ + \item Uses gerbv for rendering +\end{itemize} + +EXAMPLE + +\url{eda-tools/prettygerbv} +\end{frame} + +% --- BOM Processor ----------------------------------------------------------- + +\begin{frame}{BOM Processor (BOOM)} +\begin{itemize} + \item BOM $\rightarrow$ select components $\rightarrow$ find supplier + $\rightarrow$ shopping list + \item Work in progress. Rewrite from Perl to C + \begin{itemize} + \item Faster + \item Less headache with data structures + \item Better parsing + \end{itemize} + \item Snag: Digi-Key spider no longer works + \item Future: help with component selection +\end{itemize} + +\url{eda-tools/b2} +\end{frame} + +% --- BOOM Data Flow ---------------------------------------------------------- + +\begin{frame}{BOOM Data Flow} +DRAWING +\end{frame} + +% --- Schematics Design Rules ------------------------------------------------- + +\begin{frame}{Schematics Design Rules} +... + +URL +\end{frame} + +% --- Libraries --------------------------------------------------------------- + +\begin{frame}{Libraries} +Goals: +\begin{itemize} + \item Consistent naming + \item Known origin of design information + \item Documented development process +\end{itemize} + +To do: +\begin{itemize} + \item Improve organization + \item Better integrate background information + \item Reviews ! +\end{itemize} + +\url{kicad-libs/components}, \url{kicad-libs/modueles} +\end{frame} + +% --- Qi-Hardware Workflow ---------------------------------------------------- + +\begin{frame}{Qi-Hardware Workflow} +DIAGRAM +\end{frame} + +% --- Conclusion -------------------------------------------------------------- + +\begin{frame}{Conclusion} +\begin{itemize} + \item KiCad is a good basis for collaborative projects + \item Open design allows extension with scripts + \item Workflow is complex and needs careful consideration +\end{itemize} + +To do: +\begin{itemize} + \item Spread the word + \item Improve quality of libraries + \item Integrate patches into mainline KiCad + \item Finish BOOM and write brdhist +\end{itemize} +\end{frame} + +\end{document} diff --git a/ircstat/ML b/ircstat/ML index 4ac6105..ec49019 100644 --- a/ircstat/ML +++ b/ircstat/ML @@ -4,7 +4,7 @@ http://lists.en.qi-hardware.com/pipermail/discussion/ 2009 85 141 137 157 99 145 2010 180 180 263 214 412 218 492 295 260 132 116 174 2011 150 155 125 108 71 127 49 106 129 69 71 33 -2012 39 20 38 36 15 +2012 39 20 38 36 15 23 http://lists.milkymist.org/pipermail/devel-milkymist.org/ @@ -12,4 +12,4 @@ http://lists.milkymist.org/pipermail/devel-milkymist.org/ 2009 3 8 15 27 33 14 24 14 2010 29 28 36 28 22 25 35 14 27 39 17 12 2011 61 43 59 81 17 48 43 35 24 78 116 183 -2012 52 67 48 30 35 +2012 52 67 48 30 36 16