Skip to content

Instantly share code, notes, and snippets.

View afifmohammed's full-sized avatar
💭
(+2)(-3)

Afif Mohammed afifmohammed

💭
(+2)(-3)
View GitHub Profile
@afifmohammed
afifmohammed / SimpleFlakeTest.cs
Last active August 29, 2015 14:22
A test for how far we can go before SimpleFlake returns a duplicate
void Main()
{
var d = new Dictionary<BigInteger, BigInteger>();
var t = DateTime.Now;
int? howfar = null;
var attempts = 10000000;
for (int x = 0; x < 1000; x++)
{
d.Clear();
CREATE DATABASE [OrderedInsert]
GO
ALTER DATABASE [OrderedInsert] SET ALLOW_SNAPSHOT_ISOLATION ON
GO
USE [OrderedInsert]
GO
CREATE TABLE [dbo].[Test](
@afifmohammed
afifmohammed / BuildAllProjectsFromACleanState.ps1
Created November 5, 2015 02:42 — forked from RhysC/BuildAllProjectsFromACleanState.ps1
Make sure that each project can be built from a clean state (ie no rouge dlls from previous builds)
$ErrorActionPreference = "Stop"
function cleanBin {
param ([string]$path)
write-host "Cleaning bin from: $path"
get-childitem $path -include bin -recurse | remove-item -force -confirm:$false -recurse
write-host "Cleaning obj from: $path"
get-childitem $path -include obj -recurse | remove-item -force -confirm:$false -recurse
@afifmohammed
afifmohammed / PureIO.cs
Created April 20, 2016 06:32 — forked from tonymorris/PureIO.cs
A demonstration of pure-functional I/O using the free monad in C#
using System;
namespace PureIO {
/*
C# does not have proper sum types. They must be emulated.
This data type is one of 4 possible values:
- WriteOut, being a pair of a string and A
- WriteErr, being a pair of a string and A
- readLine, being a function from string to A
using System;
namespace Funcs {
public static class Funcs {
public static Func<A, C> Select<A, B, C>(this Func<A, B> f, Func<B, C> g) {
return a => g(f(a));
}
public static Func<C, B> SelectMany<A, B, C>(this Func<C, A> f, Func<A, Func<C, B>> g) {
return a => g(f(a))(a);
@afifmohammed
afifmohammed / ReaderMonad.cs
Last active January 24, 2017 21:50 — forked from vmarquez/ReaderMonad.cs
This is an example of using the Reader Monad for Dependency Injection using LINQ in C#. I learned about this from Tony Morris and Rúnar Bjarnason's video here: http://www.youtube.com/watch?v=ECPGTUa1WAI To figure out the (slightly weird) SelectMany peculiarities I found http://mikehadlow.blogspot.com/2011/01/monads-in-c-4-linq-loves-monads.html
public static class ReaderMonadExt
{
public static Func<T, C> SelectMany<T, A, B, C>(this Func<T, A> t_a, Func<A, Func<T, B>> a_t_b, Func<A, B, C> ab_c)
{
return t =>
{
var a = t_a(t);
return ab_c(a, a_t_b(a)(t));
};
}
@afifmohammed
afifmohammed / AsyncMonad.cs
Created February 13, 2017 01:38 — forked from hodzanassredin/AsyncMonad.cs
tutorial2 finished monad transformer
using System;
using System.Threading.Tasks;
namespace GenericMonad
{
public class Async
{
Async ()
{
@afifmohammed
afifmohammed / parenting.md
Created February 20, 2017 13:07
Parenting.

Some Tips for Raising Muslim Children by Mufti Ismail Menk

  1. Praise your child, even if they get 4/10 in an exam, praise your child in front of others.

  2. Never make your child feel that he or she is useless. Never favour one child over the other.

  3. Every time you speak with your children, speak with respect, say “Jazakallahu khair ”, etc. Don’t use slang such as ‘gimme’, instead say ‘please give me’; use clear words, be polite and never swear.

  4. You need to bear in mind when your child is young that he or she is just a child, don’t take away their playing time by treating them like adults. If you do this, they will rebel in life.

@afifmohammed
afifmohammed / reader.cs
Created February 28, 2017 06:37
reader spik
void Main()
{
var id = new Id();
Func<Id, Customer> customerById = x => new Customer();
Func<Criteria, CreditHistory> creditHistoryByCriteria = x => new CreditHistory();
Func<Report, Unit> print = x => new Unit();
var history = GetCustomer(id)
.Map(GetCustomerCreditHistory)
.Uncurry()
@afifmohammed
afifmohammed / AggregateCorrelations.cs
Last active March 16, 2017 03:39
Aggregate correlations
void Main()
{
var events = new Event[]
{
new ItemAddedToCart(lead:"1", cart:"2", product:"44", title:"products/44/title/iphone-6s", when:DateTimeOffset.Now),
new ItemAddedToCart(lead:"1", cart:"2", product:"4", title:"products/4/title/iphone-5-SE", when:DateTimeOffset.Now),
new ItemRemovedFromCart(lead:"1", cart:"2", product:"44", when:DateTimeOffset.Now),
new OrderPlaced(customer:"1", order:"2", when:DateTimeOffset.Now.AddSeconds(123)),
new ItemShipped(order:"2", sku:"4", trackingid:"orders/2/skus/4/track/12", when:DateTimeOffset.Now.AddMinutes(33)),
new ItemAddedToCart(lead:"12", cart:"22", product:"42", title:"products/42/title/iphone-6s-plus", when:DateTimeOffset.Now.AddSeconds(12)),