Engineering At SubCom

Subconscious Compute (SubCom) is a seed-stage start-up focused on the automation of defense and compliance for distributed devices and data. This post is meant for folks who are interested in working with us. It will give you a flavor of engineering at SubCom (at the time of writing this post, circa early 2022).

Intelligent Systems

We build intelligent systems capable of making “crude but fast decisions” on their own without relying on the cloud. Naturally, we focus on applications where the speed of decisions is so important that some accuracy can be sacrificed for it. For example, edge devices and IoT where the silicon budget is limited. We provide intelligence proportional to the silicon budget.

Our statistical and TinyML solutions are inspired by the nervous system where the decision computations are distributed and fast. This was exactly my pitch to my co-founder when we met at Entrepreneur First. Our pitch has changed a lot since then but the fundamental “algorithms” that are driving the core computing at SubCom are very much driven by the desire to bring as much biological computation to silicon as possible. We are also exploring a few ideas from statistical learning theory (PAC learning) and signal processing (compressed sensing).

We read the time-series of events from the kernel (using eBPF wherever we can) and pass them through our sparse Habituation and Novelty Detection net. The nets produce output when a novel event occurs in a time series. In cyber-defense, novel events are the most interesting events to look at. Though, novel events are not always bad events. More about this problem some other time.

Habituation is the most primitive form of intelligence. It allows us to ignore what is not relevant. Habituation makes our cognition non-Newtonian: we don’t react to every stimulus. Imagine if every small stimulus steals your attention! For example, we don’t feel the clothes we wear (now you do since I mentioned it), notice the smell of our office after a while, or pay attention to our own heartbeat. We habituate to them. Yet, if an insect crawls on our clothes, someone walks into the office with coffee, or our heart skips a beat, we immediately notice that something new has occurred (contextual novelty). We build artificial neural nets where habituation and novelty detection go hand in hand. These two computations are two sides of the same coin in our architecture!

Once we figure out the contextually novel events, the next job is to classify them as safe, ok, and unsafe. We solve it using statistical methods. We also use Dense Associative Memories to recognize patterns at the edge. We love modern Hopfield networks.

In short, we design intelligent systems with inbuilt “most primitive form of intelligence” that do a few special statistical computations on time series and we use them to make distributed devices secure.

Observability Into Kernel And Network

For us, security starts with observability. We observe the system and pass the event stream through our sparse neural nets that filters out the novel events and classify them. We are putting a lot of effort into building the most lightweight observability layer on IoT devices.

We observe as much as we need using eBPF whenever possible. It is very lightweight and allows us to run a powerful watchdog in userspace. The future of eBPF is very bright. The Windows kernel has also started supporting eBPF. Our love affair with eBPF doesn’t stop at only observability though. It is incredibly powerful that allows hooking into the kernel: think of it as javascript for the kernel. Oh, the possibilities!

Tech Stack

We don’t define ourselves by the tech stack and we are willing what seems best at the moment. We usually let the developer use the tools they are most familiar with.

We like people who are experts in hard-to-learn languages but are not constrained by them.  If you are an expert in Haskell or similar languages, you are encouraged to apply. If you can drive comfortably in Shimla, you can definitely drive in Chandigarh and Bengaluru but not the other way around!

We primarily use Rust and C++. We love Rust over C++ any day but we can’t shake off C++ from our stack because it is very entrenched. Also, Rust developers are hard to find and retain (looking at your blockchain). We would’ve chosen Rust simply because of DX with tooling and documentation. Memory safety is another huge plus. I definitely don’t want my children to deal with C++ on more than one platform (modern or otherwise).

Python remains our primary scripting language. A little bit of Nim is also in our codebase. We are also fond of https://xon.sh/ and nushell.sh.

Location And Work Culture

Our development office is in Sahakarnagar, Bengaluru North. We have rented a commercial 3 BHK standalone house and turned it into an office. We love it here. We have a few coworking spaces in Bengaluru South as well for folks who can’t come to North. No one should be forced to travel more than a few kilometers in Bengaluru!

We don’t encourage work-from-home full-time. WFH is allowed for a few days in the week if there is some good reason. We realized (a bit late) that we are primarily a meeting-based society rather than a documentation-based one. In WFH settings, without proper documentation, efficiency is lost. And no one can blame Indians to prefer writing over speaking! We don’t know yet if there are ways to improve it. The fact remains that people who are working from the office are more productive and organized and WFH folks. We are not going to do more experiments with WFH in our first year of existence!

We strive to be a documentation-first company despite challenges posed by our culture which prefers speaking over writing way too much. 😢 We invest in content, especially technical illustration and documentation. Go to Job Board if you love writing and illustrating for readability and comprehension.

What Kind Of People We Are Looking For?

We are still learning about the kind of personalities that may be best for our future. Till we figure that out, we emphasize those traits we appreciate about ourselves. We may not know the best yet but we know what has been working for us!

We are fundamentally a programming shop. We are looking for folks who definitely love coding (among other things). Coding is a form of writing hence we are looking at traits that are found in the best writers. Writing is a solitary activity. You must be able to spend time alone.

Let me quote Prof. Andre Beteille on writing. Replace writing with coding and it all makes perfect sense to us.

Being able to write clearly and well is not just a matter of intelligence or even facility with language. Above all, it requires patience and care, and emotional investment of a certain kind. Where so much time is invested in being gregarious, the concentration of effort required for serious writing naturally suffers. Obviously, there are individuals who are masters of both the spoken and the written word. Such individuals are outstanding but are therefore not confined by their circumstances but are able to rise above them. That apart, there appear to be marked differences of general orientation between cultures. Some cultures tolerate careless, disjointed, and vacuous writing while others discourage it.

We don’t want to be a culture that tolerates careless, disjointed, and vacuous coding.

As a corollary to the above, we also want to make sure that people who are great at coding are not distracted by co-workers who may be a bit more gregarious. We expect everyone to understand the difference between a maker’s schedule and manager’s schedule.

Reach-out for jobs

Explore jobs
Contact Us

Have something good? Reach out to us.

Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.