The Problem With Proprietary

I have seen the view expressed that open source and/or free software isn’t really relevant to enterprise systems. The reasoning (and this is coming from an IBM i perspective, I can’t speak to the experience on other platforms) is that, while the programs we have are proprietary we do have access to the source, can find out what is going on in the database and are able to either extend the software or build interfaces around it depending on requirements.

It’s true that none of these enhancements can be shared but no logistics company (to take an example) is going to get into the business of distributing software, so this restriction exists in theory rather than in practice.

Then Oracle comes along and provides the counter argument: Oracle smacks JD Edwards help site with cease and desist order

A JD Edwards technical reference and help site has been forced to close after being sent a cease-and-desist letter from Oracle.

The site’s UK-based webmaster recently revealed that a legal representative from Oracle, which acquired JD Edwards’ owner PeopleSoft in 2005, sent the cease-and-desist letter requesting the closure of the site due to perceived IP infringement.

The Oracle legal letter argued that by providing information about JD Edwards’ software schemas, the site was infringing on Oracle as a rights holder. The letter requested that the site admin “remove or disable access to this material.”

Let’s be quite clear here. The only people who are going to be interested in JD Edwards schemas are the people working for companies that have bought the JD Edwards software. These people will be capable of obtaining or building the schema information for themselves but, without an external reference, this information will be fragmented across multiple customers and left to become obsolete and increasingly accurate.

By thinking in entirely in terms of copyright protection, all that Oracle has achieved is to close down a site that gave businesses a reason to continue doing business with Oracle.

Before I finish this post, I would like to clarify that the point of this post is not to bash Oracle. Obviously, the focus is on Oracle and JD Edwards because the site that was shut down was The operator of this site was slapped down for trying to help his professional community and (indirectly) add to his supplier’s bottom line. Most people working on this sort of software simply wouldn’t bother, and this is both a result of using proprietary software and an unnecessary expense for the businesses that buy it.

flattr this!

Vim in Powershell

Because, why not.

And because I am stuck in Windows Land while at work.

And because I found myself playing around with Windows Power Shell. It’s not as good as Bash by a long stretch, but it is a significant improvement on the old Windows cmd almost-terminal. And, because I like to be able to move from task to task, without having to constantly switch windows, I thought I would give it a try.

The first thing to do, of course, is install a decent text editor. This is easy, a Windows binary exists for Vim so I downloaded and installed it. Then comes the fun bit.

Getting it to work in Powershell isn’t exactly difficult, but there are a few hoops that need to be jumped through and no clear overview of what and where these hoops happen to be. And that’s why I am posting this.

First, you need to allow scripts to run. This is not enabled by default because, obviously, if you have a scripting environment, the last thing you are going to want to do is execute scripts. Fortunately, this is easily checked and altered by means of the execution policy.

To see the current state of your execution policy, use:


This will probably tell you it’s restricted, in which case you need to tell it to run scripts by typing (or pasting):

Set-ExecutionPolicy RemoteSigned

(You can also set the execution policy to AllSigned or Unrestricted, but RemoteSigned is sufficient for now.)

Next, you need a Powershell profile (why is it that Windows terms all feel like they should be wrapped in a blink tag?), which can be created by typing (or pasting):

new-item -path $profile -itemtype file -force

And now you need to edit your profile to add a Vim alias. You’ll need to do this in Notepad:

notepad $profile

And then paste the following:

set-alias vim "C:/Program Files (x86)/Vim/Vim74/./vim.exe"

# To edit the Powershell Profile
# (Not that I'll remember this)
Function Edit-Profile
    vim $profile

# To edit Vim settings
Function Edit-Vimrc
    vim $HOME\_vimrc

(Obviously, you will need to amend the Vim path name to match the reality on your system.)

And you’re done.

I’m not sure how much use I will actually get out of Vim at work as my workflow often involves copying and pasting text from one application to another – and for that Notepad++ is probably still a better fit. However, having an additional tool certainly does no harm and I can certainly see cases where having the power of Vim available will be useful. For now, I will use both and see how each fits into my workflow.

And finally, this post was brought you you with the help of Microsoft, Marlon Abastar and Julian Kay.

flattr this!

Chicken Run

This is a real conversation (as far as my memory allows) from Friday.

