Saturday, January 2, 2016

EUPA TSK-826B4 (Auto Espresso Machine Under MYR 500) -- In-depth Review

A few of months ago, I dived into the world of espresso brewing

Before anything else, I'm writing this post a couple of days after owning a more expensive machine,  which allowed me to offer a comparison of their capabilities and realize their shortcomings.

Like probably everybody else, I browsed through what was offered (back then) in my neighborhood electrical appliances shops -- with a fairly limited budget of MYR 600. Presented to me were a bunch of entry-level offerings from Philips and DeLonghi.

What held me back was their portafilter (the thing attached to a handle that holds your filter basket) assemblies have a common dodgy-looking rubber ring seal -- I just couldn't imagine pushing high-pressure hot water onto that seal repetitively.

On top of that, most of the entry-level machines have flimsy grouphead (the thing you attach -- i.e. twist -- your portafilter onto before brewing) that rattles even after securing the portafilter.

Then, I looked online

After searching through the online marketplace, this particular machine caught my attention -- EUPA TSK-826B4, a 15-bar (claimed) automatic espresso machine under MYR 500 without a dodgy-looking portafilter.

Note: not super-automatic (i.e. with built-in grinder)

Some quick specifications

  • Single boiler
  • "Italian" 15-bar water pump
  • Single, double shot pre-programmed buttons
  • Steam-wand with removable turbo frother attachment
  • Removable water tank
  • Pre-brew infusion
  • Included accessories:
    • Single shot filter basket (dual wall type)
    • Double shot filter basket (dual wall type)
    • Milk jug (100 ml maybe, just enough to steam 2 shots worth of milk)
    • Plastic scoop-tamper combination tool
    • Unclogging needles
  • Manual with recipe for different espresso-based drinks


Most of the parts are in plastic, including the portafilter, which is painted in chrome to look metallic, but is probably made out of a mix of plastic and silicone. Filter baskets are probably some kind of rust-proof alloy.

Onto brewing!

The brewing process is pretty much like what you'd expect from other machines -- load, level, tamp, twist, press, wait, voila. My dad and I were really amazed with the resulting cup of coffee -- it tastes so much better than what you would get from Starbucks, probably owing a lot to the freshly roasted beans I bought from Taiwan.

That's exactly how I dropped into this bottomless pit -- every pack of beans of different blends and origins gives you a different flavor. Goodbye, moolahs.

The resulting espresso has crema, which indicates you're not simply brewing an Americano, but the crema amount is probably half of what you would normally expect from a machine 6 times of the price tag.

I've spent each and every morning, almost religiously trying to perfect the extraction, staring at the color and flow of the espresso and tasting it.

How about latte?

Texturing milk is another story altogether. Ah, the countless nights practicing milk-texturing with soapy water -- and ranting how they made it seem so easy on YouTube (for a very good reason, explained later) -- just to get that latex-like consistency that's optimum for pouring latte art.

The turbo frother attachment is completely useless except if you want the result to be something like a super-automatic machine -- i.e. stiff, macro foam cap on top.

Once you got the specific-to-this-machine technique nailed down, you can indeed texture milk on this machine without issues.

Not too shabby 'lah', pardon the big bubbles, something was wrong with the crema

A photo posted by Lance Chong (@corelance) on


You get what you paid for -- this entry-level machine is entry-level for many reasons. Here is a list of quirks I found out:
  1. Single boiler -- you can't texture milk while brewing your espresso, because water for steam and espresso brewing are of different temperatures.
  2. You can't steam milk without brewing something -- for reasons unknown, you must brew something beforehand or you'll get a very weak flow of steam.
  3. You can't steam milk for too long -- related to the previous point, the steam pressure will drop after you steam your second jug of milk.
  4. Inconsistent steam pressure -- steam pressure is inconsistent, requiring you to start steaming on the "sweet spot" time-window (explained later in tips).
  5. Low steam pressure -- holy shit almost everything is related to steam! Yep, after using the more expensive machine, I now truly understand why it took me so long to learn how to texture milk -- simply because the pressure is lower than what they use in YouTube.
  6. Fluctuating brewing temperature -- it's easy to get inconsistent brews because the boiler is controlled via on-off signals (not PID controlled), requiring you to purge a bit of water before actual brewing to get consistent temperature
  7. Weaker and inconsistent brewing pressure -- if you're not careful with grind-size and tamping strength, nothing will come out, and brewing pressure will be inconsistent right after you use the steam wand, requiring you to (again) purge some water.

