Hello Flying Car
Hi there, welcome to Flying Car Computer! For my first blog post, I decided to do a mock Q and A.
Q: What are you doing?
A: I am building a new type of personal computer!
Q: Why are you doing it?
A: I am grossly dissatisfied with the status quo of personal computing and the direction in which it is headed. It’s likely that I am not the only one who feels this way.
Also, because I can.
Q: What does your significant other think?
A: Their patience is greater than infinity.
Q: What is it going to be called?
A: The current working title is Flying Car. It is a shout-out to the following quote by Peter Thiel, an American investor:
We wanted flying cars, instead we got 140 characters.
Q: Why are you doing this Q and A?
A: I found it difficult to find “follow along” posts on the web that were written while the hardware product was being created from scratch. Perhaps this blog, with all my successes and mistakes, will one day be helpful to another searching soul.
Also, free marketing. Don’t forget to subscribe to the mailing list!
Q: What hardware are you using?
A: For the CPU, I am starting with the Allwinner A20 (sun7i) SoC. It’s widely available, does the job, and doesn’t run too hot. The A20 is a budget-friendly option, and I am enjoying working within the constraints of this hardware.
The first product will use a development board. There are a few that I am currently testing. Redesigning the board or designing my own will take time, and I would have to find a PCB manufacturer, all of which would increase time to market. I’m going with the path of least resistance.
Q: Why not RISC‑V?
A: I’m very excited about the future of RISC‑V. SiFive is doing great work on this front, but I couldn’t find a development board that is both small and has good enough performance. More importantly, ARM has better OS support for now. I hope that RISC‑V ecosystem will continue to evolve and become a viable option for the next batch.
Q: How many units will be produced?
A: The first batch will be limited to about 10 units. I want to see how quickly I can sell these and at what price. If all goes well, the second batch will be bigger.
Q: Which operating system did you choose?
A: I chose BSD, specifically NetBSD!
Q: Why use BSD?
A: The BSD family has a rich heritage including macOS and PlayStation. I find it to be simple, logical, and sane. It moves at a very reasonable pace and has an awesome community. Very importantly, the MIT license is commercially friendly.
Q: Why use NetBSD?
A: NetBSD’s tagline is “Of course it runs NetBSD.” This was a very attractive proposition when working with relatively niche hardware. True to its tagline, NetBSD ran on the development board on the first try. FreeBSD was my first choice, but I could not get it to boot. In the future, I hope to borrow certain awesome features from FreeBSD such as jails.
Q: Why not Armbian?
A: The performance of Armbian on A20 is unacceptable to me. It also seems very bloated and moving at a very rapid pace. Also, Linux license is not as commercially friendly.
Q: What kind of graphical system do you use?
A: I chose to use X Window System and XLIB.
Q: Why not use Wayland?
A: Wayland does not seem as stable to me. X has 25 years over Wayland. This means more books, documentation, mailing list archives, patches, best practices, gotchas, and general lore that stood the test of time. X can run out-of-the-box on pretty much anything, including some seriously ancient machines. This performance tuning is just what I need for working on underpowered hardware without graphical hardware acceleration. I am also humbled by the comments in the source code. The authors of X were exploring, experimenting, inventing every single day. The future for technology seemed bright and full of possibilities. It shows great minds at work, excited about the potential of the technology and the transformation that it would bring to our society. Working with X makes me experience these feelings.
Q: Why not use XCB over XLIB?
A: I swear by the XLIB Programming Manual (O’Reilly). As far as I am aware, no equivalent exists for XCB. The performance benefits of XCB over XLIB never stood out to me because XLIB is already seriously fast.
Q: Why not use framebuffer or its friends?
A: I would just end up rewriting X but with more fail.
Q: Why not use Gnome and GTK?
A: GTK’s license is not commercially friendly, and I find the project too big to wrap my head around. In my opinion, Gnome suffers from design by committee. With Flying Car, there is only one boss and one design leader. Design will be whatever I say which hopefully leads to a more cohesive experience for the user.
Q: Why not use QT?
A: QT license would be a pain later on. Like GTK, it would be a dependency that is out of my control and moving at its own fast pace.
Q: What window manager are you using?
A: I decided to use Tab Window Manager (twm) started by Tom LaStrange in 1987!
Q: Why use twm?
A: It runs seriously fast on the ARM chip. The codebase is small and easy to understand. A while ago, Eeri Kask at TU Dresden submitted patches that paved way for transparency and rounded corners. It is an extremely simple and stable foundation to build upon.
Q: Why not use Claude’s Tab Window Manager (ctwm)?
A: The code base is much bigger than twm’s, and I could not understand the licensing for some of the contributed source code.
Q: Why not use an LCD?
A: High quality LCD’s are expensive and difficult to source. Your customer would inevitably grade your product based on the quality of the screen, which I have very little control over at this stage and thus no competitive advantage. Removing the LCD from the equation is not a deal-breaker, and will afford me a lot more breathing room.
Q: Why not have a battery?
A: Batteries complicate testing, charging, and certifications. At this stage, it is a nice to have.
Q: Why not have built-in Wi-Fi or Bluetooth?
A: Any radio technology complicates testing and certifications. A lot. You would also need to apply for member licenses, which is out of budget for the first release. Once again, a nice to have.
Q: What programming language are you using?
A: I am using pure C!
Down in the depths C is the sea king. It is often necessary to read X or XLIB code to understand how a particular function works. Knowing and understanding C removes all layers of abstraction and ensures that you and your software can speak the lingua franca. It may be nostalgia but to me writing C feels more like painting than programming. I am looking forward to the challenge of finding some awesome C hackers to work with in the future.
Q: Why not use Rust?
A: Haha. Maybe with an infinite timeline and budget.
Q: Why not use C++?
A: I never got comfortable with C++ and have subconscious distrust of the code I that write in it.
Q: Why not use Go?
A: The overhead costs of calling XLIB from Go seemed too high. Go would have been an interesting choice, and I appreciate some of its features and simplicity.
Q: Why not use Java?
A: Interesting choice. The bindings to XLIB would add overhead and complexity. Maybe for business logic later, but right now it is unnecessary.
Q: Why not Tcl/Tk?
A: Tcl and Tk are just plain awesome. Unfortunately, I found it difficult to bend Tk to my will for making things like rounded corners and transparency. It comes with lots of features that I do not need. If I were building a business focused piece of hardware, then I would most definitely be using Tcl and Tk.
Q: Why not Xt or another widget toolkit?
A: XLIB has everything that I need to realize the small vision that I have for Mark I.
Q: Why not touch screen?
A: Good quality touch screen is a serious challenge for both hardware and software. Also, I realize I am going against the grain here but fingerprints on the screen kind of weird me out. I will hold out for as long as I can.
Q: How long will this take?
A: I hope to have the first units shipped by Christmas.
Q: Do you accept pre-orders?
A: As far as I know, you cannot pre-order until you pass FCC and EC tests. Legal issues aside, this fails the practicality test. Maybe I could accept pre-orders, but I don’t want to be in a situation where the customer pre-orders the product, the tests fail, the product has to be redesigned, and it is not what the customer originally ordered. Drama ensues.
Q: How are you funding this?
A: My cost of living is extremely low. This is also my third startup. My previous one affords me the opportunity to start a microscopic hardware company.
Q: Will I be able to play games on this computer?
A: Probably not. There are far better options for this already on the market.
Q: Will I be able to watch movies or listen to music on this computer?
A: Unlikely as well. Beyond performance issues and playback glitches, the valley of video and audio codes is a patent minefield. Neither is worth the cost, nor fits into the core experience that I am envisioning.
Q: Where are the components made?
A: The board that I am considering is made in Bulgaria. The chip is made in China, but if I can find a chip made EU that is ARMv7-A and the EU manufacturer will not decide to randomly raise the price, then I will use them instead. I want to keep as much manufacturing and quality control inside EU where I can personally test the stock before it goes out. I am terrified of quality control issues that stem from shipping directly from China without my inspection.
Q: Will you open source?
A: Some things, yes. Other things, no. A few things like the bootloader (Das U-Boot) I will be legally obligated to open source. For other things, I don’t want to see the project cloned with minimum effort as soon as it gains any traction. The financial aspects outweigh my personal desire to open source all the things. There are parties out there with much more resources and faster time to market. They can run much faster than me, but I don’t have to give up my head start. Having said that, I look forward to contributing back to all the open source projects that will run under the hood. My target customer wouldn’t know what to do with the source code nor have the time to mess around with it. They would care about the company staying in business and continuing to support and improve the product.
Q: Will you have a developer SDK?
A: Yes, eventually. As a developer previously on the other side of the third-party developer agreements, I have endured my share of pain and suffering. There are some things that I really want to make different such as having a simple API, clear documentation, and a thought-out API compatibility and life cycle. There will not be API redesign just because. The cost to the developers will always be considered.
Q: Will you have an application store?
A: Yes, in some sense, but I want to avoid the evil that are the current walled gardens.
Q: Where is it going to be sold?
A: My plan includes passing tests for EC and FCC first, so I’ll be able to ship to any country that recognizes these markings, or does not care about product safety tests.
Q: How much is it going to cost?
A: Given that this will initially be a niche product, the price will be quite high. I was once taught to ask myself the following question:
Who is your rich customer?
The type of person whom I have in mind has a high discretionary budget for personal electronics and willingness to pay a premium for novel ideas.
Q: How do I keep track of your progress?
A: Simple, just subscribe to the mailing list!