nux: A graphics engine used for visual effects such as glow, shadows,
and animation for the Unity 7 desktop. My tasks involved writing GLSL
shaders, porting them to ARB assembly (we needed to support all kinds
of old machines at the time), and contributing to other tasks (for example
switching from absolute positioning to using relative corrdinates).
mir: A window system. I've worked on adding a mir display that would run
in parallel with X11. It was a first step towards implementing mir nested in x11.
unity: A gtk-based desktop environment that was used in Ubuntu. I've been contributing
to supporting different resolutions for multiple monitors and HiDPI screens,
to the Unity7 low graphics mode version of the desktop environment (a mode
where visual effects could be configured to increase performance,
and new options for moving windows were available)
compiz: The compositing window manager of the Unity7 desktop. I've implemented new features, such as shadows for shaped windows,
effects and features for Unity7 low graphics mode (this feature required changes
in both Compiz and Unity), I've fixed some existing visual effects from plugins (eg: 3D windows),
and other rendering bugs
ui tools: I've also contributed to desktop applications such as configuration tools for compiz plugins, and the Unity 7 desktop.
embedded: During my very first months at Canonical, the nux-based official Ubuntu desktop
had been ported in a hybrid Linux/Android mobile phone. Because of that, all our GLES2/GLSL code had to
be portable, cross-compiled and tested on the phone. The project was very soon abandoned as Canonical
decided to implement a new integrated Qt/QML desktop for pc and mobile.
Unity 7 had a plugin option in ccsm called "Low Graphics Mode" since a long time ago, but we needed an improved system wide Low Graphics Mode that would
allow us disable visual effects that were "expensive" or configure parameters used in each effect that would affect the rendering performance, and to enable new
features that would speed up the rendering (for example moving the frames of the windows instead of the whole content at move, resize etc):