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.
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.
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
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.
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.
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.
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.
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.
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.
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.
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.
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.
Comments
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.
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
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.
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.
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.
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
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.
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.
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.
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.
Mar 08, 2021 · Craig Oda
You can get the binaries for the tool here https://theta360.guide/special/sc2/
Mar 08, 2021 · Craig Oda
Everything should work with 2GB. Give it a try with the binary application for Raspberry Pi.
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.
Dec 12, 2019 · Craig Oda
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.