
A Country Diary : 14 The Idler 's Editor , Tom Hodgkinson , has retired to a Devon farmhouse to write a book . Here 's the fourteenth part of his diary . I'VE BEEN up in the vegetable patch a lot lately . I consider it to be a freedom-seeking , anarchistic activity and it 's largely enjoyable . It 's the first step on the road to self-sufficiency . However , there are two downsides , one is the sheer amount of hard graft and the other is the expense . Seeds , for starters , cost anything from one to two pounds per packet . I made the mistake of spilling my seed a little too promiscuously with some of the early sowings . I must have planted , for example , around 150 lettuces where there was room for only 15 to grow . That meant throwing away many many seedlings , which seemed like an awful waste . I 've also had to buy planks to build the raised beds , that was a cost of about fifty quid . Then there 's been the wheelbarrow , fork , spade , bamboo canes , bark chipping , black plastic sheeting , Growmore fertiliser , watering cans , sprayer , twine , little plastic pegs for showing you what 's growing where , black plastic sheeting for laying on the paths , bark chippings , gardening books , pencil , weedkiller ( organic ! ) , lime for liming the soil ( whatever that means ) . Luckily I live on a farm so the cowshit is free . Then there 's the enormous amount of time the whole project has taken . If you factor that in , these are going to be the most expensive potatoes ever eaten . I was not prepared either for how complicated the whole thing is . I was given a book called ' The Vegetable and Herb Expert ' to help me learn the ways of the veg , but it has confused me enormously . Every vegetable seems to be different . They require different kinds of soil , light , and watering . Some of them have to be grown indoors and transplanted . Some , thank God , are sown directly into the soil ( which has to be raked to fine " tilth " first ) . I got everything the wrong way round and grew the carrots from seed on my windowsill and then transplanted them . You 're supposed to have a greenhouse and also things called cloches . Then I found out that for some vegetables you 're supposed to grow them in a special seed bed , and then transplant them somewhere else when they start shooting through ! I mean , why bother moving them ? Well . I have now planted radishes , runner beans , tomatoes , carrots , parsnips , beetroots , leeks , kale , garlic , onions , salad onions , one single courgette plant ( donated by a neighbour ) , lettuces and a whole bed of potatoes which I painstakingly DOUBLE DUG ( yes , just when you think you 've got the hang of single digging they spring this on you - DOUBLE DIGGING ! ) and filled with cow manure . The radishes are doing well . I was complaining about the amount of expense and hard graft involved in all this to Penny Rimbaud , CRASS founder and experienced vegetable gardener . " But no ! " he said . " It does n't have to be . It can be cheap and easy . It 's called permaculture . And there are some gardeners who do n't even believe in digging ! | " Hmm , I thought . I 'd like to meet them . So I have started looking into permaculture , and it does indeed look fantastic . It 's all about using nature to make your life easier , letting nature do its thing in terms of planting flowers which keep pests down and the like . Rimbaud said also that he is of the " just bung it in and see " school which I also like the sound of . Permaculture is also all about sharing seeds and plants , thus cutting down on the expense and allowing you to avoid becoming a victim of the gardening industry . Apparently , the Henry Doubleday Institute runs seed swap programmes and also produces natural old-fashioned varieties that have been all but destroyed by the big commercial seed companies . The only permaculture-type thing I have done so far is to plant marigolds near the tomatoes . Apparently they keep slugs away or something . But expect more permaculture tips soon , as and when I learn them . About six weeks ago , I planted around 40 seed potatoes at neat intervals and they all appeared to be springing up beautifully . I have just showed them proudly to Alan , my mentor in this gardening experiment . He was initially impressed , but then looked a little closer . " The leaves are looking a bit yellow , " he said . I looked at them and had to admit he was right . We looked up " yellowing leaves " in my book . Definitely not good . Could be a bad case of Blackleg . " Strikes early in the season , " my book said . " Treatment : none . Lift and burn all plants . " More work . More expense . © 1993-2005 The Idler | Designed by Noble Savage 