Fun With Programming Languages

Tonight, a Facebook thread got a little out of control after I posted a status update that I was “mentally bankrupt.” It was a long day working on client work – a project that is just about done but past due.

After some commentary by Facebook friends, we got to writing little scripts that would take a random selection from a group of adjectives and adverbs and put similar phrases together randomly.

What came of this exercise was a fun little jaunt into a variety of programming languages.

PHP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
$adverbs = array(
    'mentally',
    'morally',
    'emotionally',
    'socially',
    'psychologically'
);

$adjectives = array(
    'devoid',
    'bankrupt',
    'empty',
    'hollow',
    'vacant',
    'sleeping with fishes',
    'taking a dirt nap',
    'shallow'
);

echo $adverbs[array_rand( $adverbs )] . ' '
    . $adjectives[array_rand( $adjectives )];
?>

Ruby

1
2
3
4
5
6
7
8
9
10
11
adj = [ "mentally", "morally",
    "emotionally", "socially",
    "psychologically" ]

adv = [ "devoid","bankrupt",
    "empty", "hollow","vacant",
    "sleeping with fishes",
    "taking a dirt nap","shallow" ]

print adj[rand(adj.length)] + " "
    + adv[rand(adv.length)] + "n"

Python

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import random

def popchoice(seq):
    return seq.pop(random.randrange(len(seq)))

adj = [ 'mentally', 'morally',
    'emotionally', 'socially',
    'psychologically' ]

adv = [ 'devoid','bankrupt','empty',
    'hollow','vacant','sleeping with fishes',
    'taking a dirt nap','shallow' ]

print popchoice(adj) + " "
    + popchoice(adv)

SQL

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
CREATE TEMPORARY TABLE adjectives (
    adjective VARCHAR (30) NOT NULL
    );

CREATE TEMPORARY TABLE adverbs (
    adverb VARCHAR (30) NOT NULL
    );
   
INSERT INTO adjectives (adjective)
    VALUES
    ('mentally'),
    ('morally'),
    ('emotionally'),
    ('socially'),
    ('psychologically');
   
INSERT INTO adverbs (adverb)
    VALUES
    ('devoid'),
    ('bankrupt'),
    ('empty'),
    ('hollow'),
    ('vacant'),
    ('sleeping with fishes'),
    ('taking a dirt nap'),
    ('shallow');
   
SELECT CONCAT_WS(
    ' ',
        ( SELECT adjective FROM adjectives ORDER BY 1 LIMIT 1 ),
        ( SELECT adverb FROM adverbs ORDER BY 1 LIMIT 1 ) )
    AS RandomStuff;

For PHP Devs, a Twitter PHP Class

At the end of this post, this site is going into a twitter free period of two weeks. I’m sensitive to the fact that we talk about Twitter quite a lot and not always doing a good job of reaching into all of real life like we’d like. So after this post, Twitter will not be mentioned here until June 12. :-)

However, I wanted to get this out the door for devs to knock on and bang out. Awhile ago, I created the dctwits Twitter group and released the generic code. It included a Twitter class created by David Billingham and slightly modified for our use.

A few days ago, I released the WP-Twitterpitch plugin which also used the same class. It’s a very useful class but, to be honest, was a little messy, didn’t support XML and JSON and didn’t have support for all the Twitter API.

So I cleaned it up, extended it, fleshed it out a bit more, brought in Keith Casey as a developer and we’re basically launching the class as a version 1.0-beta today.

I’ll work on documenting things a bit more but there is some basic usage on the site and the code itself is pretty well documented. I need testers to bang on this code and submit issues back, via the Google Code page. Patches welcome as well. And I’d love to see how you use this. You can download direct or via SVN.

When Keith gets done with the DC PHP Conference, we’ll look at pushing it out as stable.

Funny WordPress Plugin Sneaks In

One of the annoyances we have at b5media is when people spell our company name wrong. We’ve even had our own people spell the name wrong. So annoying. :-)

Somewhere along the line last year, this universal plugin snuck into our build. I don’t know where it came from or who wrote it. (whistles) It solves the problem though. :)


1
 

Maintaining WordPress on SVN: Adding Plugins

Thank you for joining me again for this series on maintaing WordPress from subversion. We talked previously about creating an SVN repository and then about importing WordPress into the SVN repository.

Today, we get into customizations. It does us no good to have an SVN repository with WordPress if we don’t change it to be something other than what it is. In this episode I talk about adding plugins (and you can add any file, really) by adding it to the working copy folder and then checking it in.

I also touched quickly on svn:externals, although I note that I goofed in the screencast and typed

1
svn propedit svn:external .

instead of using the correct

1
svn propedit svn:externals .

(note the plural externals).

WordPress Export Base Class

Real quick note to let you know that over the weekend, I released new code that is GPLv2, relating to WordPress export format (WXR). The code and details are here and I’d love to get some input and contributions of other export classes. I’ve included a (yet undocumented) Expression Engine exporter as well and will back port some of my previous exporters to use this class as well.

So, if you’re a WordPress hacker, or if you just want to help people move to WordPress and have some coding skills, half the battle is already fought. Check it out.

Expression Engine WXR Export Class

Earlier, I shared with you a new base class I’m releasing into the wild. While that was a conceptually nice piece of code, and potentially useful, it didn’t really translate in usefulness without some actual code.

As mentioned, I just moved Shai to WordPress from Expression Engine and it required writing a custom export routine. Instead, I wrote the base class in conjunction with this extension class.

This could very well be a very good example for someone wanting to write their own routine. While it is custom to Expression Engine and would look different for other platforms, the bottom line is that the methods in the base class have to be fed certain data.

As with the base class, this is meant for advanced WordPress hackery and is not a plugin nor for rookies. I don’t mean to sound condescending, but it took me years to wrap my head around object oriented PHP and so please don’t ask me. :-)

I can say that if you dive into this code, you will find the roadmap to your own importer. This is fully functional. It works. It’s for Expression Engine, but it works. Your methods should return similar data.

One day I’ll get around to documenting it, but my mind is mush after working on this all weekend. :-)

Update: Oops, forgot where you can download. Subversion it is again:

1
svn co http://svn.aaronbrazell.com/wpwxr/tags/expression-engine/ expression-engine