THE OMNI SHOW

Connect with the amazing community surrounding the Omni Group’s award-winning products.

RSS
157
May 12, 2025, 6 a.m.
How Daniel Von Fange Uses OmniGraffle

Daniel Von Fange, senior engineer at Origin Protocol, has spent about a quarter century chasing “perfect code.”   His journey spans industrial robotics, firmware for embedded systems, and today’s high-stakes world of crypto-currency smart contracts.

Show Notes:

In this wide-ranging conversation with host Andrew J. Mason, Daniel reveals the visualization workflow—in OmniGraffle—that helps him spot hidden bugs, simplify complex systems, and save millions in potential exploitations.



Some other people, places, and things mentioned:

Transcript:

Daniel Von Fange: I am old and so I've been using OmniGraffle since before there was Facebook, before there was Reddit, and when Google was new, somewhere around the 2000s, so not too long after OmniGraffle was first released. And so it's just always been my go-to tool for doodling on the computer or thinking about things outside of paper.

Andrew J. Mason: You're listening to the Omni Show where we connect with the amazing community surrounding the Omni Group's award-winning products. My name's Andrew J. Mason, and today we learned how Daniel Von Fange uses OmniGraffle. Well, welcome everybody to this episode of the Omni Show. My name is Andrew J. Mason, and today we're so honored to be able to have Daniel with us. Daniel's the senior engineer at Origin Protocol, something that I'm going to actually let him take away in terms of how to explain who he is and what he does. It's really kind of one of my first starter questions anyway, and it is beyond me at a level of nerdiness that I respect, but I just can't touch. So Daniel, welcome. So grateful to have you with us and I'd love it if you could start off by just telling us a little bit more about who you are and what you get to do day-to-day.

Daniel Von Fange: Well, I've basically been on an entire career chase of writing perfect code and perfection. I started out freelancing back in the nineties writing code, and I realized that as I was writing code more and more, that I was spending a greater and greater percentage of my time working on things that I'd already written, fixing bugs or adapting them to changing circumstances. And I realized, wow, I better get good at this or this is going to be the rest of my life right here. And so then I ended up doing some industrial programming, which involved many tons of force, the power of motorcycle and sharp metal bits inside the same space that was alternately occupied by human hands. And so that is just terrifying. How do you write something that's absolutely perfect because the consequences are really, really bad? Then I moved on to writing embedded programming, basically like C code running on ARM chips that gets installed in ceilings. And so there, not only do you not want bugs, but you don't have a software update. The software update is people 60 foot high on lifts all over the country. And so then same thing, how can you write something complicated and have no bugs? And so now I'm working on cryptocurrency software and both the writing it correctly and verifying it. And again, you have the same thing where a bug could be many hundreds of millions of dollars. And so the quest is how do you perfectly understand something, think about it, reason about it, and then verify that it's exactly right.

Andrew J. Mason: So this is really exciting to me because when I read the term, "distributed systems engineer" I'm like, that sounds impressive, but who knows what that actually ... Honestly how it plays out today, day-to-day. But when you talk about, Hey, this is mission-critical stuff where if we don't get it right, then there are severe consequences to it, what attracted you to that direction of a career path? Some people program Flappy Bird and other people program stuff like this, so it's like, what about this, is it hey, I really want to make a difference in people's lives? What shows up for you when you're saying this is the type and style of software that I want to make?

Daniel Von Fange: I think it's just come out of necessity. I had a problem, I needed to solve it one step at a time and just kind of evolved that way. But I love hard problems and I love things that you have to think about for a couple of days in order to get right. For weeks would be a pain, but if it requires deep thought, that's kind of where I want to be operating.

Andrew J. Mason: And so make the shift with me. Talk to me about how you found out about OmniGraffle and Omni Group. The way I came across you, just for context for everybody else, was I was searching through X and Twitter and saw this honestly amazingly beautiful, but also ridiculously complex data visualization that you had created, but it was layered and styled in such a way that I'm like, okay, it's actually pretty clear the levels of data that he's trying to communicate. I didn't understand all of what I was reading, but in terms of the grouping of data and the visualization of it, I'm like, this is actually really well thought out. So where did you come across this software and Omni Group?

