I’m Dmitry Rodionov, a macOS developer and software solution provider.

👋 Hire me

I’m available for hire!

I work in plenty of different areas: from low–level system utilities and reverse–engineering to rich user-facing Cocoa applications and Sketch plugins.

I do care about the end product and take pride in all of my work, no matter if it’s a simple script or a complex software system. Everything I do is crafted and polished to perfectly fit your business needs and make you happy, no less.

I’ve been building Mac and iOS solutions since 2011, working on dozens of projects: as a contractor for software shops (Sympli, Mental Faculty, Apparent Software, ZipZapMac, farmerswife), as a collaborator with design studios (Jacob Ruiz Design, Eden Vidal, Angelo Milanetti, Lstore) and as a solution provider for a lot of companies around the globe (Upward Mobile LLC, DEVV.IT AB, LenoFX, Element TwentySix, ProtoDype Limited — just to name a few).

Drop me a message and let’s create something great together!

✨ Profiles

🤖 Projects & Experience


Objective-C, Swift, C, Cocoa, AppKit, Sketch, Sketch Plugins, CocoaScript, Foundation, CoreData, Sandbox, Accessibility, UX, reverse-engineering, testing, Ruby (for Rake mostly), probably some Python.


Remember the dark times when Interface Builder and Xcode were two separate apps, 32–bit runtime required you to @synthesize your properies manually and all Cocoa programmers had to know when to call -autorelease on things? Yep, I was there.

Things have changed drastically since then: now we have pleasant developer tools, new awesome programming languages and a lot of documentation (well even Apple has a blog on Swift!).

But what remains (somewhat) the same is AppKit and I really enjoy working with this beautiful beast. My secret is that I always keep a disassembler window open with AppKit.framework loaded into it 🌈 This way I’m sure I know what happens under my feet; how to avoid this and work around that.

I also understand how macOS works on the low-level (multithreading, sandboxing, XPC, SIP, launchd, you name it) and this knowledge often serves me well when I build any non-trivial software system that is environment-aware.

Here’s a few public macOS projects I took part in recently:

Versions Shotty Done Time
Studies for Mac MemoryCleaner Trickster
ImageFramer Daruma Ensembles
Your project here


Sometimes I help my clients with iOS applications as well by building new features or solving puzzling issues and refactoring the codebase.

Archiver Studies for iOS File Manager
AVPlayer Your project here

Sketch Plugins

I love Sketch. But even more than that I love writing plugins for this tool because it gives me an ability to utilize my Cocoa-fu and, at the same time, to fulfill my need for a challenge: it’s a normal situation for me to spend a few hours reverse-engineering Sketch.app in order to figure out how it works internally so I can do the impossible possible.

As I mentioned above, I prefer building Sketch plugins with the native toolchain: Objective–C (or Swift) and Cocoa. This empowers me to create any UI I need without struggling with CocoaScript’s poor (read, nonexistent) xib/storyboards support and general luck of important features. I also like types, so anything JavaScript-ish is not what I’m comfortable working with on any non-trivial project.

Here’s a few of publicly available Sketch plugins I built recently:

Sympli States 7 Columns Calendar Creator
Symbol Navigator soon! Your project here

By the way, States is open–source. I heard that some internal parts of Auto Layout for Sketch were based on its code ✨

I learned a ton from the community so it feels great to be able to give something back by sharing my knowledge and experience with others!

Reverse–Engineering & System Internals

A few years ago I was very curious about the low-level stuff: dynamic code injection, dyld tricks, function hooking, etc. I also started to dig into implementations of libraries and third-party applications via reverse-engineering in order to figure out how they work and how I can replicate them, or (in case of system libraries) work around some unexpected behaviour.

Believe it or not, but the stuff I learned by doing all of that actually helps me almost every day. Especially when working on Sketch plugins where I need to know exactly which internal Sketch APIs to use and how.

I have a plenty of low-level libraries and research projects on my GitHub. Among them are:

🎓 Education

I have a bachelor’s degree in Computer Science from Tomsk State University. My thesis was on building a prototype of Ruby virtual machine bytecode decompiler.

💈 Personal

I live in Saint Petersburg, Russia. I love dogs, enjoy long walks and Asian cuisines 🥘.