• Uncategorized

    Mir 0.24 Release

    Mir 0.24 was just released this week! We’ve reworked a few things internally and fixed a fair amount of bugs. Notably, our buffer swapping system and our input keymapping system were reworked (Alt-Gr should now work for international keyboards). There was also some improvements made to the server API to make window management better. I’m most excited about the internal buffer swapping mechanism changes, as its what I’ve been working to release for a while now. The internal changes get us ready for Vulkan [1], and improve our multimedia support [2], improve  our WiDi support, and to reduce latency in nested server scenarios [3]. This is prep work  for releasing…

  • Uncategorized

    C++11 first impressions

    I’ve been embroiling myself in C++11 lately, and have to say I like this version of the C++ language a lot more than I’ve liked previous versions. A lot of the rough edges have been cleaned up and there’s some powerful new features as well. The Upsides: They did a good job at pulling in a lot of the ‘less controversial’ parts of boost into the STL. Its just easier when you don’t have to juggle STL and boost, and can just use the STL in a lot of cases. Spawning a thread is now pretty easy and clean. Thread synchronization mechanisms are very easy to access and clean as…

  • Coding,  Open Source,  Random,  Uncategorized

    The Black Triangle

    Stuart Langridge on Planet Ubuntu posted about this story a while back, and its a something that’s happened to me a lot of times over my career. The Black Triangle The tl;dr is that a complex, extremely flexible system, well built system often takes a long time to put together, and the first fruit of the labor is often something seemingly simple to do from the perspective of someone else. However, the complex underpinnings of the well designed system allow the project to grow by leaps and bounds once that first black triangle is shown on the screen! That ‘black triangle’ one of the coolest parts of being an engineer.…

  • Uncategorized

    The Cupholder Problem

    There’s a little story I always think about when designing or modifying an established, well entrenched API, and it goes like this: Back a few decades ago, no cars had cupholders. A team of engineers were given the task to add a few cupholders to the new car model, so they went down to their local convenience store (like 7-11) and bought all the varieties of cups that the store had. They then analyzed the cups and designed a cupholder for the car that would work with all the different sizes of cups, and put it in their new car. Fast forward a few decades, and all the cars had cupholders. The convenience store…

  • Uncategorized

    Let the Go hacks begin….

    I’ve been tinkering around a bit more and more with Google’s Go language, and I’m finding that I like it more and more. I think its a great good evolution of compiled languages. A few quick thoughts on what I like so far: Novel way to handle concurrency With C or C++, you have to write a pretty big chunk of code to spawn a new thread. With Go, you just have to write go function(), and its as easy as that! Furthermore, in C/C++ you’re constantly dealing with locks to ensure data is protected. As you know, this can get pretty hairy. In go, you can set up a…

  • Coding,  Open Source,  Ubuntu,  Uncategorized

    Good Practices: Compiling from Source #2

    I went over the first part of compiling (configuring) in my earlier blog post here. Easy Make Oven Now, you’ve successfully configured your project, and you’re ready to build. Thankfully, this step is usually pretty straightforward and simple, all you do is type make and the project should build successfully. The configure step took care of all the heavy lifting for you, and is why we have that configure step! Although this step is usually pretty foolproof, there are annoyances and frustrations that can pop up. The Time, man, the Time! The first annoyance is that this step can take a long long time! I’m still surprised when coders don’t…

  • Uncategorized

    Processor Review: Intel i7 2600k

    The Summary: This processor is insanely fast, and will only set you back about $300. The Specs: 8 logical cores (4 physical, each hyper-threaded) 3.4 GHz (stock) 32nm 8mb cache Intel HD 3000 Integrated Graphics This processor has 8 logical cores (4 physical cores, each hyperthreaded) so you’ll have a good experience with any multitasking you might have to do. Cache is pretty big as well. The Setup: Intel i7-2600k Stock Cooler (with Arctic Silver) 2GB DDR3 PC2100 ASrock P67 Extreme4 Gen3 Motherboard 850W Corsair Professional PSU The Stock Benchmarks: Passmark has become the go-to standard for processor benchmark s. That being said, this processor ranks pretty highly, and is…

  • Uncategorized

    Simple OpenGL Application for Beginners

    A friend of mine recently complained that starting OpenGL on Linux is too confusing. In helping him out, I figured out that like most beginners, he couldn’t figure out how to display anything on the screen without 200 lines of confusing code from some tutorial site he found. Furthermore, probably 3/4 these tutorial sites are targeted towards Windows users, so getting it running on Linux is even more confusing! Learning how to draw an OpenGL triangle on Linux shouldn’t be hard. Most beginners just want a basic scratchpad they can tinker with, not an expansive explanation of what’s going on, and what window manager is doing what, etc. They just…

  • Uncategorized

    Whirlwind Tour of the Graphics Stack

    Graphics drivers have often been a sticking point in the Linux ecosystem. Getting them to work the way you want can be (and historically was) tricky. Ever wonder why? The simple answer is that the software stack needed to support graphics cards are complicated. Very complicated.  There are many layers and features the graphics stack needs to run in the way you want it to. The simple idea is a graphics card is a specialized co-processor. Its really good, and designed for hugely parallelized mathematical computations needed to process 3d images. A GPU is a distinct processor, so it needs to be programmed by the CPU in order to compute…

  • Hardware,  Reviews,  Uncategorized

    Motherboard Review: ASRock P67 EXTREME4 GEN3

    Review Summary: Great motherboard good price point ($155). Buy it if you need a 1155 socket and like to overclock. No real drawbacks, but a few manageable quirks. I like to prefix a review  with what I was looking for in a motherboard. From rooting about the internet, the P67 or the Z68 are the motherboard types best suited to my processor (intel i7 2600k). That being said, the Z68 is a slight upgrade to the P67, supporting using a SSD as a cache for a hard-disk, along with other minor improvements that I wasn’t particularly dying to get. The core components are essentially the same, so I decided to…