DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
Refcards Trend Reports
Events Video Library
Refcards
Trend Reports

Events

View Events Video Library
Core Badge
Avatar

Craig Oda

DZone Core CORE

Consultant at Oppkey

San Francisco, US

Joined Dec 2017

Stats

Reputation: 1342
Pageviews: 242.8K
Articles: 11
Comments: 22
  • Articles
  • Comments

Articles

article thumbnail
Building Modern Full-Stack Python Applications: MVC Architecture Meets Enterprise-Ready Python
Explore how MVC architecture and modern Python tooling (uv, Ruff, mypy) enable enterprise-ready full-stack development with practical FastAPI + Flet examples.
February 6, 2026
· 2,655 Views · 4 Likes
article thumbnail
Python Development With Asynchronous SQLite and PostgreSQL
Solve SQL security, database connector, and prepared statement problems when using FastAPI with Asynchronous PostgreSQL and SQLAlchemy.
October 15, 2025
· 5,480 Views · 5 Likes
article thumbnail
OpenCV Integration With Live 360 Video for Robotics
Use OpenCV and a 360° camera with Linux to add object recognition to your robot in real-time using 4K 30fps live video and applications in Python or C++.
February 11, 2025
· 6,153 Views · 3 Likes
article thumbnail
5 Reasons To Choose Django in 2024
Easy access to talent, a huge community, and component architecture make Django a great choice to help deliver smaller projects under budget.
April 5, 2024
· 5,890 Views · 6 Likes
article thumbnail
Build Live Video Mobile Apps With Flutter
Use Motion JPEG to display video directly from a camera.
November 1, 2021
· 8,976 Views · 2 Likes
article thumbnail
Flutter 2.0 State Management Introduction With Provider 5.0
New Flutter developers need to understand state management in order to build more complex applications with multiple screens and data storage options.
May 1, 2021
· 14,715 Views · 7 Likes
article thumbnail
5 Advantages of Dart Over JavaScript, Python, and Bash
After Google's announcement of Flutter 2 at the beginning of March 2021, interest in Dart climbed to new heights. Most people use Dart with Flutter.
March 12, 2021
· 23,783 Views · 5 Likes
article thumbnail
Remote Monitoring With 360 Cameras and Raspberry Pi
Learn how you can build a DIY 360° camera robot with Rasberry Pi that can help businesses adapt to the new workflows required by COVID-19 restrictions.
March 5, 2021
· 8,091 Views · 4 Likes
article thumbnail
Build Great Windows Desktop Apps With Flutter
Set up, configure, and distribute desktop apps with excellent graphics.
January 7, 2021
· 23,506 Views · 4 Likes
article thumbnail
Build Virtual Tours of Houses and Parks with Open Source Software
Use open-source software like Marzipano and Bootstrap to rapidly create online tour templates for real estate, museums, and parks.
November 18, 2020
· 26,658 Views · 2 Likes
article thumbnail
Controlling IoT Cameras With libptp
Learn more about controlling IoT cameras with libptp.
November 13, 2019
· 14,806 Views · 4 Likes

Comments

Building Modern Full-Stack Python Applications: MVC Architecture Meets Enterprise-Ready Python

Feb 16, 2026 · Craig Oda

that's an interesting idea. It may be possible to run some level of MVC enforcement with import linter and activated in GitHub actions.

https://github.com/seddonym/import-linter

It also might be possible to have GitHub co-pilot run an LLM on the code to determine probability of the architecture not complying and then raise a flag for a human to check.

Django Architecture vs FastAPI: A Learning Path

Oct 21, 2025 · Jesse Casman

Although I agree with your advice on which platform to choose, I have some differences of opinion.

The driving factors in my using FastAPI:

- async-first architecture, including examples from the community and libraries. Although there are still challenges, it is easier than starting with Django

- better auto-documentation of API endpoints

The auto documentation and async-first requirements are especially important since I'm starting with FastAPI and the Jinja2 templates, which is similar to the Django syntax template. Although I eventually intend to move to a different UI frontend, I'm using the templates first. Also, although your requirements of when to use Django all meet what my requirements are for my project, I'm using fast API.

Although normally it would be correct to use Django with the three points you listed, I think it's also arguably better to use FastAPI even with these requirements. At least, this is what I'm doing with FastOpp.

I know that you've worked on both Django and FastOpp projects. I'm curious as to what your actual assessment is of Django versus FastOpp. I would recommend that you use FastOpp similar to how you used Django in the past. Build a small project from scratch instead of just installing and going through the demonstration applications with FastOpp.

Python Development With Asynchronous SQLite and PostgreSQL

Oct 21, 2025 · Craig Oda

