Hello bread – coder’s trek to mastering baking

I’m always interested into cooking and baking, because I found they are quite similar to coding in some way. Both coding and cooking/baking needs you to follow some guide first, step-by-step, make something simple but nice out. Once you get into it, you start to try out different stuff, and there all the innovations come. That’s why you can see there are so many coding books/documents name in “XXX Cookbook”.

I’m fascinated by the cookies and biscuits made by my wife, they taste delicious. And more importantly, it makes you feel you can make better things than those on supermarket’s shelves by using simple ingredients like butter, salt, water etc and following some simple step-by-step guide. So I decided to start my journey to become a codebaker (not code breaker).

So my journey starts with a popular bread-baking book: The New Artisan Bread in Five Minutes a Day

It looks so simple to me so after reading the book and watching some youtube videos I bought tools like baking stone, pizza peel, and bucket then started my baking journey – very confidently.

And here traps come one-by-one……

Try #1 – 17 Nov, 2013

I read through the recipe and remember the quantities of two main ingredients very well – 680g and 910g. So I used 910g lukewarm water, add in yeast, salt, and 910g unbleached all-purpose flour, and use a wooden spoon to mix it. It goes very well!

IMG_2106

It mixed very well, very smoothly… everything looks so perfect, so simple… except for one thing…why the dough in the demo video looks a little bit different???

Artisan Bread in Five Minutes A Day - YouTube

I think it might be the flour is different, maybe my scale is not accurate at all. So I started to add more flour, more and more flour, but it still is wet like liquid. So finally I felt something wrong, but couldn’t figure it out. I showed the book to my wife, and said, look, here is the ingredient list – lukewarm water, 680g, and all-purpose flour, 910g, 680g, and 910g, exact what i have measured… Wait a minute, water 680g and flour 910???

It was about mid-night but I’ve decided to re-make another batch.

This time, with correct measurement, the dough finally looks correct.

IMG_6396

After putting on kitchen counter overnight, the dough raised a lot.

IMG_4321 IMG_7913

Try #2 – 20 Nov, 2013

The dough looks appealing, so I think baking should be simple. Plus, I’ve already watched youtube for breadIn5 many times. So it must be a small case for me. I decided to make two breads. I dusted pizza peel with cornmeal, dusted the wet dough with flour and started gluten-cloaking, then let the dough rest.

IMG_1413 IMG_1407 IMG_1408 IMG_1415

During rest, it seems the dough grows horizontally, instead of growing tall. I felt that should be fine, as the book mentioned the dough is wet, so will not grow like traditional dough. After 40 mins, I tried to slip the dough into pre-heated oven, and encountered first problem – the doughs are refused to slip in!

And to make it worse, the second dough fell down a little bit and was stuck with the dough in front!

What a disaster! I had to use a spatula to push the dough onto baking stone and both doughs were out of shape. After about 25 mins, I took them out.

IMG_0089

The skin was nice, curst and crispy, but inside was soggy. Fail.

Try #3 – 21 Nov, 2013

The book has mentioned couple of reasons that could lead to soggy crumb. It could be too much water, oven not hot enough, not enough preheating, not enough resting or not enough cloaking.

This time I’ve added more flour during cloaking, and used more cornmeal.

The bread slipped into oven nicely.

But it was over-baked… The skin was burnt, while inside was still soggy.

Fail!

Try #4 – Today

Again, dusted with more flour, and cloaked nicely, let it rest on pizza peel. At same time, pre-heat oven. A good start indeed!

Now time to slip the dough onto baking stone. I felt the cornmeal was enough this time.

But shit happened again.

When slipping the dough, for some reason, it flip over directly onto the stone, so the dough became upside-down. The cornmeal covered bottom facing up. Epic fail!

Try #5 – Today

Immediately after the upside-down accident, I started another one by using up the rest of dough of this batch. And also started to mix another batch of dough. This time I’ve put in more flour to make it a bit drier.

Cloaking was good, resting and pre-heating were good too.

When slipping in the dough, there’s a corner not dusted with cornmeal so it stuck on pizza peel a bit, made a small corner on the round dough. But other than that, it was good.