Tip and Tricks

I've gathered some techniques after using the machine for a few months, resulting from dropping into the pitfalls presented by this machine -- you can apply them should you decided to own this machine (it's still a great entry-level machine after all)
  1. Purge 2 shots worth of water after warming up -- this is a rather universal tip applicable to all machines -- to get rid of stale water in the boiler from previous sessions, and specifically for this machine, to get ready for steaming.
  2. Purge 1 shot of water right before brewing, every time -- before you load your filter basket with coffee grounds, purge 1 shot of water from the machine to stabilize the water temperature and pressure.
  3. Pay attention to grind size -- grinding too fine will clog the filter and you'll get drip-coffee or nothing at all. Adjust grind-size according to flavor and crema output.
  4. Two scoops of beans -- I found out in general you'll need only 2 scoop (the included scoop, full, leveled) of beans for double-shot.
  5. Don't tamp like a gorilla -- tamping too hard will clog up the filter, especially if you use finer grind sizes, you'll get drip-coffee (again). 20 lbs of tamping pressure doesn't work well on this machine.
  6. Position your cup slightly outward -- this is to let the espresso flow gently through the rim of the cup to prevent big bubbles from forming in your crema (yeah, that photo up there)
  7. Remove the turbo frother -- seriously.
  8. Pay attention to steam pressure -- the steam pressure is usually weak for the first use after warming up. If it's too weak, purge steam until the light blinks, then turn it off and wait until it stops blinking, then try again. Always texture milk after you make sure the steam pressure is okay.
  9. Don't steam more than a jug of milk at once -- alternate between brewing and texturing milk to get a more consistent steam pressure.
  10. Don't panic if your milk doesn't swirl -- it's perfectly normal, really. It takes a while for the swirling to occur on this machine, so don't move the steam wand around. Position your jug flat (base of jug parallel with ground), rest the wand on the spout, nozzle slightly below milk surface, angle towards rim of jug with nozzle almost touching the rim.

    Observe the sound:
    • "bloop bloop bloop" - nozzle too high, position the nozzle down the surface of the milk (by moving your jug, along the wand, guided by the spout of the jug)
    • hissing like some bomb charging before exploding with no bubbles seen (sorry, out of vocabularies to describe) - this is probably the correct position. Tilt the jug slightly to expose the nozzle, up and until you hear a high pitched hissing sound with small bubbles forming on the milk surface, then tilt back.

      How much bubbles to make depends on the milk, you'll need to go through trial and error. Don't worry about the big bubbles, this is perfectly normal for this machine -- once the milk start to swirl, stop producing more bubbles and concentrate on eliminating the bubbles. 
  11. Base of jug must be flat -- or you'll get stiff foam on top and plain milk for the rest.


This is a great machine for curious people to start-out espresso brewing (and see what the bandwagon is about) with a hard-to-beat price (China powerrrrrr) -- it simply blows the competitions out of water with 1/2 the price. You'll never want to drink coffee from drip coffee machines (or Starbucks), or instant coffee, EVER.

If you have enough budget, then you might want to consider Welhome WPM-KD210S2 instead, which addresses all of the shortcomings listen here with its PID-controlled twin-pump-twin-thermoblock (TPTT) design and commercial-grade portafilter. I'm currently a happy owner of one :P

If your budget is even higher, I've heard good reviews of Breville BE920XL (cool LCD screen bruh).

Monday, February 16, 2015

Astro IPTV (Maxis FTTH) on OpenWRT

Updated on 5 July 2015:

The configuration still crashes the PPPoE on my router. With more research I’ve changed it to something that works (again).

Updated on 1 July 2015:

I’ve revisited the procedures and updated it with working configuration.

Due to the lack of (and misleading) information on the Internet, after hours of fiddling with my OpenWRT router (TM’s DIR-615 with OpenWRT flashed), I finally got Astro IPTV flawlessly working on my setup, and the Thompson router fully retired.

First thing’s first – if you have VoIP, it’s bad news for you – because my setup doesn’t have one – you’ll have to look elsewhere for your VoIP part.

Special Thanks

My success is partly due to the stumbling of this article related to configuring a Mikrotik router for Astro IPTV:

To understand how everything works, refer to the above article.

Additional Packages