i'm using this adapter.
https://www.psycopg.org/

The primary problem I had was that the psycopg2 driver was synchronous. As I wanted to use asynchronous database connections, I switched to asyncpg because it was the most popular async adapter. Ultimately, I used psycopg3 as the syntax was more similar to psycopg2, which was used in the leapcell example documentation.

Python Development With Asynchronous SQLite and PostgreSQL

Oct 21, 2025 · Craig Oda

At the current time, there are no changes.

FastAPI User and SQL Admin have been a bit more problematic and difficult to customize than I expected. I'm continuing to use them, but am looking for another solution.

HTMX, AlpineJS and DailyUI are more difficult to use than I thought. I may try Flutter Web with wasm.

Though, from the beginning of the project, I was also considering Flutter web and was also thinking of not using SQLAdmin.

I would take the same implementation path if I were to do it again.

Before I can assess HTMX and Alpine.js, I need to get to know them better. I need to study more before I make further decisions.

Testing AI Is the First Step to Using AI

Apr 09, 2025 · Jesse Casman

I've started to process spreadsheets using two different approaches:


1. Map Reduce concept for AI, meaning I chunk and the aggregate the chunks after response.

2. Bypass RAG initially and then process with Pandas.


For the first approach, this is what I'm doing.

  1. Chunking the Data:

    • Divide the full 10,000-row DataFrame into smaller chunks (e.g., 50 rows per chunk)
    • This would create 200 chunks (10,000 ÷ 50 = 200)
  2. Batch Processing:

    • Send each chunk to the LLM for initial analysis
    • Ask the LLM to categorize or analyze just that subset of data
    • Store the results from each chunk in a collection
  3. Progressive Aggregation:

    • After processing all chunks, you would have 200 partial results
    • These could be further aggregated in a hierarchical manner
    • For example, combine results from 10 chunks at a time, reducing to 20 intermediate results
    • Then combine those 20 results into a final summary

I also looked at Pandas AI, but it didn't work as I expected.

I've been testing these approaches locally with Chroma DB and Mistral 7B running on my MacBook Air. Sadly, it seems like I'll need to at least buy a RTX 3060 with 12GB of GPU RAM to actually have a reasonable development environment.

It would seem like there would already be open source solutions for all of this, but I can't seem to find a good way to process a 10,000 row spreadsheet. If you know of an existing solution, please send it my way. Pandas AI doesn't look that great in my tests.

BTW, I heard you were working with a developer in California on this project. I'm really impressed that your knowledge of the LLM pipeline expanded so quickly. Great job.

Vendor Lock-In Drives Open-Source Adoption in Japan

Mar 11, 2025 · Jesse Casman

What specific AI technologies are accelerating open source adoption. Do you think it is about training LLM using OpenAI proprietary technology or is it something like using OSS deepseek models?

OpenCV Integration With Live 360 Video for Robotics

Feb 12, 2025 · Craig Oda

in the forum, I haven't heard of any robotics prototypes using Windows or Mac on the robot. I guess it's possible that the engineer needs a piece of software that only runs on Windows or Mac. However, it's more common to transmit the video to a Windows or Mac computer and perform the transformations there. A common scenario is to transmit the video to a Windows computer to run a Unity app for a VR headset. However, I believe that most people transmit the video from a Linux computer on the robot to a Windows computer near the headset.

Are you thinking of using Windows or Mac as a prototype because that's all you have?

It's possible that the robot interacts with humans and uses Windows as the UI for a kiosk that is built into the robot. For example, those robots that take orders and deliver food at some restaurants.


https://microsoft.github.io/Win-RoS-Landing-Page/#


Japan’s Evolving Open-Source Culture: A Rapid Change in Traditional Companies Like Hitachi

Nov 21, 2024 · Jesse Casman

Jesse, thanks for organizing this information. Like you, I am an American and I ran a technology company in Tokyo when I was younger. I've thought deeply about Japanese open source development. There's plenty of super-smart, highly-qualified Japanese software developers. Many Japanese people want to participate in open source. However, I think there's some minor cultural differences. Now, I'm in Palo Alto. The culture here embraces both competition and failure. For many, huge failure is like a badge of honor. Hey, at least I tried. There are many failures, big and small - failure to make a proper pull request, small ridicule in sloppy code. These could be viewed as a source of embarrassment. Or, it could be viewed that the person tried and failed, and, likely will try again.

There's also a human language issue when dealing with the "community". The community is just a bunch of people and the nuances of human communication takes some effort to get through. When I was in Japan, the Japanese people treated me very well. I'd like to help them navigate some of these issues as they engage with a global community.

