[Relatively] Quick pizza from scratch

2011-07-12 3 min read Cooking Food Recipes Eddie

Tonight I tried a new recipe tonight, on a whim (I hit up the grocery store on the way home from work]. It was my first time making any pizza, much less two whole large pizzas, and they turned out extremely well. Only tools used were a food processor (with dough blade), oven, two pizza pans, and a pizza cutter. Adding the recipe here for my own records.

  1. Proof a teaspoon of yeast (dump it in 1/2 cup of warm water), let rest 10 minutes until one consistency.
  2. Add 3 cups of (bread, it’s high-gluten) flour to food processor, 2 teaspoons (on the small side, unless you like salt), a teaspoon+ of freshly ground black pepper (optional), and pulse the food processor for a few seconds.
  3. Turn food processor on, add the 1/2 cup of water, and then get another 1/2 cup of water and add that. Add 2 tablespoons+ olive oil to the mix. Make sure the dough isn’t sticky enough to stick to the sides, and not so dry that it’s not sticky. If not, either add a teaspoon of flour or water (1 per 30 seconds) until it’s the right consistency. Adding too quickly means it won’t work it’s way through, and you may over-do it.
  4. Take dough, knead for a few seconds, put in a greased bowl, and let rise in warm area. Try for an hour or two, but 30 minutes (the time needed to get the other ingredients) is possible.
  5. Get all of the other ingredients together. Add slicing blade to food processor if possible. Gather all veggies, and slice them.
  6. Grab dough, pre-heat oven to 500 (or a little above.)
  7. (Very lightly) flour a countertop. Knead for a minute or two, then cut into two. Make two flat-ish, 5/6-inch (but still a little thick) pizza crusts. Let sit for 10 minutes (which makes it easier to shape), and then roll the dough into real pizza-crust sizes.
  8. Add olive oil on top of the dough. Then add tomato sauce, then add cheese.
  9. Add veggies. If sliced in the food processor, you can stack ’em high, and they’ll simply bake down. Any thicker, and they may take a little longer. I used the 4mm slicer blade, and everything came out perfectly.
  10. Cook pizza for 10+ minutes, looking in @ 10 minutes. If you like, throw a 1/5th or less cup of water at the bottom, which [should] help the crust rise. If using a pizza stone, you can cook 2 @ the same time… one on the pizza stone which will cook faster, and one beneath. When the first is done, move the second up on the stone, and it will finish in just a few minutes.

No, I did not make the sauce. Needed to save something for next time!!! Actually, next time I will let the dough rise in the fridge either from AM to PM, or overnight, though that may be overdoing it a bit. We’ll see.

Continue reading

High Performance CSS code design

2011-04-06 12 min read Css Programming Web Design Eddie

In the last few years much emphasis has been placed on web performance issues. Browser vendors have optimized JavaScript engines, JavaScript libraries have been honed, and content delivery has been improved. Unfortunately, CSS has received less attention. Developers have been advised how to optimally transfer CSS files, and instructed to use CSS shorthand, but very little has targeted CSS code itself.

Ms. Nicole Sullivan is among those looking to improve CSS code. She has been promoting “OOCSS,” or “Object Oriented CSS,” her methodology for how to design and refactor CSS 1. She has collected a number of best practices for architecting a CSS framework. The benefits are simple: CSS will perform better, become more modular, as well as being grounded with a consistent API, making it easier to learn and use. This is accomplished by reducing the file size and complexity of our CSS.

While many of these techniques can be considered common practice for experienced CSS programmers, implementing them can be difficult. The art is in analyzing trade-offs and picking the optimal path. That said, these rules are not for everyone, or every site. It all boils down to deciding if the site’s performance gain is greater than the time it takes to learn and use the techniques.

Useful for sites with

  • Many pages
  • A common visual and structural design
  • Critical performance requirements

Less useful for sites with

  • A few pages or just one page
  • Varying design (possibly “portfolio” or design sites)
  • Few performance concerns

So how do we get started? We go hunting for bad code smells. In Chapter 3 of Refactoring: Improving the Design of Existing Code, Martin Fowler and Kent Beck coin the phrase “code smell,” meaning “structures in the code that suggest the possibility of refactoring.” Simply put, we go looking for chunks of code that our intuition tells us could be cleaned. In the chapter heading, Grandma Beck is quoted (then talking about child-rearing), “If it stinks, change it.” We’ll take a more formal approach to finding these code smells, going from easy to difficult. First, we’ll sniff around the CSS selectors, and then move onto the CSS properties. Finally we’ll look for visual design patterns that can direct the structure of our CSS.

Selectors

Selectors are both the easiest place to find code smells in CSS and the easiest to correct. Three big code smells tend to stink up CSS selectors; unused selectors, location-based selectors, and overly specific selectors. Each contributes significantly to increased CSS file size.

