Category: Software Engineering

“Copperr” – My API-Wrapper R Package for Copper™ CRM

copperr is an R package that connects to the Copper™ CRM Platform APIs using tidy principles. The package implements most key actions from their REST API described on Copper’s developer portal here. The package includes what you’d expect to see in an API wrapper:

  • Basic (Username/API-key) Authentication methods, and caching for API details
  • CRUD (Create, Retrieve, Update, Delete) methods for records
  • Query a set of records
  • Retrieve metadata Resources (Custom Fields, Sources, Pipeline Stages, etc.)
  • Retrieve User profiles
  • Helper functions to simplify some common record lookups and manipulations

You can download the package and read the “Getting Started” guide on Github here

I’ll probably provide some examples of the kind of sales data analysis and data cleansing I am using this package for in subsequent posts. Leave a comment if you’re interested in this?

A Comparison of Programming Languages I’ve Used

Comparing programming languages has been a popular sport for many years.

I love the quote from Antoine de Saint-Exupery who once said “If you want to build a ship, don’t tell people to collect wood, or assign them tasks, but rather teach them to long for the endless immensity of the sea“. 

So let’s see how each of the dozen-or-so programming languages I’ve used over the last few decades support that epic vision of empowerment: Continue reading

JavaScript is the new C

assembler programming languageIn the days when processing power was expensive, writing assembler code was the benchmark, and high level languages were seen as an extravagance, C was a revelation. Near-assembler fast, bit-level operations, but still an expressive 3GL.
OK, so nothing like JavaScript then?

Wait, that’s only the beginning of the story.

Continue reading

Event-driven programming, Finite State Machines and NodeJS

I started out in my software engineering life writing software for embedded real-time systems and communication stacks, so I often think of myself as an async native. I’ve written a lot of code in various languages, mostly not using event-driven programming models and design patterns, but hardware interrupts, callback functions, event loops and finite state machines – I still see these as reassuringly familiar features of my original habitat. Call it the baby duck syndrome.

Who is this post for?

This post is primarily aimed at developers working with (or planning to work with) server-side JavaScript using NodeJS. If you’re already familiar with event loops and state machines then much of this article will be familiar to you. For others, I’m hoping this post will provide you with an understanding of the fundamentals of the event-driven programming model you will need when creating Finite State Machines or working with NodeJS on the server or on a Raspberry Pi or similar device. Continue reading