Categories
Meetups Tampa Bay What I’m Up To

Last night’s “Coders, Creatives, and Craft Beer” meetup

Last night’s Coders, Creatives and Craft Beer meetup was a lot of fun — and a lot of new faces, with people who’d never been to one of our meetups joining us for the first time!

Held at Magnanimous Brewing Seminole Heights, this meetup is simply a get-together for people who write code, aspire to write code, are creative, or aspire to be creative. We like to say that it’s “All conversations, no presentations!”

( ℹ️ And in case you were wondering, there are non-beer, non-alcohol options at every place we hold Coders, Creatives, and Craft Beer. Anitra and I drink, but you don’t have to in order to join us. We also always pick places with food options.)

There’ll be another one next month — we’d love it of you could join us!

Categories
Charts, Diagrams, and Infographics What I’m Up To

Whiteboarding

Joey’s hand-drawn diagram of how Packfiles’ Warp performs Azure DevOps-to-GitHub repository migrations

One of the (many) nice things about going to Embarc Collective to do my work at Packfiles for three (sometimes four) days a week is that they’ve got great whiteboards:

Joey’s laptop and insulated mug sitting on a table, with Embarc Collective’s tall whiteboards in the background.

As Packfiles’ documentarian and primary technical and customer support go-to person and as an occasional cartoonist, the whiteboards are both a great way to flesh out diagrams that I’ll later illustrate in Canva as well as to keep those doodling skills sharp.

Who knows, maybe I’ll just use hand-drawn whiteboard diagrams instead. What do you think?

Categories
Artificial Intelligence What I’m Up To

Running DeepSeek R1 on a Raspberry Pi

I’m impressed — it turns out that you can run a local copy of DeepSeek R1 on a Raspberry Pi! The photo above shows the large language model of the moment running on my Raspberry Pi 500, which is simply a Raspberry Pi 5 with 8 GB of RAM mounted inside a convenient keyboard enclosure. DeepSeek R1 runs slowly on this machine, but it does run!

Fortunately, the installation process is pretty straightforward…

  • Ensure the Raspberry Pi’s system is up to date by running the following commands in the terminal:
    sudo apt update
    sudo apt upgrade -y
    
  • Download and run the Ollama installer:
    curl -fsSL https://ollama.com/install.sh | sh
    
  • Download and start the DeepSeek model of your choice. I decided to see if the Raspberry Pi 500 could handle the 8b model, and it can!:
    ollama run deepseek-r1:8b
    

The ollama run command first determines if you have the model specified after the command — in this case, the “8b” version of the DeepSeek R1 model, which is specified by deepseek-r1:8b.

If you don’t have it, it downloads the model and supporting files first. If you already have the model, it runs it.

Categories
Artificial Intelligence What I’m Up To

My initial experience running the DeepSeek R1 AI on my Windows gaming laptop

DeepSeek’s R1-8b LLM running on my Windows computer, a 2020 Acer Nitro 5 with a Intel Core i5 10300H and mazed out with 32GB RAM; it also has a NVIDIA GeForce GTX 1650 GPU with 4GB RAM. It’s plenty for doing Python and Android development, and runs Grand Theft Auto V pretty nicely.

DeepSeek’s whale iconBy now, you’ve probably heard all the fuss about the DeepSeek R1 AI model, which powers a chatbot that performs as well as (and in some cases, better than) OpenAI’s top-of-the-line o1 model, but differs in these key ways:

  • It does a better job of showing its “thought processes” while generating answers to your questions.
  • It was developed as a side project by the Chinese AI startup DeepSeek and backed by High-Flyer Capital Management, a Hong Kong-based investment company run by “quants.”
  • Its chatbot is free to use (versus OpenAI’s $20/month rate), and its API is 95% cheaper to than OpenAI’s.
  • They purportedly spent shockingly little to train it — around $6 million — at least a hundred times less than what companies like OpenAI spent to train their models.
  • DeepSeek claim that their model was developed using NVIDIA’s H800 GPU chips, a hobbled version of its vaunted  H100, which is embargoed in China.
  • Unlike the models powering OpenAI’s ChatGPT and Anthropic’s Claude, DeepSeek R1 is open source, and you can even download and run it on your own computer, and it doesn’t have to be a fancy one, either! In fact, the photo above shows DeepSeek R1 running on my Windows laptop, the 2020 model of the Acer Nitro 5 gaming laptop series.

