For a little while, I’ve been considering the potential impact of generative Artificial Intelligence on various areas of our lives, more recently I’ve had very interesting conversations about applying AI to help the creations of manga/animé. This blurb was writing to help think through the challenges, but why not posting them. Having witnessed the transition from analog to digital, and…
The collaboration problem: overwriting each other changes In traditional online applications, when you make a modification to the state of the object you work on, the change propagates to a central server that holds the “truth”. The server registers the change and sends back a confirmation that the change was indeed applied. The problem happens when Alice and Bob try to update the same database…
Last time I used Windows on my main development machine was sometime in the early 2000s. Over the years, I had several side Windows machines (usually because I needed Visual Studio) but I was never really serious about using a PC as my main dev machine. Things have changed a lot in almost 20 years, and especially recently. Apple is moving to ARM and to everybody’s shock the Windows team has…
We’re approaching the first anniversary of when I stepped down from my operating role at Splice. The company kept on growing rapidly and be impactful, I am very proud of what the team is doing to change things from within the music industry. I had a blast during my time off: I worked on a great project with Grimes which we started previewing but had to put on hold because of covid-19.
This week, Chang Xu and I are running our very first Braintrust LA event. While the event is private and we won’t talk about who’s presenting and who’s attending, I wanted to share with you a note we wrote to the attendees. The idea of organizing Braintrust LA came to us when we discussed what we could do to help the LA ecosystem. Between the two of us, Chang as a VC and Matt as…
Security, Privacy and Trust will be major themes in 2020. Looking at this arm report, 30% of surveyed folks were more concerned in 2019 over data privacy and security than they were in 2018. Add the elections, legal actions against Google & Facebook, Apple and others pushing for less tracking and safer data and we are going to see a huge need to push compute power to the edge (on device).
Chances are you should instead be investing in data engineering so you can take a deep look at your properly labeled and processed data instead of throwing hundreds of thousands of dollars in Machine Learning (ML). ML isn’t magical, you need a lot of clean, labeled data. Then you need a specific use case to design and deploy a great model that can help your product. Most startups don’t…
Looking back at the last 10 years, two specific trends are very clear to me, here they are highlighted by Fred Wilson: “The massive experiment in using capital as a moat to build startups into sustainable businesses has now played out and we can call it a failure for the most part.” “The big four tech companies own monopolies or duopolies in their core markets and are using the…
In a lot of ways, I owe my professional career to music. If it wasn’t for music, I wouldn’t have learned about samplers, sequencers, MIDI and the crazy world of synthesizers. Those machines led me to computers and computer music which led me to both sound engineering and reverse engineering (RE). RE led me to a social community of hackers with strong values caring about education and…
In the previous article, I explained what data we needed to generate waveforms and showed how to use a BBC Free Open Source Software to generate that data. In this article, I will show how to draw a waveform using Google’s Flutter UI toolkit for mobile, desktop and web. Here is the end result will are going for: You can play with the web version of the UI here, thanks to Flutter web!
Audio visualization is a fascinating topic. We often take it for granted, but sound isn’t visible and only exists over time. In the case of a video stream, you can pick a frame/image and you have a snapshot of the video at this specific time. But you can’t do that with sound. Sound is the oscillation/vibration of molecules over time, it’s by definition a sensation and therefore…
Here’s a very opinionated tour of some of the various technologies available to individuals and companies. This is far from a complete list and the comments are based on my personal opinions which might not match your expectations, values or even experience. This first part will focus on programming languages. Programming languages Safe bets and my preferred languages Go https://golang.org Free…
Originally posted on Medium Impactful innovation is what Research & Development (R&D) teams around the world are working hard towards. Yet, there don’t seem to be blueprints that are reused and trusted across companies. On one hand, we get very little visibility into this process and on the other, it seems very challenging to define and measure success. I love challenges, the harder the better.…
I’ve now been the co-founder and CTO of Splice for almost 6 years. It’s officially the longest place I ever worked at. It’s funny because it does feel like we just started yesterday. I decided to write down some unedited thoughts and share them here. I remembered thinking that I’d love to know what it was really like to be a founder, but that’s not something I could find on the internet.
I’ve been the CTO of Splice for more than 5 years now, from early prototypes to today’s 100+ employees. When Steve and I started Splice, I never thought we would get this big. What I didn’t know was that one the challenges of being a CTO post product-market fit would be to build internal and external confidence around the engineering group. I’m not talking about making sure we use the right…
I’ve seen and been in Research & Development (R&D) teams in the past. Sadly I can’t say any of these teams have been successful making a significant impact on the directions company they were serving took. R&D is often mentioned in the context of the military (in 2015, the US Army’s research, development, testing and evaluation (RDT&E), coupled with procurement accounts, made up 18 percent of the…
I don’t really do technical interviews anymore, I am lucky to be able to rely on a great VP of engineering and team that take care of the process. I still meet with the candidates but I do that more as a way for us to get to know each other and to answer their questions from both a CTO and founder. I took some time to write down my thought process when interviewing candidates.
The primary job of a CTO is to leverage technology to empower the business and the team. Sometimes that means making boring but safe choices, sometimes that means more risky or controversial choices. I am starting a new series to discuss some of the bets we are making at Splice and the thinking behind those choices. Realizing that some of our company’s early assumptions around our user base might…
I’ve always been fascinated by systems, the way they work, the way you can put them apart and build them back up. Part of this fascination is my insatiable desire to always be learning but also a challenge I like I give myself: can we do better? This fascination is what drove me most of my career. But my focus has usually be on the technology side, not really the human side.
Last Thursday I took a day off and jumped on a bus headed to California City Correctional Center. I was part of a group of investors and entrepreneurs participating in a business pitch competition and graduation ceremony for aspiring entrepreneurs — who also happened to be incarcerated. These ninety-four men had worked for months, taking classes, preparing business plans, and polishing pitches as…
In my previous post, I discussed the challenges of growing the engineering team and defining the roles of a CTO vs VP of engineering. A common question that came up is: when is a good time to start looking for a VP of engineering. I am afraid that there isn’t a simple answer but more a mix of a few things: Personality & skills of the engineering lead Business needs Team size Company finances…
Over the last 3 years I built our startup taking on multiple roles, engineer + VP of engineering + CTO, I’m finally transitioning to being a full time CTO. Funny enough, I kind of always disliked the CTO title. This is probably because this is one of the most poorly defined titles out there. It doesn’t seem to mean anything, or maybe it just means a lot of different things to a lot of different…
Go is a modern programming language created at Google. It’s designed to be a very rational (read non-fancy), simple, and fast programming language. It’s quickly becoming one of the key new programming languages due to its familiarity, simplicity, scalability, performance, and approach to concurrency. It’s the common language of modern systems solutions (Docker, Kubernetes, CoreOS, Hashicorp…),…
I was invited to take part in this year’s Docker keynote to discuss how we use Docker at Splice and how our two companies share the same philosophy. I wrote a summary blog post of my talk. And you can read the official Docker blog post about the keynote Video
Ever since I started Splice, I’ve been really eager to experiment and adapt our process to be able to be as efficient as possible while still pleasant. Setting up a process that works is hard because it depends on the size of your company, the team members and the leadership style. We tried many things as we grew and lots of these things didn’t stick, however a few did. One of those is…
Through this post and the following ones, I will do my best to provide you with the basic knowledge you need to understand and implement digital audio signal processing. The idea came from a conversation with my friend Chad Fowler who’s a well-known software developer, leader but also a well accomplished musician. Chad was interested in learning the basics of DSP and I can only assume he…
Back in November I was in Paris for dotGo, one of my favorite Golang conferences. I was invited to speak and wanted to share something concrete with the audience, something based on my experience with Go at Splice. Go is designed for simplicity with only one way of doing one thing. That makes preparing talks pretty challenging since a lot has already been said and there is not much more to add.
I chose the beautiful city of Medellin, Colombia to say my final goodbye to the awesome Ruby community. 10 years of being part of a community isn’t nothing and I took time to reflect on my personal experience and discuss the future of the language and its community. Video Slides
Last week, my daughter started Kindergarten. I’m very happy for her, especially because she’s going to an awesome public school. As someone who didn’t grow up in the US, I heard a lot of stories about the American school system but one thing I didn’t know is that kids start so early. My daughter starts at 8:10am! We had to find a way to turn our sleeping-in family members…
I’m very glad to have had the chance to be involved with the very first Go challenge. My challenge is related to something we do at Splice: binary decoding. Read more on the Go Challenge website pattern_1.splice Saved with HW Version: 0.808-alpha Tempo: 120 (0) kick |x---|x---|x---|x---| (1) snare |----|x---|----|x---| (2) clap |----|x-x-|----|----| (3) hh-open |--x-|--x-|x-x-|--x-| (4)…
In September 2014, I gave this talk at Baruco in Barcelona, Spain. The talk focuses on: how session authentication works in Ruby on Rails, the crypto used to protect the data, the security implications and how to share the session with applications written in other languages than Ruby (with an example in Go). To illustrate this pretty dry topic, I told the story of Alice and Bob, two entrepreneurs…
The week of June 23rd was a good week for gophers in San Francisco. Go was a big part of Google I/O on Wednesday and Thursday, and on Monday Google run a Go SummerFest, a special instance of the GoSF meetup. I gave a talk at Go SummerFest and then later on another one during I/O. For more information about the events, see this blog post from the Go team.
Go aka golang is an amazing language but also a language that is really easy to learn due to its small scope. If you have some coding experience, you will be able to have fully working code in a matter of minutes otherwise you might want to read my free book (WIP). Very much like with many other programming languages, a challenging part of Go is to learn how to write idiomatic code.
I like to read and I have a great community on Twitter so I asked them what they think others and myself should read in 2014. Here is the compiled list of the recommended books. The good news is that most of these books are under $10, so why not picking a couple for the new year? A big thanks to all the people who recommended these books, I’m looking forward to 2014!
I wanted to share sessions between my Rails and Go applications. I wanted to let an authenticated Rails user make JavaScript API calls to an endpoint written in Go. How hard could it be? Since I own both apps, I thought it would be as simple as sharing the secret session key and re-implementing Rails crypto process in Go. It turned out to be a lot more interesting. In a nutshell, here is what I…
I just give a talk at Wicked Good Ruby Conf in Boston. I’m sure the talk will be online soon, but I figured it would be interesting to discuss it a bit further in a blog post. The format was a bit different than usual, I had a 40 minute slot and divided in 2, I made my points for 20 minutes and invited two special guests on stage to discuss the topic.
Over the years many people have asked me the same question: I’m starting this new project, what technology do you think I should use? Categories = [] +++ Update: Speaking of HN, here is the thread for this post
The Go language is one of my favorite programming languages. However, sometimes doing simple things can seem a bit harder than it should. However, most of the time, the problem is just to find out how to do things the easy way. While Go’s documention isn’t bad, the real key to finding out how to do things is often to look at the source code and the test suite. I’m not yet super…
Engineers love to improve things. Refactoring and optimizations drive us. There is just a slight problem: we often do that in a vacuum. Before optimizing, we need to measure. Without a solid baseline, how can you say that the time you invested in making things better wasn’t a total waste? True refactoring is done with a solid test suite in place. Developers know that their code behavior…
A few days ago, I was wondering if using Go would be worth it when developing new web APIs. I obviously knew that Go would be faster than Ruby, but I wasn’t sure how much faster. I also wondering about the amount of work required to write get a full API implemented. I therefore wrote the same web API in Ruby (using Rails) and in Go (at first using Revel and then rewriting it without a…
Ruby 2.0 has a cool new feature that many people talk about: TracePoint. TracePoint essentially allows you to hook into Ruby’s events and listen for events. Being curious and since I just started a brand new Rails 4/Ruby 2 app, I decided to write a little middleware and see what Rails is up to when handling incoming requests. Here is my TracePoint Rack Middleware. class TracePoint class…
Today I struggled to get OmniAuth and Google apps to work properly together. I just wanted to add authentication to my application and restrict access to only my Google Apps domain users. I was hoping it would be straight forward since I could use Google’s OpenID service. Turns out it wasn’t that hard, but the lack of documentation made me lost a couple hours. I therefore updated…
The structure of a programming language reflects the challenges and solutions the designers decided to address. Each designer coming with his/her own background decides to tackle some specific issues in a novel way and/or often decides to borrow existing paradigms from other languages. We can’t, then, fairly judge a language without understanding what problem the language designer was trying…
If you are currently a software engineer you need to realize two things: Now is an awesome time to be a software engineer (probably the best time ever). Your job might not be well suited for you. I’ll show you why we are lucky bastards, why we aren’t so good at picking the right jobs and some hints on how to solve this issue. I remember a family friend telling me when I was a kid that…
During RubyConf 2012 in Denver, Colorado Matt Aimonetti gave a talk entitled Ruby Vs. The World. ##Description of the talk: Ruby is an awesome programming language, it’s so pleasing you probably haven’t seriously looked at other languages since you switched. The programming world is evolving fast, new languages are created daily, new trends are emerging. Let’s take some time to…
During Aloha RubyConf 2012 in Honolulu, Hawaii Matt Aimonetti gave a talk entitled mmm..mruby or why yet another Ruby implementation. ##Description of the talk: mruby is Matz’ new Ruby implementation, it’s not cooler than node.js, it doesn’t natively support Hypstermedia, it looks just like the good old Ruby. So why should we, as a community care? Matt’s talk is divided in two parts, an…
During PulsoConf 2012 in Bogotá, Colombia Matt Aimonetti gave a talk entitled Tower of Babel: a tour of programming languages. ##Description of the talk: Programming languages affect the way one looks and solves problems. But comparing programming languages isn’t as simple as drawing a table comparing features. In his talk, Matt shows what he likes, dislikes, the philosophy and concrete…
Scala is a very interesting programming language. It has for goal to provide both Object Oriented and Functional Programming paradigms. Now Scala isn’t the only recent programming language out there mixing the two paradigms. Ruby, JavaScript and Clojure are other examples of popular languages implementing both functional and OO programming patterns. Of course, they each have a different take…
When you first get started with the Ruby programming and you come from a different language, the only tricky piece is often Ruby’s approach to block/closure/anonymous functions. Sure the metaprogramming seems a bit odd, but you don’t have to use it. That’s why a lot of developers think that Ruby is a simple language. Turns out that when you dig a bit further, you realize that…
Have you ever wondered what the differences are between #dup and #clone in Ruby? They both create a shallow copy of an object (meaning that they don’t copy the objects that might be referenced within the copied object). However, #clone does two things that #dup doesn’t: copy the singleton class of the copied object maintain the frozen status of the copied object Examples of the…