Log on:

Joshua Kramer :: Blog

May 26, 2008

Howdy Folks,

I have an article up on Packt Publishing's Article Network here:

Click Here

This article shows how to secure your web-based Python applications with mod_wsgi and SELinux on RHEL5 (or CentOS 5 for that matter).

More blog posts to come shortly!

Cheers,

-J

 

Keywords: linux centos rhel selinux python mod_wsgi security secure

Posted by Joshua Kramer | 0 comment(s)

November 18, 2007

For a while now, I've been a fan of the CBS show Numb3rs.  Like many CBS shows, it exhibits a tad bit more depth than most prime-time shows.  The bits of math thrown in to the plot tickle my  neurons in an interesting way, and the action balances it out.  For the most part, at least up until this 4th season, it seemed as if the producers made a concerted effort to integrate the math into the plots and explain it in some detail.  However, this last season seems to be a bit 'off' in this regard - to appeal to a more mainstream audience, it seems they're relegating the math to the background.

I had intended to create a blog section on the math aspects of the show, but the folks at Wolfram publishing beat me to it.  Here's the link: http://numb3rs.wolfram.com/

The show used to do a very good job of avoding "T.V. Science", that bad habit of show producers to invent whatever science happens to be handy for solving their plot.  However, this last episode (aired on November 16) delivered a couple of doozies.

For the record, here is what a real DTMF decoder looks like:

DTMF Decoder

It's not the size of a PC's motherboard, with heatsinks and all that.  Decoding the DTMF tones won't tell you anything except what numbers were dialed - it surely won't pull up the location of the phon on Google Maps.  And who solders circuits without cutting the power, anyway?

 

Posted by Joshua Kramer | 0 comment(s)

November 11, 2007

I have a book called Vectors and Smoothable Curves by William Bronk.  Upon entering the title in Google, I get the following suggestion:

 

Posted by Joshua Kramer | 0 comment(s)

February 13, 2007

One of the challenges of software development - and specifically, paying for software development - is the time it takes to develop something useful.  The tools that make development time shorter, while still allowing a quality product, are worth their price in gold.  Even many of the free tools provide a large savings in the amount of time it takes to create and maintain an app.  In this posting, I'll describe my endeavor to pick up a highly productive language, Python.

A while back, my employer sent a few of us to .NET training.  This was optional, as our particular development group doesn't use .NET.  However, just for kicks, I decided to take the class.  This was a mental challenge for me, as I'm well aware of the problems that are caused by the vendor lock-in precipitated by, and supporting the monopoly of, Microsoft.  But I'm open to most things that will make me more valuable to my employer, so I bit the bullet.

We had the pleasure of taking the class from a Microsoft MVP, Steve Smith. Overall, the class was very productive, and Steve was informative.  And, as I learned,  Microsoft's developer tools make developers very productive.  It's very apparent why smaller software development firms use .NET; it keeps their costs lower.

However, there are still problems with the Microsoft way of doing things, which I will describe in a subsequent post.  Where the costs of developing software using Microsoft tools may seem to be lower, the cost of running a Microsoft platform is higher (than running Linux or Mac OS X), in some cases much higher.  So, while I was taking this .NET class, I was wondering in my mind how we could get the same excellent productivity while developing cross-platform apps.

In the past, I had heard about Python and how easy it is to pick up, so I thought I'd check it out.  A number of companies have found that their use of Python enables them to save a lot of time while increasing code quality, even when non-developers are trained to use it:

  • "We achieve immediate functioning code so much faster in Python than in any other language that it's staggering," says Friedrich.  United Space Alliance
  • "Nexedi is sometimes asked: Why not Java and J2EE? While it would be possible to create a similar system with Java and J2EE, development costs would be much higher."  NexEDI

Python offers drop-in simplicity for most of its functionality.  For example, I do most of my hobby development on CentOS, a clone of RedHat Enterprise Linux.  CentOS comes with a very mature, but relatively old, version of Python.  I wanted to use a newer version with a few nifty addons such as wxWidgets and Zope.  It was very easy to drop python into its own directory, add the external packages, and then tell my scripts to use the new python instead of the system-wide, original version.  It ws also very easy to deploy these new components onto a Windows-based system that had Python installed.

So will Python live up to its promises?  Watch this space to find out. Being able to quickly develop a GUI app that needs no recompiling for Windows or Linux is a definite plus...


Cheers,

-J 

Keywords: development, linux, python, software, windows

Posted by Joshua Kramer | 0 comment(s)

January 06, 2007

It's almost as dangerous as running with scissors!

Most guys I know, myself included, like G-forces.  The masculine thing to do with anything big enough to ride, it seems, is to put a motor and wheels on it.  Or, if it already has a motor and wheels, to put a bigger motor and wheels on it.  But in the end, it's always the G-forces that matter - there's nothing like a swift kick in the rear provided by some menacing machinery.

