Skip to content

Instantly share code, notes, and snippets.

View fiatjaf's full-sized avatar

fiatjaf_ fiatjaf

View GitHub Profile
@fiatjaf
fiatjaf / docs.websitesfortrello.css
Last active August 29, 2015 14:21
Small CSS and JS includes
body > header, body > aside { background-color: #2DB284 !important }
@fiatjaf
fiatjaf / README.md
Last active October 7, 2015 23:37
opinionated URL normalization function written in PL/pgSQL

A function that takes a URL string and returns it with

  • https replaced by http (all sites support http endpoints, only some support https);
  • www. removed (all sites should support naked domains);
  • ending slash / removed from path;
  • lowercased domain (but not path);
  • querystring parameters removed, except those listed in the allowed_params table, which expects records like the following:
              hostpath               |  param   
@fiatjaf
fiatjaf / ABacantenaBocadoLixoporYuriVieira.docx.md
Created March 1, 2016 20:18
a bacante na boca do lixo demo

\


A Bacante na Boca do Lixo \ \ \


\


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title></title>
<meta name="generator" content="LibreOffice 4.2.8.2 (Linux)">
<meta name="created" content="0;0">
<meta name="changed" content="0;0">
<style type="text/css">
<!--
@fiatjaf
fiatjaf / README.md
Created March 10, 2016 18:46 — forked from plugnburn/README.md
Psto: a single package.json to scaffold and run your single-post web page in no time

Psto

This is a no-brainer to get your single-post web page up and running. Just have to have Node and NPM installed. Styling is powered by 999.css.

Steps:

  1. Place the below package.json into an empty directory and enter this directory in your command line prompt.
  2. Run npm run scaffold.
  3. Edit domain, title and author in the config section of your package.json. The domain may be either a Surge subdomain or your own (please refer to the Surge docs). If you're going to host your page yourself, you may leave domain empty.
@fiatjaf
fiatjaf / apply-masonry.js
Created March 28, 2016 19:12
Masonry layout to Classless
var msnry = new Masonry( 'main > section > ul', {
columnWidth: 'li',
itemSelector: 'li',
percentPosition: true,
gutter: 0
})

Problem: Advertising is hard, reaching the correct people with advertising is hard -- probably easier with Adwords than in the real world, but still hard --, and is getting harder as more money is spent on internet advertising. At the same time, ad blockers are quickly spreading and maybe will soon kill all the sources of advertising, bad for personal websites, bad for small companies using Adwords.

Solution: Think affiliate marketing. Now think manual advertising contracts (when a blogger or a podcaster explicitly recommends some website or local business in his writing/talking). This tool would combine these two to get some level of automation in the process. It would beat ad blockers, give a personal touch to the advertising and release companies and bloggers from the pain of manually contracting.

How would it work?

(Let's imagine this service is hosted at natural.com, which is obviously not true). Let's see an example. A blogger writes about the topic of fishing for beginner fishers. He has a lot of fi

# POST https://api.pushbullet.com/v2/pushes
# requires 'Access-Token' header
{
device_iden: "<pushbullet device id>",
type: "note",
title: "\(.Message | fromjson | .NewStateValue): \(.Message | fromjson | .AlarmName)",
body: "\(.Message | fromjson | .AlarmDescription) -- \(.Message | fromjson | .NewStateReason) -- \(.Message | fromjson | .StateChangeTime)"
}
@fiatjaf
fiatjaf / README.md
Created October 12, 2016 22:21
simple raw webrtc data connection between two peers with a super-small websocket server

TO RUN

  1. Modify app.js to use the address of your websocket server instead of ws://ws-server:8088.
  2. Run the websocket server: node ws-server.js
  3. Run an HTTP static file server of your choice: python3 -m http.server 8080
  4. Visit index.html or your HTTP static file server root. Do this on 2 different computers or 2 tabs on the same computer.
  5. The screen is blank. Open the Javascript console and set values for me and other. Do the same on the other computer/tab (but inverting the values this time). Then call connect. After the connection is established you'll be able to call channel.send('message') and see the event logs at the other computer/tab.
@fiatjaf
fiatjaf / main.js
Last active November 10, 2023 01:16
idea of a framework that takes the best of Cycle, React and Mobx
window.xtend = require('xtend')
const {h, run, reactive, track, select} = require('.')
var state = reactive({
name: select('.name-type')
.events('change')
.map(e => e.target.value),
desc: select('.desc-type')
.events('change')
.map(e => e.target.value)