Paul: So how many chickens are you thinking of getting?
Eve: The henhouse is large enough for four but I think three is enough.
Me: Any thoughts about names?
Eve: Not yet
Me: How about Bubbles, Blossom and Buttercup?
Eve: …
Me: …
Eve: We are not naming the chickens after The Powerpuff Girls.

And on Sunday we became the owners of three chickens. Two of them look like this:

The names are still a bit fluid at the moment, but I definitely think that the ginger one who keeps trying to escape should be called Ginger.

Ginger’s escape attempts pale into insignificance, however, when compared to the achievements of Catchicken.

flattr this!


It’s the half-term break this week so, today, I was home alone with the kids. Never being one to pass up an opportunity, I put them to work…

… and I’ve had a very peaceful evening so far.

flattr this!

If at first you don’t succeed, fail spectacularly

This made me laugh:

The deeply serious spooks tried to spare the sensibilities of their employees by employing automatic image porn filters. Unfortunately naive porn filters block images on the basis of how much of the picture consists of flesh tones. In the case of video conference calls, this turns out to be too much: they were getting lots of false positives (images classified as pornographic that were not in fact so), and as the whole point of the program was to trial face recognition software in order to detect Bad People Discussing Terrorism On The Internet, this was a bit of a problem.

Mass data collection doesn’t work, but this is the funniest example of failure to date.

flattr this!

Quote of the day: Hanlon’s razor

[T]here is still a sense that Allah’s name was deliberately inserted into the video and then desecrated. Rather than the rather more obvious explanation that an LA costume designer went out looking for vaguely “Egyptian” looking jewellery and picked this pendant up without giving the first thought to what the letters might actually spell.

The petition is a good example of the “conspiracy versus cock up” clash. When something happens you don’t like, it’s easier to think it was a deliberate attempt to upset you: the grim alternative is that the person who has offended, say, a belief held deeply, neither knows nor cares about you or your belief. In the grand scheme of things, you are utterly irrelevant.

- Padraig Reidy on the subject of Katy Perry and that video.

flattr this!

Automated devastation

This morning, Macsen and William built a tower…

And then we knocked it down. With Robots

Okay, one robot and a toy one at that. But Macsen did do a rather good job of programming it and we had a fair bit of fun figuring out what design would collapse most spectacularly.

Rather a successful Sunday morning, I thought.

flattr this!

Executing SQL statements from within a CL with RUNSQL

Here’s a CL Command I didn’t know about, RUNSQL, which allows an SQL statement to be run from within a CL program without needing a source file.

Inevitably, I found this because I was looking for a quick solution to a transitory problem. I won’t bore you with the details but, what I wanted to do was create a temporary file, populate it with orders for a (user specified) date and then copy this file into a library that has been made available to an external ftp application.

Here is what I ended up with (field, file and library names have been changed for clarity and to protect the innocent):

  pgm &date
  dcl &date *char 8
  dcl &statement *char 150
  dcl &nbrrcd *dec (10 0)
  cpyf fromfile(template/orders) tofile(qtemp/orders) +
       mbropt(*add) crtfile(*yes)
  clrpfm qtemp/orders
  chgvar &statement value('insert into qtemp/orders +
                           select * from archlib/orders  +
                           where msgdat = ' *cat &date)
  runsql sql(&statement) commit(*none)
  rtvmbrd qtemp/orders nbrcurrcd(&nbrrcd)
  if cond(&nbrrcd *gt 0) then(do)
     cpyf fromfile(qtemp/orders) tofile(ftplib/orders) +
          mbropt(*add) crtfile(*yes)
  dltf qtemp/orders

It’s all pretty simple stuff but being able to embed the SQL statement right in the CL makes a conceptually simple solution very simple to implement.

flattr this!

Vote for your digital rights (via) is asking EU voters and candidates to make a promise to vote in the EU elections taking place between 22nd and 25th May.

The upcoming election is your chance to promote a positive agenda for digital rights in the European Parliament for the next five years! You can promise to vote – and to cast this vote in favour of digital rights-friendly candidates.

This will give you the opportunity to maximise the number of members of the Parliament defending your digital rights.

Come back on the day before the election for a full list of the candidates in your area that have signed the Charter.

Go read the charter. It’s all pretty straightforward stuff, and if you agree with it, click the button, promise to vote and then cast your vote for a candidate that commits to respecting it – and your digital rights.

flattr this!