Terminology confusion

I ran into an old friend of mine on Messenger today, who I haven’t seen in several years.  We were great friends in high school and ended up going to the same college, but then sorta drifted apart.  So we spent a while catching up and talking about how things were going in each other’s lives.

He’d always been a pretty serious computer geek, so I asked him if he knew about StackOverflow.  The part I didn’t remember, at least right away, was that he was not only into programming, but also computer security and “ethical hacking” type of stuff.  So his response kinda caught me off guard.

“Yeah, of course.  It’s a great way to gain root!”

*facepalm*  Not quite what I meant… 😛

In search of public outrage

This one’s a bit off-topic, and mostly just for those of us from the USA.

Remember the 2008 elections?  The world’s moving so fast these days that that can feel like a long time in the past, but it shouldn’t be completely out of everyone’s memory yet.  When Barack Obama ran for President, one of the things he promised was to “take a back seat to no one” on Net Neutrality.  And he also pledged that there would be more openness and transparency in government.  But now the FCC is trying to sell us all out.

Instead of openness and transparency, they’re currently holding meetings behind closed doors with telecom corporations to decide what the rules will be.  Just as Congress did with copyright law from the 70s to the 90s, the FCC is currently in the process of allowing the very people that it is supposed to be protecting us from to write the rules!

This is a crime against the American people and needs to be treated as one.  Unlike a lot of political topics, Net Neutrality enjoys almost universal support among the American people.  This isn’t a liberal agenda topic or a conservative agenda topic; it’s something that We The People want.  All of us!  (Well, everyone except the telecom industry, who wants to be able to control how we communicate with each other online.)

Unfortunately, it’s starting to almost look like things are to the point where nothing but massive public outrage will get anything done.  But even though Net Neutrality is an issue that will affect all of us if we lose it, it’s not something easily visible.  Certainly not as easily visible as, say, a leaking oil well.  That’s visible enough to generate its own outrage.  Just point a camera at it, and suddenly all the turkeys in DC are falling all over themselves to demonstrate just how committed they are to fixing the problem.  That’s exactly what we need to have happen for Net Neutrality, but it’s not happening.

So I guess we’ll have to generate some public outrage of our own.  Get the word out.  The FCC is trying to hand the Internet over to the corporate predators it’s supposed to be regulating.  There’s a petition here that you can sign, directed at the White House and the FCC, but unless we get enough signatures to indicate serious public interest it won’t amount to much.  If anyone can think of a way to focus more attention on this issue, please put it into action.  Enough is enough.

Generics and the Covariance Problem

Since some version of this question keeps showing up on StackOverflow, and the answer’s always basically the same, I figured I may as well write up a post on here that people can link to.  Here’s the question, in simplified form:

“Why can’t I pass a TList<TMyDerivedObject> to a function that’s expecting a TList<TMyBaseObject>?  You can pass a TMyDerivedObject to a parameter expecting TMyBaseObject, so why doesn’t it work for lists?”

Continue reading ‘Generics and the Covariance Problem’ »

Inheritance baggage

A couple posts ago, I mentioned that I’ve been working with code generation lately.  This is for a part of the TURBU project.  An RPG relies pretty heavily on scripting, and RPG Maker, the system I created TURBU to replace, has a fairly extensive, if limited, scripting system.  The limitations were one of the things that made me say “I could do better than this,” in fact:  No functions, no local variables, callable procedures exist but parameters don’t, so any “passing” has to be done in global variables, only two data types: integer and boolean, no event handlers, minimal looping support, etc.

Continue reading ‘Inheritance baggage’ »

AnyDAC: First impressions

Over the last few days, when I’ve had some free time available, I’ve been working with AnyDAC’s TADMemTable, which Dimitry Arafiev, the author, pitched to me as a replacement for and an improvement upon TClientDataset. I’d like to report on how smoothly everything went and how well it works, and spend some time on my experience with the dataset and the new features it brings to the table.

Unfortunately, I don’t always get what I’d like.  I can’t really talk about stuff like that because I haven’t reached that point yet, due to various bugs and other implementation hurdles.

Continue reading ‘AnyDAC: First impressions’ »

ClassType field should not be “magic”

I’ve been doing some work with code generation recently. It’s kind of messy. You need to build a tree in memory of objects that represent various types of syntax for the language you’re generating code for. You have to think inside-out from the way you normally write code, since you’re creating it in logical tree form, not in line form.

You have a base class that represents any code-generation object, and a bunch of classes that descend from it.  In order to manage things properly, you’re likely to have TList<TCodegenObject> and TStack<TCodegenObject> collections (or, worse still, non-generic TObjectList and TObjectStack containers) all over the place.  But TCodegenObject, like TObject, is an abstract base class that you only instantiate descendants of.
Continue reading ‘ClassType field should not be “magic”’ »

I think I just got sponsored

A couple days ago, I got an email from a member of the AnyDAC dev team.  They make a set of professional data-access components for Delphi, and they’re looking for feedback and publicity.  They were willing to give me a free license, worth about $400, if I’d take the time to evaluate their components, provide some feedback and suggestions, and write up a few reviews on here.  Apparently they’re particularly interested in getting some focus on their in-memory dataset, DatS, which isn’t documented particularly well and doesn’t get used much. Continue reading ‘I think I just got sponsored’ »

Going to DelphiLive! again.

This time last year, I was getting ready to take a plane down to California to attend the DelphiLive! conference, where I’d been invited to speak about developing games in Delphi.  This year, it’s been pushed back a few months, to be held in late August instead of mid-May, and I just now got the acceptance email from the organizers.  Looks like I’ll be presenting two sessions this year: “Using extended RTTI to make your life easier,” and “Game engine development in Delphi.”

Continue reading ‘Going to DelphiLive! again.’ »

Adding non-data fields to a client dataset

A lot of the UI design for the TURBU editor is based on data-aware controls bound to client datasets.  I was trying to build a new form this morning that required me to filter one of the datasets.  Problem is, that would break other things that expected it not to be filtered.  Well, that’s not such a big problem, because TClientDataset has an awesome method called CloneCursor that lets you set up a second client dataset that shares the first one’s data store, but with independent view settings.  So I used a cloned dataset, and immediately got an exception when I tried to run.  The control I was using couldn’t find the field.

Continue reading ‘Adding non-data fields to a client dataset’ »

Personal property and computing

I’ve always been a big fan of Apple’s.  My first computer was an Apple IIe, and finding a copy of BASIC on there was what first got me into programming.  A good percentage of the modern user interface concepts we take for granted today were invented by Apple back in the 1980s.  (Yes, I know, they got the basic concepts from Xeroc PARC, but a lot of their work was their work, not Xerox’s.)  They’ve always been one of the major drivers of innovation in the computer industry, and they’ve done a lot to hold the line against Microsoft’s campaign for complete domination of the computer industry.  They’re one of a very few companies that have actually had any real success in that area, and we all owe them a debt of gratitude for that, if nothing else.

Apple released the latest iPhone development license yesterday, and I suddenly find myself a lot less grateful.

Continue reading ‘Personal property and computing’ »