Now I’ve mentioned Braintree Payments a few times as the measuring stick against which all CC processing APIs should be considered. It’s a company I’ve wanted to work with for so long, just because I hate all of the existing payment gateway APIs. Finally a client came along who needed a replacement for the insanely Nazi-esque Paypal. Paypal by the way is a company that I hate, with a passion. So I hop on over to Braintree Payments and what do I see, a Paypal Company. What the hell? That’s right, they sold out, but not just to any company, but the one company in the whole world that I hate with the fire of a thousand suns: Paypal. Oh well, I imagine they just got bought by Paypal, so I decide to shoot them an email to see if they can help me with my client, selling legal goods online (just the kind of legal goods that Paypal will freeze your account over.) I get a nice reply from a sales rep who directs me to their Acceptable Use Policy. Words fail me. Do they process any transactions at all?!? It’s like they decided to decline to process transactions for 90% of the fucking internet. No Porn. No Age Restricted Services. No telecommunications equipment? No drug paraphernalia? Like t-shirts? Pipes? Because those are legal, it’s just the drugs that aren’t. And in some places, Mary-J is legal. Essay Mills? I can only guess they mean those sites that sell college/university level essays? Umm, yeah… […]
A year or so ago I tinkered with Go, a language created and promoted by google. I liked it, but I just didn’t have any project to use it with, so it didn’t go anywhere. Now I’ve been seriously considering updating my website with a more custom solution. I love wordpress and all, but it can be a really pain in the ass sometimes. Then I had an idea, why don’t I do my website in Go. That will give me a project to learn Go with. So I’ve been reading the docs, looking at source code, and I gotta say. Some of the ideas of Go just seem right. Go looks like a scripting language (it’s not the prettiest), but it compiles. Not only that, but the developers of Go have made some decisions that remove common irritations. Like formatting code. Everyone has an opinion, but Go tosses that shit out the door and says: Not fucking here. I like that. The formatting of Go appears to be, to a large extent, a part of the language. It’s not so strictly enforced, but because Go can compile its own AST, the go fmt tool can reformat someone elses code to the established standard. This leads to one of the many great ideas with Go, go fix. When API changes are made, the go tool chain can help you update your code, looking for common patterns and rewriting them in place for you, or printing an error when the code is too complicated. To me […]
Every few months I end up having to update one of my customers applications due to eBays arbitrary changes. I have to spend an hour or two futzing with their shitty documentation on the world’s slowest developer website. When you’re there, you have to deal with verbose yet trivial example code ( at least they have input/output examples) to do things you can’t really imagine anyone ever wanting to do. The developer website hardly works. All help is behind a paywall (thanks assholes) but what is worse, I paid for help, and I can’t even submit a ticket to PAY THEM FOR HELP BECAUSE THE SITE IS BROKEN, AGAIN. Really, I can’t even pay these people to do their friggin’ jobs. Don’t get me wrong, my personal software issues with the eBay API are based on not being an expert in their API. It’s fair enough that there is probably, buried deep in the docs, some obscure setting or something that would help me out. But I can’t find it for the life of me, and they don’t want to make it easy, mainly because they want you to pay for assistance. Fine. I’ll pay. I have no problem paying. But their stupid website won’t even let me do that!!!! The eBay API is one of those APIs that you are simply forced to work with. eBay is big, and people still use it, and as long as that is the case, you have to deal with their bullshit. But I tell you, the […]
So, I’ve been going back and memorizing some of my favorite poems. I decided to refresh Sonnet 57 first. It’s nice and easy. Being your slave, what should I do but tend Upon the hours and times of your desire? I have no precious time at all to spend, Nor services to do, till you require. Nor dare I chide the world-without-end hourWhilst I, my sovereign, watch the clock for you,Nor think the bitterness of absence sour When you have bid your servant once adieu; Nor dare I question with my jealous thought Where you may be, or your affairs suppose, But, like a sad slave, stay and think of noughtSave, where you are how happy you make those. So true a fool is love that in your will, Though you do any thing, he thinks no ill. This one is particularly easy to memorize. The repetition of Nor is helpful. The last bit is a bit complicated and can sometimes get confused because you have: Where you may be, and then you have Where you are. I suggest you use the method where you repeat the whole thing each time through, adding two sentences each time. Or one if you are having trouble with two. So a memorization practice would go like this: Being you slave, what should I do but tend Upon the hours and times of your desire? Being your slave, what should I do but tend Upon the hours and times of your desire? I have no precious time at all to spend Nor services to do, till you require And on […]
I finally decided to sit down and learn game development. From my research there is only one way to do it, and that is SDL. If it’s good enough for Valve and Steam, it’s good enough for me. As it turns out, it’s surprisingly easy to get up and running with SDL. There are plenty of tutorials about the basic SDL game setup, so I won’t repeat the ubiquitous info and go straight to some basic problems of making a game that no one really seems to discuss. There are two main problems when designing a game: How do I save and restore game state? How do I make my game configurable? C is a great language for speed and algorithms, but it is really shitty when you want to handle data. Games are both algorithm and data intensive. So for half the game development, C rocks. But for the other half, it’s a slog. Saving and restoring game state means populating a structure in your C code with values from a human editable, dynamically loaded file. Things like the x,y or even z coordinates of the player in game space, their health, equipped weapon, inventory items and so on. One solution for solving this problem is to use some kind of config file format like INI, or XML. INI is a good choice for very simple games, and it’s dead simple to write an INI parser in C. The other common option is XML, which means something like libXML, which means I’d rather have […]
Elite: Dangerous is an ambitious game, and on the whole is very well done. Though I would say it has been and continues to be plagued with a number of unfortunate gameplay killing problems, I expect that most of them will be taken care of post-haste. Games generally have two major problems, both are the game designer/programmer/producers fault: Buggy Client/Server The first kind of problem is the buggy client or server, but this is a fault which we can’t really hold against them, because it’s not like there is some cadre of developers twisting their mustaches and laughing about how often the client or server goes down or disconnects. It’s irritating, but generally the pleasure gained playing the game while it’s working can offset this problem. There is also the issue of being an early adopter of a game, the sooner you get in, the more money/power/respect you’ll build up in the game so coping with the growing pains of the client and server as well as the game has its benefits. Shitty Gameplay The other problem a game can have is shitty gameplay, which is a rather broad category which spans from irritating mechanics all the way up to “you’ve got to be fucking kidding me.” While Elite:Dangerous seems to have minimized any serious fun killers, there are a few mechanics which just piss you off to no end. When you couple these issues with the fact that if rand(10) < 5, the server randomly disconnects, or crashes, especially while in SuperCruise, HyperDrive, […]
I’ve been thinking about this problem for awhile, and I have an idea of one of the major factors preventing LISP adoption: EMACS. Emacs is, well, complete shit. Vim is also shit. They are the awesomest pieces of shit ever. There are people who love EMACS, and people who love Vim (I like Vim actually), but everyone today uses a real IDE, like Netbeans (I hate it) or at least SublimeTEXT(I love it). The truth is, you can use something like SublimeTEXT with SublimeREPL plugin and get interactive scripting behavior. So how is EMACS a barrier? Because when you are a newbie to LISP, and you go looking for information about LISP, the first thing everyone says is: Install EMACS. Most newbies stop reading there. “To hell with that!” they say. EMACS is one of those editors that was a really great idea, 20-30 years ago when computers were way different. The problems that they solved are barely relevant today. No one uses Macros, no one needs weird navigation with the keyboard. A modern IDE needs clickable tabs, not confusing buffer lists, they need file system tree displays, and project management functions built in, not from some confusing 3rd party lib. The features an IDE must have: Tabs Split Layout PRegex Find and Replace Highlighting and indenting The features that are nice to have: Column Select Plugin Architecture Most modern IDEs have all of these, and more. So if you want to learn LISP, forget about EMACS, EMACS sucks, it sucks clown shoes. People who […]
LISP is the perfect programming language. It is so perfect, it is shit. Well, okay it is not shit, it’s awesome, but when you first try to learn it, it is completely shit. It is the most obscure, abstract, whacked out language ever thought up. But it’s perfect. It is so elegant, and so simple, that you just can’t believe it works that way. What makes LISP difficult to learn is that you spend half your time unlearning deeply ingrained prejudices about how things can or should be done. Getting over this initial hump is the hardest thing about learning LISP. Oh, and the documentation can sometimes really suck. If LISP had PHP style documentation, it would totally rule. It would rule everything.
First run apt-get install curl sbcl Second run curl -O http://beta.quicklisp.org/quicklisp.lisp Third run sbcl –load quicklisp.lisp Fourth Inside the REPL run (quicklisp-quickstart:install) Fifth Inside the REPL run (ql:add-to-init-file) And you are good to go! I would suggest running (ql:quickload “cl-ppcre”) to get easy PC RegEx in your environment, as a programmer, PCRE is a must, and basic language requirement for just general purpose programming.
What is necessary to learn chess, and to become good at it, is to take on a kind of chess apprenticeship. Of course finding a chess coach is one way to do this, however; the problem with a chess coach is that he monetarily benefits the slower you learn. In the old days of an apprenticeship, the faster you mastered your trade, the more valuable you were to the master. This system[apprenticeships] arose as a solution to a problem: As business expanded in the Middle Ages, Masters of various crafts could no longer depend on family members to work in the shop. They needed more hands. But it was not worth it for them to bring in people who could come and go – they needed stability and time to build up skills in their workers. And so they developed the apprenticeship system, in which young people from approximately the ages of twelve to seventeen would enter work in a shop, signing a contract that would commit them for the term of seven years. At the end of this term, apprentices would have to pass a master test, or produce a master work, to prove their level of skill. Once passed, they were now elevated to the rank of journeymen and could travel wherever there was work, practicing the craft. Because few books or drawings existed at the time, apprentices would learn the trade by watching Masters and imitating them as closely as possible. They learned through endless repetition and hands-on work, with very little […]