Four-cheese wheat berry broccoli bake

Dec. 22nd, 2014 09:08 am
skud: (Default)
[personal profile] skud
This is a crosspost from Chez Skud. You can comment here or there.

Found this among my drafts. It’s from mid 2014 and I never posted it because I didn’t have a photo. It was delicious, though, and if you’re in the northern hemisphere it’s probably just about the right season for you to eat something like this. Definitely not the weather for it here and now! Oh well.

This was an experimental meal that worked out so well I thought I’d record it here.

The purple sprouting broccoli is bursting out all over the place in the garden, and needed eating before it started to flower, so I made this up based on a combination of recipes I found online.

For starters, broccoli and blue cheese is a classic flavour combo, but I only had a little knob of blue cheese left in the fridge, so I mixed it up with some other cheeses. Then, there are all kinds of broccoli-and-cheese soups and pastas and casseroles, but none with the whole grains I was craving, so I decided to use whole grain wheat berries instead of the potatoes or pasta that most of the other recipes used.

Start by soaking 1.5 cups of dry wheat berries for a while (I left mine a couple of hours, having got the idea for this mid-afternoon) then cooking them in 3.75 cups of water using the absorption method, such as in a rice cooker, or in a pot of boiling water on the stove (in which case strain them after they’re cooked). This will probably take about 40 minutes which is ample time to get the other stuff sorted out. I did it at a leisurely pace while puttering around and drinking cheap shiraz, so realistically if you’re on the ball all the other prep will take about 20-30 minutes.

While your wheat berries are cooking, prepare these ingredients:

  • 1 large onion, diced
  • 1-2 cloves garlic, crushed
  • 1 tblsp fresh thyme, finely chopped
  • 2 tblsp fresh parsley, finely chopped
  • 1 small kohlrabi, grated (optional)

(I had kohlrabi that needed using. Don’t bother buying it if you don’t have it. But if you want to put more vegies in here, you can do it at this stage — zucchini would be an ok choice too, or any other kind of greens, or corn kernels, or mushrooms. Honestly I’m now wishing I’d put corn in mine. Damn.)

Saute the onion until golden-heading-towards-brown. Add the garlic, and saute a further minute or so, then add the herbs and any vegies that could do with having their water reduced a bit (in my case kohlrabi, but zucchini would also go here), and continue cooking a couple of minutes until it smells great. Set aside.

Now grate your cheese. I used approx:

  • 1.5 cup grated cheddar cheese (NOT the weird orange kind, what is with that, North Americans?)
  • 1/2 cup grated smoked cheddar cheese
  • 1/2 cup grated parmesan
  • 1/4 cup crumbled blue cheese

You’re aiming for about 2-3 cups total. If you don’t like blue cheese you can skip it. On the other hand, you could probably double the blue cheese if you really liked the flavour. All kinds of cheeses could work here to be honest — don’t sweat it too much, just use whatever you have, even just plain cheddar. You could go a bit lighter if you wanted, too. It’s flexible! Just grate any hard cheeses and crumble/dice any softer ones.

Mix all the grated hard cheeses together, and put about a cup of them aside for later.

Now make a white sauce:

  • 2 tblsp butter
  • 2 tblsp flour
  • 500 mL milk

In a medium-to-large saucepan, melt the butter then mix the flour into it to form a roux. Cook over medium-low heat for a couple of minutes, then start adding the milk a little at a time, incorporating it fully before adding more. As it becomes liquid you can add the milk faster. Once all the milk is added, turn the heat up to medium-hot and keep stirring until the sauce almost comes to a simmer and thickens up. It’s ready when it coats the back of the spoon or the sides of the saucepan.

Now add your cheese — everything except the cup of hard cheeses you set aside earlier — a handful at a time and stir in thoroughly.

Next, toss in the sauted onions, garlic, herbs and vegies from the pan, and stir them through, along with:

  • 3-4 cups broccoli, chopped (smaller than florets – mine were about an inch in their largest dimension)
  • your cooked wheat berries
  • a few grinds of pepper, to taste

Grease a baking pan and dump the wheat berry mix into it. Now make the topping:

  • 1 cup breadcrumbs (I used panko, but plain breadcrumbs would also be fine)
  • 1 cup grated hard cheese that you set aside earlier
  • a drizzle of oil

Toss them together, then spread them across the top of the wheat berry mix.

Bake at 180C until deliciously brown on top — about 30 minutes in my oven.

Serve with a salad, unless it’s pissing rain outside and you can’t be bothered going out to hunt lettuce in the dark, in which case promise yourself you’ll have a piece of fruit afterwards. Ahem.

