Rantings from a guy with way too much free time

Riding the Camel Deeper into the Desert of Code: Records and Variants

2018-02-11 13 minute read programming Rob Baruch
Extending and Encapsulating Data - Records and Variants Up next on our tour of OCaml are records and variants. If you are familiar with typedef, struct, and union in c/c++, you’ll quickly come to understand how to use records and variants in OCaml. We’ll start off looking at records, how to define them, use them in functions, and automatically generate common functions from our type definitions. There’s more to the eye than what you get in a language like c, so pay close attention as we move through the descriptions below. Continue reading

Let's Get Funky with the Camel

2018-02-09 8 minute read programming Rob Baruch
How many ways can we get Fun(ky) In any programming paradigm, it’s critical to understand how we write functions - be they traditional imperative , anonymous , recursive, or functional. In this post, I will break down the different types of functions that you can write in OCaml. Let’s start by examining the imperative function. Here’s a simple function that prints out the phrase Hello World! $n$ times, once on each line, and returns the value $n$ as its result. Continue reading

OCaml Hello World and more

2018-02-06 9 minute read programming Rob Baruch
Well Hello There! As tradition has it, every new programming language experience must begin with the basic Hello World. Let’s walk the the basics of how to set up our development environment specifically for OCaml and demonstrate how to compile our basic program. Warming up our Environment Of course we could just use our vanilla editor to enter our OCaml programs, but a more efficient work environment leverages an extensible editor that is aware of our programming language. Continue reading

OCaml Intro: You can have it all: Object-Oriented, Imperative, and Functional

2018-02-01 3 minute read programming Rob Baruch
YAPL So why take the time to delve into yet another programming language? I find at worst, one can expands one’s knowledge of existing programming paradigms by studying the language design choices of other languages not used on a daily-basis. Best case, one discovers a new language that is rich in expression and productivity; thereby refining the productivity of the user. OCaml So, I tripped over this programming language in a rather random and circuitous path. Continue reading

Pothos - A New Take on Data-Flow Frameworks

2018-01-17 8 minute read programming Rob Baruch
Data-Flows… like a river In today’s post, I thought I’d take a look at and discuss the Pothos toolkit, a work-flow tool that improves upon the design principles of gnuradio and enables real-time data-flow processes for real-time applications. Using a MacBook Pro, an ettus N210 SDR, and an FM-antenna, I’ll show how easy it is to build an FM Receiver to listen to your favorite radio stations on your laptop. Continue reading

Crypto 101: A Brief Tour of Practical Crypto in Golang

2017-12-14 12 minute read programming Rob Baruch
Crypto 101: Golang offers a rich collection of packages supporting cryptographic operations. From a beginner’s perspective, maybe too many offerings! I offer up an overview of what’s available and an introduction to some practical uses of cryptography in Golang. Implementation details are always critical when discussing crypto. We’ll discuss some general implications of making poor choices and how such choices can completely undermine any uses of these tools. What’ in the box? Continue reading

Channel Your Inner Gopher

2017-12-13 12 minute read programming Rob Baruch
Channeling your Inner Gopher - (Literally) Reflecting upon Channels Many gophers are likely familiar with the communication paradigm, channels. An elegant solution to communicate (uni or bidirectionally) typed information among go-routines. In it’s simplest form, we declare as type-valued channel variable, make it, and then send and receive data through it. Easy enough! package main import ( "fmt" ) func main() { var simpleChan chan int = make(chan int) go func(c chan int) { // send important data to the channel c <- 42 close(c) }(simpleChan) // receive data num := <-simpleChan fmt. Continue reading
Older posts Newer posts