In this Cosmic JS Developer Spotlight, we sat down with Ben Packer, a web developer who focused on natural language processing prior to turning his talents toward web development for non-profit initiatives. Ben serves as the Director of Technology for Brand New Congress, an initiative aiming to elect 535 new members of Congress. Check him out on Twitter or LinkedIn, and enjoy the Q/A.
How long have you been building software?
I've been programming for 4 years now, but only full-time professionally for 3 months since I graduated college. I've done a bit of everything, previously focusing on natural language processing before turning to web development.
What is your preferred development stack?
I've used lots of MERN (MongoDB, Express, React, Node), but have recently made the switch to Elixir + Phoenix + Postgres, which is what I've done all of my Cosmic based development with. Despite the JS in the Cosmic JS name, Elixir's been a great fit due to its built-in in-memory storage solution, called "ets" (Erlang Term Storage). This, combined with Cosmic's web-hooks, has let me serve Cosmic-based pages very quickly out of a cache without managing a separate external Redis or Memcached instance. You can find our Elixir Cosmic wrapper and cache solution here.
What past projects are you most proud of and why?
My work with Brand New Congress and Justice Democrats has been building the tools required to effectively run a large scale and modern grassroots political campaign. I feel very fortunate that I get to focus and do this political work full-time, rather than volunteer and split my headspace as many developers do. Before working with Brand New Congress and Justice Democrats, I developed an open source online meeting platform called assemble, which uses WebRTC technology to bring the experience of breakout groups common in physical meetings to your browser.
Talk a little bit more about your process for building apps. How is building apps for political or idealogical causes different than other client work?
I'm also very happy that I'm able to develop all of these solutions in the open with an A-GPL license attached. Once our tools are mature and ready to be re-purposed, we'll have reduced the costs of running grassroots political campaigns for other organizations and future campaigns, who will be able to self-host what we've developed at a fraction of the cost of traditional campaign software services.
What are some technologies you are excited about that you are using today, or want to learn more about?
Cosmic has made it much easier for me to enable the non-programming parts of our organization to configure the software I make, and to edit the content on our websites. Our use of it has evolved beyond a CMS to a general admin interface – we use it to manage a url shortener, as a user whitelist for internal tools, to specify changing webhooks, etc. With Cosmic, after I recognize that a particular component of our website or process will need to change, I can implement a mechanism for that component to be edited or configured in a matter of minutes.
I don't think that development for political causes is too different than more typical development – we move quickly, things break sometimes, etc. What may be different is that we have volunteers who contribute their own amount of time and/or expertise. If you have experience with Elixir, React, Node.js, or setting up AWS-based workflows and you want to help elect a congress full of individuals who support medicare for all, massive investment in our infrastructure and renewable energy, and refuse to take corporate money, send me an email at firstname.lastname@example.org and we'll find the best way for you to help.
Our internal tools are built using React, Ant.Design (a React UI toolkit), and communicate with our server over Phoenix Channels (websockets), creating a snappy user experience. Staff members and volunteers will end up spending a lot of their time in these tools, contacting our supporters, managing events, etc., and so it's important that they're performant, with as few pain points as possible.
For our world facing websites, I'd like to bring as much of the new web as I can to the political space. A lot of the things we're encouraging supporters to do are collective action problems – individually ineffective, but collectively powerful, and it's one's belief that you're all working alongside others that gives you the confidence to try. However, people are also overworked and worried about the future, including not only the future of our political system but also their next two weeks.
So, it's my hope that in the coming months we'll be able to design experiences that not only inspire a sense of participation and belonging in collective political action, but that we'll be able to deliver those experiences while you're riding a bus and surfing the web on your friend's old Android phone.