Done last week (20141214 Su - 20 Sa)

Dec. 21st, 2014 09:41 am
mdlbear: the positively imaginary half of a cubic mandelbrot set (Default)
[personal profile] mdlbear

A lot of puttering this week. Got the hallway bookcase moved downstairs; it's now much easier for Colleen to make her way to the Rainbow Room. Looks good, too. Emmy set up the tree, and moved the cat tree into the nook under the stairs. The cats seem to prefer it there. This was Wednesday; last Sunday I put in shelves there, which also helps with the clutter.

I've also been decluttering my website working directories, fixing broken symlinks, re-arranging the tree in a more sensible way, and assorted other housekeeping. Still some messes there that I have to tackle.

Curio has been a darling; he likes sitting on my desk, on a pad of folded-up fabric, and usually sleeps next to me. Cat therapy for the win. We have excellent cats. Cricket exactly matches the description in Cat Faber's song Villains's Cat, and I expect she'll make a very good one when she grows up. Curio is pretty much already there.

I've been experimenting with luggage; most recently I've gone back to Max, the REI Agility sling bag. Not big enough for my work laptop, but that's an advantage. Tomorrow I'll see how well it works alongside a laptop bag.

Mood's been mostly ok, but occasionally still fragile. Tuesday and Wednesday evenings were particularly bad.

Links in the notes.

raw notes, with links )

Thankful, well, Friday

Dec. 19th, 2014 08:43 pm
mdlbear: the positively imaginary half of a cubic mandelbrot set (Default)
[personal profile] mdlbear

... and I think I missed last week, too. *sigh*

Anyway, today I'm thankful for...

  • A cat who loves me and likes to sleep next to me. Cat therapy is good for me, apparently.
  • Music.
  • People who love me, too. Damned if I know why, but I'm not complaining.
  • Caffeine and ethanol, my drugs of choice. (And occasionally Irish Coffee, which gives me both at once.)
  • Tools of the trade: bash, sed, git, make -- and learning some new (to me) ones, like cut.
  • The occasional burst of productivity.
  • Spread-spectrum radio, as in WiFi and cell phones. Hedy Lamarr.

Buy ALL the groceries!

Dec. 20th, 2014 12:40 pm
skud: (Default)
[personal profile] skud
This is a crosspost from Chez Skud. You can comment here or there.

Remember when, back in the day, I used to post pics of my market haul? I was inspired by the excellent book Hungry Planet: What the World Eats which shows photographs of families from around the world with a week’s groceries.

Well, today I did what passes for a Christmas shop at my place, which is to say I went to the shops with the main intention of buying tasty things to see me through the next week or so, and without being too finicky about the budget. I wound up spending $93, which is about the national average for an adult’s food for the week, but way more than my usual (which is half that or less). That’s okay; I got lots of tasty stuff, plus I restocked a few pricier items that I’ve run out of lately.

groceries laid out on a table

The full haul: $93 worth.

Read the rest of this entry  )

Wrapping up the year

Dec. 19th, 2014 08:16 pm
skud: (Default)
[personal profile] skud
This is a crosspost from Chez Skud. You can comment here or there.

It’s a cliche to blog about how seldom you blog, so I won’t. Instead I’ll just take the opportunity to reflect a bit on 2014 in terms of my home life.

It’s been a dog of a year. It’s been difficult to focus on anything much, let alone communicate about it. The first half of the year I was buried in personal stuff, and the second half of the year had more of that and then a lot of travel and busy-ness piled on top.

Most days I’m happy if I eat regular meals. I’ve had some great food this year, but mostly it just seems like a slog, trying to balance my body’s need for fuel, my inner self’s food-related hangups and issues, and the logistics of having food in the house, and having space and time to prepare it. I’ve had to cut myself a fair bit of slack on convenience foods and on food waste. Sometimes it’s better to buy a pile of fruit and vegetables just so I have them as an option, even if in the end I don’t eat them all and some of them wind up in the compost. Or to open a jar of something perishable so I can eat well now, even if I’m going away tomorrow or the next day and know I can’t finish it.

When times are hard I just keep trying to slog through it, do what I can, and remember nobody’s standing over me with a clipboard awarding points or writing down criticisms in red pen.

Some things I cooked/ate this year and didn’t post to the blog:

broad beans and leek from the garden, with ham, on homemade sourdough

broad beans and leek from the garden, with ham, on homemade sourdough

salad with red rice, sprouted lentils, tomato, kale, fetta, olives, and marinated artichoke hearts

salad with red rice, sprouted lentils, tomato, kale, fetta, olives, and marinated artichoke hearts

