Continuing my weekly series where I share what I learned, what I did, and what I found interesting this week. 🧠 What I Learned # Something I learned this week was that Vercel's AI SDK can produce structured outputs, but that I dug into the source code and found that how it is implemented depends upon the model. I think the best support is Open AI's latest, which uses json_schema. Claude and some…
First post of a hopefully weekly series where I share what I learned, what I did, and what I found interesting this week. 🧠 What I Learned: Advanced RAG Techniques # I'm working on upskilling my coworkers on AI, with a major focus on Retrieval Augmented Generation (RAG) . While I previously taught basics back in September 2024, this time I'm diving into enhancing semantic search through metadata…
[Current Vibe: Absolutely buzzing, fueled by coffee and the sheer potential radiating from my screen] Wow, Just... Wow. # Remember when I wrote about the Apple Vision Pro ? How I felt like I was living in the future? Well, buckle up, because it happened again. GitHub Copilot Agent just dropped, and folks, the future of software development isn't just knocking; it's kicked the door down, brought…
Reflecting on a Month with the Apple Vision Pro: A Long-Time Apple Developer's Perspective # I've been using the Apple Vision Pro for a month now and I wanted to share my initial thoughts. And of course, I'm writing this while wearing the Apple Vision Pro, while watching YouTube videos to provide some background motivational music, and typing on my MacBook Pro connected virtually to the Apple…
Beverage: Rowdy Mermaid Kombucha - Roaring Pineapple flavor Lessons from Years of Experience as a Software Engineer and Engineering Manager # I have been in the Tech Industry for over 29 years. I've worked as a Software Engineer, Engineering Manager and Director of Engineering. I've worked at small startups, large corporations, and everything in between, including my own small business. My oldest…
I haven't been good... # Background music: The Beths - Expert in a Dying Field I haven't written a blog post in 8 months, so that tells me that I don't have a habit of blogging. It has been more of a sporadic, impulsive excursion. But deep down I like blogging and I think it helps me out and hopefully at least a few other people out there. So I'm going to apply what I've learned from a few months…
Something I have really missed from the before-times are programmer meetups. They were great to get together with fellow fans of frameworks, aficionados of languages and people who are just interested to learn more. Plus you might have some tasty snacks. This is going to be a fun week. I'm planning on going to 3 meetups! 1 DC iOS # Topic: Custom Instruments When: Tuesday April 11, 2023 at 6pm EDT…
Eleventy 2.0 just came out and I migrated this blog from Wordpress to it. I also moved the hosting from Digital Ocean to AWS. Why did I do it? Let me count the ways: Static Site Generation fits in with my philosophy to moving more of my life towards text (vs using a blog editor UI) Eleventy uses Markdown There were some nice tutorials on migrating a site from Wordpress to Eleventy. Note that I…
I lost 15 pounds and 3% body fat in 3 months. How did I do it? Quantification and slow but steady habit change. A graph of my weight over the past year. I'm a software engineer and tech leader. That's fancy LinkedIn-speak for saying that I make computers do things and I keep other engineers happy in their careers. I like to collapse that down into the term Maker/Manager. In my line of work, I've…
I left my role as Director of Engineering at Capital One last Friday March 6th, 2020. Before I start the new chapter in my career, I wanted to say thank you to all of the people that I led, mentored, joined my teams after meeting me at recruiting events, collaborated with and those who led me, mentored me and taught me many things in my 6 years and 3 days at Capital One. I enjoyed working with all…
I've been writing more Python recently and package management seemed simple with pip. Then I learned about virtualenv to isolate your project's environment. However I recently found a relatively new package manager for Python that combines the best of those worlds and also solves some existing problems called pipenv . At the conceptual level, pipenv makes Python more equivalent to the development…
I gave a talk tonight on Swift and how it works on the server-side as well as Raspberry Pi. I gave another talk about Swift on Raspberry Pi earlier in the year and I tried to use it like a full desktop. I had a keyboard, mouse and the projector hooked up to HDMI. That worked well, but it was clunky. Nowadays, I consider a Raspberry Pi more like a tiny server. I ssh into it to execute commands and…
Wow did I really not blog in 2016? I guess I was busy. Well because I like metrics, just wanted to update them here for the record. My StackOverflow rep went from 8,055 to 10,455. That is especially cool because it gave me access to moderator tools . I'm effectively a StackOverflow Mod! Every so often, I go in and review questions. I feel like it is a developer's way of doing community service.…
I moved this blog from Linode to Digital Ocean this weekend, using a combination of GitHub, Ansible and good old fashioned sysadmin (me) sitting in front of a terminal. I also upped my security game, as you'll notice by the nice https:// in the URL and lock in your browser. I'll have more details later, but it has me feeling very in control of my personal digital destiny. Which makes me want to…
It is good to sit back and reflect sometimes and with today being New Year's Eve, I thought it would be good to look back on what I have been doing this past year in 2015. My wife Monica and I had our seventh son, Mario! He is super cute and huggable. He and the other boys keep me grounded and humble. Bonus: the company I work for is pretty family-friendly, I got to take a few weeks of Paternity…
The bomb dropped at WWDC. 5,000 of my fellow iOS and Mac Developers were sitting there at Moscone West when Craig Federighi said: But we had to ask ourselves the question what would it be like if we had Objective-C without the baggage of C? At that point, there erupted a mixture of nervous laughter, gasps and excitement. My Objective-C heart sank but my curious brain lit up at the opportunity to…
I've recently come across Cate Huston's blog and she has inspired me to start blogging again. I thought I'd echo her post "Thoughts on Being Productive" with my own. I had been wanting to catalog my current best practices anyways so I can remember it in the future. Maybe many years from now, I'll dig it up like they recently did with the E.T. Atari cartridge. Mechanical Keyboard I use a CMStorm…
If you're an iOS Developer, you probably have heard of CocoaPods. More and more developers are using it. I've personally used it on many projects and I'm not sure I would want to go back to the old manual way of adding in libraries. A few weekends ago, on March 29th-30th, they had the CocoaPods Bug Bash. I used to work a lot on the weekends when I ran my own iOS/Android consulting business, but…
Did I mention that I started up a group called Android + Glass, a meetup which is focused on developing apps for Android and Glass over in the Tysons Corner area ? In addition to iOS, I also like to develop for Android. I'm also a Glass Explorer (I got in on the second round thanks to my buddy Andrew at Near Infinity.) Since the native Glass SDK, the GDK, is built on top of Android, I get to…
Mark your calendars: the date for iOSDevCampDC 2014 will be Saturday August 2 Friday August 1, 2014. We've booked a big place this year for iOSDevCampDC 2014 - the new DIG space at Capital One in Tysons Corner. It will follow the same one-track format, although we're thinking of having some more time in-between sessions so we can enjoy the game room. I hear foosball and air hockey are good for…
WearablesDevCon is a conference about wearable technology from March 5 - 7 over in San Francisco. I'm going to be giving two talks: A tutorial called "Transitioning from Android to Google Glass" where I will take people from building apps for Android (and mobile devices in general) to Glass. I'm also going to go in-depth into live cards in my talk "Deep Dive into Google Glass Live Cards." I'm…
My source code is really valuable to me. So I like to secure it as much as possible. GitHub does a good job of securing things on their end. I use SSH to pull and push my code so that it is securely transmitted over the network to my computer. However, there is still a potential problem with having a single password to log in to the GitHub website. That log in also allows access to your code. If…
If you're in the Washington DC area, please come to my talk about Developing for Google Glass at DevIgnition . I've only got 30 minutes, so it will be a whirlwind tour but it should be enough to get you started on the premiere platform of the Wearable Generation(TM). Also, I wrote up a blog post on the savvy apps blog discussing my initial thoughts on the GDK . UPDATE: The slides are available in…
If you make iOS apps, sometimes it is helpful to verify that the archive you made via Xcode has what you expected inside of it. Lagunitas is a tool to help you do that, courtesy of @soffes . I just tried it out and it works great. Here are some usage notes: I use rvm so I have a nice Ruby 2.0 environment on Mountain Lion, so I installed the Ruby Gem for Lagunitas like so: rvm use 2.0 gem install…
Time flies. We're having our fifth iOSDevCampDC already! Well, technically it was iPhoneDevCampDC, then iPadDevCampDC, then iOSDevCampDC after that. The 2013 version is happening this Saturday, August 24 at Viget Labs. I have to give a lot of thanks to Viget since they've hosted us 4 out of the 5 years! We sold out again this year. Something we're trying is to not have any sponsors to simplify…
Sometimes the Android Emulator that you just started up does not show in the Devices list in the DDMS Perspective of Eclipse. If that happens to you (like it just happened to me), then do the following in your command line to get it to show up: adb kill-server adb start-server You should see this output: * daemon not running. starting it now on port 5037 * daemon started successfully * Then your…
Good news! I'll be giving this talk again at AnDevCon San Francisco in November. I'll be updating it based on questions I received in Boston, recent developments from Google and Intel. Also there are some things that I wanted to include in the original that I'll be adding. Come check it out live in San Francisco! Two weeks from now, on May 31st, from 2:00 PM to 3:15 PM, I will be giving a talk…
Here's a paraphrased quote from the Q&A session after the What's New in Android Tools session at Google I/O 2013 : We will continue to support Eclipse. We are focusing on the Android Studio to get that up to speed. We will be changing the build system of ADT (Android Developer Tools) in Eclipse to use Gradle (from Ant.) Xavier Ducrohet, Android Developer Tools Team
Here's my quick notes on a git workflow to create a branch, merge and clean up: Create a branch named "x": git checkout -b x git branch x git push origin x git push -u origin x git checkout x git push --set-upstream origin x Merge a branch "x" back into master: git checkout master git pull git merge x --no-ff git push Note that this creates a merge commit to make it easier to find where branches…
I've been starting to use calabash-android, which is a way to run cucumber tests on Android. It requires Ruby Gems and Xcode Command Line Tools on Mac, which installed fine. However, when I ran the first sample test, then I noticed the app did not start. I looked at the output and saw that this error showed up: App did not start (RuntimeError)…
So you're being a good Android developer, using JUnit 3 tests [Sidenote: JUnit 4 does not play well with the JUnit runner in Eclipse for Android currently] and using Mockito to create mocks to make sure you're focusing on the class that you're testing. However, you run into a java.lang.ExceptionInitializerError when running your tests. This is pictured below. What should you do? tl;dr - To use…
If you have ever had to implement the Parcelable interface for one of your Android classes, you will find that it is tedious. It is especially tedious the more fields your class has. So usually you don't do it unless you have to pass it in an Intent to an Activity or as a Bundle of arguments to a Fragment. Enter Parcelabler , which is a web-based tool that creates Parcelable implementations for…
I've recently been having problems with my Nexus 7 not booting up after it completely runs out of battery. Specifically - even if I have charged it overnight, if the power is off and I click the power button, then it does not turn on! I'm not sure if this is related to 4.2.1, but this problem didn't seem to occur with 4.1.1. I've got the 8GB version of the Nexus 7. To solve it, press and held on…
I attended AnDevCon III in May 2012 as my first Android-related conference, about a year and a half into my Android experience. I have attended many developer conferences before so I thought it'd be interesting to compare it to those. I'll be attending AnDevCon IV later this week, so obviously I was pleased with what I experienced, but I wanted to note down what my thoughts were from that first…
I use Eclipse for Android development and one of the issues I have come across is that sometimes Command-C on Mac (Control-C on Windows) doesn't work properly. I will copy, but paste will paste what was previously in the buffer, not what the latest I wanted. My previous workaround was to hit Command-C twice which always seems to work. This is a pain, however. Fortunately I came across this blog…
I have an LG Optimus V that I use for testing. Its battery had run down and when I plugged it back in, the buttons would light up but the screen was black. So what to do with a blank screen? Unplug from wall. Remove the back cover. Remove the battery. Put the battery back. Replace cover. Plug it back in. The screen is back!
There's a new official Android SDK available that was released this past week. It is basically Eclipse 3.8 + Android Developer Tools (ADT) 21, pre-installed in a single downloadable package. Previously, Android programmers had to go through a multi-step process to locate the ADT update site, accept licenses, etc. This should save time for new installs. If you've got a working setup, I'd stick with…
There are new UI Testing tools in the Android Development Tools (ADT), version 21. This is an exciting development for a testing advocate like me. It reminds me of Square's KIF framework, but for Android. It'll be interesting to compare this against Robotium and MonkeyTalk.
If you’re reading this blog, you’re probably a programmer and you probably use Stack Overflow daily. It launched back in 2008 and I’ve been using it, sometimes without knowing it for these past few years. This year, I decided to consciously contribute back to Stack Overflow and also try to rack up 1000 reputation points, aka rep. As of this writing, I’m up to 2,106 rep and very happy about my…
We just survived Hurricane Sandy here in the Washington DC area. We were fortunate that we did not get more damage in this area. The Derecho in June seems to have prepared the area. However, I wanted to be prepared this time and I wanted to make sure I could use my iPhone if the power went out. I have a few devices available to me: I was going to use an iPhone solely for emergency calls. I…
Last week, I discussed the different handsets that I recommended for Android development . Today, I want to recommend tablets for Android development. Why tablets? Tablets are a big growth market currently. The iPad is the current king of the hill, with a roughly 60% marketshare. Android tablets make up most of the rest. Microsoft is coming out with its own tablets as well. From a user s…
Hopefully these guidelines will help you choose which device to get for Android development. Someone was asking on the Android Enthusiasts forum: Will an Android phone connect to Wi-Fi and download apps without a subscription? When I was answering this question, I was thinking to myself - the best way to get into developing apps on iOS is to do it on an iPod Touch. Likewise, the best way in my…
For the past 2 years, I ve been working on Android apps. It started in mid 2010 when I was doing some work for Push IO. They sent me a Motorola Droid (the original one with the slide out keyboard and built like a tank) to experiment with. I was impressed by its turn by turn navigation and it handled basic smartphone functions well. I was even more amazed at how easy it was write a simple app and…
About two weeks ago, on Saturday August 11th, we held our fourth iOS-related event in the Washington DC area: iOSDevCampDC 2012 . We had a great mix of talks, six in all, from local iOS experts, with a select group of sponsors and a great group of attendees. Verisign hosted us and provided the venue in Reston, VA, allowing us to accommodate more people than last year. The dual screens were a nice…
I'm trying to be truly "Post-PC" (or rather, let my mobile devices live untethered from my Macs) with my new iPad 3 and iPhone 4S. This works great as long as you're buying everything through iTunes, since you can now download almost anything from the iTunes Cloud. But what if you're buying 3rd party books? How can you experience them in the silky smoothness that a Retina screen on your new iPad…
When I'm not making apps, one of the things that I enjoy doing is making things out of LEGO. When I was younger, I played with LEGO. Recently, I decided my kids should start building with LEGO too since I think it helps them think spatially, be creative and also learn some things about engineering. After helping my kids build some things, I realized I enjoyed it too. A lot. I find it to be a great…
Steve Jobs inspired me to make apps for the Mac, quit my job and start my own business. He created the mobile apps industry where I now mostly make my living. Apple under Steve Jobs set the gold standard for smart phones, tablets, customer experience and even presenting on stage. I feel fortunate to have felt his RDF (Reality Distortion Field, a shorthand for witnessing his charismatic personality…
I was at a co-working space in Herndon, getting ready to type and I noticed the external 20" monitor that I was connected to was rocking a bit. I steadied it with my hand and casually asked my office mates: "can you guys feel that?" I thought perhaps someone was moving something super heavy upstairs. Then the shaking got stronger and all I can remember is that I shut my MacBook Pro, ripped out the…