.NET
Escaping the Windows prison
My friend Brad Clark over at Rigging Dojo is organizing a course on Maya’s C++ API (I am assuming it is Maya but could be another program). He had a question about student access to Visual Studio, to which I responded: @riggingdojo I cannot imagine doing a worse disservice...
Read more
GeoCities and the Qt Designer
In a review of my book, Practical Maya Programming with Python, reviewer W Boudville suggests my advice of avoiding the Qt Designer is backwards-looking and obsolete, such as writing assembler instead of C for better performance, or using a text file to design a circuit instead of a WYSIWYG...
Read more
Deploying a C# app through pip
“If we bundle up this C# application inside of a Python package archive we can deploy it through our internal CheeseShop server with very little work.” That sentence got me a lot of WTF’s and resulted in one of the worst abuses of any system I’ve ever committed. We...
Read more
All languages need first class tuples
I was doing some work on a Flask app today and built up some chart data in Python that had a list of two-item tuples like [(<iso datetime string>, <value>), ...]. I needed to iterate over this same structure in JavaScript and of course was reminded how great it...
Read more
Why GUI’s Lock Up
This is a post for the Tech Artists and new programmers out there. I am going to answer the common question “why do my GUI’s lock up” and, to a lesser extent, “what can I do about it.” I’m going to tell a story of a mouse click event....
Read more
The doubly-mutable antipattern
I have seen this in both python and C#: class Spam: def __init__(self): self.eggs = list() ...more code here... def clear(): self.eggs = list() What do I consider wrong here? The variable ‘eggs’ is what I call ‘doubly mutable’. It is a mutable attribute of a mutable type. I...
Read more
Large initializers/ctors?
With closures (and to some extent with runtime attribute assignments), I find the signatures of my UI types shrink and shrink. A lot of times we have code like this (python, but the same would apply to C#): class FooControl(Control): def __init__(self, value): super(FooControl).__init__() self.value = value self._InitButtons() def...
Read more
There’s idiomatic, and there’s just being respectful
I work in mixed language environments. Python, C#, C++, and more, can all make their rounds. It isn’t uncommon to have someone focused on C++ have to write something in another language, and it isn’t uncommon that I come across their code some point in the future. It is...
Read more
Thank you, Rico Mariani, for reminding me how bad I was
A little while ago I read two great articles by Rico Mariani, a MS employee who usually blogs about performance in .NET (though python being an OO language the same advice applies there). The articles in question were these: Performance Guidelines for Properties Performance and Design Guidelines for Data...
Read more
Don’t use global state to manage a local problem
Just put this up on altdevblogaday: http://altdevblogaday.com/2011/09/25/dont-use-global-state-to-manage-a-local-problem/ I’ve ripped off this title from a common trend on Raymond Chen of MSFT’s blog. Here are a bunch of posts about it. I can scream it to the heavens but it doesn’t mean people understand. Globals are bad. Well, no shit...