]> git.cworth.org Git - cworth.org/blob - src/talks.mdwn
Add talks page
[cworth.org] / src / talks.mdwn
1 [[meta title="Talks presented by Carl Worth"]]
2
3 # [Designing a Library that's Easy to Use](/~cworth/papers/guadec_2006)
4
5 This is something of a case study on the design of the cairo graphics
6 library API with some hint on things to keep in mind or to avoid while
7 doing API design. Presented at GUADEC 2006 in Vilanova i la Geltru,
8 Spain.
9
10 # [An Insider's Guide to cairo](/~cworth/cairo_ddc2005)
11
12 I present details of the internals of the cairo graphics library. The
13 algorithms and components presented include:
14
15   * Stroking a cubic Bézier spline with a circular pen,
16     (Minkowski sums and the convolution of polygonal tracings).
17
18   * Robust, (and efficient) tessellation in the face of
19     limited-precision arithmetic.
20
21   * Careful rasterization algorithms suitable for incremental
22     rendering with no seams, (describing our failed
23     coverage-calculating approach as well as our new point-sampling
24     approach).
25
26   * Compositing (why pre-multiplied alpha is the one true way).
27
28 Presented at the <a href="http://www.desktopcon.org/2005/">Desktop
29 Developers' Conference</a> on 2005-07-19.
30
31 # [Cairo: Making Graphics Easy to Print](/~cworth/papers/cairo_lca2005)
32
33 Free software operating systems have often been accused of having
34 pessimal printing support. Recent infrastructure improvements have
35 largely solved the plumbing problem. But adding print support to
36 applications is still painful. Generally, rendering code must be
37 duplicated which often leads to inconsistencies between display and
38 print output.
39
40 The cairo graphics library is designed to provide high-quality print
41 output with the same API used for rendering to a display. The initial
42 approach toward implementing printing support was to prioritize output
43 fidelity over memory or bandwidth requirements yielding an
44 implementation that achieves consistent print quality through reuse of
45 image-based rendering code. Or we were just lazy and it was easy that
46 way. Either way, it was a pig.
47
48 This paper will discuss recent progress in cairo's printing backends
49 as they develop into first-class citizens. Generating efficient,
50 high-quality print output is complicated because PostScript has an
51 imaging model fundamentally more limited than that of cairo. This and
52 other challenges will be presented along with our solutions.
53
54 Presented at <a href="http://lca2005.linux.org.au/">linux.conf.au
55 2005</a> on 2005-04-22.
56
57 [On-demand Linux for Power-aware Embedded Sensors](/~cworth/papers/pasta_ols2004)
58
59 We introduce a distributed sensor architecture which enables
60 high-performance 32-bit Linux capabilities to be embedded in a sensor
61 which operates at the average power overhead of a small
62 microcontroller. Adapting Linux to this architecture places increased
63 emphasis on the performance of the Linux power-up/shutdown and
64 suspend/resume cycles.
65
66 Our reference hardware implementation is described in detail. An
67 acoustic beamforming application demonstrates a 4X power improvement
68 over a centralized architecture.
69
70 Presented at the <a href="http://www.linuxsymposium.org/2004">2004
71 Ottawa Linux Symposium</a> in July, 2004.
72
73 [Cairo: Cross-device Rendering for Vector Graphics](/~cworth/papers/xr_ols2003)
74
75 Cairo provides a vector-based rendering API with output support for
76 the X Window System and local image buffers.  Cairo provides a
77 stateful user-level API with support for the PDF 1.4 imaging
78 model. Cairo provides operations including stroking and filling
79 B&#233;zier cubic splines, transforming and compositing translucent
80 images, and antialiased text rendering.  </p> <p> Cairo, (formerly
81 known as Xr), is available from <a
82 href="http://cairographics.org">http://cairographics.org</a>
83
84 Presented at the <a href="http://www.linuxsymposium.org/2003">2003
85 Ottawa Linux Symposium</a> in July, 2003.
86
87 [xstroke: Full-screen Gesture Recognition for X](/~cworth/papers/xstroke)
88
89 Some of the challenges in developing a gesture recognition program
90 with a full-screen user-interface. xstroke has been incorporated into
91 the <a href="http://www.handhelds.org">handhelds.org</a> distribution.
92
93 Presented at the <a href="http://www.usenix.org/events/usenix03/">2003
94 Usenix Annual Technical Conference</a> in San Antonio, Texas, June
95 2003.
96
97 [Synthesizing RTL Hardware from Java Byte Codes](/~cworth/papers/java_synthesis)
98
99 This paper came out of the work I did on my Master's thesis at <a
100 href="http://www.byu.edu">BYU</a>'s <a
101 href="http://splish.ee.byu.edu">Configurable Computing
102 Laboratory</a>. The implementation adds experimental support for
103 synthesis to <a href="http://www.jhdl.org">JHDL</a>.