RSSAmplifier

Blog

Fred Wu (@fredwu)

CTO by day, freelancing software consultant by night. Founder of Persumi.

persumi.comRSS feed ↗100 posts

Latest posts

Quick comparisons of Viture Pro and Xreal Air 2 Pro

I’ve had the Xreal Air 2 Pro for a while. I ordered the Viture Pro on the 23rd May, it shipped on the 28th May, and finally got delivered on the 9th June. I’m in Australia. Packaging The unboxing experience has been stellar, the packaging is one level above Xreal’s. Case I do like Xreal’s case not needing a zipper, but the utility of Viture’s case is better, with lining for both the glasses and…

Three Versions of The Three Body Problems, Thoughts from A Native Mandarin Speaker

Warning: Minor spoilers on the characters, but no spoilers on the story. As a casual Sci-Fi enjoyer who mostly enjoys them through movies and TV shows, I’ve only occasionally read Sci-Fi novels. But I loved Andy Weir’s The Martian (loved the movie first, then went back to reading the novel) and Project Hail Mary . Therefore, since discovering Netflix’s 3 Body Problem not too long ago, I realised I…

Introducing Rizz.farm - An AI-Assisted Lead Generation Tool for Reddit

After having soft launched Persumi in 2023, I quickly found myself wanting to explore better ways to promote the product. Unfortunately, most of digital marketing products are focused on three main areas: Keyword bidding, e.g. Google Ads or Facebook Ads Cold outreach, e.g. Apollo Search Engine Optimisation (SEO) They each has its own pros and cons. As an indie developer without a huge budget, none…

Comparison of AI OCR Tools: Microsoft Azure AI Document Intelligence, Google Cloud Document AI, AWS Textract and Others

The article compares six AI OCR tools: AWS Textract, Microsoft Azure Document Intelligence, Google Cloud Document AI, Rossum.ai, Super.ai and Eden.ai. It then does a deep comparison between Azure and Google, the two leading choices, in several aspects: initial setup, auto labelling data, text detection and recognition, custom labelling, auto-label accuracy, auto-label result verification, data…

How I Built a Mostly Feature-Complete MVP in 3 Months Whilst Working Full-Time

A few weeks ago I soft launched an MVP - you are looking at it right now. In this post I’ll talk about the features, the tech stack and the globally distributed infrastructure behind building this MVP, and of course, with a sprinkle of learnings too. The “MVP” Deciding what makes up an “MVP” is always interesting - I’ve heard some saying if the product isn’t embarrassing you’re releasing it too…

Some changes to improve the user onboarding experience are coming. There will be a guided tour to explain the concepts of personas and expressions better. Stay tuned!

Some changes to improve the user onboarding experience are coming. There will be a guided tour to explain the concepts of personas and expressions better. Stay tuned!

Hey, welcome! If you're also building your own product I'd love to hear your stories. 😊

Hey, welcome! If you're also building your own product I'd love to hear your stories. 😊

Welcome to Persumi - A Modern Platform for Content Creation

Like many software engineers and indie hackers, I dream of and experiment with different product ideas every now and then. Five years ago, in 2018, I toyed with an idea where personas and expressions are the enablers for showcasing people’s talents and interests. I called it, Persumi . The Origin The original idea was to break the pattern of modern day social media platforms like Facebook,…

Tips for Job Interviews as a Junior Software Developer

As coding bootcamps such as Coder Academy and General Assembly churn out more and more software developers, and as more and more people start to realise the importance of software, companies these days are facing an increased amount of candidates applying for junior dev roles. Recently we had to take down our job ad for a junior full stack React and Elixir role only a few days after posting it due…

Tips for Writing a Good CV / Résumé

Due to COVID-19, not many companies are hiring at the moment. The company I work for therefore is in a very fortunate position to still be thinking about growth and hiring. As a hiring manager for almost a decade now, I’ve personally reviewed thousands of job applications and CVs, and many hiring managers would probably agree, the vast majority of CVs are terrible. Let’s change that! During…

Tips for Becoming a Better Software Developer

Over the past decade or two, both as a software developer and as a manager I have accumulated a few tips for becoming a better software developer. For context, I’ve been working as a software developer for more than a decade, mostly in small product-based companies; over the last decade or so I’ve worked as a team lead or manager in various capacities; and I’ve moonlighted as a consultant,…

Launching Focussist Landing Page - An Upcoming Agile Project Management Tool

Over the past few years as I gain more and more experience in not only building software and products but also in leading teams and projects, I realised that my desire of wanting an agile tool that’s super simple to use yet super flexible to adapt to different needs has grown stronger and stronger. Given the COVID-19 situation that’s going on at the moment, I’ve finally decided to spend a few…

Conference Talk: Adaptable Human @ RubyConf China 2019