Those of you who have housecats know that they run - and run fast - when they want to.  Somewhere around the upper end of 20 miles per hour is the velocity at which many cats happily travel, even while inside the house, and even on hardwood floors.   But what about dogs?  Given the additional mass present on most dogs who can really run, it's hard to get going in the confines of a house.  Cats accelerate pretty quickly; we clocked one of the Bengals at 23 MPH within the span of 25 feet (giving it about 50 - or was that 500? - times the power-to-weight ratio of a Dodge Viper).

But, as you can most likely guess by the title of this post, a well-built dog can get going just as fast.

I've been meaning to start some sort of exercise program.  While we usually walk the dogs about a mile per day, that's only a notch above the sedentary lifestyle I was once used to.  Therefore, I decided to run instead of walk.  Before I knew the full ramifications of my actions, I found myself buying some harnesses so they wouldn't choke when they're running full tilt (and because I do intend to teach the Huskies how to pull a sled, or pull me on skis).  I had remembered something the trainer at obedience school had said about sled dogs wanting to compete (and therefore run faster), but I didn't remember enough to know to watch out...

The First (and Last) Run

Running with Huskies is something that is quite exhilarating; it's like falling: it feels good until you realize you have to stop at some point.  Usually, a sled dog is pulling something of mass, that has its own mechanical means of stopping, across a snowy field (hence friction).  But this wasn't the case; there was just me, and while I have more mass than the average sled, there wasn't any friction between me and the ground - nor was there any mechanical means of stopping.  But enough about stopping - how did it go?

When we took the girls to puppy kindergarten, one of the things the trainer warned us about is competition.  The dogs will always compete at whatever they're doing, and pulling things is one of those competitions.

We started out with a light jog, and everything was going smoothly.  I then let the girls know that they could take off, and take off they did.  First, Dakota took the lead and went a bit faster.  Then, Nikita, matching Dakota, looked over and decided that she'd go faster.  This went back and forth once more, and with each one-updogship came a burst of energy.  And then I, at first under my own propulsion, realized that I was merely lifting my feet off the pavement to maintain an upright position.  And I needed to stop.  Soon.

Luckily, there was no impending disaster and therefore 150 feet was plenty of distance under which I could safely put a halt to our rapid pace.  But - wow - I hadn't felt acceleration like that since my younger days when I used to race cars.  I never realized that dogs can run as fast as cats - they just need some distance to safely get going.  And safely stopping is a whole different matter entirely...

Posted by Joshua Kramer | 0 comment(s)

When I mention to someone I've just met that I major in Philosophy, the next statement usually follows: "Do you want fries with that?"  The implication, of course, is that a liberal arts degree has little practical use.   While this is a popular view, it overlooks some important advantages of the liberal arts education.  As I will demonstrate, a liberal arts major carries unique traits that are useful in many professional positions. For this demonstration, I'll describe the traits that are useful in the a Network Administrator posiion. Granted, it would be an error to hire someone with a BA in Russian Literature who had no practical experience; but many liberal arts majors either have prior work experience or minor in a field that makes them highly employable.

Think first, then act intelligently.

Often, information technology (IT) workers see themselves as an end result.  Therefore, we have "IT Projects" that cost money.  But an oft-overlooked and important rule is this: IT exists to serve its customers.  A company that makes widgets will derive benefit when it automates its widget manufacturing capability.  The IT workers in that company don't work to "implement sophisticated factory controls" or "automate customer reporting", they work to improve the efficiencies of and to protect the interests of the business - in short, increase profit by increasing revenue or increasing savings.  Therefore, we have "business projects that have an IT component to them".

Majoring in liberal arts gives a candiate a "big picture" view of the environment (internal and external customers) and the role of IT in that environment.  Starting from the top: is this a for-profit hospital, or a non-profit? What are the practical business, financial, legal, technological, and human resource needs? Will any given implementation of a network change help or hinder these needs? While planning new implementations, how can we best meet those needs? Even if it is not practical to spend an extended amount of time making these considerations for each project, the candidate will know enough about the environment (and should take the time when first starting a new job to understand all of these facets of the environment) to make a careful consideration.

The job of the candidate is to make business processes more efficient (therefore saving money or increasing revenue), and considering these attributes of the environment noted above is essential in this goal.