In my opinion, there is no shortage of skill, will, or creativity. I believe there are some social challenges. Having lived in Japan, believing deeply in open source, and also being ethnically Japanese, I would love to help Japanese companies go big on open source. Please continue with this type of article. It's interesting.

5 Reasons To Choose Django in 2024

Apr 10, 2024 · Craig Oda

Because we separate out the SQL database onto a separate server (we use supabase pro, but AWS and Google also have RDMS services), we can put any front end on it. In addition, we use Django REST Framework to apply a REST API abstraction so that we can use CRUD more easily.

For your specific question, I have a three-prong approach

1. Django template with more interactive elements

2. React on web (not React Native)

3. Flutter desktop (not web)

The last one doesn't really answer your question directly. However, in my case, our staff are using the web-app dashboards. As the number of staff and software they use is small, we can easily manage the deployment of desktop applications instead of web applications. The desktop applications will yield better performance. For deployment in the long-term, we can use web assembly (WASM). However, wasm is too early to use in 2024, even for internal staff. Though, I may test it later in 2024.

I hope to hire some summer interns to help both React web and Flutter desktop interfaces to the same data for comparison.

BTW, React is old now days. React is kind of like Django in the sense that it has a huge community, but the techniques and technology are a bit dated. We're using it because it's popular, not because it is the best or easiest to use. I've heard that Astro is quite popular. https://astro.build/

I used Gatsby in the past and found it difficult to use.

One possibility is to break up the intern team into three groups.

Team 1 uses Flutter vs React

Team 2 uses Astro vs Django template

Team 3 uses Django templates with interactive elements

One thing to consider is that I use Discourse for projects as well. The Discourse interface is built with Ember

https://emberjs.com/

It's possible to use Ember with Django. https://www.freecodecamp.org/news/eli5-full-stack-basics-breakthrough-with-django-emberjs-402fc7af0e3/


Though, the simple answer to your question:

1. React

2. Flutter desktop and secondary flutter wasm (only for internal staff applications)

3. astro


Node-RED Unleashed: Transforming Industrial IoT Development and Industry Collaboration With Hitachi

Apr 05, 2024 · Jesse Casman

Thanks for that insight. It seems like AI is really changing the game this time. However, I'm also quite interested in the tools of communication aspect of your story. There are a set of tools like Node-RED that allow people with different backgrounds to communication by providing a layer of abstraction as a bridge.

Node-RED Unleashed: Transforming Industrial IoT Development and Industry Collaboration With Hitachi

Apr 03, 2024 · Jesse Casman

That's a pretty insightful comment that Node-RED is functioning as a tool of communication between two groups with different levels of technical expertise. I'm reminded of my own role as a developer relations consultant where I have to help groups internal to a company communicate with each other on technical matters. In this case, they're using Node-RED as an abstraction layer for technical problems. It's pretty cool.

Do you think people are using Node-RED with ChatGPT to provide the code snippets needed for the wiring? I just used ChatGPT with a Unity program and was completely shocked at how good ChatGPT is at writing code. If you're curious as to what I did, you can see it here.

Node-RED Unleashed: Transforming Industrial IoT Development and Industry Collaboration With Hitachi

Apr 03, 2024 · Jesse Casman

Thanks for sharing this. In your opinion, is Hitachi really going big with an open source project to wire devices together. It seems like a big cultural shift for a traditional Japanese hardware maker, especially a chip maker. I used to live in Japan many years ago and visited Hitachi on a business trip for an Internet-related service. Back then, the companies were still trying to develop proprietary technologies themselves and sell it for big money. Do you think Hitachi is selling the factory manager services for Node-RED? Or, are they making their money from hardware and total system sales? I'm wondering how promotion and development of Node-RED helps their business. It seems like a fantastic strategy to me, but I want to hear your take on it.

Build Live Video Mobile Apps With Flutter

Nov 02, 2021 · Craig Oda

If you have a RICOH THETA, you can use the binaries and tools here:

https://github.com/Oppkey/oppkey_theta_atk/releases/tag/v0.2.0-alpha

The two with the GUI are the Android and Windows apps.

https://github.com/Oppkey/oppkey_theta_atk/releases/download/v0.2.0-alpha/flutter_windows_0.2.0.zip

https://github.com/Oppkey/oppkey_theta_atk/releases/download/v0.2.0-alpha/flutter_android_0.2.apk

You can see a demonstration of the application in this video.


https://youtu.be/q9Pm9sGhlK0


Flutter 2.0 State Management Introduction With Provider 5.0

May 04, 2021 · Craig Oda