Seven years ago in 2012 I spoke at RubyConf China 2012 . It was a technical talk on how to become a better developer, if you’re interested you can check out the video recording . Seven years later in August 2019, I headed back to Shanghai again to speak at this year’s RubyConf China . And this time around, it was a non-technical talk on how to develop one’s career. Check out the video recording…

New Blog with New Design and Gatsby.js - Loving JavaScript Again

In 2010 I set up this blog on Tumblr mostly due to the ease of publishing and not having to worry about the hosting. I also went through two design iterations done in Photoshop: You can probably tell that these designs were done before the flat and minimalist design trend we are seeing in recent years. As I decided to revamp my blog once again, I thought I’d use Sketch this time around and aim for…

Coding and Learning Should Never Stop, Open Sourcing is Caring

I’ve had a productive coding weekend, and so I decided to share my experience. Now, many developers choose to treat their career as a series of 9-5 jobs, but if you’re reading this, I assume you’re like the rest of us who love continuous learning and self improvement. Preface About a year ago I started learning Elixir. So as part of the learning experience, I wrote two matching learning related…

Elixir and Doctest - Help Writing Better Programs, One Function At A Time

Preface If memory serves right, it’s been several years since I first dabbled in Elixir, but it was about a year ago I really started putting some serious effort into learning Elixir, and as a result I made two libraries in the machine learning space: Simple Bayes , a Naive Bayes text classifier implementation, and Stemmer , an English (Porter2) stemming implementation. Unfortunately after I’ve…

I Accidentally Some Machine Learning - My Story of A Month of Learning Elixir

About a month ago I was in-between jobs - I had two weeks to rest up, recharge and get ready for my new job. So I thought, I should use those two weeks to learn something new. Years ago I briefly looked into Elixir when it was first released to the wild, at the time I wasn’t interested in picking it up due to its syntax similarity to Ruby, despite their vastly different underlying semantics. I…

Developers, Being Treated Poorly? You Are Not Alone!

UPDATE: Reading Hacker News comments it is apparent to me that I have not explained my position and intention very well. Please allow me to clarify - I do not resent the people involved in these moments, if anything, I thought those encounters were good learning experience for me, as I know there are things I would do and say differently so others around me won’t feel I’ve been too harsh on them.…

History Text Analysis Over Spreadsheets - A Poker Player and Developer's Road to Agile Project Management

Ever since I started transitioning into a team leadership role over three years ago, I had been trying to find ways to eliminate waste caused by repetitive work and to keep myself on the fringe of pushing the technical boundaries . Four months ago I started my current role where my official job title is Delivery Lead. People don’t often know what a delivery lead is, but in my mind it is a role to…

Leading Snowflakes by Oren Ellenbogen - A Pragmatic Book on Software Team Leadership I Wish I Read Sooner

Two weeks ago as I was reading Software Lead Weekly which I had subscribed to for a while, I discovered its curator, Oren Ellenbogen ’s book - Leading Snowflakes . It was a moment of discovery that lead to a stream of delightfulness. It Started with a Long Day at Work… After a long day at work, I was so beat I couldn’t even listen to audio books like I always do on my way to and from work. So I…

Photos from JSConf AU 2014

JSConf AU has been fun - great talks and great venue! It was also a wonderful opportunity for me to test out my new camera kit: SONY A7r + Sony Sonnar T* FE 35mm f/2.8 ZA + Voigtlander Color Skopar 20mm f/3.5 SL-II with Novoflex SONY E-Mount to Nikon adapter. Here’s the kit (taken by Nikon D800 + Tamron SP 24-70mm F/2.8 Di VC USD): Photos from JSConf AU 2014: Breakfast in North Melbourne:…

On Hiring: Trial Week - Yay or Nay?

Today a blog post titled “ Trial Week: Our Hiring Secret “ has made to the Hacker News homepage. I naively tweeted my dislike and now I feel obligated to share my thoughts in a more meaningful and constructive way. First of all, congratulations to the Weebly team, as this trial week strategy is clearly working very well for them. I, on the other hand, am against using a trial week for vetting…

Protip: Unsync the "Index" Folder of Sublime Text 3 from Dropbox

If you’re like me who uses both Sublime Text 3 and Dropbox, chances are you have your Sublime Text 3 folder synced in Dropbox. I use my laptop as my primary workstation so most of the time it’s docked and charged. Occasionally when I do use it on battery power however I notice the extremely poor battery life - typically only 2-3 hours. Eventually I realised the power consumption was caused by…

Protip: Faster Ruby Tests with DatabaseCleaner and DatabaseRewinder

Please also see this blog post on tweaking your ruby GC settings . I use and love DatabaseCleaner , although historically I had never paid too much attention on the performance of its varies cleaning strategies - I’d always used truncation . We use Postgres, and after digging around and finding out the difference between DELETE and TRUNCATE , I ended up improving our test suite speed by about…