Of course, all of the philosophizing in the world won't help if the tire never meets the road, and that's another area in which the candidate should excel. In a technology position, it is common to "go with the flow" and, for example, just buy a Cisco router when needed. Instead, the candidate should consider the facets of the environment discussed above and work to find the most efficient end result. Usually, this is accomplished via Service Level Agreement. This agreement, a specification determined as part of the planning process, defines things such as:

  • Availability. (Is this a mission-critical network that must be available 24/7?)
  • Capacity.  (How many nodes on the network?  At what speed?  Are there any special circumstances?)
  • Contingency Plans.  (What happens if the network goes bump in the night?)
  • Human Resource Issues.  (Do users require retraining?  Will they need incentives?)
  • Responsibility.  (Who is responsible if the network goes bump in the night?)
  • Psychological or Political dimensions.  (While this is generally not a part of the written agreement, it is nevertheless an important part of any implementation.  What rules or responsibilities must we define to ensure that management and the userbase is comfortable with our decision?  What is the value of "go with BigBrandX because then there's somebody to sue if it goes bump" (even though licensing may preclude this), compared to a more financially cost-effective approach?

The last point is addressed by one of the strongest effects of an excellent Service Level Agreement: to make the "human factor" comfortable.  If, given a defined set of specifications, one could either choose a BigBrandX solution for $25,000 or an Open Source solution for $12,500, and both solutions fully met all requirements of the SLA, then justifying the implementation of the more cost effective (and therefore more efficient) solution is that much easier.

Think first, then act intelligently.  This is my first post on hiring liberal arts majors, and it's a good overview.  I'll continue to blog on this subject as I think of more ideas.

Cheers,
-JB

Posted by Joshua Kramer | 0 comment(s)

This is a draft, seeking publication, of the book I wrote a while ago about using Linux on the desktop. While this version is based on Mandrake 10, I am currently rewriting several parts of this book for Redhat Enterprise Linux 4.

 

Freedom 4 You

Posted by Joshua Kramer | 0 comment(s)

This post contains resources for the Capitalism and the Constitution project that I completed for my Senior Thesis in May of 2006.  The paper itself is attached below.

Here are a couple of links to the Ketola paper I cited in this project: One and Two

Ketola's paper is important to this project, as it short-circuits the argument of proponents of laissez-faire capitalism that the capitalist model itself will regulate bad behavior.  Instead, Ketola argues, the actors of capitalism (in this case, corporations) perform acts which have effects on uninterested third parties, and it is these effects - which can be devistating - that the capitalist model does not serve to protect against.  Ketola presents a sort of 'holistic capitalism' if you will, and describes how capitalism can coexist amicably with the interests of third parties.

Indeed, it is clear that Adam Smith's model of capitalism only works in small agrarian economies, not the global economy we have today.

 

Corporatism and the Constitution

Capstone Handout  

Posted by Joshua Kramer | 0 comment(s)

Greetings,

This post presents some of the ideas I discussed in the Philosophy and Religion seminar on Saturday, September 16th, 2006.  If you have any comments or would like to join a discussion, please drop me a line at josh@globalherald.net as the system is not currently set up to accept anonymous registrations.

  1. Complete the thesis on something you feel compelled to act upon. Your thesis can be one of two things: a thesis intended to get you three credits, or something that you can continue to work and act upon for the rest of your life. You might expand it to become a book, for example, or take a theory that you reviewed and create an actionable plan upon which to base a business or career. If your thesis is something you can act upon, you're more likely to find it fulfilling. (Note that I didn't say easier, but more fulfilling. If it's more fulfilling - you have a stake in the work, it's something you believe in versus just something done for credit - you generally produce a higher-quality product.)
  2. Try to integrate at least two or three major topic areas, such as economics and the law, or economics and the moral aspect of some event or theory.
  3. When integrating those areas, think about things from unique angles. A very good example of this is Targa Ketola's paper on Corporate Responsibility that I cite in my project; it does not decry capitalism as evil, but it shows what can occur when the free market is utilized to its fullest extent without regards to the effects of that utilization. Proponents of laissez-faire capitalism often believe that the free market will serve as its own regulator of bad behavior, but Ketola shows why this is not so.
  4. Do not be afraid to challenge yourself. This can be tough, because sometimes after doing a substantial amount of work you find that a fundamental assumption is incorrect. Or, you find evidence that makes you *think* that a fundamental assumption is incorrect when what you actually need is better evidence or a stronger way to formulate your argument.
  5. Begin this process your first year in school. Find something that really floats your boat or makes you angry, and then learn about it in depth.
  6. Find a way to stay on-task. If you are distracted easily, then unplug the internet and concentrate on your research.
  7. Check out the book, Writing on Both Sides of the Brain (Henriette Klauser) for ideas on unique and productive writing styles such as rapidwriting.
  8. Never underestimate the usefulness of a good editor who can work with you from the beginning of a project. Especially helpful is an editor who can get to know your style and subject matter.

Posted by Joshua Kramer | 0 comment(s)