Go to the software section the your OpenWRT interface and install the following packages (if not already installed)

  • igmpproxy
  • kmod-bridge

Use this mirror if the one you’re using is down:

Tip: How to obtain the packages if your OpenWRT is not even connected to the net – piggyback your Thompson router by temporarily setting your OpenWRT router’s WAN configuration to DHCP client, and connect a cable from any of Thompson’s port into your OpenWRT WAN port.

VLAN Configuration

On my router, Port 4 is the WAN port, yours might be Port 0 - VLANs are tagged on this,with your personal VLAN (usually ID 1) disabled.

As usual, CPU has all VLANs tagged, while normal ports have VLAN 1 untagged, other VLANs disabled.

Configuration summarizes to: 621 for PPPoE, 823 for IPTV.


PPPoE/WAN Configuration

Configure your WAN interface. Your username can be obtained from the Thompson router configuration page, the password is the number before the @, add ‘1’ at the back (e.g., password would be 123451)

Let the WAN interface sit on eth0.621


IPTV Configuration

Add a new interface, name it “IPTV” or something, set it as DHCP client sitting on eth0.823.

For the firewall configuration, create a new rule for this interface. Then head over to the created firewall configuration, set it to something like what’s shown below.


Additional firewall to accept IGMP multicasts from the VLAN 823 and forward UDP video data from VLAN 823 to our LAN.


Configuring IGMP Multicasting

Make sure IGMPProxy is disabled in the System > Startup section.

SSH login into your router (root account, your admin panel password), edit /etc/config/igmpproxy using vim.

Make sure it looks something like this:

   1:  config igmpproxy
   2:          option quickleave 1
   4:  config phyint
   5:          option network eth0.823
   6:          option direction upstream
   7:          list altnet
   9:  config phyint
  10:          option network br-lan
  11:          option direction downstream
  13:  config phyint
  14:          option network pppoe-wan
  15:          option direction disabled
  17:  config phyint
  18:          option network lo
  19:          option direction disabled

Check /sys/devices/virtual/net/br-lan/bridge/multicast_snooping make sure the file contains ‘1’ (without quotes) so that the traffic will not flood your wireless network if you’re using br-lan.

Enable snooping in your LAN network, edit /etc/config/network so the portion looks something like this:

   1:  config interface 'lan'
   2:          option ifname 'eth0.1'
   3:          option type 'bridge'
   4:          option proto 'static'
   5:          option netmask ''
   6:          option macaddr 'xx:xx:xx:xx:xx:xx'
   7:          option ipaddr ''
   8:          option gateway ''
   9:          option igmp_snooping '1'


Finally, to fix the issue with powercycling the modem and router together causing igmpproxy to fail (because eth0.823 is up slower than igmpproxy) – we add a hotplug hook.

So ‘vim /etc/hotplug.d/iface/99-igmpproxy’ to create a script under the iface hotplug directory:

   1:  #!/bin/sh
   3:  logger -t DEBUG "hotplug igmpproxy: device '$DEVICE' action '$ACTION'"
   5:  [ "$DEVICE" = "eth0.823" ] && [ "$ACTION" = "ifdown" ] && /etc/init.d/igmpproxy stop
   6:  [ "$DEVICE" = "eth0.823" ] && [ "$ACTION" = "ifup" ] && /etc/init.d/igmpproxy start

Remember interface/device names corresponding to your own setup.


Apply all settings and power cycle your router. Plug your IPTV cable into any port of your router (except WAN port, of course), and cable from Port 2 of your modem/DTU to the WAN port of your router.

Wait for it to fully boot and connected to the net, then power cycle your Astro STB.

Pray everything works (it should) on your STB – make sure program guides, time and all the features are available.

Thursday, November 7, 2013

Beyerdynamic DT770 Pro VS PSB M4U-1

It was extremely hard to choose between DT770 Pro and M4U-1. For those interested in comparing these two great headphones – here are my thoughts, categorized into different aspects.


The DT770 is designed like a professional studio gear – round and black plastic cups with velour earpads, though looked professional, they are certainly not designed to match your fashion apparel.

The M4U-1, on the other hand, sports different colors to choose from – among them are black, gray, white and red, all in glossy finishing with leather earpads. You could certainly get a hint of Beats as far as design is concerned, but with far superior sound quality, which will be discussed later. In a nutshell, it is designed to look trendy.