nettle soup

virulently green nettle soup with potato and ham


nachos with black beans and fresh jalapeno peppers from the garden

birthday lunch of ethical pork and beef ribs, corn bread, and coleslaw (eaten in a blanket fort! best birthday lunch!)

birthday lunch of ethical pork and beef ribs, corn bread, and coleslaw (eaten in a blanket fort! best birthday lunch!)

I’ve been doing a lot, a lot, of knitting and other crafts. Not least because I’ve had periods where all I can do is watch soothing TV and do something calm and repetitive. I’ve not been good at posting about it, though, nor updating Ravelry, and I have to admit that I’ve been casting on an awful lot of things for the “whee!” feeling of a new project, and not completing them. By my count I currently have at least 17 WIPs, most of which haven’t yet hit the “half done” mark.

I’ve instituted a kanban board on the wall of my living room for my craft projects (with an extra, innovative “> 1/2 DONE” column, because casting on and then putting it aside is a big issue for me) so I can see how many I have to finish. Sadly, it doesn’t work all that well to stop me casting on new things, because I just conveniently “forget” to add a sticker for the new project. Sigh. Oh well, at least every so often I can bring it up to date and it helps me remember what I have going, better than a pile of mystery project bags in the coffee table drawers ever could.

A week or so back I decided to try and reduce my WIPs considerably. My new rule (and let’s see how long I stick to it) is to have one large and one small/portable project out and work-on-able at any time, choosing the easiest to complete at any given time, according to the debt snowball method. Right now I’m working on a pair of fingerless mitts made from the tail ends of two colours of Mountain Colors Bearfoot, and a deathly dull product-knitting slog: a black hoodie in Bendigo Woollen Mills Classic 8 ply and in mostly stocking stitch. Both are made-up patterns, the hoodie being vaguely EPS-based, and the mittens basically just tubes with thumb-trick thumbs.

half-finished black hoodie

boring hoodie of boringness

red and brown striped fingerless mitts in progress

slightly less boring, but only just

My only escape from the “get through some bloody WIPs” effort is that I’ve told myself that I can knit hats for charity using wool from my charity-knitting basket, which I gathered up from all the odd scattered places and put in one pile last week. A hat usually takes about 2 evenings and is a quick distraction if I really must cast on something new. There’s at least a dozen hats worth of wool there, or roughly one for each reasonably-finishable project on the WIP list. (Some of the WIPs aren’t reasonably finishable, as they’re things like a mitred sock yarn blanket that will take years to gather odds and ends to make, or are super low priority, like the charming half-finished Scandinavian cross stitch table runner I found at a craft swap day — I have no qualms about that sitting quietly where it is for a long time.)

As for the garden… it’s a mess, and I’m late with planting everything, and that’s okay. I’m eating from it if not every day, then definitely every few days, and I have tomatoes, peppers, and eggplant coming along nicely for later in the summer. No clipboard, no red pen, right?

One thing that has been going well for me is that I’ve been making a pretty steady practice of getting rid of stuff. Somehow I’ve got to a point where it gives me a good, clean feeling to finish something and not have it any more, or to put something unused in the pile for the op shop (which seldom gets bigger than I can carry in my bike basket). Yesterday I had a momentary bout of “what if I applied for this amazing job and had to move house again?” and it made me think even more about how much stuff I have that I don’t need. I’m not going to apply for the job, but it did give me a kick in the pants about all my stuff.

A friend’s recently been talking up a decluttering guru who talks about getting rid of things that don’t spark joy, and it’s been good for me to think of my excess stuff in that way. It makes it much easier to say “no”. I don’t think I’m anywhere near Japanese minimalism (lol, no) but it does make it easier to get rid of things I’m keeping out of a sense of “ought”.

Finally, today I got a cleaner in, and she’s going to be coming regularly. I’ll be interested to see how much it changes my sense of overwhelmedness and whether it helps me get back on a more even keel with some of the other stuff I want to spend my energy on. I’ll give it a few months and then evaluate the costs/benefits; it’s a big chunk of my fairly tight budget, but I hope a worthwhile one for my mental health, which in turn is good for my so-called “actual” work.

I’m not going to make any new year’s resolutions, because they don’t work well for me. But here’s hoping 2015 is a good one!

skud: (Default)
[personal profile] skud
I'm afraid I'm going to have to mostly bail on [personal profile] liv's question, asking me to talk about "when mainstream feminism goes around reproducing lots of other hierarchies and oppressions", because I've been turning it over for a few days and I'm really not sure what to say.

