Blog

  • Open concept offices suck

    I personally dislike open concept offices. It doesn’t really do anything to actually improve productivity. In fact, it is more distracting with people shouting at each other, or blasting music, or talking on the speakerphone, or allowing on-hold call music to play out loud “your fucking call is important to us…”, which is then negated by people stuffing their ears with noise cancelling headphones, which encourages more shouting, which then leads to more music, etc.

    I’m an engineer: I like to work quietly to concentrate on a specific task. Context switching is expensive – I don’t like my chain of thought to be distracted by people yelling random questions at me. I also appreciate privacy, where I can speak with a co-worker quietly.

    In fact I think I write better code (and faster as well) when I’m alone at home, which is why I usually work better at night.

    Screw open plan offices. My next office will have cubicles.

  • Why it is not OK to lose blue collar workers

    We’re losing talent, and I think blue collar workers play an important role in our economy to produce quality work. Keeping local blue collar talent costs money, and will drive up costs of living some, but that is how things will go, especially if we want to continue to enjoy a good quality of life. People like aircon technicians, car mechanics, plumbers, etc.

    If we ignore this segment of people, sooner or later we will suffer. They say automation will replace these jobs. That’s bullshit. Robotics and automation has long ways to go before it can replace your plumber or aircon technician or mechanic. These are skilled work that is almost like the work of art. Why does the BMW factory continue to employ so many workers to build mass produced cars like the 5 series? Watch this video to understand.

    I believe one day — and the day will be soon enough — that a plumber is paid more than a developer.

     

  • Random Thoughts

    Random Thoughts

    Life… can be unpredictable. We make plans, we make decisions. How do we know if they were for the better?

    Only time will tell.

    Most people plan financially. It’s hard to admit it, but it’s probably the only thing we have ever really spent time planning for. How many people make more plans for their health or family than their finances? Not many. Not yet. Not at my age I don’t think.

    As age passes, I realize how important it is to spend more time with family. And also friends, of course. When I got married and bought my HDB as a young teenager, I couldn’t wait to get out of my parent’s house. I mean, every kid does, right? Parents are naggy and annoying. But ever since I had a kid, I went home every weekend so that my parents could see the little one, and it is also sort of a childcare break for me and wife. November 2015, grandma passed away. Towards the end of 2016, my dad had a pretty big heart op, and that’s when I start to realize, hey this man is getting old. You know, there’s only 52 weekends in a year.

    Money is evil. It really is. People get obsessed with it. I’m no saint either. You get some, you want more. You get more, you want even more. People spend a lifetime in search of more money. But, really, money is just an enabler. Once there’s enough to go around, the excess is just… really… excess.

    I know it’s easy to say that once we actually have money. And when we don’t, shit goes bad pretty quickly. We spend all our time trying to fix the lack of it. We get so absorbed into it that at a certain point, amongst the chaos, we will most certainly make bad decisions. That’s why the rich gets richer, and poor gets poorer.

    So I spent the last two years chasing after money — not for me, but for the company. Across my desk are two colleagues… well, friends. Old friends. Both whom I’ve asked to join the company because I thought I saw a better future for them and I believed they could do better. I’m no Bill Gates. I can’t change a million starving kids’ lives. But maybe I can help those around me.

    After years operating as a cost center, salaries have been pretty stagnant. We didn’t really pay very well to start with. I don’t want them to feel like I dragged them from one shithole to another shithole. They both have kids, and I know it’s not easy. It’s about time to turn over some profits.

    Those who know me know I hate doing sales. I’m no sales guy. I’m too honest. Too practical. Too straightforward. I can’t say yes to shit and then let the money do the talking. I hate clicking through shitty-ass bidding sites. I hate writing proposals. I hate doing cost calculations and currency conversions. I hate Microsoft Word, Excel and Powerpoint. I hate sitting in a room with pointy-haired bosses “talking business” for hours. I irritate the shit out of sales people too, because I tell people their shit sucks when it really does. That’s why I am a techie. But I did it anyway and took it as a challenge. I will be lying if I said I haven’t learnt anything new.

    So, we tried to be profitable for about 2 years, maybe coming 3 years. Then comes the 2017 year end review: It wasn’t too good. So-so. We tried our best, we won some, we lost some. But the good news is that there’s finally some money to go around for bonuses and pay raises. As the local “boss”, I had the discretion to allocate… as much as I wanted to myself! Haha.

    Nah, I did not. I gave out most of the allocated budget. I believe that the extra money would take some distraction off them, so that they can focus on work, family and friends. I know money is evil, so I try not to make it evil.

    Did this silly idea of mine really help them? Or maybe they were better off doing what they used to do? Only time will tell, I guess.

  • Where is COE headed in 2018?

    Where is COE headed in 2018?

    Several car salesman told me: “Next year price will go up! Buy NOW!”

    Well done. All the fear mongering will actually lead to a COE plunge. There was a run up prior to the end of this year because of all the panic buying, then it will stop as people adopt a wait-and-see attitude. By then, the car salespeople will tell you that COE is low, and it is the best time to buy. No matter COE high or low, they will spin a story to sell their cars.

    My guess is that sometime in Q1’18 will be the best time to renew COE, where it should plunge back to $40K or even $30K+ levels (for Category A).

    Yes, the new Euro 6 CEVS will affect car prices, but the market will adapt. It’s not like this is the first time the Government has introduced changes to CEVS or COE (e.g. the horsepower categorisation). Eventually the whole system will net itself to zero, i.e. COE drops + CEVS goes up. Car prices will probably just remain the same, and for a while until manufactures catch up with Euro 6, then the regulations will likely change again when majority of vehicles qualify for CEVS discounts.

  • Raspberry Pi print server with no server-side driver

    Raspberry Pi print server with no server-side driver

    There are numerous articles which step through how to configure CUPS to turn an RPi into a print server but I bumped into a problem because there are no drivers available for my Brother MFC-7340 printer for ARM (only available for i386) and I was not keen work on the source code/compile/etc.

    The quick fix is to turn it into a RAW (a.k.a. HP JetDirect) print server.

    Install CUPS

    sudo apt-get install cups

    Configure CUPS

    Edit /etc/cups/cupsd.conf.

    Scroll down until you see the Listen configuration directive. Comment it out. This will make CUPS available over the network.

    # Only listen for connections from the local machine
    # Listen localhost:631
    Port 631

    Look for the <Location /> directive, and add Allow all (or a specific list of IPs, if your local network is not secure) to allow access.

    <Location />
      # Allow remote access...
      Order allow,deny
      Allow all
    </Location>
    

    Save the file and restart CUPS.

    sudo /etc/init.d/cups restart

    Configure Printer

    Now connect your printer to the USB port on the RPi.

    Now you should be able to use a browser and go to https://<ip.address.of.rpi>:631/admin to reach the CUPS web UI.

    1. Under Printers, click Add Printer.
    2. You should see your printer appear under Local Printers. Select it and click Continue.
    3. You can accept the default names on the next screen and click Continue.
      • You do not need to enable Share This Printer.
      • Make a note of the printer Name. You will need this later.
    4. In the next screen, click on Select Another Make/Manufacturer.
      • Select Raw and click Continue.
      • Select Raw Queue (en) and click Add Printer.

    Install xinetd

    sudo apt-get install xinetd

    Configure xinetd

    Edit /etc/services and scroll to the end. Add the following line:

    jetdirect 9100/tcp

    Create a new file /etc/xinetd.d/jetdirect and add the following, replacing Brother_MFC-7340 with your printer name configured in CUPS above.

    service jetdirect
    {
    socket_type = stream
    protocol = tcp
    wait = no
    user = root
    server = /usr/bin/lp
    server_args = -d Brother_MFC-7340 -o raw
    groups = yes
    disable = no
    }

    Save the file and restart xinetd.

    sudo /etc/init.d/xinetd restart

    Connect your computer

    Now, go to your computer and connect to the printer. These are steps for Macs.

    • Go to System PreferencesPrinters and Scanners.
    • Click on [+] to add a new printer.
    • Select IP
      • Address: <ip.address.of.rpi>
      • Protocol: HP JetDirect
      • Queue: <Blank>
      • Name: Enter a name of your choice here, e.g. Office Printer.
      • Use: Click Select Software and use the correct driver for your printer here.

    You should now be able to print to the new printer on your Mac.

    P.S. Sometimes you may need to connect your printer via USB to your Mac so that it installs the correct drivers first, then you can unplug the USB and select the drivers when configuring IP printers.

  • Telnet missing in macOS 10.13 High Sierra

    Although Telnet is barely used anymore as a remote access protocol/tool, it is still a very popular debugging tool for tech professionals.

    Unfortunately the quick fix here is to use netcat (nc).

    alias telnet nc