Continue reading

Installing PIL inside virtualenv for Ubuntu 9.10

2010-03-31 3 min read Django Python Eddie

I just removed a (real live) bat from my living room. That was easier than installing PIL in a virtualenv for Ubuntu 9.10. Why? Googling the subject seems to bring up a lot of old or mis-information. This will explain how… mostly so I can do it again next time.

I started with a –no-site-packages virtualenv, so as not to use (or more importantly depend) on any of the global site-packages. Ok, cool.

$ virtualenv --no-site-packages myEnv

First, I needed to install the python developer tools. (Use apt-get or aptitude, whatever floats your boat)

$ sudo aptitude install python-dev

Then, I needed to install libjpeg and libjpeg-dev. I’m not sure why, but I needed libjpeg simply doesn’t exist, so I needed to install libjpeg62. I can’t pretend that I know the difference (or if there is one). In fact, I may have gotten away with installing libjpeg62 and libjpeg-dev (rather than both “62” versions… libjpeg62 and libjpeg62-dev), but only further testing will tell.

Why? If you install PIL without this library, you’ll get those wonderful “decoder jpeg not available” messages in Python. Or worse yet, if you’re trying to use it in a Django, you may get some errors (specifically the “Upload a valid image. The file you uploaded was either not an image or a corrupted image” warning), or you may not get any until you open the shell. Either way, you can test with the method listed below. If you get the “decoder jpeg not available” message, your install didn’t work.

The zlib package handles PNGs.

$ sudo aptitude install libjpeg62 libjpeg62-dev $ sudo aptitude install zlib1g-dev $ sudo aptitude install libfreetype6 libfreetype6-dev

Alright, now we seem to be done with the prerequisites. Start your virtualenv (of course, myEnv in the example is the name of your virtualenv).

$ source myEnv/bin/activate

Download PIL and install. This will make sure to install PIL within your virtualenv’s site-packages.

(myEnv)$ wget http://effbot.org/downloads/Imaging-1.1.7.tar.gz (myEnv)$ tar zxvf Imaging-1.1.7.tar.gz (myEnv)$ cd Imaging-1.1.7 (myEnv)$ python setup.py install

If you run into further problems (the “decoder jpeg not available” message again), you may have to resort to the long directions to get PIL and libjpeg to play happily together, but I hope not.

Now that you have everything installed, test it. Open up a python shell from within your virtualenv.

(myEnv)$ python

Now try the following (with an image in your home directory) to see if everything is running smoothly.

Continue reading

Review of Learning jQuery 1.3

2009-09-24 2 min read Uncategorized Eddie

Learning jQuery 1.3 Cover
Learning jQuery 1.3
There were many things to like about this book Learning jQuery 1.3 by Jonathan Chaffer and Karl Swedberg. The stand-out positive in my mind is the wealth of topics covered. Both simple and difficult concepts are included, and both are handled with ease. Good coding habits are repeatedly mentioned throughout. Subjects like progressive enhancement are encouraged, and pitfalls like memory leaks are warned against. Many real-world examples are included, as well as the full source code.

Learning jQuery 1.3 has a writing style that is very dry for a book written in a semi-conversational voice. I prefer a writing style with a little more personality to it, but acknowledge that’s not for everyone.

I did have two small complaints. First, I like to see the API list out at the top of the chapters. Appendix D contains a complete reference, but I like having a list of methods to be covered at the beginning of the chapter. While I’m at it, I may mention that the “complete” reference is little more than a cheetsheet style list. Perhaps a little more would have been useful.

My second complaint is about the poor code syntax highlighting. Just for record, this has nothing to do with the content, it’s just a complaint against the publisher. Take page 145, where three-quarters of the page is example code, but contains only bold line at the top showing the emphasized line. First, the bold often wasn’t enough to draw the eye… especially at the beginning of the book when a novice reader has to mentally separate standard JavaScript from jQuery code. Second, I understand that the example code is included, but couldn’t it have simply been excerpted here? I don’t understand wasting an entire page, when much less would do.

Based on the overall quality of the book, I recommend it for jQuery beginners.

Boring "I moved" post

2009-09-09 1 min read Personal Eddie

Summer was ending so I decided to move. Ok, not really, it was simply time.

I’ve moved back to my parent’s house in Laurel, MD… which is exceptionally close to Columbia, MD. I’ve moved into my parents house in an attempt to save some money, I want to clean it and restore it, while putting my would-be rent money into the property taxes here.

The move wasn’t difficult in and of itself, but tied with the work that needed (and still needs) to be done at the house, it has been quite an undertaking. I have so much to do it’s quite overwhelming.

All of that mess aside, I am looking forward to getting back to study.

Older posts Newer posts