teleren/devto huggingface dataset:
Rocks - Simple turret AI
Tags: unity3d, futile, gamedev
Published: 2013-05-05 21:11:00

---
cover_image: https://dev-to-uploads.s3.amazonaws.com/i/y9hxcwi5y92j6zfcxbjx.jpg
title: Rocks - Simple turret AI
slug: rocks-simple-turret-ai
date: 2013-05-05 21:11
tags: 
 - unity
 - futile
 - gamedev
---
So I've been playing with Unity the last couple of days, and I quite like it. I'm not much of a fan of the scene editor, or any of the GUI stuff, but I've been playing with [MattRix](https://twitter.com/MattRix/)'s [Futile framework](https://github.com/MattRix/Futile) and being able to do everything from a code-first perspective is awesome.

Naturally, I decided to make a simple game simulation, for science. What's simpler than a turret AI that shoots at rocks in space?

![Rocks, just a preview](http://i.imgur.com/HEDGi7y.png)

It actually works quite well. I think I had 200,000 asteroids floating around at one point with *minimal* lag. 

The thing I like about using Unity, and Futile too, is that I don't have to spend all my time working on the boilerplate code. I can just jump right in and get started on my game. I can see results quicker, and that's what I like, results.

For now, I'm either going to think of a simple game and finish the damn thing, or get on with those upgrades for this site. Hard decision.

The source code for "Rocks" is available [here on GitHub](https://github.com/Imdsm/Rocks) and the demo can be [found here.](http://gamedev.adamkdean.co.uk/Rocks/).
Unity3d web player MIME type
Tags: iis, unity3d, mimetypes
Published: 2013-05-05 17:37:00

---
cover_image: https://dev-to-uploads.s3.amazonaws.com/i/y9hxcwi5y92j6zfcxbjx.jpg
title: Unity3d web player MIME type
slug: unity3d-web-player-mime-type
date: 2013-05-05 17:37
tags: 
 - iis
 - unity3d
 - mime-types
---
IIS doesn't like serving unknown MIME types, and one of these happens to be the *unity3d* file for Unity Web Player. If you want it to serve this file, you have to go to MIME Types under IIS, and add a mime with the extension `.unity3d` and type `application/vnd.unity`.

![MIME Type](http://i.imgur.com/KdZJqIg.png)

Woop. Now I can actually serve content. Thanks, overly protective IIS.
Distro Picker: Chooses your Linux-Distribution
Tags: arch, distro, linux
Published: 2019-08-08 13:11:59

---
title: Distro Picker: Chooses your Linux-Distribution
published: true
tags: arch,distro,linux
canonical_url: https://www.zufallsheld.de/2013/05/03/distro-picker-chooses-your-linux-distribution/
---

[Allan McRae](http://allanmcrae.com/2013/05/interesting-links-april-2013/), Pacman developer, found an interesting small tool, called [Distro Picker](https://linuxformat.com/tuxradarchive/content/distro-picker-0). This tool finds the Linux-Distribution based on what you prefer as a Desktop Environment, Package Manager and other settings.

When I tried it out, it offered me my current distro: [Arch Linux](https://www.archlinux.org/), so interestingly, it works really well!

I’ll definitely have to take a look at the other distros offered.
Shipping is Your Primary Feature
Tags: career, productivity
Published: 2019-07-26 02:02:00

---
title: Shipping is Your Primary Feature
published: true
tags: career, productivity
canonical_url: http://mike.sherov.com//shipping-is-your-primary-feature/
---

I’ll keep this one short and sweet, and just say this: The most important feature that your software can have is that it’s in the hands of end users. That’s where features are truly fleshed out through actual use.

Although I disagree with some of the points in the article, I can’t say it any better than Jamie Zawinski as quoted by Joel Spolsky in [The Duct Tape Programmer](http://www.joelonsoftware.com/items/2009/09/23.html) (interesting article, about 5 minutes to read): “ **But that’s not the point — you’re not here to write code; you’re here to ship products.** ”

Idea for the day: remember [YAGNI](http://en.wikipedia.org/wiki/You_ain%27t_gonna_need_it) (You Ain’t Gonna Need It)
Kali Linux Accessibility Improvements
Published: 2023-08-21 21:24:22

---
title: Kali Linux Accessibility Improvements
published: true
date: 2013-04-26 00:00:00 UTC
tags: 
canonical_url: https://www.kali.org/blog/kali-linux-1-0-3-release/
---

A couple of weeks ago, we were approached (independently) by two blind security enthusiasts who both drew our attention to the fact that Kali Linux had no built-in accessibility features. This made Kali difficult, if not impossible, to both install and use from a blind or visually impaired user’s perspective.

Our first attempts at building an accessible version of Kali failed and after a bit of digging, we found that there were several upstream [GNOME Display Manager](https://packages.debian.org/wheezy/gdm3) (GDM3) bugs in [Debian](https://www.debian.org/), which prevented these accessibility features from functioning with the GDM greeter. Working together with an upstream GNOME developer, we knocked out these bugs and had the fixes implemeted in Kali, and hopefully in future builds of GDM3 in Debian. To make the [Kali installation](https://www.kali.org/docs/installation/) accessible as well, we have added a new “accessibility” boot option that triggers the speech engine during the installation process.

[![](https://www.kali.org/blog/kali-linux-1-0-3-release/images/desktop-installer-small.png)](https://www.kali.org/blog/kali-linux-1-0-3-release/images/desktop-installer-small.png)

We are very proud to have sponsored this work, which has brought much-improved accessibility features to both Kali Linux and Debian and we sincerely hope to continue receiving [feedback](https://bugs.kali.org/) from the community so we can further improve Kali Linux. We have also taken this opportunity add a new “Live Desktop” installer and have released a [new version of Kali Linux](https://www.kali.org/get-kali/) that has these accessibility features built-in.

**To activate the speech assisted installer, press “S” at boot time, and hit enter.**

<iframe src="https://www.kali.org/blog/kali-linux-1-0-3-release/https://player.vimeo.com/video/64376041?dnt=1" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="vimeo video" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
ImageMagick эксперименты #7
Tags: fun, imagemagick
Published: 2013-04-24 14:46:00

---
date: "2013-04-24 20:46:00 +0600"
canonical_url: "https://vk.com/wall38057738_936"
series: "Эксперименты с картинками"
---

Продолжаем творить велосипеды, самокаты, драндулеты и прочие штуки. Отвлечемся от искажения цвета и поэкспериментируем над позициями пикселей.

# Инвертирование

Каждую нечетную строку инвертируем-ну тут совсем скучно, разве что это не обычное зеркальное наложение. Рассмотрите в оригинале, очень интересный эффект с вертикальными полосами.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/ccvtxi3ffocfl2pohwx5.jpeg)

# Смещение

Смещение с коэффициентом. А тут весело, получается какое-то там размазывание, не помню как это называется в фотошопе.
В след раз попытаюсь осилить и сделаю метро интерфейс из картинки ;)

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/5c1n02llufnre9puls8d.jpeg)
<figcaption>Смещение с коэффициентом 10</figcaption>

Моя любимая машинка размазалась полностью. Грусть-тоска T_T

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/mr1ez8uhj9gx3hlocz2w.jpeg)
<figcaption>Смещение с коэффициентом 1000</figcaption>

В следующей части разбиение картинки на квадраты произвольного цвета и размера.

# Исходники

https://github.com/senior-sigan/magick/blob/master/diffusion.h
uShowcase - Umbraco Photo Gallery
Tags: umbraco, ushowcase
Published: 2013-04-24 14:36:00

---
cover_image: https://dev-to-uploads.s3.amazonaws.com/i/y9hxcwi5y92j6zfcxbjx.jpg
title: uShowcase - Umbraco Photo Gallery
slug: ushowcase-umbraco-photo-gallery
date: 2013-04-24 14:36
tags: 
 - umbraco
 - ushowcase
---
So today I've released my first Umbraco project, a simple and easily modifiable photo gallery starter kit.

I'm planning on making a few gallery websites; one for myself and a few for some photographers I know. I thought the best thing to do is create a starter kit for myself, and naturally, release it into the wild.

I'll post an excerpt from the project description (which, if I might add, is terribly difficult to format using the Umbraco website).

![uShowcase - Umbraco Photo Gallery](http://i.imgur.com/uxkoEfc.png)

# uShowcase
**uShowcase is a photo gallery for Umbraco.**

It comes with a very simple template which is easily modifiable but also usable right away.

## Features:
* Multiple galleries
* Rich text page documents
* Super easy to modify template

## Using uShowcase 

Using uShowcase: Under home, there is a Galleries page. This will not show up in the navigation. Create `Gallery` pages inside Galleries, and inside the `Gallery` pages, create `Photo` pages. The template uses bootstrap but the uShowcase photo grid system doesn't, so you don't *have* to have Bootstrap.

## Requirements 
*Requires ImageGen version 2.5.7 to run:  
http://our.umbraco.org/projects/website-utilities/imagegen*

Version 1.0.1 has only been tested with Umbraco v6.0.3 - so bear that in mind.

**Umbraco Project:** [http://our.umbraco.org/projects/starter-kits/ushowcase](http://our.umbraco.org/projects/starter-kits/ushowcase)  
**GitHub Repository:** [http://github.com/Imdsm/uShowcase](http://github.com/Imdsm/uShowcase)
Pi Power -- How I Made a Battery Powered USB Hub
Tags: robots, hack
Published: 2013-04-20 10:00:00

---
title: Pi Power -- How I Made a Battery Powered USB Hub
published: true
tags: robots, hack
published_at: 20130420T10:00Z
series: Raspberry Pi
canonical_url: https://ladvien.com/pi-power
main_image: https://ladvien.com/images/USBPi.JPG
---


{% embed https://www.youtube.com/embed/nxfNJJ34a7Q %}

As I prepare to start adding peripherals to my Pi Bot, I wanted to be sure to get around the 700ma power budget the Pi has.  After searching for a cheap battery powered USB hub and finding little, I decided to hack up a few cheap(ish) parts and make my own.

1. [USB Hub](http://www.ebay.com/itm/Black-MINI-4-PORT-USB-1-1-HUB-Full-SPEED-For-LAPTOP-PC-/330784596118?pt=US_USB_Cables_Hubs_Adapters&hash=item4d044c6096): $1.39
2. [5000mAh Battery](http://www.fasttech.com/products/0/10003353/1248700-solar-powered-5000mah-mobile-power-battery-wcharge): $17.93
3. [DC-DC Converter](http://www.fasttech.com/products/0/10002934/1219202-dc-dc-3v-to-5-9v-2a-boost-diy-mobile-phone-power-s): $2.76

Total: $22.08

## The Battery Hack:

### Step 1
Crack it open

![](https://ladvien.com/images/IMG_0517_1024x768.jpg)

## Step 2:
Find POWER and GND

![](https://ladvien.com/images/IMG_0518_1024x768.jpg)

![](https://ladvien.com/images/IMG_0521_1024x768.jpg)

## Step 3:
Wire it up
![](https://ladvien.com/images/IMG_0525_1024x768.jpg)

## Step 4: 
Make a small hole for wires and bring wires out

![](https://ladvien.com/images/IMG_0526_1024x768.jpg)

## Step 5:
Solder the respective leads to the DC-DC converter.

![](https://ladvien.com/images/IMG_0527_1024x768.jpg)

## Step 6:
Smile, then sit through my _way too long_ of a video to make it into the HUB.

Hope all are well. :)

## Notes:
1. Regarding the error at the end of the video.  Don't panic (that's what I did).  I actually found out this had nothing to do with my hub, it had to do with plugging an iPhone into a Raspberry Pi.
2. NOTE2: I realize I used the wrong "hearty," my brain has problems typing homonyms and parahomonyms. :P
Route all .dev URL's to 127.0.0.1
Published: 2021-01-28 21:47:24

---
title: Route all .dev URL's to 127.0.0.1
published: true
date: 2013-04-18 12:00:00 UTC
tags: 
canonical_url: 
---

If you're like me, you always forget to edit the /etc/hosts file when you want to view a local site.

To get around this, you can use the following script to route all your .dev urls to 127.0.0.1 (or any other IP). So you could go to "romhut.dev" and that would load from 127.0.0.1.

```
brew install dnsmasq
mkdir -pv $(brew --prefix)/etc/
echo 'address=/.dev/127.0.0.1' > $(brew --prefix)/etc/dnsmasq.conf
sudo cp -v $(brew --prefix dnsmasq)/homebrew.mxcl.dnsmasq.plist /Library/LaunchDaemons
sudo launchctl load -w /Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist
sudo mkdir -v /etc/resolver
sudo bash -c 'echo "nameserver 127.0.0.1" > /etc/resolver/dev'

```

If you wish to use another IP, only change the first 127.0.0.1, otherwise it will look for a name server on the host.

<!--kg-card-end: markdown-->
How to detect keycode / key pressed in jquery
Tags: jquery, webdev, javascript, tutorial
Published: 2021-12-16 10:25:05

---
title: How to detect keycode / key pressed in jquery
published: true
date: 2013-04-18 07:07:23 UTC
tags: jQuery,WebDev,javascript,tutorial
canonical_url: https://www.moreonfew.com/how-to-identify-keycode-or-key-pressed-in-jquery/
---

Tracking a keyCode can be very helpful if you would like to give your visitors a user-friendly experience. For instance, if there is an overlay open on a page, I usually press the ESC (Escape) button to close the overlay and most of the sites nowadays respond to it and close the overlay. It wouldn’t work without the keyCode being tracked. We do not have events like “onEscKeyPressed”, “onEnterKeyPressed” etc, so the only way to handle this type of functionality is by tracking the keyCode of the key pressed.

> KeyCode is the Unicode value of a character key pressed.

## How to identify the keyCode / the key pressed using jQuery ?

You can use jQuery’s **event.which** to identify the key pressed. It basically normalizes the event.keyCode and the event.charCode for keyboard key input. Hence it would be advisable to use event.which unless you really want to use event.keyCode. Let’s look at few examples to understand the use of **event.which**.

### How to close an overlay on Esc / Escape key press?

The KeyCode for the Esc or Escape key is 27. You can find out the keyCode of a key by putting an alert on your page or by using this tool. The following example hides a div with ID “overlay” when the ESC key is pressed.

```javascript
$(document).ready(function(){

	$(document).keydown(function(event){
			if(event.which == 27){
				$("#overlay").hide();
			}
	});

});
```

Similarly, we can use the keyCode to limit the type of characters allowed inside a particular field. For instance, let’s say that we have an input field that should contain only numbers and we don’t want the user to enter anything inside the field other than integers/numbers. In such a scenario we can use the **event.which** API to detect the keyCode and restrict the input.

#### How to restrict keyboard character input to digits?

The following example restricts the keyboard character input to digits.

```javascript
$(document).ready(function(){
  $("input").keydown(function(event){ 

       //KeyCode for digits 0-9 is 96 to 105 on the numeric pad.
       //KeyCode for digits 0-9 is 48 to 57 on the regular digit keys on a qwerty keyboard.
       //keyCode 8 is for backspace

	if((event.which >= 48 && event.which <= 57) || (event.which >= 96 && event.which <= 105) || (event.which == 8))
	{
		return true;
	}else{
		return false;
	}

  });
});
```

Identifying the key pressed using keyCode / character Code is helpful and it also improves the user experience for the end-user. You can do a lot of creative stuff by detecting the key pressed.

Happy Coding!

The post [How to detect keycode / key pressed in jquery](https://www.moreonfew.com/how-to-identify-keycode-or-key-pressed-in-jquery/) first appeared on [MoreOnFew](https://www.moreonfew.com).
Simple Navigation Macro for Umbraco
Tags: umbraco, macro, razor
Published: 2013-04-15 17:57:00

---
cover_image: https://dev-to-uploads.s3.amazonaws.com/i/y9hxcwi5y92j6zfcxbjx.jpg
title: Simple Navigation Macro for Umbraco
slug: simple-navigation-macro-for-umbraco
date: 2013-04-15 17:57
tags: 
 - umbraco
 - macro
 - razor
---
I have started working with Umbraco, so a lot of my posts are probably going to be about that for the next few months at least.

This snippet is probably common knowledge for a lot of Umbraco developers, but for me, I had to look on the internet for almost 30 seconds to find it, so to make it easier for me to find it in the future, I'm posting it here. You're welcome future me.

	<ul>
		@{ 
			var homeNode = Model.AncestorOrSelf("Home"); 
		  	var homeClass = Library.If(homeNode.Id == Model.Id, "selected", "");
		}
		
	    <li><a href="@homeNode.Url" class="@homeClass">@homeNode.Name</a></li>		
		
		@foreach(var pageNode in homeNode.Children.Where("Visible"))
		{
			var pageClass = Library.If(pageNode.Id == Model.Id, "selected", "");
			
			<li><a href="@pageNode.Url" class="@pageClass">@pageNode.Name</a></li>
		}
	</ul>

No nesting support but easily addable, [see here](http://umbraco.com/help-and-support/video-tutorials/umbraco-fundamentals/razor-recipes/navigation.aspx).
Arduino to RPi -- Galvanically Isolated I2C
Tags: robots, i2c, smd, pcb
Published: 2013-04-13 10:00:00

---
title: Arduino to RPi -- Galvanically Isolated I2C
published: true
tags: robots, i2c, smd, pcb
published_at: 20130413T10:00Z
series: Raspberry Pi
canonical_url: https://ladvien.com/arduino-to-rpi-optoisolated-i2c
main_image: https://ladvien.com/images/IMG_0602.JPG
---


[Breakout PCB](/files/ADUM1250ARZ_v.01.zip)
[Breakout PCB](/files/ADUM1250ARZ_v.01.zip)

{% embed https://www.youtube.com/embed/P77ZGNKlc9M %}

I've waited to finish incorporating my Raspberry Pi into my bot for an ample bit.  But since I know so little about electricity, I swore to myself I wouldn't add my Pi to my [bot ](http://letsmakerobots.com/node/35922)until I was absolutely sure I wouldn't fry it.  

Well, I'm still not "absolutely" sure, but I feel this little optoisolator has brought me a lot closer.  This builds on [my post](http://letsmakerobots.com/node/36672) a week or so ago about making Eagle parts.

I plan to actually list out what tweaks a Wheezy image needs to get this optoisolator build to work.  It's actually pretty easy--but whatever you, don't be lured in by quick2wire.  Those buggers wasted most of my day :(

If anyone has questions let me know.

**Oh, one note.  When I populated the board I used 4.7k resistors on the Arduino side, but I pulled off everything on the Raspberry Pi side.  It seems the Pi has built in pull-ups that do the job rather well.**

[ADUM1250ARZ Datasheet](http://www.analog.com/static/imported-files/data_sheets/ADUM1250_1251.pdf)

Hope everyone is well :)
Automatically prefix vendor description to Shopify products
Tags: liquid, shopify
Published: 2013-04-08 16:08:00

---
cover_image: https://dev-to-uploads.s3.amazonaws.com/i/y9hxcwi5y92j6zfcxbjx.jpg
title: Automatically prefix vendor description to Shopify products
slug: automatically-prefix-vendor-description-to-shopify-products
date: 2013-04-08 16:08
tags: 
 - liquid
 - shopify
---
I'm currently working on modifying a site that uses [Shopify](http://www.shopify.com) -- a great online e-commerce platform -- and have found that while at first the system seems a little restrictive, it is actually quite malleable once you get the hang of things. It's a bit hack n slash but with the right hacks, and a couple of slashes, it can actually work pretty well.

The following snippet loops through a list of collections a product belongs to, and if the collection if equal to the vendor of the product, it displays the vendors description.

```
{% comment %} 
    This will show the vendors description above the items
{% endcomment %}

{% for c in product.collections %}
    {% if c.title == product.vendor %}
        {{ c.description }}
    {% endif %}
{% endfor %}
```

This is great when you want a brand logo to appear above all items of that brand, without doing it manually. Another trick I used was to make a *smart collection* that assigned all items with the Vendor name to be part of the smart collection of the same name.

An example would be a product whose vendor was `Blackrock`. A smart collection with the name `Blackrock` would contain all items with the vendor `Blackrock`, and the description of that smart collection could then also contain a brand image in the description. Adding the above code to the `product.liquid` page could get an automatic brand image above the product description, like so:

![Example](http://i.imgur.com/96Iiz7c.png)

Easy, and effective.
ImageMagick эксперименты #5
Tags: fun, imagemagick
Published: 2013-04-08 15:02:00

---
date: "2013-04-08 21:02:00 +0600"
canonical_url: "https://vk.com/wall38057738_915"
series: "Эксперименты с картинками"
---

Специально для любителей острых ощущений. Сейчас вы станете свидетелями того как каждый “пиксель” влияет на следующий с разными коэффициентами.

Для простоты в данном эксперименте значение цвета предыдущего пикселя просто складывается со следующим с некоторым коэффициентом.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/ebg2b8tcd487z4j66mdm.jpeg)
<figcaption>Коэффициент 0.5 — это только начало.</figcaption>

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/3hpe29jwkyr8nnhzqbbu.jpeg)
<figcaption>Коэффициент 0.7</figcaption>

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/mnns10ld8i6w6qi74dka.jpeg)
<figcaption>Коэффициент 0.8</figcaption>

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/z3ztngzwb2s0acopl55e.jpeg)
<figcaption>Коэффициент 0.9</figcaption>

И самое весёлое 1.1. Почти белый шум. Как будто телевизор плохо показывает.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/jpph1wq06ctxldsqcvgb.jpeg)
<figcaption>Коэффициент 1.1</figcaption>

В следующей части мы применим некоторую функцию от координаты пикселя и его значением над изображением.

# Исходники

https://github.com/senior-sigan/magick/blob/master/dependence.h
ImageMagick эксперименты #4
Tags: fun, imagemagick
Published: 2013-04-05 14:44:00

---
date: "2013-04-05 20:44:00 +0600"
canonical_url: "https://vk.com/wall38057738_909"
series: "Эксперименты с картинками"
---

Пятница, и этим всё сказано. Насладимся же сортировкой изображения. Я написал построчечную сортировку каналов и полную. Некоторые результаты были весьма неожиданными, особенно segmentation fault, иногда :D.

# Частичная сортировка.

Начнем с сортировки красного канала. Напомню, что машина желтая. Выглядит как закат. Ну почти.

![Сортировка по яркости красного канала](https://dev-to-uploads.s3.amazonaws.com/i/rpolbjcin7dc9r9y4d8h.jpeg)
<figcaption>Сортировка по яркости красного канала</figcaption>

А теперь отправим синий канал в другую сторону.

![Красный канал сортируется в правую сторону, синий — в левую](https://dev-to-uploads.s3.amazonaws.com/i/o1xdysi0xya3ivboyzp3.jpeg)
<figcaption>Красный канал сортируется в правую сторону, синий — в левую</figcaption>

Картинка всё еще похожа на оригинал. НУЖНО ИСПРАВИТЬ ЭТОТ НЕДОЧЕТ.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/b99trvo3ja0t70gtlfdh.jpeg)

Вот это я понимаю искусство. Полная сортировка всех каналов в левую сторону. Поздравляю. Так бы выглядела машина на десятой скорости света.
Мне так понравился эффект растаскивания цветов в разные стороны, что сделал еще несколько экземпляров.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/41dq0cfm885rqwsr77go.jpeg)

Хорошо, а вот еще одна подопытная няша. Отсортируем её полностью.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/tfnxhtxyixm80m8rac49.jpeg)

УПС. это не то чего я ожидал. Тьфу ты, перепутал сортировку. Часть каналов отсортирована полностью другая часть — нет. Короче я не понял, что тут произошло. Наверное баг в проге.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/v9pbx8b8cns2wgps66q0.jpeg)

Вот это другое дело. Полностью отсортированная картинка. Назовем её розовый градиент [s]Малевича[/s].
Это всё. В следующем выпуске я покажу как один пиксель может “сломать” всю картинку.

# Исходники

{% gist https://gist.github.com/senior-sigan/5319705 %}