Baking time is good also, though I felt a bit over-baked. And this time both bottom and skin were crust. Unfortunately the inside part was still wet. Maybe the dough was too wet so no matter how the inside part was always same.

IMG_1402 IMG_1403

Looking forward to next bake.

Find Oracle DB Locking

First to find out the session that caused the locking. Use any of below two SQLs.

Once you have session id, query v$session to find SQL_ID or PREV_SQL_ID.

And get the query from v$sql

Check DB Logon History

JSON Over Mailto

First thing first, don’t take the solution in this post serious.

I was working on a project where we want to make our web-based application perform some actions in Microsoft Outlook. It’s not a common behaviour but it is probably workable in a very controlled place like my firm, where almost all the users having same set of applications.

Due to browser sandbox security, communication between web app and host application is not straight-forward. So my initial thinking is to use some JavaScript interact with ActiveX (only IE can use in this case) then further perform actions from Outlook with a Outlook add-in.

My architect is a genius, he suddenly suggested why not use mailto link, since all the users will use Outlook as their only E-mail tool.

I have to say before I started to work on it I felt it very hardly work. But after a few hours trying I found out it’s actually possible to let Outlook add-in to capture the special mailto and do some funny actions after that. The only problem I have is that if user’s Outlook is not opened first, then he will see a new mail window with special mailto address in. This is because Outlook start new mail window first and only load add-in after that.

MSDN has a good tutorial on Outlook plugin here.

So next thing is how to pass data in Outlook, and since I’m familiar with Web application and always work on web, JSON just comes to my mind. So in the end I embedded JSON string in mailto URL and created a new pattern which my colleague called “JSON-over-mailto”.

It’s a really fun experience to do such unusual practice, and also realize that Microsoft tools are really powerful.

Last thing, this is not a common practice and only work in a special close environment. But if you want to have something fun, just go ahead and try.

Things to explore

There are a couple of things in my mind to explore in next a few months. Just to note them down before I get lost.

A new pattern – CQRS (Command & Query Responsibility Segregation)

I heard of this term first from my company’s architecture design talk, and heard it again from Uncle Bob‘s presentation. Thankfully and surprisingly, Microsoft has published a free book about CQRS and Event Sourcing (ES) online here.

A new language – Clojure

I’ve heard this language long time back but never really look into it. But recently I have (maybe not only me, the whole community has) growing interest in functional language and scripting after diving in OO program many years. Again this was mentioned in Uncle Bob’s presentation and I feel I should at least try something out from it. Another reason is that it’s based on Lisp – a (old) programming language I have special passion on.

A few JavaScript frameworks

I used to work as a backend coder proudly and look down those UI works until in my previous project I worked a lot on JavaScript stuff, in which I used jQuery and JavaScript micro-templating heavily. From there I also learned V8 engine and node.js, and realized JavaScript has changed dramatically over the years and not only a UI script language like Netscape time. The open-source community has grown fast. More and more techniques/patterns/frameworks emerged and evolved. Among them I have particular interest in below:

  • MVC pattern – backbone.js – A nice online tutorial can be found here.
  • AMD (Asynchronous Module Definition) – require.js – A good article here and youtube video here.
  • Micro-templating – Hogan.js

And just one more to read: Resig’s new book – Secrets of the JavaScript Ninja

[Update 1] (19 Feb 2013)

Today I came across another interesting article when searching for require.js
http://tomdale.net/2012/01/amd-is-not-the-answer/

And two answers to this “not the answer”:
http://tagneto.blogspot.hk/2012/01/reply-to-tom-on-amd.html
http://geddesign.com/post/15994566577/amd-is-the-answer

Hello world

This is my first web hosting as well as my first personal domain name. I will start to record my daily life here, as a software developer, as a (classical) music lover, as a husband. I used to have blog on different places like MSN Space and WP but later I became quite inactive. This is a new start, so let me start my blog with a typical programmer way whenever starting to learn a new program language:

Hello world.

The first thing I get excited is that with a personal domain name finally I can name my code with proper package name: com.wilsonwuz.*