As far as looks is concerned, M4U-1 wins.


The DT770 Pro comes with a 6.3 mm jack screw-on adapter; while our friends from PSB packed a lot more – cleaning micro-fibre cloth, extra pair of earpads, airline adapter, cable with inline mic for iPod and Blackberry, and a hard case to boot, aside from a 6.3 mm jack adapter.

Accessories wise, M4U-1 wins hands down.


DT770 Pro has larger ear cups than M4U-1, which logically provides a better comfort. In reality, yes, DT770 Pro is much comfortable than M4U-1.

I felt the M4U-1’s earpads are a bit too small for my ears as my ears felt squished. Not very uncomfortable, but definitely not comfortable.

DT770 Pro wins this round.

Sound Quality – Highs

Both headphones are really well designed as far as sound quality is concerned. The highs are extends very well and very fine for both, except M4U-1 sounds a tad bit brighter than DT770, which might give a tiny problem when playing noisy rock tracks (e.g. Sister’s Noise by fripSide).

DT770 Pro gives a bit of an edge here.

Sound Quality – Mids (Vocals)

This is when it gets really interesting. DT770 Pro, has a bit of coloring in the mids. Though the mids are considered pretty well (the coloring is much lower than Sony MDR-1R), it gives off a very very subtle plastic-y sound. (resonance at around 2 kHz)

Mids in M4U-1 is engaging, it is almost “penetrating”. The album “Best Audiophile Voices III” and “Eternal Singing Endless Love”, or any vocal track, are best enjoyed with the M4U-1.

M4U-1 completely squashed DT770 in vocals.

Sound Quality – Lows

Though DT770 has a noticeable mid-bass hump, the lows in DT770 have a very nice timbre, felt completely natural and envelops the ears very nicely. Personally I feel the bass in DT770 Pro is a tiny bit too much, some might prefer a lighter bass,

The M4U-1, however, has more of an IEM styled bass – though equally as deep, they are highly controlled and dry. I guess the lack of adequately sized cavity didn’t allow the bass to give a nice and natural bass reverb on the ears.

New age music such as ones from the album “The Sound of Illusion” (by NuSound, the album a different name in different regions) felt very dry on the M4U-1 compared to DT770.

DT770 dominates M4U-1 here, no doubt.


It’s really, really hard to choose between DT770 Pro and M4U-1.

The M4U-1 while delivering impressive vocals, feels more like an IEM more than a pair of full-size headphones in the bass department.

The DT770 Pro’s only major drawback (though not very major if you don’t do ABX comparison) is the mids.

A tie, perhaps?

Tuesday, October 15, 2013

Windows 8 Network Profile Manager

Starting from Windows Vista, Microsoft has implemented Network Location Awareness (NLA) into Windows. To put it in simple terms, Windows will automatically identify and name the networks it joins.

The feature however is prone to create silly network names, especially if you tend to change network adapters often, such as MyHomeNetwork 2, MyHomeNetwork 3 … MyHomeNetwork 13.

To top that off, since Windows 8, Microsoft has removed the option to manage, that includes merging and renaming, of networks – users are forced to stick with the stupid names Windows give (e.g. Network, Network 65535 etc.)

Thankfully, it is still possible to rename the network names, but only through hacking your way into the Windows Registry.

Windows 8 Network Profile Manager

Enter Windows 8 Network Profile Manager (Win8NetMan). Win8NetMan is a small application written to manage the network profiles created by Windows in a intuitive way by abstracting all the Registry complications.

Here are the features in a glance:

  • Display and changing of simple network profile properties (e.g. name, description) and advanced properties (e.g. default gateway MAC address, DNS suffix etc)
  • Deletion of individual network profiles (e.g. for old network devices that are no longer used)
  • Bulk deletion of all network profiles

Note: Changes may require reconnecting to the network to be applied.

If you like the application, please donate to support further development of useful applications!



