🤝 Sponsor
LEX - Diversify your portfolio with commercial real estate
LEX has created a new way to invest in real estate.
LEX turns individual buildings into public stocks via IPO. Now you can invest, trade, and manage your own portfolio of high-quality commercial real estate.
Any US investor can open a LEX account, browse assets, and buy shares of individual buildings.
LEX opens up direct and tax advantaged ownership in an asset class that has previously been inaccessible to most investors.
Explore LEX’s live assets in New York City and upcoming IPO in Seattle.
Sign up for free here and get a $50 bonus when you deposit at least $500.
🏗️ Projects
Huginn
Huginn is a system for building agents that perform automated tasks for you online. They can read the web, watch for events, and take actions on your behalf.
language: Ruby, stars: 35175, forks: 3239, issues: 524, last commit: January 23, 2022
repo: github.com/huginn/huginn
hexopress
Write a blog from Google Docs! HexoPress is a web layer that authenticates users with Google, takes their posts from Google drive, generates a static blog out of it, and serves them at a URL.
language: Python, stars: 194, forks: 10, issues: 4, last commit: May 09, 2021
repo: github.com/joelewis/hexopress site: hexo.press/
Segment for Swift Apps
The hassle-free way to add Segment analytics to your Swift app (iOS/tvOS/watchOS/macOS/Linux).
language: Swift, stars: 37, forks: 15, issues: 1, last commit: 19 March 2022
repo: github.com/segmentio/analytics-swift
🎤 Interview With Cody of Segment
Hey Cody! Thanks for joining us! Let’s start with your background. Where have you worked in the past, where are you from, how did you learn to program, what languages or frameworks do you like?
I grew up on a farm racing motorcycles. I sold a bike when I was thirteen to buy my first Mac (Performa 630cd). My parents saw a Symantec Think C book at Goodwill and got it for me, and that got me into Mac programming. When the iPhone SDK beta came out, I dropped what I was doing and jumped feet first.
As far as iOS languages and frameworks, I’m still a sucker for Objective-C++. I like working with manual memory, and getting dirty. With that said, Swift is amazing and I love so many of the features, especially around type safety. My favorite framework is still Quartz / Core Graphics.
I have worked for a lot of great places: Disney, Walmart Labs, Aruba Networks, Nike, GE Security. Each place I’ve been surrounded by amazing talent and learned so much.
Who or what are your biggest influences as a developer?
I have many influences. Dan Parks Sydow is my first programming hero. He was able to get an idiot teenager like myself into Mac Toolbox programming with his books. They were well guided to only have those as reference.
Aaron Hillegass and all he’s done for the Apple world and beyond.
Jim Rodden also had a huge impact on my career. He was the first rockstar I got to work with, and learned so much about architecture and scaling projects for large teams. He taught me sometimes you have to do some extra work beyond the scope to make others lives better in the end.
Brandon Sneed has taught me a lot about psychology and building for the future as well. It has been a dream to design and build this library with him.
In the end, there are too many influences to mention. Everyone I have worked with I have tried to learn from and become better as a result.
What's an opinion you have that most people don't agree with?
There are a lot of engineers out there that really hone in on one architecture. In my opinion, almost all architectures or development patterns have a place and it really depends on the project. A large project involving human lives should be treated much differently than a logging application. I love to get into a project and find the best approach after gathering details instead of forcing something that may not fit.
What’s your most controversial programming opinion?
I don’t really have strong opinions in most senses since we have a toolbox of knowledge to apply in various scenarios. With that said, I like verbose programming, using words instead of letters for IVARs or functions.
What is your favorite software tool?
In an effort to date myself, CodeWarrior was pretty badass back in the day. But in modern times I think Paw has been extremely useful for documenting and debugging RESTful services. Charles Proxy gets an honorable mention as well.
If you could dictate that everyone in the world should read one book, what would it be?
The Design of Everyday Things by Don Norman. This book really highlights how we approach interacting with objects, and that includes the digital world.
If you could teach every 12 year old in the world one thing, what would it be and why?
How to solve a jigsaw puzzle upside down. So they can learn how to think outside the box and use some critical thinking.
If I gave you $100 million to invest in one thing right now, where would you put it?
I’d put it into elementary education, specifically for lower-class school districts and for getting girls excited about STEM at an earlier stage.
What are you currently learning?
Physics, Unity, and SwiftUI.
What resources are you using to learn these?
Physics from school, Unity from the Unity Game Development Cookbook and I've really liked a book called "Thinking in SwiftUI" for SwiftUI.
What have you been listening to lately?
I love writing code while jamming to punk rock. Escape The Zoo and Authority Zero have been at the top of my list lately. I am a HUGE Strung Out fan so usually something from that family.
How do you separate good project ideas from bad ones?
Will it improve lives? This includes developers on the project or the people outside it may affect. If so, it’s a good one. If I can’t definitively say that, it’s probably a weaker idea.
Why was the Segment Swift analytics project started?
We had analytics-ios and analytics-android libraries that were pushing eight years old. They really didn’t get the attention they needed over the years and weren’t built for the new world. Specifically, adding various platform support and maintenance were difficult paths.
When we started, we wanted to simplify the codebase for easily adding features down the road that would be unimagined at the time, as well as keep it super stable and robust.
In addition, we wanted to mitigate potential mistakes our fans would write. We saw a great opportunity for type safety and API simplification.
Who, or what was the biggest inspiration for the Segment Swift analytics project?
We had to maintain the older libraries and saw how tough adding more platform support was going to be. In the end, we wanted to be as non intrusive as possible. That meant being respectful for resources like CPU, battery, and memory as well as improving performance. We were able to improve 15x speed while utilizing 4x fewer resources.
Wow! What were you using to measure this improvement?
We used instruments to compare on an iPhone 12.
Are there any overarching goals of the Segment Swift analytics project that drive design or implementation? If so, what trade-offs have been made in the Segment Swift analytics project as a consequence of these goals?
As mentioned we wanted to be able to extend functionality later without touching our core codebase. We came up with a pretty badass plug-in system that allows us to add just about anything. We have various types of plugin interfaces that our fans can implement as well to extend their own functionality. This allows the ability to extend our public API and inject functionality that we couldn’t ever dream of.
I wouldn’t say it is a trade-off, but the code is more componentized this way, which makes testing much easier. I’d say it is a bit out-of-the-box thinking but we found it worked for our analytics-kotlin rewrite and some other platforms I can’t mention.
What is the most challenging problem that’s been solved in the Segment Swift analytics project, so far?
How to make everyone happy.
Who are some of the key stakeholders you're having trouble managing?
We have partners (Adobe, Mixpanel, Braze, etc). Then we have the engineers in the end, that implement in their app, making sure the API is easy and as flexible as possible while considering most edge cases. For instance, some want a singleton, others want multiple instances. We also have our own stakeholders within the company looking for adoption statistics and flexibility from the sales side.
Are there any competitors or projects similar to the Segment Swift analytics project?
Not really. The greatest thing about Segment is we are partnered with some of the greatest integrations out there. We are a partner, not a competitor.
What was the most surprising thing you learned while working on the Segment Swift analytics project?
My degree is in Software Engineering. I love approaching a problem statement and understanding it then using software design strategies such as class diagrams to get my ideas out there to see if the flow works. I have been doing it for years and this is one of our grandest ideas so far. It was really cool getting something so complicated on paper then watching it come to life after inception.
What is your typical approach to debugging issues filed in the Segment Swift analytics project repo?
Pretty typical, but we’ll try and reproduce it first. If not, we go back to the reporter and find out what we’re missing. This is actually my favorite part, I love working with other engineers.
What is the release process like for the Segment Swift analytics project?
We are using Swift Package manager. We had CocoaPods + Carthage + SPM in the previous library and it was a headache. For now we just post a new version on github, and if they allow patches or minor updates it should update via Xcode or package.swift. We release weekly if we have improvements.
Is the Segment Swift analytics project intended to eventually be monetized if it isn’t monetized already?
The library itself isn’t monetized but brings in big business that wouldn’t exist without it. Over half of our total client traffic is through mobile.
Do you think any of your projects do more harm than good?
We were one of the first to get in front of the IDFA issue. We are always trying to find ways to protect and keep data from identifying, helping individuals feel safe.
What is the best way for a new developer to contribute to the Segment Swift analytics project?
Fork it and add a plugin! We have some cool plugins, but check out our utility plugins such as UIKitScreenTrackable. Have a cool idea to add functionality? We’d love to hear from you.
Are there any other projects besides the Segment Swift analytics project that you’re working on?
There are, check out Segment Sovran: https://github.com/segmentio/Sovran-swift. This is the heart of our subscriber/event handling.
Do you have any other project ideas that you haven’t started?
Definitely, and we’re very proud of our ideas… expect big things. segment.com/newsroom/
Where do you see software development heading next?
This is a tough question. This has been one of the biggest droughts I have seen in my career when it comes to innovation. Since the smartphone was invented there really hasn’t been anything groundbreaking. I don't think we are quite there yet with ML / AI. AR / VR is nichey. Overall, I think the biggest problems that need attention are education, energy, and healthcare. I have a feeling we are going to see major advances in those segments soon.
Where do you see open-source heading next?
I believe more companies are going to utilize open source projects as their core foundations: for instance, Apple utilizing WebKit or Microsoft and OpenJDK. It takes a lot of the mundane work away from the corporations but gives them a chance to give back as well.
Want to join the conversation about one of the projects featured this week? Drop a comment, or see what others are saying!
Interested in sponsoring the newsletter or know of any cool projects or interesting developers you want us to interview? Reach out at console.substack@gmail.com or mention us @ConsoleWeekly!
Very impressive interview. I know nothing abut software coding but it sounds cutting edge. Just the opinion of your Physics Professor TOBY