I guess the short answer is: this is something I've been learning about and working on for the past 5 years, and I've been trying to improve my own practice around it, and to speak to people when they do faily things and I think I can usefully help out as an ally. The other thing, I suppose, is that I don't really engage much with "mainstream feminism" if by that you mean the sort of institutionally established liberal feminism that's out there; my feminism is Internet feminism, informed by fandom and geekdom and twitter and tumblr, and I'm not very involved in the stuff that actually gets covered in mainstream media or gets funding from mainstream bodies or whatever. And the feminism I am involved in is pretty aware of "other hierarchies and oppressions" most of the time, I hope.

Anyway I think this answer crosses over a bit with what I wrote for [personal profile] transcendancing under how my feminism has changed over time so I'll just point you there as well.

Sorry I couldn't write more :(

Wax clinic!

Dec. 17th, 2014 10:48 pm
shadowspar: A cross-country skier skiing into a stadium (xcski)
[personal profile] shadowspar
Start-of-season wax clinic at Soo Finnish Nordic tonight! Was really looking forward to this, 'cuz my skis haven't really had a proper waxing since I got them -- just whatever the store put on them, plus a daily touch-up with express wax.

So, my major learning for the evening: it turns out, applying proper wax to skis does indeed make them more slippery, and therefore faster! However, it also makes you more clumsy...! Going to have to check the package to see if this side effect is listed on there. Will be in touch with the wax manufacturer if not. ;)

done dids for wednesday

Dec. 17th, 2014 03:00 pm
skud: (Default)
[personal profile] skud
Structured procrastination du jour

* sent email to someone who's involved in a large seed-sharing project in India, to talk to them about their data use etc
* sought an introduction to someone who founded an open food project centred on nutrition data
* talked with some people on IRC about Growstuff values and with another set of people about attracting and onboarding designers in open source projects
* finished writing up report for work I did last month (project X woooot!)
* phone meeting re: work for the first quarter of next year
* sent out emails about next year's work (being vague on purpose!)
* womanfully avoided getting into a heated discussion about trigger warnings as an accessibility measure (and thanked someone who stepped up to say the thing I wanted to say, but said it much more calmly)
* made a decision about dropping some work I don't seem to be able to do effectively, and made some steps toward finding a replacement (a different project X potentially off my plate! also woot!)
* arranged time with lawn mower (for vague definition of "arranged" as the time seems to be constantly being pushed back)
* went to shops/ATM to get cash for lawn mower person (and also snacks and gin)
* ate snacks, drank gin
* phonecall with project X that I'm dropping, let them know I'm dropping them, offered to help find replacement, chatted a bit with friend who is my contact there
* improved Growstuff's README to have more information on contributing for designers, writers, etc (it previously only had information for coders)
* wrote fairly epic Get involved page for Growstuff wiki
* decided that since I've been enjoying the December posting meme, I might do a monthly blogging plan thing for the future; set up google spreadsheet for this
* read interesting blog posts about UX and design and stuff

(to be updated as I do stuff)

Done did

Dec. 16th, 2014 11:54 am
skud: (Default)
[personal profile] skud
I've been feeling really unproductive/unfocused lately, with a tendency to zone out and do nothing in particular for hours on end. I let myself have a week or so of that, because I figured I was exhausted from all the recent travel and events and stuff, but now I need to snap out of it.

I don't want to force myself to the point of burnout or anything like that, but I do want to redirect my energy a little. So the other day I made a couple of small decisions about that, mostly around practicing structured procrastination: if I'm going to goof off from project X, then I should fall back to lower-priority project Y, rather than to doing nothing-in-particular. It's not as if I'm lacking in Project Ys of all kinds, many of them relaxing or pleasant. For instance, I should have been working on some boring sysadminny stuff recently, and I've been procrastinating by watching TV; instead, I could procrastinate by gardening, or shredding papers, or working on a fun part of Growstuff.

Also, if I'm going to spend time reading/knitting/etc, I'm going to try and do it outdoors now the weather is really nice, rather than sitting inside out of habit.

Anyway, I think I'm going to make a list of things I've done, even if they weren't project X, so that I don't keep beating myself up over how I wasted a day by not doing X.


