Wednesday, January 6, 2021

Engineering: Mechanical Flywheel Batteries

For thirty plus years I've been wishing the USA would invest in mechanical battery technology.  Unlike chemical batteries, flywheel batteries don't wear out and are extremely efficient.  As far as I can tell the only drawback is they take more engineering to build.  Really ?  

So uh duh ?  If that is true then all we need to do is invest in micromachine manufacturing technology and we can have zero emission cars that run for a hundred years.  Seems like an obvious choice to me.  Are you listening China ?

Programming: C verses C++

I don't always agree with Linus Torvalds, but on this topic I agree 100 %.

In my words, I think code should be readable.  Unfortunately C++ encourages completely unreadable code.  Template libraries in particular pretty much guarantee unreadable code.  And unreadable code is unmaintainable code.  And unmaintainable code is doomed to fail in the long run...

Thursday, December 17, 2020

How to Colonize Space: Spaceship Rail Launcher

A major problem with using Rocket fuel to launch objects into space is that the majority of the energy spent launching the rocket is consumed just to lift the weight of the rocket fuel itself.  Only a small fraction of the energy consumed is actually used to launch the real payload.  This is extremely inefficient.

It currently takes about $50,000 per pound to launch a satellite into space using conventional rocket technology.  This is a huge barrier to making space travel practical for large scale development.  This cost needs to be made dramatically cheaper to enable broader development of space.  If we can get this cost down to around a $1,000 per pound or less then space colonization becomes a very interesting very real possibility.

This Wikipedia article has a nice summary of some inspiring out of the box ideas for launching spaceships into orbit without using inefficient rocket fuel technology.  There are even some interesting ideas from NASA referenced here.

There is a lot of good info listed above but most of these concepts are still impractical for resource, cost, and/or engineering reasons.  

While many of these ideas are interesting and inspiring, let me propose the right way to launch spaceships into space.  Are you listening Elon Musk, Richard Branson, and Jeff Bezos ?  How about you Russia or China ? 

In short divide the work into three incremental phases, and leverage a local mountain range.  For the United States let's say the Rocky Mountains.

Phase 1: Micro Satellites

The goal for phase one will be to launch micro satellites using electromagnetic rail gun technology.  This will be the base technology for all three phases, but the technology will be scaled up in phase two and three for larger payloads.  Meanwhile once phase one is completed it will bring in revenue to fund phase two and then again similarly for phase two to three.

The Navy has already demonstrated rail gun technology capable of launching projectiles 100 miles.  The fact that the gun is too expensive to be practical on warships is immaterial for launching satellites.  What matters for satellites is that the technology is already proven.  

To launch satellites we just need to tilt the gun barrel up a little to get the little buggers into orbit. 😎  OK, maybe we need to harden the satellites for a bit before launching, and make the gun barrel a bit longer for less G forces, but fundamentally most of the technology already exists.  It just needs adjustment.  Space is defined as 60 miles in altitude.

Micro satellites are small satellites that are only a few inches in diameter and weigh only a couple of pounds.  In other words very similar in scale to existing rail gun test projectiles.

Phase 2: Large Satellites

Two major adjustments will need to be made to handle the more traditional larger satellites planned for phase two.  The rail gun will need to handle much larger and heavier payloads, and the gun barrel will need to be significantly extended to enable lower G forces exerted on the more fragile payloads.  This is where the mountain range comes into play.

A mountain or hillside is suggested for this phase to enable supporting a long track of a mile or two.  The longer track will allow for slower acceleration of the payload to reduce G forces as it is brought up to a velocity sufficient to escape the earth's gravity.

An investment in some new machinery to automate building of the barrel tube structure is also recommended.  Refer to some existing large tunneling machinery that simultaneously installs tunneling support walls as it digs for inspiration in design.  Investing in this technology will also be useful as an incremental learning step toward phase three.  As with Phase one, when phase two is complete, it can generate revenue to support the next phase three.

Another consideration in phase two beyond the size and length of the launch tube, is air pressure and air friction.  The target payload should be encased in a heat resistant shell to absorb the heat from air friction.  To help with air friction heat as well as to improve the efficiency of acceleration vacuum pumps should also be leveraged to reduce air pressure in the tube.

Yet another consideration is managing collisions with birds and similar creatures at the exit of the launch tube.  The increased elevation at the tube exit should reduce the bird count.  Nonetheless radars could be used to check the flight path at launch, and lasers could also be used as a secondary precaution at launch time, sighted down the path of trajectory.

Phase 3: Manned Spaceships