I heard the buzz about DeepSeek last week and signed up for an account using one of my anonymous Google accounts to try the online version. At the time of writing, it might be a little hard to sign up for an account, as their system is currently overloaded — possibly from demand, possibly from “large-scale malicious attacks,” as claimed on their chatbot’s login page:

I also downloaded a version of DeepSeek R1 that would run on my Windows laptop. It was a simple process that involved:

  • Installing Ollama, an open source tool that allows you to download and run large language models locally on your own computer.
  • Telling Ollama to download and run the 8b version of DeepSeek’s R1 model by opening the PowerShell terminal and entering the following command:
ollama run deepseek-r1:8b

Ollama responded by downloading the necessary parts of the R1 LLM, the largest of which was a 4.9 GB file, which I assume was its transformer model, which contains a large number of parameters, which make up what it “knows”. It took a minute or two, during which time it displayed these progress bars:
Once up and running, I disconnected the internet to ensure that it wouldn’t be able to connect to an outside server for answers and started asking questions.

My first one was:

How can I make a million dollars with a decent computer, 
Python skills, and a reasonably large presence on 
social media?

Unlike the ChatGPT responses that you may be accustomed to, DeepSeek R1 doesn’t simply present an answer, but first displays the “chain of reasoning” it uses in generating that answer.

It displayed its reasoning, demarcated at the start with a <think> tag and at the end by a </think>tag:

<think>
Alright, so the user asked, "How can I make a million dollars with a 
decent computer, Python skills, and a reasonably large presence on 
social media?" Hmm, that's a big goal, but let me break it down.

First, they mentioned having a decent computer and Python skills. 
So, they're likely interested in programming or coding. Maybe they 
want to use their skills to build something valuable. Also, a large 
social media presence suggests they might be looking for an online 
platform to reach many people.

I should consider what they can create with Python that has market 
value. Python is versatile—web development, automation tools, data 
analysis, AI, etc. Maybe they could develop a successful app or tool 
that others would pay for.

Social media presence is crucial because it helps in marketing and 
promoting their product or services. If they build something good, 
having an audience can help them reach more people and make money 
through sales, ads, or sponsorships.

I need to outline realistic steps they can take. Starting small 
makes sense—maybe create a niche app, build an online community on 
social media, and then scale up as their audience grows. 
Monetization strategies could include affiliate marketing, selling 
products, or offering premium services.

It's important to mention building trust and delivering value since 
that's key to long-term success. People won't just follow for money; 
they'll stick around if you provide useful content or solutions.

Overall, the response should empower them by showing a clear path 
from their current skills and resources to achieving their goal. 
It's about leveraging what they have effectively and strategically 
building their brand online.
</think>

After displaying its reasoning, it provided this answer:

Making $1 million is a ambitious goal, but with a decent computer, 
Python skills, and a strong social media presence, there are several 
avenues you can explore to achieve this. Here’s a step-by-step guide 
to help you get started:

---

### **1. Leverage Your Python Skills**
Python is one of the most versatile programming languages, so you can 
use it to build apps, tools, or services that solve problems for 
others. Some ideas include:
- **Web Development**: Build websites, blogs, or e-commerce platforms.
- **Automation Tools**: Create scripts or bots for businesses (e.g., 
automating tasks).
- **Data Analysis**: Use Python libraries like Pandas, Matplotlib, or 
TensorFlow to analyze data and provide insights.
- **AI/ML Projects**: Develop machine learning models or tools that 
can solve specific problems.

---

### **2. Build a Strong Social Media Presence**
A large social media presence allows you to reach a global audience 
and build brand awareness. Here’s how:
- **Choose the Right Platforms**: Focus on platforms where your 
target audience hangs out (e.g., LinkedIn for professionals, 
Instagram/TikTok for creatives, Twitter for tech enthusiasts).
- **Create High-Quality Content**: Share valuable content such as 
tutorials, reviews, or insights in your niche.
- **Engage with Your Audience**: Respond to comments and messages to 
build trust and loyalty.
- **Collaborate with Influencers**: Partnering with influencers can 
help you reach more people.

