Skip to content

Instantly share code, notes, and snippets.

View vmrob's full-sized avatar

Victor Robertson vmrob

  • Cruise Automation
  • San Francisco
View GitHub Profile
@vmrob
vmrob / Dockerfile
Created February 9, 2019 22:38
Python docker template
FROM python:3-alpine
COPY entrypoint.py /app/entrypoint.py
WORKDIR /app
ENTRYPOINT ["python3", "/app/entrypoint.py"]
@vmrob
vmrob / distance.h
Created October 28, 2018 07:10
Simple distance/velocity header
// Public domain, do whatever you want.
#include <chrono>
#include <cstdint>
class Distance {
public:
constexpr double kilometers() const { return _meters * 1e-3; }
constexpr double meters() const { return _meters; }
constexpr double decimeters() const { return _meters * 1e1; }
#include <memory>
#include <cstdlib>
#include <cassert>
template <typename T>
class immutable_vector_data {
public:
static constexpr size_t kInitialCapacity = 1;
immutable_vector_data(size_t capacity = kInitialCapacity)
@vmrob
vmrob / dynarray.c
Last active April 17, 2016 02:13
C dynamic array
#include <stdlib.h>
#include <assert.h>
#include <string.h>
unsigned long long next_power_of_two(unsigned long long v);
struct dynarray {
unsigned long long size;
unsigned long long value_size;
unsigned long long capacity;
@vmrob
vmrob / forward_tuple.cpp
Last active March 3, 2016 10:32
Tuple forwarding for function types
#include <utility>
#include <tuple>
#include <type_traits>
namespace meta {
// detects callable objects, not functions
// http://stackoverflow.com/questions/15393938/find-out-if-a-c-object-is-callable
template<typename T>
class is_callable_object {
@vmrob
vmrob / nonblocking_stream_reader.cpp
Last active July 20, 2020 14:44
non blocking reader for std::istream. compile with c++14
#include <iostream>
#include <chrono>
#include <thread>
#include <queue>
#include <string>
#include <atomic>
#include <mutex>
class AsyncStreamReader {
public:
@vmrob
vmrob / nonblocking.cpp
Created February 14, 2016 07:56
simple nonblocking read from std::cin
#include <iostream>
#include <chrono>
#include <future>
#include <string>
std::string GetLineFromCin() {
std::string line;
std::getline(std::cin, line);
return line;
}
@vmrob
vmrob / spindump
Created November 30, 2015 17:16
Spindump during a zfs deadlock.
Date/Time: 2015-11-30 10:48:00 -0600
OS Version: 10.10.5 (Build 14F1021)
Architecture: x86_64h
Report Version: 21
Duration: 9.99s
Steps: 1000 (10ms sampling interval)
Hardware model: MacBookPro11,3
Active cpus: 8
@vmrob
vmrob / spindump.txt
Created November 4, 2015 01:28
Spindump during a potential deadlock with zfs on os x
Date/Time: 2015-11-03 11:20:25 -0700
OS Version: 10.10.5 (Build 14F27)
Architecture: x86_64h
Report Version: 21
Duration: 9.99s
Steps: 1000 (10ms sampling interval)
Hardware model: MacBookPro11,3
Active cpus: 8
@vmrob
vmrob / channel.cpp
Last active March 29, 2021 23:40
Go channels in C++
#include <future>
#include <iostream>
#include <thread>
#include <queue>
template <typename T>
class concurrent_queue {
private:
std::queue<T> _queue;
std::mutex _mutex;