I’ve recently been made aware that no one uses OpenID. This might explain why I haven’t gotten any comments on my blog posts in … three or four years.
I’ve re-enabled user registration (and if you were one of the people who commented ages ago you should be able to log in, if you still remember your login info). Apparently WordPress doesn’t support anonymous commenting by default? Seems silly.
I’m doing a little freelance programming work and I’m working with Zen Cart, an open-source PHP e-commerce solution.
Oh my god.
- It has a “flexible” importing system. Want to override some aspect of the site? Just put a file of the same name you want to override in a custom directory! Except there are FOUR places you can put it, and they’re all checked in order. So when you see something importing some template file, you have to check in those four directories in order every time to see which file it’s actually importing. Oh, and not everything can be overridden. For some… arbitrary reason.
- So why the hell would you want such an importing system? My guess is that it started before PHP got classes and polymorphism, so it was a way to fake that functionality… because this codebase’s preferred means of packaging information and transferring it from one part of the code to another is not functions or classes or anything sane like that, no. No, it fills global variables in one include file, then a second one reads those variables. So if template A includes templates B and C, it’s possible for B to pass data to C without A’s knowledge at all. None of those templates indicate in any way what globals they create, what they fill them with, or what they depend upon. Sometimes multiple templates will fill the same global variable with different types of data so that templates which depend on that variable will either work properly or just produce garbage.
- What makes that even worse is that business logic is woven inextricably with HTML generation. There is lots of code which, in the same loop, queries the database and builds up strings of hardcoded HTML. Those strings of HTML are put in a global variable to be read by some other template, but only certain templates because the data format is specific to the template which generated it.
- There are like eight templates which all build a list of products and they all build up their HTML differently, with different div structure and different CSS classes. This makes it incredibly tedious to do something like “make all the product listings on the site look the same.”
- Since the business logic is right there with the HTML generation, if your site has multiple languages and you change the business logic in one language, you have to copypaste it to every other language’s version of the template. What’s “separation of logic from presentation” mean, again?
- There are two stylesheets, one named “stylesheet” and the other named “stylesheet_tv” and they are both included on every page and there doesn’t seem to be any rhyme or reason why anything is in one or the other. Sometimes items from the same page will be split across both stylesheets.
- Sometimes there will be a line of code that is 850 characters long. Did I say “sometimes”? I meant in virtually every file that builds up HTML. The preferred method of building up HTML is by concatenating a dozen pieces, some generated by ridiculously verbose function calls, others the result of nested ternary operators.
I don’t know how anyone could make this. I don’t know how anyone could MAINTAIN this and say “yeah, it’s good how it is.”
I bought a big jar of olive tapenade a couple months ago, and while it’s delicious, I couldn’t think of anything to do with it besides eat it as antipasto. Based on a Facebook post by my cousin Caroline, I made some of these chicken burger things, though I made them into standalone patties instead of putting them on buns.
I REALLY regret not taking any pics now, but I was so hungry that I just scarfed them down. Boy was I pleasantly surprised!
First off, the ingredients:
- 1 lb ground chicken (though I used 1.25)
- 1-2 Tbsp olive tapenade
- 1 egg
- salt (maybe 1/2 tsp?)
- pepper (1/4-1/2 tsp?)
- bread crumbs
You might use less or more tapenade based on how strong it is. I used Trader Joe’s Olive Tapenade Spread and 2 Tbsp was a little strong (though still delicious).
Combine everything. I can’t give you an exact amount for the bread crumbs cause it depends on how juicy the chicken is, but you’re going for more of a feel than an exact amount. You want to be able to make patties with it, but you don’t want it to be super firm and meatloaf-y. I’d say go for four patties per pound.
Once you have your patties, you can either grill them/pan cook them like burgers, or if you want to make fork-and-knife patties instead, you can coat them in more bread crumbs with a little salt added. I cooked them in my convection toaster oven at 325° F for about a half hour. They don’t really sizzle or drip or anything; you’ll just have to go by feel and eventually cut one open to see.
(I also put a slice of provolone on each one and let it melt in the turned-off oven, mmm.)
Anyway they were FANTASTIC, oh my god the flavor and the juiciness. I served them with egg noodles and veggies.
When I was in middle school, I came across a list of Game Genie codes for the NES Mario games. As I had all the necessary ingredients (an NES, a Game Genie, and all three games), this gave me many hours of entertainment watching the games break in hilarious ways. Continue reading