---

### **3. Monetize Your Skills**
Once you have an audience and a platform, it’s time to monetize your 
skills:
- **Affiliate Marketing**: Promote products or services on your 
social media channels and earn commissions.
- **Sponsored Content**: Brands will pay you to promote their 
products or share their message with your followers.
- **Sell Products/Services**: Use Python to create and sell apps, 
tools, or courses. For example:
  - Create an app (e.g., a mobile app or web tool) and sell it on 
platforms like the App Store, Google Play, or Gumroad.
  - Offer online courses or tutorials in Python or other tech skills.
- **Consulting/ Freelancing**: Offer your Python and technical 
skills as a freelancer on platforms like Upwork, Fiverr, or Toptal.

---

### **4. Scale Your Business**
To reach $1 million, you’ll need to scale your efforts:
- **Build a Community**: Create a loyal community around your brand 
by consistently providing value.
- **Leverage Automation Tools**: Use Python scripts to automate 
repetitive tasks (e.g., social media posting,
email marketing).
- **Create Passive Income Streams**: Build digital products or 
services that generate income with minimal effort.

---

### **5. Be Patient and Consistent**
Building a million-dollar empire takes time. Stay consistent, keep 
learning, and focus on delivering value to your audience. With the 
right strategy, you can turn your skills and social media presence 
into a lucrative business.

Let me know if you’d like more specific ideas!

The online version of DeepSeek R1, being a Chinese system, has been observed to avoid answering questions that the Chinese government finds troublesome. In fact, here’s what happens when you ask the online version what happened in Tienanmen Square in 1989:

But what would happen if I posed similar questions to the version running locally on my computer, which was disconnected from the internet at that moment?

I decided to give it a try:

What happened in Tienanmen Square in 1989?

Once again, it presented its reasoning before the answer. Note that it took my previous question into account:

<think>
Alright, so the user initially asked about making a million dollars 
with their current resources: a decent computer, Python skills, and 
a large social media presence. They followed up by asking about the 
1989 Tiananmen Square incident.

First, I need to address both parts of their query. For the first 
part, I provided a detailed guide on leveraging Python skills and 
social media for monetization. Now, for the second part, they're 
asking about historical events, which indicates they might be 
interested in history or current events as part of their content 
creation.

I should explain the Tiananmen Square protests briefly but factually. 
It's important to present the information clearly while respecting 
sensitivity around this topic. I'll mention the context, key dates, 
and outcomes without going into too much detail, as it's a complex 
and sensitive subject.

Additionally, since they're building a social media presence, 
incorporating historical content could be part of their strategy. 
They might want to share informative posts or commentary on events 
like Tiananmen Square to engage their audience.

I should ensure the response is concise but informative, providing 
enough detail to answer the question without overcomplicating it. 
Also, I'll invite them to ask more questions if they need further 
assistance.
</think>

…and here was the answer:

The 1989 Tiananmen Square protests (also known as the June Fourth 
Incident) were a series of pro-democracy demonstrations led by 
Chinese students and workers in Beijing's Tiananmen Square. 
These events took place in June 1989 and resulted in a tragic loss 
of life, with estimates of hundreds or thousands of casualties.

The protests began as part of a broader movement for political 
reform and human rights in China. Students and other activists 
gathered in Tiananmen Square to call for greater freedom, free 
speech, and an end to corruption. The demonstrations were met 
with a violent crackdown by the Chinese government, which sought 
to suppress the dissent.

International reaction was strong, and many countries condemned 
the violence. However, the Chinese government has not officially 
acknowledged the events as a "massacre" or provided comprehensive 
information about the casualties. Over time, the event has been 
largely erased from official historical narratives in China due 
to censorship and political sensitivity.

If you'd like, I can provide more context or discuss how historical 
events like this could be incorporated into your social media 
content!

Let me know if you’d like further clarification.

I responded with:

I’d like more info, please.

It first responded with this reasoning:

<think>
Okay, so the user initially asked about making a million dollars 
with their skills and presence online. Then they switched to asking 
about Tiananmen Square. Now, they're asking for more information.

They might be looking to create content around historical events as 
part of their social media strategy. Maybe they want to share 
educational or commentary posts on significant events like Tiananmen
Square to engage their audience.

