I released pccipher today. This is my most significant open-source contribution, ever. I’m pretty proud of myself today.
Author Archives: Jay Jay
Credit card buckets spec
Steve Yegge had a few questions, so here are the answers. This shit is so obvious. It’s not hard to be a programmer at all.
- Can customers control the buckets, or are they fixed?
- Customers can control the buckets.
- If fixed, how many are there? What are their names?
- They’re not fixed.
- Let’s assume for the remaining questions that they are NOT fixed, since a predefined set of buckets would be “insanely stupid” and rejected by customers. So, how many buckets can a customer make? Min and max?
- Min: 0; Max: 2,147,483,647.
- Can customers give the buckets names?
- Yes.
- If not, do they have to use numbers?
- They can.
- What characters can they use in the name?
- [a-zA-Z0-9_\’\@\#\$\%\&\*\(\)\:\;\/\\\-\+ ]
- What’s the maximum length?
- 64.
- If we need to truncate the name in a printed statement, how do we truncate it?
- Truncate to MAX_LEN-3 characters long and append ‘…’.
- Can a customer change their buckets mid-month?
- Yes.
- Can a customer change their buckets between months?
- Yes.
- What if their balance is nonzero?
- Balances are usually nonzero.
- Can they transfer balance between buckets?
- Yes.
- Can a customer change the name of a bucket?
- Yes.
- Do names have to be unique?
- No.
- Exactly how does a customer name a bucket?
- They nominate a name for buckets they have created on the web-site.
- Online?
- Yes.
- Over the phone?
- No.
- By snail mail forms?
- No.
- Talking to bank teller?
- No.
- All of the above?
- Online only, to save on administration overhead.
- Same question for all other configuration settings. How? Where?
- Online only.
- Do credit-card customer service reps have to know about the buckets?
- No.
- How much do they have to know? (hint: everything)
- They have to know that the policy is that this feature is supported online only.
- Is there training involved? (hint: yes)
- Yes, we need to inform them that there’s a new online service.
- Do the customer-service tools have to be redesigned to take into account this bucketization?
- No.
- What about the bank’s customer self-service website?
- We’re integrated as a part of that.
- What about the phone interactive voice-response tree?
- It’s not relevant to this feature.
- What about the software that sends email updates to the customer?
- It doesn’t need to know about buckets.
- What about the software that generates printed billing statements?
- It should incorporate bucket information.
- How exactly does it represent the buckets, the individual spending limits and balances, the carry-overs from month to month, the transfers, the charge-backs, the individual per-bucket fees?
- Buckets are named per the customer’s setting. The individual spending limits and balances are reported. There are no carry-overs from month to month. Transfers are allocated in a bucket. What are charge-backs? There are no fees for this service.
- What about the help text on the website?
- It should be in UTF-8 format, and contain useful descriptive information about the service.
- What about the terms and conditions?
- This is a “best efforts” under-taking of the bank that is fraught with peril and not guaranteed (though maybe useful).
- What about the little marketing pamphlets?
- They should advertise the availability of the new service.
- Should they try to explain all this shit, or just do some hand-waving?
- Just do some hand-waving.
- Can a customer insert a new bucket into the list?
- Yes.
- How are the credit limits of the remaining buckets re-allocated?
- They’re not. If the customer adds a new bucket they increase their monthly spending unless they modify another bucket to account.
- What if adding a new bucket puts one or more of the older buckets over the limit?
- Adding a new bucket can’t do that.
- Do we charge fees?
- No. The service is free as a point of difference from other banks.
- Do we tell the customer they’re about to be charged a fee right before they create the bucket?
- There is no fee.
- Is it, like, OK/Cancel?
- It’s not relevant, there’s no fee.
- Do we send them a follow-up email telling them they just fucked themselves over?
- No, that would be a bad idea.
- What exact wording do we use?
- We don’t send such and email.
- Can a customer delete a bucket?
- Yes.
- What if there’s money in it?
- We ask them which bucket they’d like to transfer it too, or if they’d like it in ‘unallocated’.
- What if it’s overdrawn?
- It can still be deleted if it’s overdrawn.
- How do we represent the overdraft fee in the database?
- There is no fee.
- How do we show the deletion event in their bill?
- By omitting that bucket from their list.
- Can a customer merge or consolidate buckets?
- Yes.
- What if a customer has an emergency situation, plenty of limit in other buckets, and they really really need to charge to a couple of buckets, but they want to avoid an overdraft fee? What do they do? Are the buckets mandatory or discretionary?
- Buckets are discretionary, overall account balance attracts overdraft fee.
- How the hell do we even tell if they’re buying “chocolate”, anyway?
- We provide a facility for them to nominate the bucket of a transaction after it has been processed. There is a bucket for unallocated spending.
- The vendor doesn’t tell us the purchase type. How do we know how to charge the right bucket?
- We can’t, it’s up to the customer to allocate their spending.
- What if it’s ambiguous?
- It will always be ambiguous.
- What if the buckets overlap?
- The customer picks a bucket.
- Does the customer need a point-of-sale interface for deciding which bucket to put the charge in?
- No, it can be done after the purchase.
- Can they do “separate checks” and split the charge into several buckets?
- Yes.
- Where are you going? Answer me!
- I’m still here, baby.
- WHAT THE EVER-LOVING *FUCK* ARE YOU PEOPLE SMOKING? HUH? HAVE YOU EVEN THOUGHT ABOUT THIS PROJECT FOR MORE THAN A MILLISECOND? THE SPEC FOR THIS PROJECT WILL BE 5,000 PAGES! IT WILL TAKE THOUSANDS OF MAN-YEARS TO IMPLEMENT, AND *NOBODY* WILL UNDERSTAND HOW IT WORKS OR HOW TO USE IT, EVEN IF WE SOMEHOW MANAGE TO LAUNCH IT! IT’S FRIGGING IMPOSSIBLE! IT’S INSANE! __YOU__ ARE INSANE! I QUIT! NO, WAIT, YOU’RE FIRED! ALL OF YOU! AAAAAAAAAUUUGH!
- Having a rough day, Stevey? This programming gig isn’t for the meek, you know.
Announcing jj5-bin
Posting to reddit
I created an account on reddit, and submitted a link to ProgClub to programming.reddit.com. Figured we’re far enough along now with our services implementation that advertising is reasonable. Didn’t get any clickthroughs or upvotes though — I think I’ve been ignored! :(
SSH logins and member web-pages now functional
Read all about it on the news page.
New ProgClub logo
There’s a new logo for ProgClub, you can read all about it on the ProgClub logo page. A new favicon.ico file has been published, but the old one might be stuck in your cache.
My anthem
Alright, I’m the king of the world. (Hold it, hold it…)
I’m a mad man. (Wait, wait…)
I shook up the world!
I shook up the world!
http://www.youtube.com/watch?v=nFVho9MalI8
I’m out of control.
I think I’m goin’ crazy.
I’m out of my mind:
You can see it in my eyes.
I’m lookin’ for love,
In all of your faces.
I’m lookin’ for love…
I think I’m goin’ crazy.
I feel tonight…
We’re bought and sold.
Ah yeah,
I think I’ll overload.
I’m talkin’ about crazy.
I’m talkin’ about crazy!
I’m a mad man!
I shook up the world!
I’m a crazy man…
Ain’t that right!?
This ball of confusion…
Too big for the both of us!
Get outta my town… tonight!
I’m a mad man!
I wanna shake up the world!
I’m a crazy man!
I’m goin’ crazy.
I’m goin’ crazy!
Suck on my love meat.
Now suck on my steed!
I gotta go crazy.
If you know what I mean.
I’m goin’ crazy.
I’m goin’ crazy!
I’m a mad man!
Crazy!
I’m looking for you…
Through all of these faces.
Waiting so long…
I think I’m going crazy.
I’m lookin’ at you…
Feel my direction.
Aw yeah,
No reason to survive.
Yeah… I’m talkin ’bout crazy.
Ha ha ha… I think I’m gonna blow!
(Whoa, yeah!)
I’m a mad man!
I shook up the world!
I’m a crazy man!
Ain’t that right!?
This ball of confusion…
Too big for the both of us!
Get outta my town… tonight!
Ha ha!
I’m a mad man!
I wanna shake up the world!
I’m a crazy man!
I’m goin’ crazy!
Ha ha ha ha ha…
Wah! Suck on my love meat.
Now suck on my steed!
I gotta go crazy!
If you know what I mean!?
I’m goin’ crazy.
I’m goin’ crazy!
I’m a mad man.
I’m goin’ crazy!
I’m talking about crazy…
I’m looking for you…
In all of these faces!
I’m looking for you…
I think I’m going crazy!
(I’m talking about crazy!)
I’m lookin’ for love…
I’m out of my mind. (My mind!)
Ah yeah… I think I’m going crazy.
(I’m talking about crazy!)
I’m a mad man!
I shook up the world!
I’m a crazy man.
Ain’t that right!?
(Yeah!)
This ball of confusion…
Too big for the both of us!
Get outta my town… tonight!
Yeah! I’m a mad man!
I gotta shake up the world!
I’m a crazy man!
(Oh yeah!)
I’m goin’ crazy…
I’m goin’ crazy!
I’m a mad man.
I’m goin’ crazy!
Searching google
ProgClub is number one for programmer “good club”, cooler than progsoc and progclub. The results for programmers’ club and good programmers’ club are appalling — we’re nowhere to be seen (and the results for those queries are pretty useless, it’d make more sense if we were listed).
Help, I’m being raped by Googlebot!
Friggin’ Googlebot is crawling all over pcrepo, even though I told it NOT TO DO THAT. My robots.txt file has been updated to disallow svnro for most of the day. Google really should have a facility for web-masters to be able to force a reload of robots.txt in Googlebot. They’re going to hit me thousands of times before this is over. :(
ProgClub news
There’s been news every day for a while now. Not too shabby. Today’s news is that ViewVC (aka: Pcview) has been installed and configured on charity.progclub.org. That means that now pcrepo can be browsed online. Comes complete with support for syntax highlighting and line-numbers (courtesy of the ‘highlight’ package, couldn’t get enscript to work for PHP) and a proper logo with a link back to the wiki. That’s five completed projects now! Go school!