Blog of Rob Galanakis (@robgalanakis)

.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...

Read more

1 2 3