The Developer Hero returns in this latest installment of the Cosmic Developer Spotlight Series. We sat down with Jon Kalfayan, a developer in Palo Alto, California who helps lead the charge on innovative app development for a product-driven company. Check him out on GitHub, and enjoy the Q/A.
1. How long have you been building software?
I've loved tinkering with computers my whole life, but it's only been about 6 years since my first "Hello World". At first I dabbled in a bit of iOS and frontend development, but since finishing my undergraduate degree in 2015 I've been doing a lot of Java backend development.
2. What is your preferred development stack?
IntelliJ is life, or at least it's where I live most of the time. It had a bit of a learning curve to start but now I'm not sure how I ever relied on emacs for Java projects in school! In the terminal, I prefer zsh (with oh-my-zsh) due to all the cool integrated shortcuts and commands. I mostly use git from the terminal and have a slew of aliases to diff, commit, rebase, and accomplish other things. For my bash/python scripting needs, I usually hop in Vim or Sublime Text. Also I've recently been converted from vagrant to docker for my test environment setup. Been loving docker, and am curious to explore docker-compose and docker-swarm for some more complicated environment setups.
3. Can you talk a little about why you chose Cosmic as your CMS and how it fits into your development process?
Being mostly a java infrastructure developer, it was a bit daunting to step into the world of JS and web development. I've had the desire to create my own blog for a fairly long time, but one of my concerns was with how I could reasonably manage content for it. Cosmic fit the bill perfectly, and let me focus my time on learning the basics of React and Nodejs. Leveraging the Cosmic API was a breeze and I love the out-of-the-box management tools. It made adding and editing my blog posts stress free, allowing me to focus on the content and design of the site itself. I feel like I've barely scratched the surface with what Cosmic has to offer, but I'm excited to learn and use it more!
4. What past projects are you most proud of and why?
A project I was really happy to contribute to was the open source Instant Answers portion of DuckDuckGo. It's a search engine that is ad-free and has a very welcoming open source community. It was surprisingly straightforward to dive into the code base and contribute simple PRs. Eventually, my Perl chops improved and I was improving and maintaining more complicated Instant Answers. All in all, it was refreshing to find an open source project with an encouraging community for new contributors.
Also, learning React along with Cosmic to make a blog has been awesome! Despite Java and React being VERY different tools, many of the good practices of quality Java code have strong parallels with good React development. For example, the importance of separating a component’s state from its business logic. I definitely feel like understanding multiple development stacks is beneficial for any software developer.
5. What are some technologies you are excited about that you are using today, or want to learn more about?
Recently, integrating much of the new Java 8 APIs into existing code has been fun. The streams API lets you more declaratively code solutions to problems, rather than the classic imperative Java style. I'm impressed the work done by the Java community to add new features, all while still maintaining backwards compatibility. Also very excited to learn more about web development in general, especially in regard to my web design skills which can definitely use some work :) As a side interest, I've recently begun tinkering with a raspberry pi. The end goal is to set it up to programmatically play video games, maybe with some fancy AI logic? Cause come on that'd be pretty cool!
Cosmic is an API-first cloud-based content management platform that makes it easy to manage applications and content. If you have questions about the Cosmic API, please reach out to us on Twitter or join the community on Slack.