Blog Posts

Gimp Primary Features

Sep 28th, 2016

When working on personal projects, there’s one thing which use to always make me waste lot of time - art. Art in the sense of making logo, icon and other images like feature graphics or promotional images. Making something that looks “ok” is not as easy as it seems especially for people like me who have no sense of art whatsoever. Few weeks ago I completed Baskee and had to develop a feature graphic for it. Also my friend came up with the logo idea and I wanted to enhance it to make it more appealing. This sort of skills are always needed as it is hard to find people to do some art things for free. So might as well learn how to do it yourself by using the best free image editor - GIMP. GIMP has been there for a decade and it is a well established software so I decided to jump into it to enhance Baskee logo and create the feature graphic.

Xamarin Forms Absolute And Relative Layout

Sep 21st, 2016

In Xamarin Forms, layouts are used to position elements in the page. There are multiple layouts available like stack layout, grid layout, table layout, absolute layout and relative layout. Stack layout is straight to grasp the concept, we stack elements one by one horizontally or vertically. Grid layout is also straight forward, we define rows and columns and we place the elements by indicating the row index and column index. On the other hand, absolute layout and relative layout isn’t that straight forward because in Xamarin it is NOT the same as positions in CSS. So today, we will see how and when we can use absolute layout and/or relative layout in our advantage.

Fix Signing Identity Error After Updating Xamarin Studio

Sep 18th, 2016

This post will explain how to fix the errors appearing in Xamarin Studio after recent update: The version of Xamarin.iOS requires the iOS 10.0SDK when the managed linker is disabled. Error executing task Codesign: Required property 'Sigingkey' not set. I recently started to play with Xamarin.iOS and am still at the beginner level - I don’t know anything about developping apps on iOS. But so far I have been able to play around and deploy to the xcode simulator until yesterday.

Publish App To Google Play Store

Sep 13th, 2016

Have you ever wondered what needs to be done to push an app on google play store? How many steps are involved? How much does it cost? What information is required? Few weeks ago I asked myself these questions and to answer it, I decided to publish an app on Google play store. Last week I completed a simple application and pushed it under alpha release on the Play store so today I would like to share what I did so that you will know how to do it too.

Untrack Git File

Sep 7th, 2016

Last week I had to untrack a file previously pushed on a git repository and I wasn’t sure on how to do it. Took me a while to wrap my head around the process so today I would like to share that in order to have it documented here.

Internationalization With Websharper

Aug 30th, 2016

When working on webapps which need to be used by international clients, it is important to provide internationalization (i18n). I18n is the process of developing web/desktop/mobile applications which provide an easy way to change language and culture to be localized to different markets. For example, English and French markets have different language, date format and number format. The webapp needs to provide a way to switch texts and respect date and number formats. So today I will show you how you can bring i18n to your WebSharper webapp.

Domain Name And Ssl With Cloudflare

Aug 23rd, 2016

Few weeks ago I explained how to setup a static page and host it on Github for free using github pages. Have a look at it if you missed it https://kimsereyblog.blogspot.co.uk/2016/07/from-idea-to-product-with-websharper-in.html. I also explain how we could get a custom domain name for people to access our website easily. For example I’ve setup a github page with my own name domain https://kimsereylam.com and got it served via HTTP. The problem with setting your own domain name is that your page will not be served with HTTPS. Now for the example website, it is hosted on GitHub and it’s just static data therefore communication encryption isn’t really important. But the issue is that if you share this website to others without specifying the protocol, Chrome will try to open it with HTTPS.

Object Oriented Programming In Fsharp

Aug 16th, 2016

Even though F# is a functional language, it also provides way to build application in a object oriented way. When interacting with C# libraries, it is very useful since C# is object oriented by nature. Today I would like to show you how you can define and build classes in a object oriented way.

Understand Xamarin Forms Data Bindings

Aug 10th, 2016

In Xamarin.Forms, interactions with buttons, labels, lists and all other controls are done via data bindings. Data bindings is one of the core component of the MVVM pattern (model - view - viewmodel). It provides a way to isolate model - view - viewmodel and therefore allows them to be swapped independently (for example for UI changes by swapping with another view or for testing purposes by swapping the viewmodel).

Websharper Ui Next Template

Aug 2nd, 2016

WebSharper.UI.Next comes with a simple template engine which can be used to build doc elements. It is built using a F# typeprovider therefore gives typesafety for templating. If you never used WebSharper or WebSharper.UI.Next before, I published a tutorial few months ago on how WebSharper works and how you can use it to create SPA’s https://kimsereyblog.blogspot.co.uk/2015/08/single-page-app-with-websharper-uinext.html. WebSharper official documentation can be found here https://github.com/intellifactory/websharper.ui.next/blob/master/docs/Templates.md.

Gradient Descent

Jul 26th, 2016

The advantage of tracking your expenses is that you can compare each month and check if you saved more or less money than the previous month. Another interesting information is to know how fast you are spending your money. Checking how fast you spend your money gives you a hint on whether you are likely to be out or within budget at the end of the month. The easiest way to check that is to plot the daily cumulated sum of your expenses and compare each month. I have been doing this for the past few months and it worked pretty well but I realised that the cumulated sum is not always nice to look at. It looks like incremental steps which is not so pleasing to the eye.

Setup Output Folder For Websharper Projects

Jul 19th, 2016

There are part of software development which aren’t very exciting. Setting up output directories is one of them. But we have to go through it because having a well defined output structure helps tremendously when time comes to deploy and publish an application. When using the default template from WebSharper, it could be confusing how and where binaries goes when build the application. In fact choosing between Debug and Release make no difference, it all goes under the \bin folder.

Manage Mutable State Actors Mailboxprocessor

Jul 12th, 2016

Today I would like to share a technique that I use to maintain mutable shared state in my F# applications. This technique uses the MailboxProcesser, a simplified implementation of the actor model built into F#. Here’s the issue: I have a dataframe shared accross my whole application. The dataframe is constructed at bootup of the server which makes the application not scalable as to reconstruct the dataframe, a reboot is needed. The solution would be to provide a way to mutate the dataframe any time I need to. But mutable state involves concurrency issues and that’s where the MailboxProcesser comes to the rescue.

Example Application Websharper

Jul 5th, 2016

From time to time I get asked, why do you use WebSharper? A legitimate question as from the abundance of libraries, tools and frameworks available, one might think that WebSharper + F# is just another hippie stack.

Deedle Primer Part2

Jun 28th, 2016

Today, I would like to show more functionalities of Deedle and how they can be used in a real life scenario. If you never heard of Deedle before, you can find A primer on Deedle (Part 1) here. In real life, data rarely (if not never) come in a format exploitable for analysis therefore, a first step of manipulation of data is always needed before analysis.

Designed, built and maintained by Kimserey Lam.