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....
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!)...
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....
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....
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....
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....
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....
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....
Hi Everyone! For those in the Los Angeles region, I'll be speaking at Scale13x on Saturday about Builder....
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!...
Like @ebassi and many others, I'm here at the DX Hackfest in Cambridge....
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....
I've been really busy during the start of the Builder fundraising campaign trying to round up funds....
It's my pleasure to announce the Builder fundariser!
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....
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....
I'll be attending the Boston Summit next weekend. Those that attend will get to see Builder demos....
Another week has passed of feverish hacking on Builder. My previous change monitor used signals on a GtkTextBuffer to track what had changed....
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....
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....
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....
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....
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....
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....
You can find the slides for my Builder talk here....
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....
Phillip, your "discourse" is very much not appreciated or shared by your peers....
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....
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....
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....
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....
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....
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....
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....
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....
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!...
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....
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....
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....
I'm in New Orleans for Linux Plumbers Conference through Friday. If you are around come find me and say hi! @hergertme...
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....
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....
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...
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...
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...
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....
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...
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")....
Some people like to complain about greturniffail() and gassert() being left in when compiling release executables and libraries. I have learned that it can...
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...
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...
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...
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....
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...
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....
The turnout for GnomeUniversity has been absolutely outstanding! We have about 85-90 "students" that have contacted me...
The requests to join Gnome University has been overwhelming. I simply cannot keep up with the incoming...
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...
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...
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'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...
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....
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...
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...
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...
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....
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...
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...
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...
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....
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...
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...
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:...
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....
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....
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)....
I've been busy working on something. It is still just a toy. It's called perfkit. Fork me on Github....
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
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...
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...
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....
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....
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...
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/...
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...
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....
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...
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....
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"...
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....
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.
...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/....
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....
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....
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....
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....
I branched Thomas Wood's GObject generator code the other day and started adding some desired features....
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....
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.
...During my long vacation from work, I thought about the current state of MySpace and whether or not I wanted continue my tenure there....
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....
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....
I just uploaded the slides from my talk on GTask. You can get them here....
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....
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....
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....
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....
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....
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....
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....
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....
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....
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....
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:...
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....
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....
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....
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....
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....