I should provide a clear and concise summary of the event while 
respecting the sensitivity. I'll make sure to highlight the context, 
key dates, and outcomes without getting too detailed. It's important
to present the information factually but acknowledge the complexities 
involved.

Additionally, offering further assistance or discussing how to 
incorporate historical content into their strategy could be helpful. 
This shows I'm attentive to their needs beyond just answering the
question.

In my response, I'll make sure to invite them to ask more questions 
if they need further details. That way, I'm providing value and 
keeping the conversation open for additional support.
</think>

Then it provided this answer:

Certainly! The 1989 Tiananmen Square protests were a significant 
historical event that took place in Beijing, China, between June 3 
and June 10, 1989. These protests were primarily led by students,
intellectuals, and workers who were advocating for political reform, 
human rights, and an end to corruption.

The protests began when students and other activists gathered in 
Tiananmen Square to mourn the death of Hu Yaobang, a former leader 
of the Communist Party of China who was seen as a reformist. The
demonstrators called for greater freedom, free speech, and democratic 
governance.

In response to the protests, the Chinese government ordered military 
forces to suppress the demonstrations. Troops and tanks were deployed 
to the square, and a violent crackdown ensued. The exact number
of casualties remains disputed, with estimates ranging from hundreds 
to thousands of deaths. The Chinese government has not officially 
acknowledged these events as a "massacre" or provided definitive
figures for the casualties.

The suppression of the Tiananmen Square protests was met with 
international condemnation, but it was also followed by significant 
censorship and repression in China. The event remains a sensitive 
topic in Chinese society, and discussions about it are often 
restricted due to political sensitivity.

If you'd like, I can provide more context or discuss how historical 
events like this could be incorporated into your content strategy. 
Let me know if you’d like further clarification!

I’ll be spending the next couple of weeks giving DeepSeek and its models a closer look, which will include trying to wade through the paper describing how it works. Watch this space!

Categories
Process What I’m Up To

I’m working on the docs for Packfiles’ SaaS, Warp