* dishes
* watered garden
* formed sourdough loaf (bake tonight)
* triaged knitting projects, hid all except two (going to try and have no more than 1 big/1 small actively in progress at any time)
* put away excess knitting needles/tools that were piled up all over the dining table
* tidied knitting mess next to TV
* generally tidy-up around my desk
* took down unconf schedule from skudcamp so i can use my whiteboard again
* shredded papers
* had a conversation with [personal profile] brainwane about design and open source, sent followup email
* drew a mindmap of "Growstuff Values" on my newly-cleaned whiteboard, and posted a question about the topic to see what other people think
* put some socks which no longer spark joy (if they ever did) in the op shop pile
* contacted someone about mowing my lawn (since this is one of the things I keep procrastinating on)
* started putting together an actual up to date resume (haven't needed a real one for years and years; need one now for a fellowship application)
* knit a little bit on the fingerless mitts that are the project I have that's closest to completion (what does it say that I'm prioritising my knitting WIPs via the debt snowball method?)
* tidied a bit in my bedroom, hung up clothes
* took out trash
* actually baked bread (hurry uuuupppppp i'm hungry)
* tidied up for craft night
* found a vendor who sells big blocks of pure olive oil soap at a decent price

(to be updated throughout the day)
skud: (Default)
[personal profile] skud
[personal profile] brainwane asks for my thoughts on/reactions to various foods, for the December posting meme.

Oatmeal: Pretty much my most hated food. I can't handle the combination of bland and mushy/slimy. Would eat it if starving, but not otherwise. Lots of people tried to tell me that I would prefer steel cut oats, so I tried that one time, and it was even worse. I felt like I was going to throw up after two mouthfuls. A world of no. (I have come around to congee, though, after reading a really good blog post about a whole-grain version of it. Just the description of the strongly flavoured toppings was enough to make me want to try it. I made some for myself the next time I had a free range chicken, and it was fine. The toppings helped a lot. However, since I so seldom have chicken and have never seen free range chicken congee or multigrain congee available in restaurants etc, it's not something I have often.)

Miso (soup or other): I like miso soup but not when it comes as a little bowl on the side of a Japanese meal. I would rather have a big bowlful of it as a meal in itself, or else that powdered packet stuff as a quick low-effort snack (especially when I had an office job); the side-soup thing is just too in-between for me. Lately I've started learning to use miso in cooking. This blog has delicious looking recipes (oat porridge excepted!) and I'd like to try a bunch of them. I'd also like to learn how to make miso-based salad dressings, as that would probably fit my eating habits pretty well, and extra protein and umami are always welcome in my salads!

Licorice (black and/or red): When I was about 11 years old, I got a licorice showbag at the Royal Melbourne Show and ate most of it in a very short time period. My poo was black for two days afterwards. Now I can never eat black licorice without thinking of that. I still like licorice but I don't eat it often, I guess because I don't eat candy often. Red licorice, ehhh, it's not such a thing here, and I'm not a particular fan. The scandinavian ammonia licorice stuff horrifies me just on general principle and I wouldn't try it even if offered.

Hollandaise sauce: One of the most important foods in the world! Vital part of eggs benedict (or florentine, the vegetarian version with spinach instead of eggs, which is what I usually order) and an Australian cafe brunch staple. My nearest cafe does an ok hollandaise but honestly I think it's just a smidge too tart. The other cafe I sometimes go to does a perfect hollandaise but serves their eggs bennie (which I get there because they use local artisan ham) on local artisan sourdough which NO, I want a muffin dammit, that's what eggs bennie *is*. The abominations I saw masquerading as hollondaise or as eggs bennie in American diners and brunch places make me shudder; the worst I recall was at a diner in Chicago, where I really should have known better. Hollandaise in the US usually tastes flabby and has no sharpness; sometimes it seems to have separated; and on at least one occasion, when I should have had hollondaise, it seemed to have cheese sauce (like on mac and cheese) instead. I no longer order eggs bennie when I'm in North America; huevos rancheros takes their place. (Wikipedia tells me that EB was invented in the US. Maybe I'm missing something, but in my experience, it is far more common and far better made in Australia than anywhere I've seen in North America.) On a related note, there's a pub in Melbourne that does an amazing kangaroo with bearnaise sauce and excellent shoestring fries; I love to take foreign visitors there for dinner.

Coconut milk: Important pantry staple, vital to a couple of my standard dinners (the most common of which is Thai curry with tofu and veg, made from the one true curry paste, which I also always have on hand). When I shop for coconut milk I always read labels and try to get the ones with the least additives, which can be surprisingly difficult at times. I often find myself wishing I had easy access to coconuts to make my own.

Done last week (20141207 Su - 13 Sa)

Dec. 14th, 2014 09:54 am
mdlbear: the positively imaginary half of a cubic mandelbrot set (Default)
[personal profile] mdlbear

I haz apparently been a Productive Bear, at least some of the time. I finally got around to putting grout into the seam where the arch was cut in between the kitchen and the Rainbow Room, and I now have a fourth working UPS and a functioning git-based web deployment system (for everything but the audio files, of course).

