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.
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.
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.
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.
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.
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.
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.
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 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.
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.
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.
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.
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.