Daniel Von Fange: I am old, and so I've been using OmniGraffle since before there was Facebook, before there was Reddit, and when Google was new, somewhere around the 2000s so not too long after OmniGraffle was first released. And so it's just always been my go-to tool for doodling on the computer or thinking about things outside of paper. Paper is still number one, but OmniGraffle's right up there. And I've always enjoyed Omni Groups relentless Mac-nativeness and focus on things being beautiful and working just right. It's a very rare set of software that nails that as well as the Omni tools do.

Andrew J. Mason: Talk to me about the actual diagram that you posted on X. Is there any way that you can kind of put some color and context around what it was I was actually looking at?

Daniel Von Fange: Yes. I actually probably have that one in particular pulled up, that I can pull up for you.

Andrew J. Mason: Yeah, so for those of us that are watching on the video version of this, we're actually going to go ahead and take a look at this as well.

Daniel Von Fange: So this is probably the one you saw?

Andrew J. Mason: Yes.

Daniel Von Fange: And so one of the things that I use OmniGraffle for is understanding things. And one of the great benefits for me in that OmniGraffle does is it allows me to take important dot files, and dot files are basically plain text files that just have links between things, so 1A points to B, and because it's just a plain text file full of names of things and links between them, I can have any piece of anything I have, I can generate a script to spit out something that points things to things, and so in this case, this is some code we're going to use. And so I wanted to understand how it worked and every piece inside the code. So I wrote some code that basically took a list of all the links of this piece of code, [inaudible 00:06:24] this piece of code and had it spit out. And then in OmniGraffle I moved stuff around, changed colors based on what kind of thing it was and tried to find the essence of how it worked. So that's basically, this is a smart contract that's a lending platform and people can put money in it and borrow money from it and get their money back. And then there's some admin functions down here. And then these are internal functions for multiplying and dividing because that's hard in crypto. And so that's basically what it is now. It came from, it usually starts out a bit simpler. So when I first import something, code will look more like this. This is with just a little bit of arrows drawn. And so this is something I use in an internal process to understand the code and then try to simplify it. When it's our own code, we want to end up with simple code. So this is some of our own code. And what I'm looking at here is how can this be more resistant to errors, simpler, not have so many layers? And so then this is a tool that I use on the way, and so this is what this same code ended up looking like after we ended up working through and simplifying it. But it does the same stuff over here, but it gets cleaner. So that's really a way I use this.

Andrew J. Mason: Yeah, this is brilliant. What advice do you have to folks, and this wasn't on my list so if you're like, "I don't know," then that's fine too, but when you're building out something like this, kind of the overall workflow, at least for this particular one that I kind of heard come across was you have a mishmash of a lot of data that needs to be made sense of, you whittle it down to a certain form or essence and then you start to see where are the patterns or categories that kind of start to emerge that I can group visually in different ways. What advice do you have to somebody that, at least for me, it feels like a superpower to be able to go past two levels of visualization. When I see anything beyond one level and it's just like a sequential flow, my brain just starts to blow a fuse. But for anybody that really wants to dip their toes into, "Hey, these are complex systems, it is critical that we have an overall picture of how this whole thing works, therefore it does all need to occur in the same image," what advice do you have for somebody that is looking to move in that more elegant but complex direction?

Daniel Von Fange: Well, to me, one of the main reasons why I use OmniGraffle is because I'm a spatial thinker, and so this allows me to move stuff, group-related things together. And so you can just start with this big pile of stuff and just start moving things that are related together. And as you're doing that, you're kind of understanding more of the structure of it and then you can understand the flow between things or colorize to help with that as well. But it's really just for me a lot about unlocking just spatial reasoning.