On the other hand, we had a one-hour power outage last night that revealed the fact that the server was plugged into the surge protector outlet on one of those UPSs instead of a battery-backed-up outlet. *headdesk*

I transferred my stuff from the shoulder bag I've been using for the last couple of years, to a rolling backpack. Which is clumsy as heck, but more comfortable to use. The major win, though, was putting my wallet and a couple of other essentials into a little shoulder bag (Eagle Creek Sidekick) so that I can just grab that and go out to lunch, or shopping with Colleen. Major win -- it's practically weightless by comparison with the old one. Of course, it can't carry a laptop, cane, rain hat, phone backup battery, coin purse, ... -- which is all rather the point of the exercise.

I have also been coming home hurting, and emotionally fragile from depression and anxiety. So there's that.

On the whole, though, not too bad of a week. I'll take it. Links in the notes as usual.

raw notes, with links )
skud: (Default)
[personal profile] skud
[personal profile] serene asked: "What can a person who is not a programmer do on Growstuff or other projects that will (a) help them become a programmer; and (b) not make everyone who already knows how to do it irritated."

What a great leading question ;)

Firstly, wrt Growstuff, we have a pretty high barrier for irritation, and "learning to program" isn't usually one of our triggers, no matter how slow or how many questions you ask. But I know that sort of reassurance doesn't really count for much, so here are some practical things you can do, too. I'm going to break them into three sections. You will probably want to work on the three sections kind of in parallel, starting with the basics in all of them, and then working up. I mean, you don't have to finish all the coding stuff before getting involved in Growstuff. Think of it like being enrolled in three 101-level courses simultaneously.

Learning the basics of coding

This isn't really what you asked for, but it's part of the picture, so I'm going to dump some generally useful learning-programming resources on you. I'm assuming you're starting from zero, but skip ahead if not. This is stuff that's not Growstuff-specific, but which you'll probably want to learn in parallel with getting involved with the project itself.

  • Play with one of the very basic 15 minute programming intros online. tryruby is popular (and Growstuff is written in Ruby, so it's relevant too), but there are others around as well. All you're trying to do is get the idea of making the computer do your bidding by typing code at it. If that's fun, you'll want to move on to the next thing.
  • If your interests incline that way (i.e. you think you want to build webpages and you care about how they look and the user interface), learn some HTML, CSS, and/or JavaScript. CodeAcademy seems popular and has interactive online resources. Codeschool is more about video lectures if that's your thing, and their front end foundations would be a good place to start. w3schools has good references and tutorials for all three.
  • If you think you're more of a backend person (you want to work in the engineroom, making things go, and don't much care how it looks) you should focus on learning Ruby and Rails instead. If you've never programmed before you'll want to learn the Ruby language a bit first. CodeAcademy has a Ruby track (which you do in your browser). Learn Ruby the Hard Way is kind of didactic and a bit of a pain in the ass, but it teaches from first principles and doesn't sugar-coat things, and will set you up well for real coding.
  • You should probably do at least the basics of both the above steps (HTML/CSS/Javascript, and Ruby), and at some point you should go in depth on one or the other. It's not necessarily a pre-requisite for other stuff though.
  • Work through a simple Rails tutorial like Rails for Zombies so you kinda know what a Rails app looks like.
  • Work thorugh a simple Git tutorial like Try Git to get a bit of a sense for what that's about.
  • Along the line you've probably learned a bit about using a command line and a text editor, but if not, you should get good at both these things. SublimeText is a good and powerful text editor and worth learning how to use well. Googling for "sublimetext tutorial" or "sublimetext tips" will get you lots of good resources. To learn how to use the command line, it depends a bit on what operating system you're on, and to be honest I couldn't find any tutorials I'd wholeheartedly recommend. Maybe someone in comments can help? But this is also stuff you pick up via tips from other programmers, over the course of your programming life. I am still picking stuff up after 20+ years. So you don't need to know everything up front.