The target payload for phase three is humans, which will have an even lower tolerance for G forces than large satellites.  So for phase three the launch tube length should be in the 30 to 60 mile range.  This will require searching terrain maps to find the most suitable site, that contains the desired slope to minimize the required support structure for the launch tube.

The tube should be laser straight and tilted upward as much as the terrain will enable.  Making the tube straight will reduce the complexity and risk involved with managing turns in a gun barrel traveling at 50,000 feet per second.

The target payload should be a small spaceship capable of flying in space once propelled out of earth's atmosphere.


The driving strategies behind this proposal are:

  • Use mostly static methods to increase reliability and efficiency, verses consuming vast quantities of fuel per launch.
  • Use mostly existing technologies instead of relying on the breakthrough invention of radically new materials and/or technologies.
  • Leverage the existing natural terrain when building the very large support superstructure of the launch tube, verses other extreme resource intensive designs such as entire man made mountains.
Colonizing space has been the mainstay of science fiction for decades.  One of the principal barriers to widespread space development is the cost of launching material into space.  This plan is achievable using mostly existing technology and even within the cost budgets of many nations.  It is exciting to think that mankind's push into space is getting closer to reality every day.

Sunday, December 13, 2020

Cool Live Stream Webcams

Here are a few cool live stream webcams I just found on the web.  I'm sorry but these are just too cool.  I suppose there will be more and more of these coming online in the future.  Pretty cool way to travel the world without leaving your chair.  

From Truck: 

Live stream from a big rig truck as it drives down the road !  Really ?  Wow.

Lakeway, Texas:  

This is the same lake my cabin is on, but my view is better.  This makes me want to install a webcam after I get my utilities in.

Times Square, New York

London Traffic


St. Petersburg Russia

Webcam Map

Monday, November 23, 2020

Video: Powered Parachute Flying by the Cabin

Pretty cool video of someone having a nice sunset float in the sky over Lake Travis.  Taken November 21, 2020.


Video: Felling an Oak Tree at My Cabin

Here is a video of me having fun with my chain saw.  This is one of the several trees we took down around my cabin to make way for new construction.  Luckily I still have lots of good oaks remaining on the lot.


Monday, November 16, 2020

Computer Architecture: Efficient Micro Parallel Synchronization Mechanisms

I have often wondered why modern computer instruction set architectures do not have more efficient parallel synchronization mechanisms.  Current mainstream microprocessor designs currently support two types of parallelism.

  • Very fine grain
    • Hardware based implicit instruction level
    • Implemented via advanced pipeline register renaming.
    • Synchronization delays on the order of a single cycle.
  • Very course grain
    • Software based explicit thread synchronization primitives
    • Implemented via atomic memory instructions.
    • Synchronization delays on the order of thousands of cycles or more.
With CPU clock frequencies beginning to plateau it may be time to revisit architectural synchronization models as a method to continue improving overall program performance.  If we have any bright PHD candidates reading this fishing for a dissertation topic, please consider this.

I would like to see an efficient software visible instruction level synchronization mechanism.  For example, something like a 'Queue Register'.  Some existing IO registers track read and write state.  I'm thinking some general purpose registers could similarly be architected for managing data flow synchronization at the register data level.  Such registers could essentially stall the execution pipeline on reads until a write to that register has occurred.  So the register effectively acts as a 'data queue'.  This would enable software control of fine grain parallelism, opening up potentially more real parallelism than relying on hardware to extract parallelism from an inherently sequential programming model.

Implementation Details: 

Since all compute state needs to be visible in order to stop, save, and later restart a process, status bits will also need to track the read/write data state of each queue register.  CPU pipelines could be redesigned to key off of these explicit reg data states, instead of implicit internal hardware states.  Just like current hardware threads swap in whichever thread has data ready, these new threads could work the same way.  The primary difference being the data ready state is now software architecturally visible.

Further note that these hardware queue registers are effectively thread state ready registers, analogous to ready state flags in operating system thread schedulers.  Since these ready flags are intended for micro data level parallelism, they should be closely aligned to the real register thread state supported by the hardware, as opposed to some arbitrary virtual state that relies on time slicing and swapping threads in and out of hardware.  While time slicing is theoretically possible it would blow up performance by 10000 times, entirely defeating the advantage of micro level parallelism.

So there is a different mind set when programming this level of parallelism.  This type of parallelism should have some awareness of the number of hardware threads efficiently supported by hardware, as opposed to some very course grain parallelism that has little concern about real hardware thread counts.  The implication is that this level of coding is more appropriate for hand coded assembly or for compilers.
Food for thought.