API: Top-Down? Bottom-Up? Somewhere in the Middle?

A Quick Brain-Dump on API Desgin I'll keep this one pretty brief as I haven't totally nailed down my thoughts on this. I still thought it was worth a quick little post: When you're creating a brand new API to expose some functionality of a system, should you design it with a strong focus on how the internals work? Should you ignore how internals work and make it as easy to consume as possible? Or is there an obvious balance? I find myself trying to answer this question without ever explicitly asking it. Any time I'm looking to extend or connect systems, this is likely to come up. Most Recently... Most recently I started trying to look at creating an API over AMQP to connect my game back-end to a Unity 3D front-end. I had been developing the back-end for…

0 Comments

Article Roundup: Burn Out

Burn Out I had a lot of really positive feedback from my friends and family after writing about my experiences of going through burn out. If you haven't read the post, check it out here. I've done some article summaries on the topic of burn out before, but I feel like it's probably a good topic to bring up again in light of my recent post. For a bit of background, burn out is a process that can occur to an individual that's dedicating too much time to a particular activity. It leads to an imbalance in terms of what his or her time is put towards and can result in a person feeling depressed without any energy. Wikipedia does a pretty good job of summarizing it in one quick sentence: Burnout is a psychological term that refers to long-term…

0 Comments

Burn Out

Disclaimer I wanted to write this post to share my honest and personal experiences with burn out in the software and startup scene. I'm hoping that my experiences with getting to a stage of burn out can help someone identify if they're going through the same thing. Hopefully someone will be able to take preventative actions before things get too serious, like I've been able to do. I'd also like to point out that I absolutely love my job (you'll be reminded of that in my post) so my experience might be biased in some ways because of that. If I didn't love what I do, I'd be finding another job where I did. What is Burn Out? In my earlier days at the company I work for, I remember my HR manager talking to me about burning out. It's…

2 Comments

One on One Evolution

Background I'm a "middle manager" where I work, but that means a whole bunch of things. My everyday tasks primarily consist of programming, but I do a bunch of work to interface with other departments and teams, and I play a role in managing people on... well, the "people" side of things. For the latter part, I refer to that as people leadership. I think it's pretty easy to look at some of the aspects of people leadership and dismiss them as "fluffy" or needless... I consider myself a logical/technical thinker, so I have that frame of mind sometimes. However, I do see the value in actually being able to support my team so that they can operate at the best of their abilities. I try to find ways to do that without it seeming to them like I'm doing "fluffy leadership things",…

0 Comments

ProjectXyz: Enforcing Interfaces (Part 2)

Enforcing Interfaces This is my second installment of the series related to my small side project that I started. I mentioned in the first post that one of the things I wanted to try out with this project is coding by interfaces. There's an article over at CodeProject that I once read (I'm struggling to dig it up now, arrrrrghh) that really gave me a different perspective about using interfaces when I program. Ever since then I've been a changed man. Seriously. The main message behind the article was along the lines of: Have your classes implement your interface, and to be certain nobody is going to come by and muck around with your class's API, make sure they can't knowingly make an instance of the class. One of the easiest ways to do this (and bear with me here, I'm…

2 Comments

Quality & Agility in Software: Session With Paul Carvalho

Quality And Agility Last week, at Magnet Forensics we were fortunate enough to have a very talented quality expert come in and talk to us. Paul Carvalho was able to bring a great deal of information, perspective, and activities to our development team that truly proved to be an eye opener. We were all extremely excited to get to sit down and hear what Paul had to say. There's lots to read about Paul over at his STAQS site, but I'll re-iterate some of it here. Paul has held many roles when it comes to software development. He's been a developer, a manager, a tech support person, and part of quality assurance. He certainly has a full perspective on software development. Coming from a science background, he does a great job of explaining why things are a certain way or why…

0 Comments

Lead by Example and Emulate Ideal

Background Leadership has become a big focus for me as I start to grow more into my role at Magnet Forensics. As a developer, I feel like it's easy to gain basic knowledge and experience with unfamiliar programming territory just by surfing The Internet. With leadership, that's certainly not the case for me. What's my most recent realization? Lead by example if you expect anyone to take you seriously. As a young leader (and with little professional experience in a leadership role), I think this becomes especially important. When you lead by example, you're showing others that you're really behind what you're preaching. Lead by Example: A Simple How-to Maybe it's obvious, but I really don't think I'm over simplifying my message when I say it. To lead by example, you just do what you expect other people to do.…

1 Comment

v6.2 of IEF from Magnet Forensics! – Weekly Article Dump

v6.2 Release: Mobile Forensics Upgrade I like to be able to use these weekly article dumps for little summaries of what's going on in my work life, and I think this is a perfect opportunity to acknowledge our latest product update at Magnet Forensics. We just pushed out v6.2 of Internet Evidence Finder and we're incredibly proud of the work we've done. Like any release we have, we pour our hearts into making sure it's a few big steps forward. We've done our best to listen to customers and work with them to address any bugs, but we're always trying to push the boundaries in our features. Some of the new offerings in v6.2 of Internet Evidence Finder include: Dynamic App Finder: We now offer a solution for recovering mobile chat applications that we may not have otherwise supported. This…

1 Comment

Leadership Reads – Weekly Article Dump

Great Leadership Reads Here's a collection of articles I've shared over the past week on social media outlets. There's a lot of great leadership reads this time around! If You Don't Treat Your Interns Right, You are Mean...and Stupid: This is a great post by Nancy Lublin that talks about something many full-time people share a common (and usually lousy) perspective on: interns. In my opinion, if you aren't going to treat your interns well, you shouldn't be hiring them. One key take away point from the article is ensuring that you treat your internship programs as something real and meaningful. Now, as a computer engineering graduate from the University of Waterloo and from being part of the leadership staff at Magnet Forensics, I've seen both sides of the story. Companies should treat their interns well, but interns should also realize companies…

1 Comment

API: Don’t Forget About The Non-Public API!

Background From an object oriented programming perspective, an application programming interface (API) is often referred to as the way other developers can interact with the public members of your class(es) and interface(s). Of course, API can be used to describe how one interacts with a web service (or other types of services), but for this discussion I'm limiting the scope to that of interfaces and classes. Limiting the definition of API to public members (or the equivalent of C#'s "public" in other languages) is omitting one huge part of what it encompasses. The purpose of this post is to clarify, in my opinion, why I think forgetting about the non-public API can lead to bad framework and API designs. API And The Audience I've written before about what I think makes a good API, and I had some comments on Code…

4 Comments