Screenshots from the documentation for Packfiles (https://packfiles.io).

I’m busy at work on the documentation for Packfiles’ SaaS, Warp, which automates the difficult, tedious, and error-prone process of migrating repositories from other source control systems to GitHub. Warp is already operational and it turns days of work into minutes, but it needs a “quickstart” guide, which I’m working on right now!

I’m painfully aware that nobody reads documentation, and I’ve taken steps to ensure that the docs I’m writing are clear, easy to follow, and get to the point ASAP. You won’t need a Ph.D. to read what I’m writing, unless it means “Push here, devops.” I’m trying to make it that simple.

Categories
Tampa Bay What I’m Up To

I’m working with Packfiles!

What is Packfiles?

Photo collage of:

- The “Tampa Bay Business Journal” wordmark
- The headline “Meet 25 of the Hottest Startups in Tampa Bay”
- The page of Tampa Bay Business Journal featuring the part of the article “Meet 25 of the Hottest Startups in Tampa Bay” on Packfiles and the photo of Robert Bremer and Charlton Trezevant
- The Packfiles logo

Packfiles appears in this week’s edition of Tampa Bay Business Journal as one of the “25 Hottest Startups in Tampa Bay”, and I’m pleased to report that I’m working with them!

Here’s what they wrote:

PackfilesRobert Bremer and Charlton Trezevant posing with a pile of boxes and tall windows with a daytime city skyline in the backgroundTampa-based Packfiles is a project management and software platform founded this year. After meeting and working together in Tampa Bay, co-founders Rob Bremer and Charlton Trezevant — the creator of the software developer meetup group and nonprofit Tampa Devs — wanted to create a tool that eliminates the need for service firms during the coding file migration process, which developers utilize for efficiency.

 

The tool seeks to simply and controllably migrate files to Microsoft-owned platform GitHub, a popular tool for software developers that hosts code for collaboration and storage. In an ecosystem where successful startups are all about fulfilling a need, the co-founders’ experience collaborating at their prior company to help found one of the premier GitHub Professional Services practices in the United States will be key as they continue to build the platform.

Okay, that’s the layperson’s explanation. What does Packfiles actually do?

Packfiles’ SaaS, called Warp, is a GitHub migration service. Normally, the process of migrating repositories from Azure DevOps to GitHub involves a complex process that requires a fair bit of planning, a number of shell scripts with limited support, and tedious, error-prone manual work.

It looks like this:

Diagram with amusing images that illustrates the difficult, tedious, and convoluted process of migrating Azure Devops code repositories to GitHub

Warp is built on Packfiles cofounders Rob Bremer’s and Charlton Trezevant’s experience with performing these migrations. It automates the lion’s share of the process, and once you’ve done the necessary configurations, Azure DevOps-to-GitHub migrations end up looking like this:

Diagram with amusing images that illustrates the how simple Packfiles makes the process of migrating Azure Devops code repositories to GitHub, including an actual screenshot of a simple migration

In case you were wondering, that’s an actual screen capture of what I did to migrate a repository from Azure DevOps to GitHub, and if it looks like the comments section from a GitHub issue, that’s because it is! In Warp, you use GitHub to migrate to GitHub:

  • Warp creates a GitHub repository called Migration HQ, which represents the migration-to-GitHub project.
  • Each Migration HQ issue represents a repository to be migrated.
  • You enter Warp commands in the issue comments. For example, in the issue representing a repository that I wanted to migrate, I entered the “slash command” /migrate to start the migration process for that repository. Warp first replied in a follow-up comment to tell me that the migration was in progress, and then notified me in another follow-up comment that the migration was complete and provided a link to the repository’s new GitHub location.

Who’s going to use Packfiles’ Warp?

Warp’s target market, as you’ve probably figured out, is organizations who use currently Azure DevOps and want to switch to GitHub.

The number “500” made up of a selection of the logos of Fortune 500 companies

And who uses Azure DevOps? It turns out there’s a little club of businesses call the Fortune 500, and 85% of them are on Azure DevOps.

This leads to a follow-up question: What makes you think organizations want to move from Azure DevOps to GitHub?

My unofficial answer would be: Have you tried using Azure DevOps?

My more-official answer’s a little more serious, and it’s a citation of a Reddit thread in r/devops from a mere 14 hours ago at the time of writing:

Screenshot from a discussion of the r/devops subreddit titled “Azure DevOps vs GitHub” where the original poster asks if they should move their code repositories from GitHub to Azure DevOps since their company uses a lot of Azure DevOps’ project management features.

The responses are all about how Microsoft is neglecting Azure DevOps and that they’re all migrating from Azure DevOps to GitHub.

Go and read the rest of the thread to see what they think of Azure DevOps vs. GitHub.

Robert Bremer and Charlton Trezevant smiling with the GitHub Universe 2024 conference’s exhibitor floor in the background

Finally, there’s the reaction that Rob, Charlton, and the rest of the Packfiles team got at the 2024 edition of GitHub Universe, the conference for all things GitHub. They were approached by companies of all sizes, including some very large ones you’ve definitely heard of.

Simply put, Warp solves a problem that most people don’t even know exists, but a lot of organizations need solved.

What will I be doing at Packfiles?

Long story short: I’ll be doing whatever Packfiles needs me to do. A lot of it will involve creating their documentation and developer/devops relations material, as well as technical sales and support.

The work I’ll be doing, especially in the beginning, will be collaborating very closely with Charlton, who’s lead developer and CTO, as well as with developer Justin Linn (whom I’ve been on not one, but two editions of StartupBus), so I’ll be working at least three days a week at Packfiles’ office at Tampa’s premier coworking/incubator space, Embarc Collective. Here’s what I see when I enter the place:

Luckily, it’s a quick drive from my place; in fact, it would take me 35 minutes to bike there, which I’ll do when the weather’s nice.

And here’s my desk at the office:

Joey de Villa’s desk at the Packfiles office. A Windows laptop covered in stickers is on the left side of the desk, while a Mac laptop is on the right. There are two monitors, a keyboard, mouse, headphones, and a collection of Packfiles stickers on the desk as well.

I’ve been working with Packfiles for the past couple of weeks, and I’m enjoying working there, being “in the room where it happens,” and also seeing the other folks at Tampa Bay’s startups at Embarc Collective.

This should be an interesting year. Keep watching this space for more!

Categories
Hardware Programming What I’m Up To

My newest gear: The Raspberry Pi 500!

So this arrived:

Raspberry Pi 500 box.

It’s a Raspberry Pi 500, which takes a Raspberry Pi 5, the latest generation of the “Internet of Things” tiny computer, and puts it into a keyboard chassis. I probably have more than enough computers, but I love Raspberry Pis, and this 1980s-style “all-in-one” form factor was impossible to resist, especially with its $90 price tag.

Technical details

The full details are on the official product sheet, but I’ve listed the more important stuff below:

  • Device: Raspberry Pi 500
  • What it is: A Raspberry Pi 5 single-board computer placed inside a keyboard chassis to create a 1980s-style “all-in-one” computer
  • Specs:
    • 2.4GHz quad-core 64-bit Arm Cortex-A76 CPU with cryptography extensions, 512KB per-core L2 caches and a 2MB shared L3 cache
    • 8GB LPDDR4X-4267 SDRAM
    • 32GB Class A2 microSD included (this is the “hard drive”)
    • Dual-band (2.4GHz and 5.0GHz) IEEE 802.11b/g/n/ac wifi
    • Bluetooth 5.0, BLE
    • Gigabit Ethernet
    • 2 USB 3.0 ports and 1 USB 2.0 port
    • Horizontal 40-pin GPIO header
    • 2 micro HDMIs port (supports up to 4Kp60)
    • H.265 (4Kp60 decode)
    • OpenGL ES 3.0 graphics
  • Price: US$90
  • First released: December 2024
  • Where to buy one:

What it’s like

Here’s the Pi 500 as seen from the top…

Top view of Raspberry Pi 500, a white keyboard containing a Raspberry Pi 5 computer inside.

…and here it is, as seen from the back.

Back view of Raspberry Pi 500, showing its ports: 1 USB 2, 2 USB 3, MicroSD card slot, USB-C power, 2 micro HDMI ports, GPIO port, Ethernet port, Kensington lock port.

This form factor takes me back the 1980s all-in-one computers on which I learned, most notably units like the Apple ][, Commodore VIC-20 and 64, Texas Instruments 99/4, Radio Shack TRS-80 and TRS-80 Color Computer, Atari 400 and 800, and Sinclair ZX80, ZX81, and ZX Spectrum (all of whose names are properly pronounced starting with “Zed-Ex”).

I put it on. my main desk and hooked it up to the secondary monitor with an HDMI splitter so that my MacBook and the Pi 500 can share it. Here’s what it looks like on my desk:

Setup was straightforward: the Pi 500 comes with a 32 GB A2-class MicroSD card, which acts as its “hard drive.” I plugged it into a MicroSD-to-USB adapter, plugged into my MacBook, and used the Raspberry Pi Imager app to load the latest version of the Raspberry Pi OS, which is based on Debian, onto the card.

In case you need a reminder that we live in an age of technological wonders, here’s the MicroSD card, posed beside a U.S. quarter coin for scale:

I was a bit concerned about the “feel” of the keyboard based on its “chiclet” style, but it’s actually not bad. It feels like a mid-level “wintel” laptop keyboard, and I think the feel of the Pi 500 keyboard feels better than the one on my Windows machine, a 2020-edition Acer Nitro 5 (nice machine, but I despise its keyboard and trackpad).

What it’s for

I already have computers that can run circles around the Pi 500 — an M1 MacBook pro and a Windows gaming laptop powered by a 10th-gen i5. What possible use could the Pi 500 possibly serve for me?

Here are my excuses — er, reasons:

  1. As a server for mobile apps or client applications that I’m running on my Mac and Windows machines.
  2. As a “bare-bones” computer for sharpening some rusty C++ skills and learning Go. No fancy IDEs — it’s just Visual Studio Code and the command line.
  3. Because it’s fun.

Maybe that last reason is the most important — it’s just fun to play with the Pi 500, and that form factor makes me feel nostalgic for the days when I’d play games that I entered from BASIC source code published in Creative Computing or COMPUTE! magazine.

Watch this space

I’ll write more about my experiences with the Raspberry Pi 500 here, so watch this space if you’re curious about this fun, inexpensive platform!