👋 Hi, I’m Aaro # I’m a 20-year-old living in Finland, currently studying computer science at Aalto University. 🦀 Favorite programming languages # Go Rust Typescript C++ 🎮 Favorite games # Team Fortress 2 Monster Hunter: World Warframe Terraria 🖥️ Setup # AMD Ryzen 3600x with 16 GB RAM, RTX 3060 Ti Visual Studio Code Obsidian.md 📮...
Full-stack software developer with a B.Sc. in Mathematics from Bilkent University (2023). I’ve been building software since 2015 and working professionally since 2021. I am a developer with a hacker’s mindset. I dive deep into the technologies I use and study the philosophy behind them. I use Arch Linux NixOS as desktop OS, Vim to edit and write,...
I obtained a PhD (2009 - 2011) in Artificial Intelligence & Computational Linguistics from the Middlesex University, London, under Dr. Christian Huyck. My thesis—“Modelling Emergent Phenomena in Associative Memory with Neural Cell Assemblies”—dealt (PDF) with the dynamics of associative memories modeled in in neural Cell Assemblies.
This page lists some of my personal projects. Projects on GitHub (Gitea mirror) Nov 2023 floatype.js A tiny, zero-dependency, floating autocomplete / autosuggestion widget for textareas. Aug 2023 autocomp.js A super tiny Javascript autocomplete / autosuggestions library.
Let’s create a file input and chunk into 4MB chunks input type="file" onchange="processFile(...arguments)" /> script> const CHUNK_SIZE = 4 * 1024 * 1024; function processFile(e) { const file = e.currentTarget.files[0]; const start = performance.now(); const fileSize = file.size; for (let i = 0; i fileSize; i += CHUNK_SIZE)...
These are some blog posts which have gotten a disproportionate amount of traffic (10,000+ page views): 2022 We are still early with the cloud: why software development is overdue for a change 2021 Storm in the stratosphere: how the cloud will be reshuffled Building a data team at a mid-stage startup: a short story Software infrastructure 2.
I like building software, and below are some open source projects I've built during my time at Better or Spotify, along with some things I built in my spare time. Most of it is not on my personal Github, so I've compiled it here: Annoy Annoy is a C++/Python library to index and retrieve vectors in...
Introduction I am currently working on various startup ideas. Until recently, I was the Chief Technology Officer at Better where I managed a team of about 300 engineers. In the last 10+ years, I have focused on engineering management, recruiting, building consumer technology, machine learning, and math. My professional experience goes back to 1999, which was my first professional gig as a software...
Contact information ️20 West Street, #23DE, New York NY 10014 917-940-8790 Swedish citizen, green card holder Introduction I am currently working on various startup ideas. Until recently, I was the Chief Technology Officer at Better where I managed a team of about 300 engineers. In the last 10+ years, I have focused on engineering...
I live in NYC and I am the founder and CEO of Modal Labs which is exploring ideas related to data and infrastructure. From Feb 2015 to Jan 2021, I ran the (300-person) tech team at Better.com – a company rethinking how mortgages are done. Before Better, I was at Spotify for 6 years. I spent 2.5 years in Stockholm...
I’m a software engineer with a keen understanding of the business dynamics ‘behind’ the code. Over the past 15 years, I’ve had the privilege of working on a diverse range of cutting-edge projects, each presenting unique challenges and opportunities for innovation. Github Bsky Linkedin
Contact info Personal Git Server GitHub Email Professional Summary 2 years of experience as a software engineer 1 year of experience with embedded Linux. Bachelors of science in computer science. Contributor to Python programming language standard library. Experience working across 8+hr timezone differences. Skills Summary Programming Languages:...
Hi There! I’m Gabe Venberg. Professionally, I’m a newly minted computer scientist, with interest in embedded software, OS development (and anything backend, really), and strongly typed languages (🦀). Unprofessionally, I’m a general nerd, ever tinkering on my 3d printer, learning embedded systems programming, building split keyboards, managing my...
This is my blog. I’m a software engineer that works in “data” (I believe they call that “Data Platform Engineer”) and I usually work on distributed data processing systems, mostly in Scala, Python, and some go. If you got here via the link on my CV, I naturally mean “I develop high-performance, enterprise-grade, world-scale distributed...
August 31 How to Be a Better Reader - NY Times To read more deeply, to do the kind of reading that stimulates your imagination, the single most important thing to do is take your time. You can’t read deeply if you’re skimming. As the writer Zadie Smith has said, “When you practice reading, and you work at a text, it can only give you what you put...
Anton Zhiyanov Brandon Rhodes Dan Luu Drew DeVault’s blog Fabien Sanglard’s website Harmful stuff Joel on software Julia Evans Preslav Rachev Simon Willison’s weblog
Self Ahoy, fellow daywalkers! I’m Redowan Delowar, also known as ‘rednafi’ on most platforms. Circa 2018, a glitch in the matrix slingshotted me from electrical engineering to data science, eventually catalyzing my osmosis into brick and mortar software work. I enjoy exploring system architecture, databases, data analysis, and API design. In my...
I’ve been writing code since 2010, first in Python, then primarily in Go and JS/TS. I’ve spent most of my career as a backend developer and data engineer. After a couple of years leading teams of Go developers, I’m now working full-time on Boot.dev and host the Backend Banter podcast. Get in touch Twitter Linkedin GitHub Email: lane at boot.dev...
I wrote a weekly newsletter from December 2013 until September 2015, and then intermittently until 2018. I shared links worth reading. Read the archives in the Newsletter topic or on TinyLetter.
An easy way to stay updated on what I’m posting is to follow this blog using your RSS feed reader of choice, like Feedly. Choose the RSS feed that you want to follow. If you want to refine which posts you subscribe to, you can follow a more specific feed or create your own: Follow all posts. Follow only posts about tech writing. Follow only...
I’m a writer working in tech in the San Francisco Bay Area, California, USA. I’m endlessly curious about technical writing / documentation, music, data, ethics in tech and data analysis, a11y, inclusivity, and so much more. Follow me on Mastodon @smore@mstdn.social. Follow me on Github @smoreface. Check out my resume on LinkedIn. Follow me on...
My name is Saoirse; people also call me boats. I am an experienced systems developer, excited by complex problems and serious about building technology that is empowering to other people. I am available to work on new projects, full time or part time. I’m open to many different possible work arrangements; I am based in Berlin, Germany. I am happy...
…In that Empire, the Art of Cartography attained such Perfection that the map of a single Province occupied the entirety of a City, and the map of the Empire, the entirety of a Province. In time, those Unconscionable Maps no longer satisfied, and the Cartographers Guilds struck a Map of the Empire whose size was that of the Empire, and which...
A letter I received from The Designers Republic after creating a font inspired by their work. They chose to order a cease and desist, rather than fostering creativity. Matt Sephton created an original font called Blockout–a techno font that can still be found here. He had used Fontographer. It was, as he put it, influenced by the tDR font in...
I wrote a video game FAQ and uploaded it to GameFAQs: gamefaqs.com/console/psx/file/micro_machines_v3.txt
I wrote a video game FAQ and uploaded it to GameFAQs: gamefaqs.com/console/psx/file/wipeout_xl.txt
I wrote a video game FAQ and uploaded it to GameFAQs: gamefaqs.com/console/psx/file/hermie_hopperhead.txt
I wrote a video game FAQ and uploaded it to GameFAQs: gamefaqs.com/ps/572737-penny-racers/faqs
This might be the first entry on this blog, but it’s not quite my oldest content on the internet. For that you’ll need to check out the archive linked to from the bottom of the about page. I wrote a video game FAQ and uploaded it to GameFAQs: gamefaqs.com/console/psx/file/motor_toon_gp_2.txt
One of the better features from functional programming languages are variant types (a.k.a. algebraic data types). Basically they are a way of enumerating a small set of possibilities and then making sure that you handle every possible case. However, in real world use variant types tend to run into a few annoying problems. While working on the...
I just posted a draft of a proposal for Rust that aims to eliminate implicit copies. At the moment, it is not the final version; there are some flaws I need to correct. For one thing, I need to address implicit capturing of variables by lambdas. From the introduction: This is a proposal for Rust whose purpose is to eliminate implicit copies of...
The primary means of parallel programming in Rust is tasks. Our task support is good: as good or better than any other language I’ve seen (good support for unique types and unique closures) but we have virtually no support for intra-task parallelism. The classic example is iterating over an array and processing each element in parallel. To be...
I have been thinking about unique closures, one of the last blocker items for the Rust 0.1 release. The original idea of a unique closure was that it should be a closure that can only access uniquely owned state, and which can therefore be sent to other tasks. However, I’ve come to have my doubts about this idea. In particular, a unique...
I recently implemented a new hashtable module for Rust. This was actually the first piece of code written in Rust which I started from scratch. I ran into some difficulties. Some of these are just things you have to get used to; some might be worth trying to correct. Just not entirely sure which problem falls into which category yet. Cyclic...
Marijn asked me what it is that I dislike about parameter modes. I thought I might as well explain here. For background, today in Rust a function can declare each parameter in one of several modes: By value (++): No pointer is used but the value is not owned by the callee. Therefore, the callee does not need to free it, for example, or...
One of the last remaining tasks for Rust 0.1 is to find a way to address issues #1128 and #1038. The key problem is that, right now, we can only spawn a task with a bare function, which is to say a function that carries no closure or environment. Due to the way that Rust is implemented, this even excludes generic functions. I have been wanting...
I’ve been thinking a lot about “parallel blocks” recently and I am beginning to think they can be made to work very simply. The main thing that is needed is a type qualifier const that means “read-only”. This would be a type prefix with very low precedence, just like immutable and shared in D. The type const T would refer to an instance of T...
Update: See the recent post addressing the solution to this problem. I have been trying to implement unique closures—or sendable functions, as I prefer to call them—but I realized that there is a fundamental problem that I hadn’t thought of before. The problem stems from two contradictory design goals: Sendable functions should be movable to...
On a call with other Rust developers, I realized that I was thinking about unique closures all wrong. I had in mind a total ordering: fn[send] but of course this is not necessary. What is desirable is a partial ordering: fn[send] just as ~ and @ pointers can both be aliased using a reference. Ironically, this is precisely what I proposed in...
I keep thinking about parallel blocks although I know I probably shouldn’t; but so long as I write these notes while rustc builds, everybody wins, right? Anyhow, pcwalton and dherman yesterday pointed out to me that const is not exactly one of the most beloved features of C++: “const-ification” is no fun, and if we’re not careful, Rust could walk...
I landed a preliminary version of unique closures (which I am currently calling sendable fns) on the trunk last night. I wanted to briefly document what I did to alter the design of closures to get this working (of course there is a comment in the code too, but who reads that?). Closures in Rust are represented as two words. The first is the...
In the context of thinking about parallelism for Rust, I have been reminded of an older idea I had for a lightweight, predictable dynamic race detection monitoring system based around block-scoped parallelism. I should think this would be suitable for (an extended version of) a dynamic language like Python, JavaScript, or Lua. I will write in a...
So, I worry that my various posts about Rust give the impression that I’m dissatisfied with the language. It’s true that there are several things I’d like to change—and those are what I’ve focused on—but I want to clarify that I quite like Rust the way it is and I find the overall feel of the language to be very good. When it comes to the big...
The original Rust design included iterators very similar to Python’s generators. As I understand it, these were stripped out in favor of Ruby-esque blocks, partially because nobody could agree on the best way to implement iterators. I like blocks, but it seems like it’s more natural to compose iterators, so I wanted to think a bit about how one...
UPDATE: I found some more complications. Updates inline. I have been working on and off on allowing block sugar to appear in Rust expressions and not only statements. For those who do not know what I am talking about, let me give a bit of context. At the moment, one can write the following in Rust: vec::iter(v) { |e| ... } which is sugar...
Lately the ideas for a parallel, shared memory JavaScript have begun to take shape. I’ve been discussing with various JavaScript luminaries and it seems like a design is starting to emerge. This post serves as a documentation of the basic ideas; I’m sure the details will change as we go along. User Model The model is that a JavaScript worker...
In one of the comments on yesterday’s post, Tushar Pokle asked why I would champion my model over an Erlang model of strict data separation. There are several answers to this question. The simplest answer is that Web Workers already provide an actors model, though they do not make tasks particularly cheap (it’s possible to work around this by...
It’s been a while since I wrote anything on the blog! A lot has been going on in the meantime, both in Rust, parallel JavaScript, and personally…I hate to write a big update post but I gotta’ catch up somehow! Rust First, we made our 0.1 release, which is great. We are now planning for 0.2. The goal is to make frequent, relatively regular...
Cross-crate inlining (CCI) refers to the ability to inline a function across crate boundaries. In Rust, a “crate” is the unit of compilation, rather than an individual file as in C or C++. A crate basically corresponds to a single library or executable, but it may contain any number of modules and source files internally. CCI is important for...
One of the things I’d like to do for the iteration library is settle on a convention for breaking and continuing within loops. There is a bug on this issue (#1619) and it seems like the general approach is clear but some of the particulars are less so. So I thought I’d try to enumerate how code will look under the various alternatives and then...
I’ve been working on implementing Cross-Crate Inlining. The major task here is to serialize the AST. This is conceptually trivial but in practice a major pain. It’s an interesting fact that the more tightly you type your data, the more of a pain it (generally) is to work with in a generic fashion. Of functional-ish languages that I’ve used,...
One of the thorny API problems I’ve been thinking about lately is the task API for Rust. I originally had in mind this fancy and very flexible aproach based on bind. When I spelled it out I found it was very powerful and flexible but also completely unworkable in practice. So here is a more limited proposal. There is a core task API that looks...
Brian pointed out to me a nice solution to the Task API problem that I have overlooked, though it’s fairly obvious. Basically, I had rejected a “builder” style API for tasks because there is often a need for the child task to be able to send some data back to its parent after it has been spawned, and a builder API cannot easily accommodate...
I was talking to brson today about the possibility of moving Rust to a regions system. He pointed out that the complexity costs may be high. I was trying to make a slimmer version where explicit region names were never required. This is what I came up with. The truth is, it’s not that different from the original: adding back region names...
One commonly requested feature for regions is the ability to return references to the inside of structures. I did not allow that in the proposal in my previous post because I did not want to have any region annotations beyond a simple &. I think, however, that if you want to allow returning references to the interior of a parameter, you need a...
I’ve been busily implementing the Cross-Crate Inlining stuff, but one area I haven’t looked at much is versioning. In particular, if we are going to be serializing the AST, we need a plan for what to do when the AST changes. Actually, if inlining were only to be used for performance, we wouldn’t really need to have a plan: we could just not...