Getting to know Growstuff, its code, and its community

  • Sign up for Growstuff itself and start using it. If you don't have a veggie garden yourself and don't want to enter dummy data in the live site, you can sign up on the staging website instead (or as well). Get an idea for the different parts of the website, the main actions available, and the mental model of how things are connected to other things. For instance, "a member can make posts, plantings, harvests", or "my profile has X Y and Z info", or "it looks like the site is using the same maps in multiple places", etc.
  • If something bugs you, is broken, or looks like it needs improvement, let someone know! You can post on Growstuff itself (I read all posts there), or on Growstuff Talk in the Problem or Idea categories. Or drop me a note privately. We'll take suggestions wherever we find them, in any format. Later, as you get more confident, you can learn how to make suggestions directly into the issue tracker that programmers use, but you don't have to up front (unless you want to).
  • Look at the code. It probably won't make much sense at first, but just take a cruise round and see if anything catches your eye. Pretend you're watching foreign films without subtitles. You won't necessarily understand everything that's going on, but you might catch bits here and there, and start to pick up on the storyline. You're not trying to understand every word yet, just get a sense for what things look like, and make some connections between the concepts on the site itself, and where they are in the code.
  • Hang out where the programmers hang out, and follow their discussions as well as you can. You don't necessarily have to dive in to them, but just absorb and notice the things that programmers talk about, the terms they use, the rhythm and processes of software development, etc. Follow any links they post. Google for terms you don't understand. For Growstuff, the main places where programmers discuss programmery things are this developer forum and our IRC channel. You should also watch this github repo to get notifications of issues, pull requests, etc which often have developers discussing/commenting on them; these are often the most nitty-gritty code discussions.
  • Cruise around the Development section of the wiki, and do the same absorption process. Not everything will make sense, but bits of it may settle in your subconscious, and you'll remember to come back and look again.
  • If you're feeling chatty, introduce yourself and socialise a bit. Here's an intro thread on our discussion forum, or just say "hi" on IRC and see who's around. We often talk about gardening, food, travel, making stuff, hobbies, and life in general, so don't feel like you need to only talk about programming. However, if you want to ask programming questions or let people know you're learning to program, you'll probably get plenty of advice and support, too.
  • You might like to ask someone to give you a code tour or to do a show-and-tell of what they're working on. Here's a thread to find a pair programming partner, where you could say you want to set up a first intro-level session. Be upfront that you're just learning -- on Growstuff, that's generally an incentive rather than the reverse.

Starting to contribute, as someone who knows zero-to-very-little programming but is learning

  • Help out in the testing threads, trying out new features. Try to break stuff, and think about how things might break, eg. try it on your phone, or put ridiculous things in the form fields, or try to do things you shouldn't have permission to do. When things break, see if you can hone in on what specifically is breaking, and describe it in precise terms. A precise bug report is half way to a fix.
  • Having done that, go look at the related pull request in Github (should be listed here) and see if you can match what's going wrong, to the bit of code where you think the problem might be. You can leave a comment if you like, on or around the problem line, saying "I think the problem might be here" (and why, if you have any ideas). This will help the developer find their fix. You don't have to if you're not sure though.
  • Look to see if there's a written test in the pull request. It will be in a file starting with "spec/" and will describe what should be happening. If there's a bug, and the test is passing, then the test is wrong. See if you can spot the error, and leave a comment. Or maybe there is no test! In that case, see if you can imagine what test should have been written, and leave a note saying "A test for X might have picked up the problem I found while testing this" or similar. (Again, if you feel awkward or unsure leaving comments, it's not required. Just reviewing the code is a learning exercise.)
  • Do a code review when someone submits a pull request. Even if you're inexperienced, you can still notice inconsistencies, or say when something is especially confusing to you as a beginner, which is actually helpful to know! Also think about the things people have said in previous code reviews (that you've been reading), and see if any of them apply. For instance, you might have heard that code isn't "DRY" (DRY = Don't repeat yourself, "not DRY" means the code is repetitive). So if the code you're reading does seem repetitive, you might comment on that. If you understand it all and don't see any problems, you can leave a comment saying "Looks good to me" or similar.
  • If you like doing front-end stuff (HTML, CSS, JavaScript) you can save copies of Growstuff pages locally and fiddle with them to try to improve them. You might want to try fixing something that's in our issue tracker or just something that personally bugs you (maybe create an issue first, in that case!) If you've made an improvement, drop a note on the forums or somewhere, and see if you can upload/send it to someone to integrate into the site (or skip ahead to setting up a dev environment to do it yourself).
  • You can do all the above without setting up a Growstuff dev environment, but the time will come when you want to do that. Here are the Getting Started docs. There's a reasonable chance you'll get stuck, so it's good to have a window open to the IRC channel, or be ready to post for help on the development forum, or have a friend you can drop an email to. We're usually happy to set up a pairing session to help you get set up, too (see link above). Or you could find a friend to do it with (perhaps someone more experienced at command line stuff, even if not specifically at Rails), or see if there's a local OpenHack or similar friendly/supportive coding event where you can ask for help if needed.
  • When you're ready to start coding on Growstuff, using the full development environment, look at our beginner-friendly tasks for starters (hmm, we need more of those!) These are ones that you should be able to figure out, perhaps with some help, if you've been through some tutorials like I listed above; they're generally between 1 character and a few lines of code. Look at our Coding session docs on the wiki to guide you through all the steps from "I want to do something" to "I've done it and submitted it". Again, you might want to set up a pairing session or do it with a friend, or at least be ready to ask on IRC or the forums if you get stuck. We'd rather answer simple questions than have you sit there frustrated not knowing what to do!
  • A good next step, if you want to get more familiar with Rails, are our railsy tasks which give you a good overview of how Rails basically works (models, views, controllers, migrations, etc). But really, what you do next will depend on your interests and what enthuses you!

