Apartment Coffee

Pretty new cafe which is located at the Lavender Street, occupying the corner shoplot, fully white based design with a large bar table at one side, a few small tables somewhere along the large windows. The Apartment Coffee‘s environment in the cafe is quite quiet, simple yet elegant. They do play some background music and noise level is quite minimal, making it a good place to spend the day having a cup of coffee or tea alone or with one or two friends.

It is not recommended to go with large group of friends as the seats are limited. You can google the place and check out the interior design of the cafe as I did not take any pictures in the cafe except for my cup of coffee.

Coffee with milk from Colombia El Mirador coffee beans.

Their menu is quite simple, minimal selection so I did not ask for any recommendations from the counter and I chose to try Colombia El Mirador coffee with milk. The fragrant comes from the coffee beans during the preparation of my cup of latte truly made my brain more alert. I guess it should be the berries smell which tastes fruity sweet.

The coffee serves in the ceramic made tea-cup sized, a pretty different presentation and it has only one single size for hot drink. My first impression upon seeing the cup of coffee was “woah, small cup does it mean it is very gao (strong)?

Perhaps, some of us, especially those who do not go to cafe often, may find a cup of coffee costs more than a bowl of noodle or a plate of rice, is expensive, and always can get a cheaper one costs us a dollar and still can ask for kopi gao (strong coffee), why want to spend so much. Haha.

There is one thing I learned about coffee, it is not about the price that makes a coffee different. It is the process of roasting coffee beans to the preparation of a cup of coffee, how much water to put in, how much beans to use, how long to brew it are different per different batches of seasonal coffee beans.

Any comments?

I noticed a few food bloggers in Singapore have written reviews about this cafe. It is glad to find out the owner of this cafe is a former Singapore Brewer Champion who is also one of the baristas working there. Also, I noticed they love to talk with the customers, perhaps, is their friends too.

Address: 161 Lavender Street #01-12 Singapore 338750.

Geylang Bahru Market: Hui Wei Ban Mian

Many online foodies recommended to try the ban mian from the stall called Hui Wei Ban Mian which is located at Geylang Bahru Food Market. The signature chili ban mian is a little soggy, missed out the chewy texture of what a noodle should be. The noodle soaked up the quite salty sauce quickly. I am not sure whether the ban mian or mee hoon kueh will have a better texture than u-mian.

The onsen egg is good, the ingredients are generous and the chili paste is spicy, it gave some kick when mixed with the noodle. I believed the saltiness of the sauce came from the minced meat. The soup is also salty which I think it needs some improvement to it. It maybe goes well with soup based noodle but I am not sure too because I did not try their soup based noodles’ selections. They offer variety types of noodles, from meat to seafood, both spicy and non-spicy.

I always think the soup based should be tasted with light sweet of the essence from the seafood and meat cooked during the preparation of a bowl of noodle.

The queue is quite long during lunch time, however the lady takes the orders while queuing so it saves some time from there.

Address: 69 Geylang Bahru, #01-58, Singapore 330069.

Two Bakers

Again! After the Christmas’ visit, I went back to Two Bakers, an artisan patisserie shop at Horne Road, Singapore. It is an impromptu visit to have a share of cakes with a colleague after lunch. It was just a distant walk from the food court to cafe.

Litchi Rose

Litchi in French means lychee in English.

It is made of raspberry favoured light sponge cake, with rose infused buttercream, litchi bits and rose petals and carefully designed with a small stalk of rosemary on top of the cake.

See the picture, it looks so pretty. At the first glance, it gives me an impression that the sponge cake is quite dry. It may look better and give better texture if the cake is slightly moist. Overall, the cake is not sweet, not overwhelmed with rose and not creamy, it is quite suitable for my liking.

Two bakers always give me a surprised combination of natural ingredients to make their delicious cakes. I hope to try their main course one day.

Address: 88 Horne Road, Singapore 209083.


It is a Singapore owned dessert bar serving yogurt parfaits with toppings. My visit at City Square recently brought me to try their daily made yogurt. It comes in 3 different sizes, Grand, Moyen and Petit.

I ordered the cone based with chocolate chips as its topping. It is a bit messy as the chips are not sticky on the yogurt and it dropped while I was enjoying the yogurt.

Yogurt did not melt fast so I still could slowly enjoy it while carefully ate each of the chips without dropping. If you do not want the mess, it is recommended to go for plastic cup based.

Address: 180 Kitchener Road, #02-K14 City Square Mall,
Singapore 208539.
Open: 11am to 10pm daily.