Protip: Ruby Devs, Please Tweak Your GC Settings for Tests!

It was made apparent to me that many ruby devs either aren’t aware or couldn’t be bothered to tweak their ruby garbage collector settings. Well, if you are using MRI, please start tweaking your GC settings. Here’s what I use (on my 15” Macbook Pro Retina): export RUBY_GC_MALLOC_LIMIT=90000000 export RUBY_FREE_MIN=200000 Not only can you tweak it for your local dev machine, you can also tweak…

Writing Sensible Tests for Happiness

Writing good, sensible tests is hard. As a Rubyist, I feel lucky to be part of a community that embraces tests. Though at the same time, I have come across too many projects that suffered from not having sensible tests. What are Sensible Tests? There often isn’t a silver bullet when it comes to software development. Technical stuff aside, many things contribute to the solution to a given problem -…

Gotchas in the Ruby Sequel Gem

I haven’t really used Sequel much therefore I am definitely a newbie. However, after days and nights of frustration, endless debugging and some search-fu during the development of Datamappify , I have finally arrived at the conclusion that Sequel is a capable library, as long as you are aware of the gotchas. Gotcha 1: Always use “ select “/“ select_all “, or your data records will mysteriously…

The Future of Computing, The Future of Computer Programmers - An Interview with Yukihiro "Matz" Matsumoto

A while ago I translated an interview with Matz done by a Chinese book publisher. The interview and the translation were well received, so this time I am translating another interview with Matz, done by Ito, the editor-in-chief from Japanese website Engineer Type . Since I don’t read Japanese, the translation is based on Turing Book’s Chinese translation . The Chinese translator has done a great…

Datamappify - A New Take on Decoupling Domain, Form and Persistence in Rails

This post is about the ruby library we are building - Datamappify , please go check it out. At Locomote we are building a relatively large web application using Rails. Before we began to lay the foundation, we knew very well that if we wanted the project to be maintainable we had to architect the system with extra care and attention. More specifically, we can’t rely on simply using ActiveRecord…

Would you be interested in reading such a book?

Would you be interested in reading such a book ? ]]>

ActiveRecord and DB Migration Ate My Model Attributes!

Update: You might also want to check out reset_column_information . So a few days ago we started seeing the following errors on our Jenkins builds (swapped with fictional model and attribute names): NoMethodError: undefined method `attack_power=' for # attack_power is a new attribute we recently added to the Ironman ActiveRecord model. I was baffled, as the table column is clearly there but…

"Become A Better Developer You Can" - Video of My RubyConf China 2012 Talk

It was the first time I presented in front of 400+ people so I was really nervous - I blasted through the talk in under 30 minutes even though I was supposed to talk for 45 minutes, oh well. ;) video: https://www.youtube.com/embed/DeBsmdDmB9A Also, my slides are available too . P.S. If you’re located in China, you may view the talk at Railscasts China . ]]>

An Interview with Yukihiro "Matz" Matsumoto

Update: Please check out this new interview with Matz , done by Engineer Type. A week ago I went to Shanghai, China to attend and to give a talk at RubyConf China . The day before the conference’s first day a bunch of us were invited to a VIP dinner where we met with Matz and got to play with a device running MRuby . And I heard that earlier on that day Matz was ‘adopted’ by a book publisher to do…

"Become A Better Developer You Can" - Slides of My RubyConf China 2012 Talk

Contrary to what the title of the talk suggests, I am by no means a superstar developer myself. Though I would like to think that I am extremely passionate about what I do, therefore I love to share my thoughts and tips on web development and software engineering. Below is the version I used for my actual talk: https://speakerdeck.com/fredwu/2012-become-a-better-developer-you-can Since I had been…

Photos from RubyConf China 2012

I had such a wonderful time at RubyConf China ! So here are some photos from the conference. :) Gallery of photos of yours truly on stage : Gallery of photos I took mostly on the VIP dinner event the day before the conference: ]]>

SimpleCov: Test Coverage for Changed Files Only

The other day a colleague asked whether or not it’s possible to have SimpleCov return a group that only contains uncommitted changes. The answer is yes ! After some digging around, we found the following way: # in spec_helper.rb SimpleCov.start 'rails' do add_group 'Changed' do |source_file| `git ls-files --exclude-standard --others \ && git diff --name-only \ && git diff --name-only…

Skinny Coffee Machine - A Simple State Machine with Observers

After a few nights of working on the 2.0 rewrite of jQuery Endless Scroll , I am now releasing one of the tools I built for the project: Skinny Coffee Machine . Skinny Coffee Machine is a simple JavaScript state machine written in CoffeeScript. It is fairly simple to use, with the flexibility of adding and removing observers for state transitions. Define State Machines @coffeeMachine.power = new…

Brewing Node.js on OS X without Xcode

