Skip to content

Instantly share code, notes, and snippets.


Wael Nasreddine kalbasit

Block or report user

Report or block kalbasit

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile

Problems & Solutions for Interaction Between C and Go

At Vimeo, on the transcoding team, we work a lot with Go, and a lot with C, for various tasks such as media ingest. This means we use CGO quite extensively, and consequently, have run into bits that are perhaps not very well documented, if at all. Below is my effort to document some of the problems we've run into, and how we fixed or worked around them.

Many of these are obviously wrong in retrospect, but hindsight is 20/20, and these problems do exist in many codebases currently.

Some are definitely ugly, and I much welcome better solutions! Tweet me at @daemon404 if you have any, or have your own CGO story/tips, please! I'd love to learn of them.

Table of Contents

# This script will setup Evm and Cask on Travis to use for Emacs Lisp testing.
# In .travis.yml, add Evm and Cask to PATH.
# - export PATH="/home/travis/.evm/bin:$PATH"
sudo mkdir /usr/local/evm
sudo chown travis:travis /usr/local/evm
View gemcutter_rce.rb
#!/usr/bin/env ruby
# Proof-of-Concept RCE exploit against Gemcutter
# ## Advisory
# ## Caveats
# ## Synopsis
kalbasit / das_download.rb
Created Feb 27, 2012 — forked from maca/das_download.rb
Script to download all Destroy All Software screencasts, account needed
View das_download.rb
#! /usr/bin/env ruby
# usage:
# $ das_download.rb email password [download_directory]
require 'mechanize'
# gem 'mechanize-progressbar'
email = ARGV[0] or raise('Please provide the email address for your account')
password = ARGV[1] or raise('Please provide the password for your account')
path = (ARGV[2] || './').gsub /\//,''
You can’t perform that action at this time.