Short Break

I took a short break from writing and posting the stuffs I recently learned such as the Python and R languages. Both are awesomely good and interesting. I attended the R language workshops recently, I was taught to learn using the plotly.js for data visualization, one of the leaders in data science. Hope, I will start learning the data visualization on my own, juggling between Python and R. So far, I have not been exposed to visualization in Python, I am not sure how does it works.

I had a short talk with the workshop’s instructor on the last day, she mentioned about Scala is also being used for analytics. Well, my current job uses it but I never learned it well. I asked her whether she would pick up Scala, she did not say ‘No’ but at least not for now.

Looking back the past weeks after I started posting the Python and R languages’ posts, both entries have equally numbers of audiences and that showed me both languages are important for people who want to learn data analytics.

For myself, I will concentrate on one language first, get the foundation before moving forward to another language and hope I can learn and develop something from it. It has been a while I did not code like a developer 🙂

What do you think?

Next month, I might have something to come up with another topic as I needed to pick up MongoDB again for my upcoming project.

She Loves Data: R Workshop Day 1 – Basic Data Type Conversion

SheLovesData - R Workshop

It works similarly to other programming languages, in R, it has.
– use is.xxx() to check the data type is of ‘xxx’ type and returns TRUE or FALSE.
– use as.xxx() to convert it into ‘xxx’ type.


  • is.numeric(), is.integer(), is.character(), is.vector(), is.matrix(), is.data.frame()
  • as.numeric(), as.integer(), as.character(), as.vector(), as.matrix(), as.data.frame)

I have tried to use as.integer() previously, still remember?

 #When I execute the line, y = as.integer(3), the output is,

y = as.integer(3)
[1] "integer"

With as.integer, it converts the “3” into integer data type and when use the class(y) it returns integer. Another one which can be used quite often is as.character(), convert a number into a string.

More data conversion is showed in the chart below, it is taken from, https://www.statmethods.net/management/typeconversion.html

After talking so much for character, numeric, string and Boolean, how about Date? Do we able to convert date?

Answer is yes. It has as.date() to convert character into date with default format, yyyy-mm-dd. Of course, we can change the date format. Example, it could be coded as,

as.Date(x, “format”)

where the date formatting can refer to below table,

Right now, I do not have much examples to show data conversion and formatting. Hopefully in the future posts, there will be more sample codes written with data conversion or formatting.

She Loves Data: R Workshop Day 1 – Basic Data Structure

SheLovesData - R Workshop

Comes into the most important part of R, the data structure or data objects in R. It holds data and it is used to handle all computations in R. Let explore one by one. It is a bit theory for this portion. It gives some information of what is vectors, matrices, lists and data frames.

Vector : c(val1, val3, val3, …)
– Simplest, basic data structure in R.
– Contains same type of data.

Matrix : matrix(data, nrow, ncol, byrow, dimnames)
– Can do operations such as addition, multiplication on matrix.
– Elements are arranged sequentially by row.
– It starts with row, then column.
data can be a form of vector.
nrow or ncol means desired number of rows or columns.
byrow is a logical value, TRUE or FALSE. By default, the matrix is filled by columns, otherwise the matrix is filled by rows.

List : list(vector, val2, …)
– Store an ordered collections of objects. It allows me to gather a variety of possibly unrelated objects under one name.
– It can contain different data types, works like a container without restriction.
– Declares using list() function or coerce an object using as.list().

Data Frames : data.frame()
– Generated by combining multiple vectors, such that each vector becomes a separate column.
– A very important data structure in R.
– It can be created by using external files when importing the data into R, looks similar like a tabular data objects.
– It can be converted into a matrix by using as.matrix().

I have prepared separate blogs to go into each of them with sample codes I got from the workshop and online learning website.

She Loves Data: R Workshop Day 1 – Basic Data Type

SheLovesData - R Workshop

Continuing from the previous blog, I am going to share some examples for the six data type. These examples can be found from the online learning website, https://www.tutorialspoint.com/r/r_data_types.htm. To help myself to confirm what kind of object is it and what is the object’s data type, the use of class() and type() help to print out the class name of the variable.

– Using single quote or double quote will be fine.
– ‘a’, “good”, “EXAMPLE”, “TRUE”, “3.14”

 #When I execute the line, x = "TRUE", the output is,
x = "TRUE"
[1] "character"

– It can be whole number or with decimal points.
– 12.3, 10, 999.
– At the global environment tab, I see the value of x is 10.

#When I execute the line, x = 10, the output is,
x = 10
[1] "numeric"