If you are like me who has no need for a full Xcode installation just to get the command line tools, chances are you are using one of these: Apple’s Command Line Tools or the osx-gcc-installer . Recently Node.js has made some changes so that it no longer installs on OS X via homebrew if you don’t have Xcode installed. If you run brew install nodejs , you will get the following error: \> Error:…

Fix OpenSSL Error on Mountain Lion (and RVM)

Don’t you just hate it when you have a fresh intall of Mountain Lion, RVM and some rubies - then all of a sudden you hit this OpenSSL::SSL::SSLError error message: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed The fix is quite simple actually, all you need to do is to download a CA root certificate: curl http://curl.haxx.se/ca/cacert.pem -o…

API Taster: Visually Test Rails Application API

Like a lot of places, at Locomote we are building a platform that is API-based. As much as I like having comprehensive test suites, I often feel the need to manually test API endpoints to see exactly what the responses are. Tools such as Postman solves part of the issue: they allow us to quickly test API endpoints without messing with cURL . But as a lazy developer, I want more. ;) I want…

PHP Devs: Have You Started Playing with More Toys?

TL;DR - PHP is still a useful tool, but as a PHP developer, have you started playing with other useful tools? Here’s my story. Today Jeff Atwood’s new piece “ The PHP Singularity “ and Marco Arment’s “ PHP Addiction “ have started another round of heated discussion on PHP. As someone who started his career as a PHP developer, I feel like sharing my thoughts from a different perspective. I began my…

[Rails Tip] Render views outside of Controllers or Views

Ever wondered how you could utilise the render method outside the context of Rails controllers and views? If you wonder why anyone would do that. Well, imagine you are building an awesome form builder, you need to output and/or store rendered partials in the buffer. How do you do that? For example, what if you want to do this in your view? You could do something like this: module Awesome class…

Agile is not a Sham

This blog post titled “ Agile is a Sham “ offends me a little bit. The post screams hey, I am a cowboy programmer , and it almost implies that if you employ processes then you are stupid. In this day and age, I would have thought finding the right tool for the right job is common sense. Apparently not. Agile, among many other things, is not a silver bullet - it never was and it never will be. The…

Zend Framework - From Extreme Simplicity to Enterprise!

Today an interesting blog post on Zend Framework has made to the Hacker News front page. I have to agree with the author - Zend Framework is an over-engineered piece of software. A few years ago I was working full time as a PHP developer. Naturally, I had experimented with lots of frameworks, including CakePHP , CodeIgniter , Kohana , Yii , Symfony and obviously, Zend Framework . Over the years, I…

On Hiring: Use Kanban for Managing Candidates and the Hiring Process

Hiring is usually a long and difficult process - in order to streamline and simply it, I use Kanban to manage the whole process. I believe, hiring should be as lean and agile as our development process. My Kanban board for hiring ( we just started hiring at SitePoint! ): Using a Kanban board offers a number of advantages: a clear picture of the candidates with their feedback from code tests and…

On Hiring: How To Be a Non-Technical Co-Founder

If you are looking at hiring developers, check out my article on this subject . The goal or the dream of working on your own startup is always full of excitement. And apart from some rare cases such as Dropbox , you probably need one or more co-founders to work with you on The Next Big Thing ™. Problem is, how do you (as a non-technical co-founder) find us? Or more specifically, how do you talk us…

On Hiring: How Not to Annoy Developers

If you are looking at finding technical co-founders, check out my article on this subject . In recent years developers become hotter and hotter - especially the good ones - they are hard to find, and they have plenty of employment options to choose from. Some companies (or individuals who are seeking freelancers) go the extra miles to impress developers with attractive salary/rate and perks, which…

The Lean Startup - The Book Every Entrepreneur Should Read

Holidays period is the perfect time to gear up and learn a thing or two from the masters - and as it turned out, reading Eric Ries’ The Lean Startup is one of the most exciting and joyful things I’ve done during the holidays. In this book you won’t find long-winded and boring theories, instead the book is full of real world use cases and practical advices. If you are an entrepreneur, or if you are…

Blog Redesigned For 2012, And New Challenges Ahead

After four days of sketching, designing and cutting up HTML/CSS, the new design (as you are seeing now) is finally live! The new design is structurally similar to the old design , but with a fresh header and better use of space. A new year warrants a fresh start. Apart from the redesign, I have also started heading up the development effort at SitePoint - dozens of interesting and challenging…

Startup, VC, and the Things I Learnt from Open-sourcing A 200+ Hour Client Project

A couple of days ago, a blog post titled “First employee of startup? You are probably getting screwed!” has made to the Hacker News front page and has spawned some great discussion and debate . Since I had just been screwed recently , I thought it might be a good opportunity for me to share what I’ve learnt. After my story got picked up by Hacker News and some other sites, I was contacted by my…