• Stars
    star
    119
  • Rank 297,930 (Top 6 %)
  • Language
    Ruby
  • License
    MIT License
  • Created over 8 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

πŸ“ We write about our technologies and the problems we handle at scale.

Grab Engineering Blog

Welcome to Grab's official engineering blog where we share the good engineering practices in Grab and the things we engineers do that can benefit other engineers in the industry. Comments and feedback are welcome!

Getting Started

The blog runs on Jekyll, an awesome static site builder that is written in Ruby. To get started, clone the repository and run the following steps:

$ gem install bundler
$ bundle install
$ bundle exec jekyll serve

Navigate to http://localhost:4000 to view the blog. A process runs in the background to watch for changes made to the code. Simply refresh the page to see the updated changes. If you are new to Jekyll, we would recommend that you check out their detailed documentation here.

Contributing

Interested in writing a blog entry to the blog? Simply fork the repository and make a pull request with the new entry, a markdown file in the _posts folder with the name YYYY-MM-DD-your-title.md.

Adding Authors

If you are a new author, add your bio to _data/authors.yml, for example:

lian-yuanlin: # This is the ID of the author
  name: Lian Yuanlin
  thumbnail: /img/authors/lian-yuanlin.jpg # Use a remote image or add your own image
  github: alienchow # GitHub Username (optional)

Writing your post

Each post should have the following front matter defined:

Property Explanation Example
layout The layout template from the _layouts directory. We only have post for now. post
id Unique id for each blog entry. This is used by Disqus to uniquely identify posts and should not be modified if a Disqus thread for that post already exists. curious-case-of-the-phantom-instance
title Title of blog entry The Curious Case of The Phantom Instance
date Date of entry in DDDD-MM-YY HH:MM:SS format 2015-12-28 04:39:00. Note that this is in UTC and posts in the future will not be displayed. To such posts during development, use bundle exec jekyll serve --future
authors YAML list of author IDs. The author bio will be retrieved from _data/authors.yml and displayed within the post. [lian-yuanlin, ...]
categories YAML list of categories, sorted alphabetically. Only use existing categories in _data/categories.yml. [Engineering]
tags YAML list of tags, sorted alphabetically. Please check existing tags on /tags and reuse where possible. [AWS, Golang]
cover_photo Relative URL to the FB open graph image (ideally 820x312) /img/grab-vietnam-careers-week/son-hai.jpg
comments Whether to display Disqus comments box. Why would you set this to false? true
excerpt Your catchy excerpt that will be shown on the list of blog entries page. Wrap your excerpt in quotes if it spans across multiple lines. "Here at the Grab Engineering team, we have built our entire backend stack on top of Amazon Web Services (AWS). Over time, it was inevitable that some habits have started to form when perceiving our backend monitoring statistics."

Proceed to write your blog entry in GitHub-flavoured Markdown format. Should you want to add images to your blog entry, the files should be added to the img/<post-id> folder.

When you are done with your entry, simply make a pull request and ping us in the #eng-bloggers Slack channel to request for a review!

That's it, happy blogging!

Deployment

Since we are using custom plugins (such as for authors), GitHub will not build and deploy the generated site for us. We use a custom gem jgd meant for deploying Jekyll pages manually.

$ jgd

This step is automatically carried out on Travis CI, you just need to commit on master to trigger the script. For more details, see the script in .travis.yml.

License

MIT License

More Repositories

1

front-end-guide

πŸ“š Study guide and introduction to the modern front end stack.
JavaScript
14,933
star
2

cocoapods-binary-cache

Ruby
451
star
3

cocoapods-pod-merge

Cocoapods plugin to merge pods used by your Xcode project, reducing the number of dynamic frameworks your app has to load on startup
Ruby
363
star
4

Grazel

A tool to migrate Android projects from Gradle to Bazel incrementally and automatically
Kotlin
246
star
5

swift-leak-check

Swift
109
star
6

talaria

TalariaDB is a distributed, highly available, and low latency time-series database for Presto
Go
108
star
7

secret-scanner

Go
40
star
8

grab-bazel-common

Common rules and macros for Grab's Android projects built with Bazel.
Kotlin
35
star
9

hackathon

πŸ’» Official Grabathon websites
JavaScript
29
star
10

symphony

Go
28
star
11

grabplatform-sdk-js

GrabPlatform SDK in javascript
TypeScript
27
star
12

async

Go
24
star
13

grabplatform-sdk-android

GrabPlatform SDK for android
Kotlin
20
star
14

superapp-sdk

SDK for Grab SuperApp WebView.
JavaScript
15
star
15

grabplatform-sdk-ios

GrabPlatform SDK for iOS
Swift
12
star
16

GraphBEAN

Interaction-Focused Anomaly Detection on Bipartite Node-and-Edge-Attributed Graphs
Python
11
star
17

grab-query-traces

10
star
18

grabpay-merchant-sdk

Java
9
star
19

gosm

Gosm is a golang library which implements writing OSM pbf files.
Go
9
star
20

mobile-kit-bridge-sdk

SDK for web view bridges that offers unified method signatures for Android/iOS
TypeScript
7
star
21

grabplatform-sample

Comprehensive sample for GrabPlatform-related SDKs.
JavaScript
4
star
22

blogs

Accompanying source code for our engineering blog
Ruby
4
star
23

grabplatform-sdk-golang

GrabPlatform SDK for Golang
3
star
24

grabplatform-sdk-js-example

JavaScript
1
star
25

go-showdeps

Go
1
star