– To declare an integer, I need to use as.integer().
– It converts the value into Integer data type, only keeping the whole number.
– At the global environment tab, I see a different representation of Integer compare to Numeric.

#When I execute the line, y = as.integer(3), the output is,

y = as.integer(3)
[1] "integer"
#When I execute the line, z = as.integer(3.14), the output is,

z = as.integer(3.14)
[1] "integer"
[1] 3

There is a “L” behind the number to represent it is a Integer. 
Hope it is not too confused for Numeric and Integer. If you have some database SQL background, these can easily be understood as well.

– It has only two returns values either, TRUE, FALSE.
– It can compare with two variables.
– The standard logical operations are “&” (AND), “|” (OR) and “!” (Negation).

#When I execute a code that reads,
x = 1; y = 2 # sample values
z = x > y # is x larger than y?
z # print the logical value
[1] "logical"

#This is one of the example of comparison of two values and check if one of them larger than the other one.

#If I want to check with 3 variables with declaring z = 5, then assign the logical value to a, then it goes as, a = x > y > z. However, I received an error message,
x = 1; y = 2; z = 5 # sample values
a = x > y > z
Error: unexpected '>' in "a = x > y >"

#Can I know why?

#Another example to demonstrate the logical operations.

u = TRUE; v = FALSE
u & v
u | v
[1] TRUE

– It refers to complex numbers with real and imaginary parts.
– I do not have example to execute on this part. Will update it next time when I encounter one good example to share.

– I did not see it elsewhere for an example or what it is about. Anyone can share?

I was a little confused when most people refer R Data Type as vector, matrix, lists and data frame. Yes, it is data type in R, and in general view, it may known as data structure, a collection of objects whereas object’s data type can be character, numeric, integer and Boolean.

R provides us many functions to check the objects, such as

  • class() = what kind of object is it?
  • typeof() = what is the object’s data type?
  • length() = how long is it?
  • attributes() = does it have any metadata?

So far, I am able to use class() and hopefully will have a chance to try the rest of the above.

Then how about date? Is it also a data type?

Dates are represented as the number of days since 1970-01-01, with negative values for earlier dates.

Two built-in R functions for dates,

  • Sys.Date() returns today’s date.
  • date() returns the current date and time.

She Loves Data: R Workshop Day 1 – Basic

SheLovesData - R Workshop

Let us try something very basic, how to declare a variable and assign a value to the variable. This is the basic which every programming languages will need to use various variables to store information in the forms of characters, integers, floating points, Boolean and etc. R’s variables work slightly different where variables are assigned with R-Objects and the data type of the R-Objects becomes the data type of the variable. I will share about it in more detail below. Before that, we can still declare a variable and store a value with the basic data type. The codes look as below:

#declares a variable, x and gives x, a value of 10
x = 10

Remember that, previously I mentioned about R and RStudio installation. Let try to run it using RStudio. Upon launching the RStudio, you can see 4 boxes, so what are these boxes?

The top left box is where I write the R scripts. I can open multiple tabs to write different scripts and save it on my local machine. The bottom left box is the console where I see the output of the execution of the scripts I write above.

Move on to the top right is the global environment’s values and the bottom right is the help function. It has more things on this area which I will slowly explore them.

To execute the script, highlight the line(s) want to be executed. For Window, I use ctrl+enter to execute it and the command will be different for different machines. Alternatively, I can click on the “Run” button on top right of the top left box. The result or the output can be seen at the bottom left box.

The output on the Console tab,

And, the Environment tab,

I guess by now, more or less we are able to see the RStudio’s working environment. I will show how to use the help function in the later part.

In my script above, I used “#“. What is it?

To write comments or notes for our ownself or other people’s references in the script files, use the “#” symbol. The RStudio will not execute lines begin with “#“.

R Functions which I can use with variables are:
print() = print the value.
cat() = concatenate the values of two or more variables.
– paste() = concatenate vectors after converting to character.
ls() = find variables in the current workspace.
pattern = use with ls() to find variables with matched patterns.
all.names = TRUE = use with ls() find variables starting with dot (.) which are hidden.
rm() = remove variable.

Basic Data Types
In R, the basic R-Object data types are as below:

  • Vectors
  • Lists
  • Matrices
  • Arrays
  • Factors
  • Data Frames

The simplest and most basic used data type is vector object. There are six other data types as below:

  • Logical
  • Numeric
  • Integer
  • Complex
  • Character
  • Raw

I will share the detail of each of the above in the next blog. Stay tuned!