Co-founding Veodin

For about 6 months I’m working with Jan on a new product that may help everyone using Microsoft Office to get more efficient and up-to-speed.

We track the user’s mouse and keyboard input and suggest using shortcuts for his most used features. Our foundation framework is application independent and thus can be extended to support more than just Microsoft Office.

Concerning our team we now have hooked up Amir who will keep care we’ll sell something soon.

It’s an amazing time as the diversity of problems we face and solve is really huge and it’s also a pleasure to work with technologies like C# and WPF.

We are a great team and have that unbelievable warp-drive every start-up needs. If you got hooked, too, visit www.veodin.com.

I quit my job at Ableton…

… where I worked the last 7.5 years. It was a really great time in my life and it was a pleasure to work with the most brilliant people I ever met. But now it’s time for something really new. Note to myself: it was the following things I did:

Live 4

- MIDI meters
- Groove I (Swing)
- MIDI quantization
- Meters in routing choosers
- Removed monitor view
- MIDI to ReWire
- MIDI Computer Keyboard

Live 4.1

- Operator I (The Masterpiece)

Live 5

- Simpler II
- Phaser
- Flanger
- AutoPan
- Repeater
- Preset Groups
- Saturator

Live 6

- Eq4 to Eq7 to Eq8
- Dynamic Tube
- Sampler
- MIDI from ReWire

Live 7

- Drum Racks
- Spectrum

Live 8

- Operator II
- Overdrive
- Onset detection
- Groove II
- Transient Warpmode

The last things are CONFIDENTIAL ;-) . I hope I did not mix up versions and features too much.

C++ to Objective-C Auto Ptr

Long time no hear… Useful auto ptr class for referencing Objective-C objects from C++. Especially useful when putting Objective-C objects into STL containers:

template<typename TClass> class NSPtr
{
public:
	NSPtr() : _obj(NULL)
	{}
	NSPtr(TClass* o) : _obj(NULL)
	{
		this->operator=(o);
	}
	NSPtr(const NSPtr<TClass>& o) : _obj(NULL)
	{
		this->operator=(o);
	}

	~NSPtr()
	{
		this->operator=(NULL);
	}

	NSPtr& operator=(const NSPtr<TClass>& other)
	{
		this->operator=(*other);
		return *this;
	}
	NSPtr& operator=(TClass* o)
	{
		if (o != _obj)
		{
			if (o != NULL)
			{
				[o retain];
			}
			if (_obj != NULL)
			{
				[_obj release];
			}
			_obj = o;
		}
		return *this;
	}

	TClass* operator*() const
	{
		return _obj;
	}
	TClass* operator->() const
	{
		return _obj;
	}

private:
	TClass* _obj;
};