Download (Hosted by

Tuesday, August 6, 2013


This afternoon the Internet at my workplace went down. Since the rest of the network infrastructure was running fine, I thought it was one of those random pesky Unifi downtimes that happens once in a blue moon.

After a couple of hours I couldn’t take it anymore and decided to investigate and observed the primary gateway is slowly chugging along. Well, a quick hard reboot should fix it…

… Not.

Then I noticed my secondary gateway has high CPU usage as well – so a soft-reboot should do the trick…

… Nope.

Tried to run PING to Google (el classico!) and the response was quite odd – on-and-off responses.

I thought something was definitely wrong with the network, and boy I was pretty damn right.

A quick peek at the network monitoring tool shows 5 MBps activities on my network servers, it’s a magic number just enough to drown the Unifi link. Something is hogging the network.

So I disconnected my IP masquerade from the network – and Internet access (on the server) immediately restored.

Time to find the bad boy – DARKSTAT to the rescue. In a few seconds, the wolf among the sheep is found (more like a zombie, that fella was happily flooding the network with RDP requests). First thing that came across my mind is to immediately configure the firewall to drop all packets coming from the machine.

Yep, this time it fully restored the Internet access in our network.

ZENMAP showed our target as a Windows 2003 Server SP2 machine with a handful of opened ports. From the outside it doesn’t seem vulnerable.

… From the outside that is…

I saw RDP was opened so the most logical thing to do is to try to remote access that sonnovabeech with the most powerful account available and the most stupid password known on Earth.

Jackpot – Administrator privileges granted on the first try itself. As expected, I was greeted with loads of suspicious looking processes and a very nicely placed backdoor (LogMeIn) upon firing up the task manager.

Let’s kill this beach before it lays eggs.

Next time I’m going to audit each !@#$ server that is going to be placed on the network.

Wednesday, June 12, 2013


Imagine you are going to conduct a full day technical training to government officers. Imagine you have suited up with your best professional appearance.

Imagine you arrived on site on time. You took out a large box containing 21 pieces of equipment from your boot, your 5 kilo working backpack, your water bottle from the car.

Locked the car and proceed walking towards the traffic light junction between the car park and the government building.

Everything is cool and smooth. You felt your pants pockets and…

Shit happened - your car ignition key is missing (imagine the key is not kept together with the remote for security reasons).

You looked frantically around you and the key is no where in sight. You have to deliver the equipment on-time, there are issues requiring your on-time support, and top it all off it is your turn to present soon. You are afraid if the key is picked up by someone else. You are afraid you will not able to go home today.

You’re sweating profusely, your shirt is all wet, after all that trouble you took to look good. Time is ticking, make your choice.

This is not fiction.

I chose to deliver the equipment to my colleague (the current presenter) and fulfill my commitment to support the technician in the Personalization Centre. Apparently there was some unknown (to the technician, at least) error during personalization of test cards, and the issue was very urgent.

I requested the technician to open up the PIN file, but watching the clueless technician staring blankly at the monitor is excruciatingly difficult. Clock is ticking. Calm down, don’t let the personal stuff affect work.

After a good 5 minutes or so he gave up and asked if I could locate it. He should have done so in the first place. I made an educated guess and found the file I’m looking for. Looks like someone was lying, the machine is clearly not pre-configured for test card personalization.

After a few trips back-and-forth the meeting room (where my notebook was) and Personalization Centre, I found out the culprit was just a mistyped SAM PIN. Awesome.

Went back to the meeting room (where the training session was held) and troubleshooted a few participants’ code.

Finally got the chance to continue the search for the key after things have pretty much calmed down.

After searching the grasses, the pavement, the tar roads, under cars, in the boot, on the seat constantly rewinding my memory trying to recall the most possible place the key could have misplaced or dropped, hope was gradually lost. I was going to give up, the search area big and full of obstacles for such a small key.

I texted my family members saying I have lost my keys and might need to tow my car later.

“The Law of Attraction”, I recalled the words someone told me. It’s too early to give up. Kept my cool and restarted the search from my car, searching beneath nearby cars, under the scorching sun.

Underneath one black car a few lots away from my car, there was my key. And then I was like “ZOMG IT’S A MIRACLE I’M SAVEDZZZZ”

Started my car with that key just to double confirm.

End of story.

Friday, May 17, 2013

仕事の日々#3: VB.NET anonymous methods

What we lazy coders do in C# when dealing with a non-STA WinForm on another thread is usually:

Invoke((MethodInvoker) delegate
    txtSomeLabel.Text = "Foobar!";

Today I had to deal with a piece of code written in VB.NET, and here’s how it’s done:

      txtSomeLabel.Text = "Foobar!"
   End Sub

No casting is required as BASIC is not a strongly typed language.

It also works with anonymous methods with parameters, you just have to use Function in place of Sub.