provider is one of the easiest and most popular to use. The other popular one is bloc. https://pub.dev/packages/bloc You can use flutter favorites as a gauge of popularity. https://pub.dev/flutter/favorites?q=state another model is redux https://pub.dev/packages/flutter_redux GetX is also popular

https://pub.dev/packages/get

I chose Provider because it was recommended by the Flutter dev team. https://flutter.dev/docs/development/data-and-backend/state-mgmt/options

It was also covered extensively in three online courses I went through on Flutter. It gets a little difficult to manage as the app gets more complex. I'm looking at the BLoC pattern now.


5 Advantages of Dart Over JavaScript, Python, and Bash

Mar 12, 2021 · Craig Oda

Absolutely agree that JavaScript, Python, Bash will be here in 5 years and I'll continue to use those fine languages. You're correct that Dart may be a passing fashion. It's a risk to use Dart. I debated for a long time before starting to build small projects with Dart. There may be some advantages to using Dart that I can bring to my community and business today. The examples I can share on iOS and Android as well as desktop and web in addition to the command line are a fairly nice benefit. True, Dart may be unused in 5 years. However, it can be used today and may give me an advantage today that can my business be more successful in 5 years. Due to the support of Google, I don't think Dart will ever completely die, but it may be much less popular in 5 years.

Remote Monitoring With 360 Cameras and Raspberry Pi

Mar 08, 2021 · Craig Oda

You can see from this article, that I've been using the THETA with Raspberry Pi boards since 2016, likely with a RPi 1 or RPi 2, though the model is not listed in the article. There are two tips: 1) disable X, and 2) set the gpu_mem in config.txt to 16MB. This will disable some GPU features, but you don't need those features. https://www.raspberrypi.org/documentation/configuration/config-txt/memory.md For info on my use of the Raspberry Pi in 2016 https://community.theta360.guide/t/ricoh-theta-api-over-usb-cable-z1-v-s-sc-models/65/2?u=craig I'm most interested in your tests with the Raspberry Pi Zero W with 512MB of RAM. I don't have a Raspberry Pi Zero, but I do have a Raspberry Pi 2.

Remote Monitoring With 360 Cameras and Raspberry Pi

Mar 08, 2021 · Craig Oda

There are 4 videos here: https://theta360developers.github.io/webapi/tester/2021/02/27/raspberry-pi-robot.html

If you have problems, please post again.

Suggest you ssh into the Raspberry Pi and do not try to hook it up to a monitor and use a mouse to configure it. When you ssh into the Raspberry Pi, you can use ssh keys to allow you to ssh into the RPi with no password. On the RPi, you will need to use something like vi, pico to do the editing through the ssh. With lower RAM, you need to work with the RPi as an embedded device, not as a workstation. You can disable X with raspi-config and just have the Pi boot to console with no GUI. Change the memory allocation for graphics to the lowest setting as you're not using the graphics.

Remote Monitoring With 360 Cameras and Raspberry Pi

Mar 08, 2021 · Craig Oda

You can get the binaries for the tool here https://theta360.guide/special/sc2/


Remote Monitoring With 360 Cameras and Raspberry Pi

Mar 08, 2021 · Craig Oda

Everything should work with 2GB. Give it a try with the binary application for Raspberry Pi.

Build Great Windows Desktop Apps With Flutter

Jan 14, 2021 · Craig Oda

Flutter for Windows desktop is still in the early stages and many packages from pub.dev do not yet run on Windows. However, it is still usable right now for prototyping concepts as long as you research the limitations before you get too far into development. Let me know what you build or if you have any questions. I like the Flutter platform and use it daily.

Controlling IoT Cameras With libptp

Dec 12, 2019 · Craig Oda

Controlling IoT Cameras With libptp

Nov 13, 2019 · Craig Oda

For Linux, everyone is using libptp. This includes Raspberry Pi and NVIDIA Jetson with Linux 4 Tegra. If you're building a PC kiosk, you can use the built-in Windows MTP. See this article for more alternatives. https://community.theta360.guide/t/ricoh-theta-api-over-usb-cable-z1-v-s-sc-models/65?u=codetricity As far as documentation to install and use libptp on Raspian, this article on DZone is intended to help you. Honestly, I couldn't find any good source of documentation, which is why I took the time to write this article. Please let me know if you run into any problems running libptp on Raspbian. I've done it a number of times. would also like to see the project that you build.

User has been successfully modified

Failed to modify user

  • RSS
  • X
  • Facebook

ABOUT US

  • About DZone
  • Support and feedback
  • Community research

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Core Program
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 3343 Perimeter Hill Drive
  • Suite 215
  • Nashville, TN 37211
  • [email protected]

Let's be friends:

  • RSS
  • X
  • Facebook