Ideas
2010-08-25
Secrets & Lies
Secrets & Lies, subtitled "Digital Security in a Networked World", is Bruce Schneier's electronic security guide for all seasons. Whether you're a security expert, a system administrator, a software developer, a manager, or simply a computer user, you'll learn something that you can use from this book. It's basic message is that electronic security isn't a problem that can be solved once and for all, but a risk space that can be managed. If you only read one book on computer security, this should be it.
2010-07-10
Flow Based Programming
Flow Based Programming is the second edition of Paul Morrison's book describing his data flow centric progamming methodology. FBP is a coordination language Paul developed at IBM well suited for connecting components to model and implement business processes. It lends itself to graphical representation, an FBP flow chart really is the program and tools exist to transform the graph into a list of components and links that an FBP engine can execute. Non-programmer domain experts may develop and maintain applications with appropriate component collections. Morrison's claim that FBP makes business applications easier to maintain seems plausible.
The flow of data from one component to the next resembles the Unix shell use of pipes to link the output of one utility to the input of another or tacit programming in J. Where these are linear, FBP supports tree and looping constructs. The components may be realized loosely coupled processes distributed across multiple cores or computers. FBP promises a path to take advantage of the proliferation of cheap, multi-core computers that challenges conventional development methods and languages.
Primitive components may be written in any language convenient for providing the necessary functionality, often assembler or PL/1 at IBM, but C/C++, Java, Python, and others have also been used. While components may be written in any language, their essentially functional nature seems to be a good fit for Erlang, Haskell, and the Lisp family of languages. I may experiment with FBP in Racket, since it seems to be a good environment for building domain specific languages.
I'd recommend this book for those interested in software development alternatives, multi-core, or distributed processing. While useful and readable as it is, new material for the second edition is appended to that of the first with insufficient integration of the text.
2010-07-04
Independence Day
We're experiencing a somewhat gloomy 4th of July, cloudy with occasional rain. The U.S. economic and political situation looks gloomy as well, but some optimists are looking forward to the restoration of the republic. Jerry Pournelle has a nice piece by Isaac Asimov on our National Anthem.
Happy Independence Day!
2010-06-27
The Pournelle Axes
The Left/Right division in politics has always struck me as inaccurate and misleading. As a libertarian, I never fit, was I "left" or "right", and relative to what? The Pournelle Political Axes provide a more useful two dimensional political classification schema.
2010-06-20
Fooled by Randomness
In Fooled by Randomness Nassim Nicholas Taleb shows the importance of chance and how it is often unrecognized. People tend to attribute their successes to their skill or wisdom and their failures to bad luck when in fact chance plays a role in both success and failure.
An interesting point is that history represents one possible sequence of events out of many possible outcomes. Historical analyses should therefore be taken with a grain of salt.
2010-05-12
Cybernetics
It's good to read the classics from time to time. Cybernetics: or Control and Communication in the Animal and the Machine describes the seminal work that forms the basis for toady's understanding complex systems. Applications range from biology to robotics to economics. Highly recommended.
2010-03-26
J 7
I've been interested in J, a dialect of APL using ASCII characters, since it's inception and have used it off and on over the years. I've mostly used it as an array based calculator, but may begin using it for more applications development. With J 7.01 beta it is becoming more interesting to me as it becomes less windows centric and severs the Java dependency of the non-windows IDE with it's web browser and GTK based front ends. The revised architecture seems more suited to community contributions. This promises to be a long beta cycle, but I think the result will be worth it.
2010-02-28
First DenHUG Meeting
We had our first DenHUG meeting yesterday. It was just Ben Atkin and myself, but we had a good chat about Haskell and why we're interested in it. We're taking different approaches to learning Haskell, Ben is downloading and studying applications written in Haskell, while I'm reading Real World Haskell, and we're both experimenting as we explore the Haskell ecosystem.
Ben asked me what my expectations were for the DenHUG meetup group. I told him that it was an experiment to see if it would help me learn Haskell. This got me to thinking that I should probably have better defined goals for the group. Here's a rough cut:
- Learn Haskell and explore it's potential.
- Meet others interested in Haskell, and more generally, Functional Programming.
- Determine where Functional Programming works better then other programming paradigms and where it is a poor fit.
- Find out why one would choose Haskell over functional languages like Erlang, Ocaml, or Scheme.
2010-02-09
PyCon Regrets
Things are getting very busy at work, with travel that conflicts with PyCon 2010, and I've had to cancel my talk there. I was looking forward to it. Maybe next year.
2010-02-05
Revisiting Cyber Renaissance
I've been doing some thinking about Cyber Renaissance and the system management problems the company is trying to solve. It's still an early stage startup and we're exploring some ideas about using autonomic clusters of computers to do useful work. This is an interesting problem domain, and may prove to be profitable.
We're looking at using a functional programming language such as Erlang or Haskell to implement this since they promise improved reliability and effective use of the multi-core processors that are now mainstream. As we develop our ideas, we'll experiment with the functional programming paradigm to see how well it fits both the problem domain and our brains.
2010-01-09
Exploring SLAPP
I recently downloaded the 2009-11-10 version of SLAPP (Swarm Like Agent Protocol in Python) and worked through the examples to see how it's coming along. It's still alpha quality and not organized as a package, but improving. Some file and directory names include spaces which is inconvenient for working on the command line. The code looks like Objective C written in Python. Tutorial 6 is under development but is functional. It converts a schedule.xls file to schedule.txt and fails if you don't have the xlrd module installed. Tutorials 7 and 8 are simply placeholders at this point. I also downloaded the Swarm documentation and Objective C source to help fill in the gaps.
I'm using Tutorial 6 as the starting point for a simple traffic simulation model. This consists of a four way stop intersection with the base case of drivers (agents) following the standard rule of proceeding through the intersection in the order they stop and yielding to the driver on the right when multiple drivers arrive at the intersection at the same time.
I'll massage the code from the tutorial to make it a little more Pythonic, package the core pieces to better support multiple models, and ensure compatibility with both Python 2.6 and 3.1. The tutorial has the beginning of a GUI interface using Tk which I may work on, though I'd like to see OpenGL and browser based interfaces as well.
2009-12-30
Mark's Daily Apple
I stumbled upon Mark's Daily Apple, the blog of "Primal Blueprint" author Mark Sisson. It presents his take on the paleolithic/evolutionary fitness and diet lifestyle. In a nutshell:
- Primal Blueprint Law #1: Eat Lots of Plants and Animals
- Primal Blueprint Law #2: Avoid Poisonous Things
- Primal Blueprint Law #3: Move Frequently at a Slow Pace
- Primal Blueprint Law #4: Lift Heavy Things
- Primal Blueprint Law #5: Sprint Once in a While
- Primal Blueprint Law #6: Get Adequate Sleep
- Primal Blueprint Law #7: Play
- Primal Blueprint Law #8: Get Adequate Sunlight
- Primal Blueprint Law #9: Avoid Stupid Mistakes
- Primal Blueprint Law #10: Use Your Brain
One could do worse.
2009-12-11
Best Wishes Libertarian Party
The Libertarian party is 38 years old today. Happy Birthday!
2009-11-17
Small Worlds
In Small Worlds: The Dynamics of Networks between Order and Randomness Duncan Watts explores the effects of network connections on system behavior. Network effects are evident in the spread of epidemics, the function of the brain, the adoption of new technologies, and other disparate areas.
Small World networks are non-random and sparsely connected. They tend to contain clusters of closely connected notes with a few shortcuts to distant ones. The "six degrees of separation" from urban lore is an example of the small world phenomenon. Watts raises more questions than he answers concerning this emerging research topic.
2009-11-11
Patriots
Some thoughts from Armed Liberal on what it means to be a patriot. Patriots come in all shapes, sizes, and colors. Being human, they've made mistakes, but they've left us a legacy of peace, prosperity, and freedom. We should honor their memory today, forgive their mistakes, and do our best to enrich their legacy and pass it on to those who follow us.
2009-09-19
SLAPP
I'm interested in Agent Based Simulation and have played with Swarm a bit. While Objective-C is OK, I prefer dynamic languages and have thought about building something in Python.
Pietro Terna has already done this as he describes in Agents in Simulation Models, using a Swarm-like Agent Protocol in Python. His SLAPP package is available here. SLAPP is still young, but can be used to build interesting models.
2009-08-01
Entering Space
In Entering Space Robert Zubrin describes how humanity could graduate from being a planet bound species to an interplanetary, and eventually interstellar one. He categorizes civilizations by the extent of their mastery of local resources. Type I civilizations exploit the resources of their native planet. Type II civilizations achieve control of the resources of their home star system. Type III civilizations expand to multiple star systems.
As founder of the Mars Society, it's no surprise that Zubrin sees Martian colonization and development to be key, though he acknowledges the potential of Lunar and asteroidal resources. He believes that governments will lead the way to space with private enterprise following and providing support services. I'm more optimistic that private efforts will play a leading role.
Zubrin looks at potential technologies consistent with our current knowledge of physics that might enable humans to travel, live, and prosper in the inner solar system, the outer solar system, and interstellar space. The most striking point in his analysis is that relatively fast interstellar spacecraft that could carry humans would expend an enormous amount of energy. They could easily become weapons of mass destruction, a sobering thought.
2009-07-12
Probabilistic Relational Networks
Learning Probabilistic Relational Networks are a generalization of Bayesian Networks. They can take advantage of the large volume of data available in relational databases and it is claimed that they are more robust than Bayesian Networks.
2009-07-02
Never Let Go
Never Let Go is a collection of Dan John's writings on strength and conditioning training. Subtitled "A Philosophy of Lifting, Living, and Learning", it provides a pragmatic approach to navigating the tangled web of information about health, fitness, and athletic training. A certain amount of strength and conditioning is necessary for good health and is fundamental to fitness and athletic performance. How much and what kind depends on your goals, and Dan emphasizes that you need to need to stay focused on your goals.
- The main points of Dan's strength and conditioning philosophy are:
- The Body is One Piece.
- There are three kinds of strength training:
- Putting weight overhead
- Picking it off the ground
- Carrying it for time and distance
- All training is complementary.
Each chapter is a lesson in the guise of an entertaining and enlightening story told by a master practitioner of the strength arts. Reading and rereading these stories will help you in your own strength practice, whether as a coach, athlete, or fitness enthusiast. As you read it you will sometimes think "I knew that", while realizing that you've just reached a better understanding. Dan teaches movements rather than muscles and you need to train the full spectrum of normal movement. However, if you try to emphasize everything, you end up emphasizing nothing, so he recommends a warm up that works a variety of movements which allows you to focus on specific goals in the main workout.
Since the body adapts to novel stresses, everything works but nothing works forever. Combined with everyone's unique genetics and history, this implies that you should try different things long enough to see how they work for you. If they don't work, move on to something else. If they do, continue with them until you stop progressing, then try something else. Keep a training log so you'll know what has worked in the past and can profitably be repeated.
"Never Let Go" is a worthwhile and enjoyable read for just about anyone. It's a great book on the pursuit of althleticism that should be read and re-read by anyone with more than a passing interest in health, fitness, and/or sports performance.
2009-04-23
Cloud Computing
Duncan McGreggor has embarked on an interesting series of posts about cloud computing. Cloud computing is many things to many people, but Duncan's perspective is close to mine.