2015

  • GUADEC 2015 Slides

    With the core days of GUADEC over (and day 2 of BoFs about to begin) I finally have a few minutes of downtime to publish my slides....

  • Caching DNF updates

    For the past couple of years, I've been running Fedora. I'm not a distro-crusader, so take this for what it's worth. I recently moved out of San Francisco and into the forest. (more on that later!)...

  • GNOME Builder - 3.16.3

    I just tagged and released Builder 3.16.3 into the wild. This is likely the last of the 3.16 releases as we hope to start moving full speed ahead towards 3.18....

  • GNOME Board of Directors Candidacy

    Over the years, I have watched our Board of Directors knowing that someday I wanted to contribute on that level. This past year has been an incredible experience for me and I owe that to all of you....

  • EggTaskCache

    One of the things that has generally been a pain when using GTask is multiplexing results. For example, say you are doing a fairly complex operation, like compiling a source file, or fetching something from the internet....

  • EggCounter

    I revamped some code based off of work I did a few years ago to make relatively fast perf counters. We are going to start using this in Builder so we can have fairly accurate statistics about our subsystems....

  • Minimap for Builder

    A lot of people seem to like overview maps in their editor. I've heard of people refusing to leave SublimeText for just such a reason....

  • GNOME Builder - 3.16.2

    Builder 3.16.2 has arrived! I released 3.16.0 a couple weeks ago without much fanfare. Despite many months of 16-hour days and weekends, it lacked some of the features I wanted to get into the "initial" release. So I didn't stop. I kept pushing through to make 3.16.2 the best that I could....

  • Builder Update

    Hi Everyone! For those in the Los Angeles region, I'll be speaking at Scale13x on Saturday about Builder....

  • Builder Funded

    First things first! I'm incredibly excited that we jumped past our initial target in the Builder campaign. We reached the second stretch goal in the last couple of hours!...

  • Cambridge DX Hackfest

    Like @ebassi and many others, I'm here at the DX Hackfest in Cambridge....

  • We made it!

    I'm thrilled to announce that today the Builder fundraiser has reached it's initial target! This is going to help me make substantial progress on a tool that clearly many of us want....

  • Builder Update

    I've been really busy during the start of the Builder fundraising campaign trying to round up funds....

  • 2014

  • Builder Fundraiser

    It's my pleasure to announce the Builder fundariser!

    Builder, an IDE of our GNOME...

  • Builder Progress Update

    It's been a while since I've had the pleasure of updating everyone. Those that follow my twitter @hergertme get the daily updates and screenshots as they happen....

  • Builder Update

    I've been really busy the last few weeks, so I've been short on updates. In particular, I've been trying to get everything solidified for the fundraising campaign....

  • Boston Summit 2014

    I'll be attending the Boston Summit next weekend. Those that attend will get to see Builder demos....

  • Builder Update

    Another week has passed of feverish hacking on Builder. My previous change monitor used signals on a GtkTextBuffer to track what had changed....

  • Copr Repository for Builder

    Mathieu Bridon has been kind enough to setup a Builder repository in Fedora Copr for those that want to try things without building from source....

  • Builder Progress Update

    I've been hacking away like crazy since my last update. So much so that occasionally I forget to leave the house. Focus has still been primarily on the editor, since that is where I'll be spending most of my time during the day....

  • Project Manager Wanted

    Development is progressing quickly on Builder. I'll have another update on that soon. However, that has led me to the inevitable. I'm far better at writing code and making progress than I am at keeping wiki pages up to date, bug triaging, and roadmap planning....

  • Work Underway

    This is my first full week working on Builder. I'm still in the process of pulling things together like wiki pages and bugzilla. This will improve in the coming weeks....

  • A Life Worth Living

    So here enters your protagonist. I've left a good job simply for the satisfaction in doing what I think is important. Let's be honest....

  • For those missing my talk on Builder

    Long story short, I'm leaving MongoDB in September to work on Builder full time for a year. This is a pretty scary thing for me to do....

  • GOM Talk

    You can find the slides for my GOM talk here. Optionally, you can view the HTML animated slides here....

  • Builder Talk

    You can find the slides for my Builder talk here....

  • GUADEC 2014

    I'll be heading to GUADEC in a couple of days, arriving Friday evening. I have two talks this year. One will cover GOM, a GObject to SQLite bridge....

  • RE: very condescending

    Phillip, your "discourse" is very much not appreciated or shared by your peers....

  • Berlin Dev-X Hackfest

    Day 1 of the Berlin GNOME developer experience hackfest has started! A short recap of of topics we intend to cover are: You can find some of us jumping in and out of IRC at #dev-x on irc.gimp.net....

  • Reference Counting

    I've been running lots of performance tests on various subsystems lately. I'll have more to write about those in the not-to-distant future but I'd like to share one from this morning....

  • mongo-c-driver 0.94.2

    I just tagged another release of the mongo-c-driver. It includes various SSL/TLS fixes and support for more platforms. You can find the release here....

  • GObject to SQLite Mapper

    A couple of years ago while building the Catch backend, I made a library for mapping GObject's to SQLite. It doesn't perform everything for you (like creating tables), but it does do a whole lot....

  • GNOME West Coast Summit

    The GNOME West Coast Summit has started! We've gone through our morning planning phase and have a list of things we'd like to start discussing....

  • mongo-c-driver 0.94.0

    On Friday I tagged the newest release of my primary responsibility at MongoDB, the new C driver. The driver is split up into two libraries, libbson[1] and mongo-c-driver....

  • West Coast Summit Arrivals

    For those of you arriving in San Francisco for the West Coast Summit, go ahead and email me if you need anything or just want to grab dinner and drinks....

  • Managing Autotools

    First off, sorry for so long without a post! Managing autotools projects is a pain, whose only solace is knowing that managing projects with anything else is even worse....

  • 2013

  • GNOME Beers SF Recap

    Thank you to all of the super nice people at Canonical in town for their sprint that showed up for GNOME beers, San Francisco style!...

  • Defensive Patents

    A common claim I've heard by entrepreneurs of the last 5-10 years is a need to acquire "defensive patents". I've always been skeptical of the idea but largely would just nod my head....

  • GNOME Beers - San Francisco, CA

    It's time for another GNOME Beers event in San Francisco, CA! It will be held next Tuesday, October 29th at 8:00 PM. 21st Amendment worked well for us last time, so we will do the same....

  • Libbson - 0.2.2

    I just tagged Libbson 0.2.2 for those that are looking for a fast BSON implementation. Get the libbson 0.2.2 source here....

  • Linux Plumbers Conference in NOLA

    I'm in New Orleans for Linux Plumbers Conference through Friday. If you are around come find me and say hi! @hergertme...

  • Fuzzy Searching

    Every once in a while I come across a problem that becomes a fun challenge. This time it was fuzzy searching. This article is about me discovering a long used algorithm in text search....

  • GNOME Beers - San Francisco, CA

    If you find yourself in San Francisco tonight, we are going to have GNOME Beers at 21st Amendment on 2nd Street at 7:30 PM. I hope to make this a regular thing....

  • Libbson - 0.2.0

    I've been at 10gen, the MongoDB company, for about 5 months now. In that time I've been writing a few new C libraries for them (and some occasional...

  • Using bsearch() with GLib Arrays

    GLib provides many handy array classes. GArray, GByteArray, and GPtrArray cover most use cases for arrays. However, you might notice they don't include a...

  • Reflections on Allocations

    In C, allocations come in two forms. By using some amount of your thread's stack, or by using a heap allocator such as malloc() and free(). Sometimes it...

  • Search highlighting with GtkOverlay

    You can abuse GtkOverlay to do some pretty neat things. Here is a widget that obscures portions of the underlying GtkTextView based on matching search results. Ideally the overlay would also draw some fancy bevels around the transparent areas....

  • Leaving Catch.com

    Today was my last day at Catch.com. I spent the last 20 months there building the back-end and sync algorithm for their collaborative...

  • 2012

  • Data Structures: Trie

    Over the holidays I often enjoy learning a new data-structure by implementing it. This year is no different, and so I implemented a Trie (pronounced "try")....

  • Compiling with checks and assertions

    Some people like to complain about greturniffail() and gassert() being left in when compiling release executables and libraries. I have learned that it can...

  • Bloom Filters

    Everyone seems to be talking about bloom filters the last couple of years. So last night I implemented one to see what all the rage was about. I'm sure you...

  • Testing GObject Lifecycles

    It's a good idea to test that the lifecycle of your object is what you expect when writing your unit tests with GTest (and I hope you do). Here is a quick...

  • Update: Mongo-GLib

    Mongo-GLib was an attempt I did to write a MongoDB driver for GObject. I actually use it quite a bit at work now. Especially the MongoBson and...

  • Update: GNOME University

    We got up another 45 or so students since the Boston Summit. This is starting to get scary. I'm having a hard time just keeping track of email addresses....

  • Update: GNOME University

    Since getting back from the Boston Summit, I've been swamped at work. The good news is that I finally have a weekend free dedicated to work on it. So those of...

  • Boston Summit: GNOME University

    For those that will be attending the Boston GNOME Summit, we will have a short session on Gnome University. We only have a couple of hours for the session, but my goal for being there this year is to help as many new people get setup developing for GNOME. So that includes jhbuild, git, C, GObject, Gtk, or anything else you need to get moving forward....

  • Update: GNOME University

    The turnout for GnomeUniversity has been absolutely outstanding! We have about 85-90 "students" that have contacted me...

  • Update: GNOME University

    The requests to join Gnome University has been overwhelming. I simply cannot keep up with the incoming...

  • Teaching C Progress

    This is going to be one of my most difficult projects to date, but by far the most rewarding. I sent out an email to the students this weekend that covers...

  • Rebuilding our Community

    I have already heard from more than 40 people that want to contribute to our platform. We have some exciting times ahead. I'm spending all my free time at the moment taking inventory of peoples goals...

  • Thank You!

    The abundance of you that have contacted me regarding my offer to teach you C is heart warming and clear evidence of GNOMEs future potential. I think this is...

  • I will teach you C

    I'm interested in teaching one or more people how to write C for desktop GNU/Linux. This includes Gtk/GObject and related technologies. No particular C...

  • No more subdirectories in include paths

    If you are not writing GLib or Gtk, you probably don't need subdirectories in your header paths. I, too, do this often, and I think I'm ready to stop....

  • Recent work on my car

    Those that aren't into cars can safely skip this post. So I like to drive fast cars through twisty mountain roads. I'm probably the guy...

  • Using the Mongo Wire Protocol for API services

    So the startup I work for uses Mongo. I have my own opinions of Mongo, some good, some bad. I have a decent amount of...

  • mongo-glib 0.2.0

    I've just released a new version of my Mongo driver for GObject. The main development this cycle was to support lazy connections to Mongo so that we...

  • mongo-glib 0.1.12

    I released another version of mongo-glib over the weekend. It works on a few more platforms. It also has better support for working with and generating BSON documents and ObjectIds....

  • Push-GLib

    I needed to do some push notifications to Android and iOS, so I put together a library for doing so. It's early, but is functional thus far. No API...

  • mongo-glib

    I recently wanted to learn the mongo wire protocol so I could better understand how to optimize my queries. I'm not a huge fan of Mongo, but they do a few...

  • 2011

  • A moment to give thanks

    I'm offline for the next two weeks, visiting Morocco. The time away is quite welcomed. I don't celebrate religious holidays, but the end of the year does...

  • Translucent Scrollbars

    While working on mock-ups and prototypes for Builder, I realized that I can't stand those clunky bars, and they need to go. 1/3rd will like the idea, 1/3 will say they prefer scrollbars, and a third will say I'm copying mac. Comments typically just put me into episodes of depression, so I'm not enabling them. I think that's why I blog less, but that is a rant for another lifetime....

  • I want GtkBuilder+JavaScript

    While having coffee with some friends a few weeks ago, I kept coming back to the thought that I need to be able to do small amounts of scripting within...

  • GOM DataMapper

    Sorry it has been so long. I've been trying to keep busy, playing with lots of new ideas to see what pans out. I guess I throw a lot of code away because of...

  • 2010

  • Smoother Graphs Coming

    I did a bit more work on the real-time graphs during my current vacation. It has resulted in being a whole lot smoother. Primary fixes were:...

  • Animations

    http://www.youtube.com/watch?v=lp6ceGP-6vU http://www.youtube.com/watch?v=AlvieV-sBJo...

  • Visualizing main loop delays

    Ross suggested adding a feature to show when your main loop has been blocked. I borrowed some code from libsocialweb to do this. The orange blocks are periods of time when the main loop was delayed for more than 10 milliseconds. Probably useful for people trying to have high frame-rate/smooth animations....

  • Still hacking on Perfkit

    Perfkit development has been continuing steadily. It's still just a toy of course; but I've gotten enough interest from people where this is a project I'd like to continue hacking on. I just added a gdk event source today that helps track down when your program is doing tons of updates. Once I get the data selection in place, you'll be able to dive in and explore the events. Maybe if I get some time during Thanksgiving vacation I can add that....

  • The case for PerfKit

    I wanted to take a few moments to explain my silly little vision of perfkit's destiny. It already has the basis for some of this, however, that doesn't change the fact that it is still a toy and in its infancy. (I will continue to emphasize that it is a toy until it actually solves a non-trivial problem for me)....

  • PerfKit

    I've been busy working on something. It is still just a toy. It's called perfkit. Fork me on Github....

  • Gibson Les Paul - 58 Custom

    Short post today. I purchased a new Gibson Les Paul from the Custom Shop last week. It's a 58 reissue. The sound is incredible. I'll be in Boston next week for

  • GDateTime Revisited

    Some readers may remember that I spent some time working on a DateTime structure for GLib last year. After much refinement by others better than...

  • Realtime Graphing Again

    As suggested by Benjamin, I switched UberGraph...

  • Realtime Graphing

    I recently had the need for a realtime graph and thought it would be a fun hack. I spent some time thinking about a few ways to optimize the drawing to...

  • Conquering DBus

    I haven't written in a while because I've been pretty heads down on a project I'm working on. Hopefully, it will be in a shape where it makes sense to share with everyone before too long....

  • Random Updates

    It's been a while, so I figured I'd just jot a few things down that I've been doing in my spare time.

    As soon as it's ready, I'll share the project I'm using these tools to build.  Feel free to speculate....

  • 2009

  • Introduction to lock-free/wait-free and the ABA problem

    I recently read a paper on Hazard Pointers[2] and thought I would share what I learned and some general information on lock-free/wait-free programming. I...

  • Readline

    I made a crappy little abstraction on top of readline to make things simpler for myself. Someone might find it useful. * Code: http://github.com/chergert/egg-line/...

  • GDateTime

    I got fed up with working around all the limitations with date and time in glib and C (time_t, struct timeval, struct tm, GTimeVal, GDate, etc) so I decided to...

  • Affiliation Change

    I'm now working at VMware. I'm half way in the process of moving to San Francisco and should be up in the SoMa area full-time by next week....

  • Yosemite - August 2009

    I go to Yosemite a few times a year because its possibly the best hiking in California. Drew and Jordan went with me and took some amazing photos. There was a large forest fire at the time which made hiking Half Dome impossible due to smoke inhalation....

  • My take on Tornado and "modern" web servers

    I am happy to see Facebook release Tornado, their Python based web-server that was developed to run the FriendFeed service. They have done their best to...

  • Connecting People and Mentoring

    Is there anything out there to help connect newer programmers with experienced programmers in GNOME or Linux in general? A big-brother/big-sister type thing....

  • Faster Code Completion

    The python code completion engine in MonoDevelop is now much faster. It's was a simple fix and one that I think gets overlooked too often in these "dynamic"...

  • Python add-in for MonoDevelop

    I wrote a python add-in for MonoDevelop last year. Unfortunately, I have a hard time sticking to a single project and therefore it suffered a bit....

  • Visualizing gtk+ exposures postmortem

    As of yesterday, I'm 25. It was a fun day of hiking, drinks, video games, and district9.

    In gdkrecord, I added recording of GdkWindow sizes and exposure areas so that I can troubleshoot some pesky drawing problems with a few custom widgets.

    ...

  • GdkEventLoop Profiling

    I put together a gtk-module yesterday to record events from the main loop for post-analysis. I'm sure this has been done before. You can find it at http://git.dronelabs.com/gdkrecord/....

  • TreeMap

    To start following through with my commitment of prototyping I set for myself, I put together a TreeMap widget this weekend. After seeing Miguel's in Moonlight, I had to write one too. Turns out they are pretty fun. It uses cairo and pango for drawing....

  • Write throw-away, prototype code

    I don't think I do enough quick prototyping. So to help me change that, I'd like to start putting together a "short list" of things I think should be explored. I'm not talking about a full fledged project with mailing lists and forums like typically happens. Just some code showing how things could be; allowing us to see if we like it. And of course, be willing to throw it all away at the end of the day....

  • OS X Modal Sheets with Gtk+

    Put together a small patch for gtk+ today that runs modal windows on OS X as the "pop-over sheet" typically found with Cocoa applications....

  • Learning from others mistakes and successes

    I seriously hate writing overly long blog posts, but this turned into one. You are forewarned. What can Linux and the Free Desktop learn from recent marketing campaigns by Apple and Microsoft? Let's quickly take a look at a few of the campaigns over recent years from Apple....

  • Catalina Object Database

    I've written another library, Catalina. It started as an example for using the threading library Iris and turned into what I think is a useful library. Catalina is an object data-store for glib and gobject. It provides access through a natural key/value pair interface....

  • Ethos 0.2.0

    I just shipped the bits and release email for Ethos 0.2.0. Ethos is a shared library I put together for adding plugins to your application....

  • Short on talk, Long on screenshots

    I branched Thomas Wood's GObject generator code the other day and started adding some desired features....

  • Planet GNOME Introduction

    Like Paul, I would also like to thank Jeff, Lucas, and Vincent for adding my blog to Planet GNOME....

  • iris Python Bindings

    I started to polish up the generated python bindings for iris today. They aren't perfect but starting to come together. Compare to the Vala example to see how it's similar....

  • Ethos - Simplifying Plugins for GNOME Applications

    I really liked the plug-in system from gedit, but it is licensed under the GPL. It would also require a lot of changes to be re-usable outside of gedit. I should know, thats what I did in my syndication reader prototype, Marina. The framework is simplistic and has been incredibly successful at converting users into application extenders. If GNOME desktop applications can provide a single framework for extending applications, the barrier to entry becomes much lower for "repeat extenders". We instantly re-purpose those application scripters into new applications.

    ...

  • I'm out! *expletive deleted*

    During my long vacation from work, I thought about the current state of MySpace and whether or not I wanted continue my tenure there....

  • Iris Update

    Today I finished off a couple more bug fixes for Iris. It now has the Coordination Arbiter which is similar to CCR's Arbiter.Interleave(). I'm quite happy I ventured down the path of doing GTask based on message passing. It's already been much easier to find bugs and triage them....

  • Vacation! and Work-Stealing Schedulers

    For the first time in years, I'm taking a vacation for something other than a holiday. It already feels great. Also, I decided to shave my head in preparations for summer....

  • GTask Slides

    I just uploaded the slides from my talk on GTask. You can get them here....

  • GTask API Changes

    I've made some API changes to the GTask delegates that should make using GTask much less painful. I must have been smoking some seriously good 'ish when I thought it was a good idea to return GValue* from any sort of delegate. That would have required negotiating allocation methods when an allocation shouldn't be necessary to begin with....

  • GNome and GTask @ Scale 7x

    The Southern California Linux Expo is quickly approaching. It kicks off on Friday and lasts through Sunday. I'll be hosting the GNOME booth along with my homey Jeff Schroeder....

  • Marina

    When I read that the Liferea hackers were considering doing a rewrite, I jumped at the opportunity to throw together a prototype. I had been dabbling with this in python for the last year or so anyway, solving interesting problems with storing lots of data while keeping memory usage light....

  • GLruCache

    I put together a quick LRU for glib/gobject. The GLruCache is a GObject and thus reference counted. Its a transparent cache, so requesting items from the cache that do not exist are retrieved through a delegate....

  • BerkeleyDB 4.6 and GtkTreeModel

    Over the vacation, I've been hacking on a few different projects, mostly Mono related this time. I've updated Joshua Tauber's BDB wrapper from 4.3 to 4.6. It has many hacks to make DB_RECNO databases more friendly. If you truly are interested in using it with 4.6, I suggest you diff the two versions and remove a few hacks I have....

  • 2008

  • GTask

    A few weeks ago I started writing an asynchronous toolkit for GObject, inspired by NSOperation, CCR, Threading Building Blocks, and mostly, Python Twisted. Its implemented in C and has bindings for Python and Vala. I'll be adding Mono bindings in a minor release or two like I did with rss-glib....

  • Monodevelop Python Revisited

    Development on my python addin for monodevelop has gone so quickly that I've gotten pretty excited about working on it. It has come from realization to working code in just a few short days. So I thought I'd put together a little overview of what I have added this week and where I'd like to go....

  • Monodevelop Python

    Back in February, while at Brainshare, I started putting together python support for monodevelop. It was just basic project file support and a compiler. After Eric mentioned to me that we aren't running enough of our own software every day, I figured I should make this something I can use....

  • Walker, FileSystem Ranger

    As a way to learn a bit of GIO from the green pastures of Python, I threw together a functional programming replacement to Python's os.walk(). The WalkerTexasRanger class takes 3 functions. One for results, one to clear the results, and one when the walk is finished....

  • Python Decorators and the Gtk MainLoop

    I just put together a neat little decorator to force a method to be called via the default gobject main loop. It does this by wrapping a method call via an immediate timeout of the main loop....

  • One of those things

    that I always liked about OS X was fading between backgrounds on the desktop. So I quickly hacked up a 20 line prototype for libeel to do something similar. Screencast below:...

  • DataMapper for GObject

    I've become envious of various web frameworks ability to access data with ease. It's become so easy to lookup, manipulate, and persist data objects that developers can focus more of their energy on user-interaction....

  • Sad Moments in Time

    I'm headed up to Washington state in a few hours for my cousin Timm's funeral. Timm had served in the United States Army for the last 5 years. He had been on leave for about the last year and working on a degree at Washington State University....

  • Rotate and TwinView for Dual Head

    I remember long ago nvidia's proprietary driver did not support rotating monitors individually while under TwinView. This may still be the case, but this time I was interested in having both monitors rotated. Having the extra vertical space for Vim is much appreciated and websites are much more readable as an added benefit....

  • 2007

  • More SqliteTreeStore, and python

    Being that I love python, I decided to do another iteration of the sqlite store in my language of choice. I have to admit, the ease of creating GtkTreeModels in python is mind blowing. Couple that with the awesomeness of python decorators, and you can get way more done in way less code....

  • EggSqliteStore, A GtkTreeModel ontop of SQLite3.

    The other day, Saturday to be exact, I was trying to come up with ways to load an immense amount of data into a GtkTreeView without loading huge amounts of memory. I've come up with part one of what I hope to be a 2 part series in dealing with this....