F5 Works Blog Logo

WEB AND MOBILE APP DEVELOPMENT

differences of "be", "eq", "eql" and "equal" in RSpec

differences of "be", "eq", "eql" and "equal"  in RSpec thumbnail

In RSpec, when you first start writing test cases to compare expected results, it might be very confusing to pick from "be", "eq", "eql" or "equal". However, once you know the underlying differences of these methods, everything will be clear afterward. Let me go through them here with some examples. Compare Statements There are 2 groups of compare...


Read More

Write readable email

Hi all, wanna share few tips on writing readable email. 1) specify your intention in first line. 2) group your message points into paragraphs. have max. 5 points per email. list actions you want the recipients to do at the end of each paragraph. 3) use double line feed to separate points. 4) one sentence per line. this...


Read More

Gotcha using paranoia - a soft delete gem for Ruby on Rails application

Gotcha using paranoia - a soft delete gem for Ruby on Rails application thumbnail

To implement soft delete mechanism in Ruby on Rails, paranoia is the life-saver. Sample Usage After destroying a record, the record is still stored in the database, but it won't be returned in most of the ActiveRecord collection methods. For example, the following method call only returns Product that has not be soft-deleted: Product.all There are use...


Read More

Retrospective: F5 Works history and future

Retrospective: F5 Works history and future thumbnail

There were regular meetings reviewing the past and discussing the future. Sales and marketing, financial situation, development project status, staff satisfaction, client satisfaction, etc. However, something's different recently. We had many bigger and deeper discussions since we are at the pivotal point of the business: 1st year anniversary. Retrospective It is almost one year since we started F5...


Read More

創科生活基金-重點

創科生活基金-重點 thumbnail

香港創科局剛推出新創科資助基金計劃,資助金額可達總開支的90%或港幣500萬元。 以下抽取左其中比較重要既資訊,等大家可以用最少時間去研究你既創科項目適唔適合。 仲有大家最關心既Paperwork究竟有幾多。 資料來源:http://www.itb.gov.hk/tc/fbl/faqs.htm 什麼類型的項目可獲得基金資助? 項目必須能令市民大眾或特殊社群受惠,並配合政府政策 項目必須為創新應用科技 基金資助不同項目主題,例如有關日常生活、教育、環境、健康、安全、交通等,令社會受惠 項目成果可以是不同形式,包括流動應用程式、產品、裝置、設備、工具、服務、軟件,或具充分理由的任何其他形式 項目在資助期內不牟利 項目必須主要在香港境內開發 誰合資格申請基金? 接受社會福利署資助的非政府機構。 《防止賄賂條例》(第201章)第2條界定的公共機構。政府決策局/部門、行政會議及立法會除外。相關資料請瀏覽第201章之附表1 專業團體 工商組織 資助款額有多少? 每個獲批項目的資助上限為項目合資格總開支的90%或港幣500萬元,以較低款額為準。 對項目運作期有沒有限制? 申請機構必須在12個月內完成開發及推出項目,並最少連續營運該項目兩年(屬一次性的項目除外)...


Read More

5 months at F5 as an intern

5 months at F5 as an intern thumbnail

I had decided early on that I would take a gap year after high school, and one of my goals was to do a programming internship. In December, I sent out a few hopeful resumes, which depicted no experience other than some hobby projects on Github. I was surprised when a response came back, requesting an interview. Then...


Read More

Software Development Quotation Process and Project Proposal

Software Development Quotation Process and Project Proposal thumbnail

Before software consultancy project starts, there are lots of discussion and documentation needed. Among those, project proposal (or say quotation) is the most difficult one to produce. Project proposal is the agreement between vendor (i.e. F5 Works) and clients on software deliverable service deliverable how much does it cost how long does it take other terms and...


Read More

Rant: Quotation Enquiries (a.k.a. Life as a consultant)

Rant: Quotation Enquiries (a.k.a. Life as a consultant) thumbnail

We have been doing software consultancy for ages and project quotation requests are received everyday. However, the following enquiry conversation keeps happening again and again. Life as a consultant These are the two most common enquiry emails we got: how much does it cost to build a website ? how much does it cost to build an apps ? I...


Read More

Use Koala Ruby gem to post "gif" image

Use Koala Ruby gem to post "gif" image thumbnail

Koala is a famous gem for interacting with Facebook activity. Common interaction can be achieved with single simple method call. However, when we develop a Facebook feed poster for gif image, the gif image was not automatically played. Koala common usage For posting a plain text message to my Facebook feed: facebook_graph = Koala::Facebook::API.new(facebook_...


Read More

Managing environment variables in Ionic 2 / 3

Managing environment variables in Ionic 2 / 3 thumbnail

The Problem When developing Ionic 2 apps, very often developers want to store different application configuration values in different environments. For example, the backend API URLs in development and production are different. Or, two different Google Map Api keys are used in QA and production environments. Our Approach at F5 Works Storing KEY=VALUE pairs in a single...


Read More

Ionic play embed youtube

When we want to play youtube in an ionic project. Simply using <youtube-iframe-player></youtube-iframe-player> It works great during development, and also on Android. However once it is tested in iOS, it shows a blank page with Unable to post message to https://www.youtube.com. Recipient has origin file:// To Solve this, include the...


Read More

Using Facebook Comment Plugin in Angular/Ionic 2+

In order to use Facebook's comment plugin in a single-page app, we must modify the provided script. Otherwise, you'll find that the comments fail to show up on the second page. This is because the script is loaded only once at startup, and it doesn't know that new elements have appeared. post.component.ts ngAfterViewInit(){ (function(d, s,...


Read More

Best Practices: Manage database schema changes with Database Migration (and version control)

Best Practices: Manage database schema changes with Database Migration (and version control) thumbnail

When you develop software with a SQL database, there are code changes that requires database changes as well. It could be database schema changes (e.g. adding a new column) or data fixes (e.g. changing all existing user phone number format). While it is common to use version control to manage code changes, there still many development...


Read More

We hire non Computer Science graduates (and non university graduates too)

We hire non Computer Science graduates (and non university graduates too) thumbnail

[Update: 11 May 2017] my friend Joshua posted a valuable comment after reading my blog post. so, instead of include the points in my original post, I think it is better to enclose at the end for everyone to read as well. thanks Joshua ! F5 Works (and 42 Labs, my previous company) hire non Computer Science graduates (and...


Read More

Prevent duplicated database record creation with find_or_create_by

When we developed the gaming App for our client Colors, we encountered a common data consistency problem: How to prevent duplicated database record creation. Of course everyone instantly can think of "use #find_or_create_by", but it is actually little bit more complicated than that. #find_or_create_by We are using Ruby on Rails to implement...


Read More