Andrew J. Mason: And what advice might you have for somebody that's ... They consider themselves to be in that beginner space? So maybe they're not ready to tackle something that's quite that complex, but they know they need to at least find a way secondary to possibly, like you mentioned as your first choice, pen and paper scratching this thing out. Any first steps that you're like, hey, if you're looking to really get into this or move in this direction of data visualization, maybe try this first.

Daniel Von Fange: I guess on the understanding side of things first, before going to the data visualization side, on the understanding side of things, your brain has a lot more capacity in the unconscious side of your brain than the conscious side of your brain. And so as you're moving things around and as you're playing with stuff, you're building up your unconscious side of your brain's understanding of what's going on, and then you can reason about it much faster, much better, rather than just line-by-line thinking about it. So that's usually kind of step one is playing with data, playing with things just so that you load up your brain so that it can actually think and process really well on it. On the visualization side, I think it's important that you have a hierarchy. Some things are more important than other things, and so if you bring that out clearly in what you're drawing, that really helps people understand. So if we are, again, thinking back to that previous chart, some stuff's more important, some stuff's like the little mass stuff, is grayed out and off to the sides and you can kind of see the main flow of it.

Andrew J. Mason: Give yourself the opportunity to go ahead and patch yourself on the back in terms of what are some other things that you have visualized? It doesn't necessarily have to be with OmniFocus, but categorically, what are other areas that are go-to for you when it comes to data visualization?

Daniel Von Fange: I use a lot of Python and Pandas to make charts, scatter charts and stuff because I'll dump some large system into it, play with it, and again, output a tremendous amount of charts or graphs and stuff. I don't have any of those I could show right now, but that's actually probably my number one tool with OmniGraffle being number two. And it just really helps to be able to, again, to play with things so that you can reason, again, same principles of making things have a hierarchy.

Andrew J. Mason: This is super helpful for me because the data's there and to some level you're just kind of remixing it, mishing it and mashing it together in a way that makes sense for somebody, or synthesizing it through your filter in a way that, here's what I would like for you to focus on if you're looking at this. Here's meaning that I want to transfer from this larger pool of information to something that's a little bit more focused, and using visualizations to do that. And you mentioned kind of this hierarchy of importance that starts to emerge for somebody. Is this more of a gut level feeling for you as you're looking through this and you're like, okay, this is probably something we really want us to highlight a little bit more in terms of visually, whether it's bolding it or putting it in a different color, making it bigger or highlighting it, or is there kind of a method to that madness there as well?

Daniel Von Fange: Well, I'm pretty confident that what I mark as important is important. I guess it's usually either the core processes or the things that users interact with, and then how that flows into the system. The less somebody's interacting with, probably the more off the path it is. But going back to what you were saying at the start about creating the visualizations and stuff, they often start as just me playing with things to understand things, and then almost inevitably that turns into me wanting to communicate something to other people on my team or other people. The Morpho chart that you saw, there was a very cleaned up version to post on Twitter, but that's where it kind of goes from me understanding to me working to put the final polishing communication into it. But again, taking it up that next level also results in me understanding something more because the more time you spend on something, the more you understand it. And so bringing it up a level to communicate does serve as yet another layer of understanding. But yeah, basically almost everything I draw, everything I make, ends up being communicated in some way.

Andrew J. Mason: So for something, there is an ultimate usable final purpose for it. Okay.

Daniel Von Fange: Yeah, I'm trying to understand something in order to make a decision about something, and oftentimes that's something that other people need to understand too, and so then I can bring that over to them as well.

Andrew J. Mason: This is so surface level. I apologize for how I'm framing this, but hopefully you can understand and appreciate the spirit with which it's asked. I've heard you mention play with the data, show up twice in our conversation thus far. Do you ever jump into data just like take a swim in the data pool for a little bit with no necessarily particular reason other than just to discover what patterns or things show up and emerge for you? There's this concept that I'm fascinated by from Charles Duhigg called "forced dis fluency," and I'm not sure if he's even the person that came up with it, but he's the first one that I've interacted with for it, where there's so much data we go through every single, day all the time, and being able to slow down and just say, "You know what? Even though it's not going to make me as productive or efficient, I'm just going to sit here and pour through the data in a way that makes less sense in terms of efficiency, but maybe more sense in terms of getting to know it better." Is there an element of that for you, or usually is there something that's driving you, "You know what, I need to take a look at that log. I need to take a look at that data," that's pulling you into the data in the first place?