I have rambled on a LOT here but hopefully there are some concrete steps and some reassurance. We really do like beginners, FWIW, and will do whatever we can to make your experience fun and productive.

I think you can probably apply a lot of this to other projects as well, but I'd also point you at my December meme post for [personal profile] melannen the other day, who asked for advice on contributing to a larger open source project, as most of that will apply to you as well. Be sure to check the comments, where [personal profile] brainwane links to a great description of how to evaluate a project in 5 minutes (this will help you find where the developers hang out, where to read the code, etc), and also a great template for how to introduce yourself to a new project in a really productive way.

Thanks to [personal profile] pozorvlak and Taylor (two other Growstuff devs) who contributed suggestions to this post when I asked for ideas on IRC :)
skud: (Default)
[personal profile] skud
As part of the December meme, [personal profile] melannen asks me to write about, "Advice for someone who wants to level up from coding stuff like simple javascript toys to working on large-scale open-source projects?" I'm a bit late (as I took an honest to god vacation for a few days, and then got delayed on the way home) but better late than never, right?

I'd say there are two main skills you need to get involved in larger open source projects, and those are communication tools/media, and distributed version control.

For the former: all large open source projects have some kind of communication channel, whether it be a mailing list, IRC channel, web-based forum, or something else. I think it's important to know how the technical side of these works (eg. to get comfortable using IRC or mailing lists), and also to absorb some of the culture of those communication channels, if you want to get involved in a project.

I would say that if you want to do well in an open source project, you should probably spend as much time communicating as you do coding. I imagine there are plenty of people that would disagree with me, but I doubt they're reading this DW journal ;) Some of the things I count under communicating include:

  • reading/replying to threads on mailing lists/forums
  • using IRC to get real-time advice/help or just to chat with other project members
  • commenting on bugs/issues/feature requests
  • reviewing and commenting on other people's code
  • following/being followed by/interacting with other project members on social media
  • writing up reports of work you've done (either for your own blog, or the project forum/mailing list, or wherever)
  • writing documentation or notes that other people might find useful
  • etc.

At first your communication will be lots of question-asking and basic stuff, but the more of that you get out of the way early on, the quicker you'll be able to communicate at a more advanced level, so don't be afraid of asking too many questions or whatever.

(Caveat: if the other people on the project make you feel bad for asking questions, or are rude about it, then they are being assholes. This is on them, not on you.)

The second skill I mentioned is distributed version control. Most open source projects use some form of it these days, and the majority (in my experience) use git, especially github. Others use git with a different host for their central repository, or use a different DVCS (eg. Mercurial), but generally speaking if you know how to use github, you can apply those skills anywhere.

Git's underlying engineering might be brilliant but its user interface -- the commands you need to type to make it do things -- is one of the worst-designed pieces of crap I've ever had to deal with. It is a pain in the backside to learn, and once you've learned it you'll have to keep re-learning bits of it because it has no consistency and laughs at your attempts to remember its syntax. If you find git complicated and frustrating, it's not you. But you still have to learn it, sorry. And you'll have to learn a bit more than most intro tutorials will teach you, too, because many intros assume you're working solo but large open source projects will have more complexity of branching/forking/cloning/pushing/pulling/etc. Best way to learn this IMHO is to find someone to slowly walk you through how your chosen project does it, and take copious notes which you can refer to later (and/or set your shell to record your history, and save it somewhere, annotated if possible.)

So yeah, those two skills, I think, will get you a long way towards working on larger open source projects generally. Beyond that, I think it depends a lot on what project you choose, and what tools/techniques/etc they are into.

There's something I wanted to link you to but I can't find it. I think it was a presentation done by [personal profile] brainwane (or maybe just linked by her?) where she demonstrated how, in 5 minutes, you can review the public face of an open source project and get a sense for its health and find out how to get involved. Anyway, hopefully brainwane will see this and pipe up in comments!
Page generated Dec. 22nd, 2014 06:13 am
Powered by Dreamwidth Studios