Daniel Von Fange: I mean, sometimes I'll do stuff for fun, but for work stuff, there's usually a overall problem I'm trying to solve, and that's driving it, but that does not minute-by-minute drive understanding the data. So there's still a giant play phase where I'm not sure what I'm going to find and I'm just running around messing with stuff to look and see what's there and understand even what questions should really be asked.

Andrew J. Mason: Just from my understanding of coding and coders and people who do, there's a lot of fast motion, fast motion, fast motion, and then here and then zoom in, zoom in, zoom in, and then accuracy, in terms of how to arrive at what you're looking to arrive at. And you don't always know where that pinpoint's going to land, but there's a sense in which I don't know necessarily where it's going to be or what it's going to look like, but this is it. This is the thing. And once I find it I know. And then it kind of unlocks and it's almost like the linchpin that kind of lets everything else flow for that.

Daniel Von Fange: Yes.

Andrew J. Mason: Okay. One of the first places is that I came across you and your work was, I think it was a DeFi summit, and you were breaking down, I believe, forgive me I'm going to butcher this, but smart contracts and how to tell whether they've been hacked in time and how to break that down and how that works and stuff.

Daniel Von Fange: Yes.

Andrew J. Mason: When you talk about perfect data or perfect things executing perfectly, is there anything that gives you an inkling or an idea that what you're looking at is imperfect? Like, "Oh man, I'm looking through this and something is wrong here. This isn't necessarily ..." Is it comparing this pattern versus the other patterns and there's a mismatch? Just kind of break me through, talk me through that a little bit.

Daniel Von Fange: Well, in theory, the execution of code is perfect, but a lot of times with code itself, it can be obvious that it's ... Or it can, when you look at it carefully, you can see that it's wrong or that there's some kind of flaw or that it's ugly and ugly often hides flaws. So I actually have another screenshot I can pull up here of one that I actually found a bug in just by looking at it in OmniGraffle. So this is me just noodling around with some code that was complex. Now this I think is the corrected version, but when I made this, one of the red lines wasn't there, and so I could see that, "Hey, we've got all these pairs of things and one of these pairs isn't here." And so then I went and looked further and found that, "Yeah, there's one missing," and then, "Oh wait, this actually makes a bug." That's kind of an example of looking at a picture and seeing a bug. One good thing that visualizations give you is the ability, a little bit of extra power in spotting the hardest to see things, which is seeing the things that aren't there. So when you're looking at something like this, you can see when the pattern is broken or something, whereas when you're reading through the code itself, you might never miss it and many people had.

Andrew J. Mason: I'm with you. Something about spatial allows you to process larger chunks of information than if you were scrolling through thousands of lines of code trying to remember the pattern that was emerging here, and "Oh my gosh, that one didn't have the matching pair that was supposed to show up there."

Daniel Von Fange: Yeah.

Andrew J. Mason: Wow. Daniel, I think this is a fascinating conversation. I'm honestly honored and thrilled that you joined us today. How can folks connect with you? Keep in touch with you?

Daniel Von Fange: Twitter is the number one best way to do that, and that's danielvf on Twitter, and yeah, sometimes I talk about security things. A lot of times I talk about hacks and sometimes I post visualizations of things.

Andrew J. Mason: All I can say is I'm glad your mind is working for the good guys. Awesome. Daniel, thank you so much for joining us [inaudible 00:17:49].

Daniel Von Fange: You're welcome. You have a good one.

Andrew J. Mason: Hey, and thank all of you for listening today too. You can find us on Mastodon, at the Omni Show, at omnigroup.com. You can also find out everything that's happening with the Omni Group at omnigroup.com/blog.