raboukhalil | 5 months ago | on: The Burrows-Wheeler Transform
raboukhalil's comments
raboukhalil | 5 months ago | on: The Burrows-Wheeler Transform
raboukhalil | 5 months ago | on: The Burrows-Wheeler Transform
raboukhalil | 5 months ago | on: The Burrows-Wheeler Transform
raboukhalil | 7 months ago | on: AI in biology: distinguishing hype from reality
raboukhalil | 2 years ago | on: Interactive examples for learning jq
raboukhalil | 3 years ago | on: Show HN: I built interactive playgrounds for Awk, Sed, Grep using WebAssembly
raboukhalil | 3 years ago | on: Show HN: I built interactive playgrounds for Awk, Sed, Grep using WebAssembly
To get these tools running in the browser, I compiled them to WebAssembly (see https://github.com/biowasm/biowasm for details). That way, the commands you type run instantaneously, and it doesn't cost me an arm and a leg to host servers that execute arbitrary commands from users :)
raboukhalil | 4 years ago | on: Show HN: Learn Awk with a terminal running in the browser
To get it running in the browser, I compiled gawk from C to WebAssembly! If you're interested in how that was done, check out the biowasm project: https://github.com/biowasm/biowasm/tree/main/tools/gawk
raboukhalil | 4 years ago | on: Show HN: An Interactive Jq Tutorial
raboukhalil | 4 years ago | on: Show HN: An Interactive Jq Tutorial
Check it out if you want to learn how to filter, process, and wrangle JSON data. And if you happen to be getting started in bioinformatics, check out the rest of the tutorials on sandbox.bio :)
raboukhalil | 6 years ago | on: Compiling C to WebAssembly Without Emscripten
raboukhalil | 6 years ago | on: Tips for Writing a Technical Book
raboukhalil | 7 years ago | on: Uppy 1.0: Your best friend in file uploading
raboukhalil | 7 years ago | on: Ask HN: Is WebAssembly the next big thing? Is it worth investing in learning?
That said, here are a few examples of where it shines (warning: shameless plugs incoming):
- In data analysis apps, you can replace slow JavaScript calculations with WebAssembly and see significant speedups--I wrote this case study on my experience with that: https://www.smashingmagazine.com/2019/04/webassembly-speed-w...
- It's super helpful in porting games from languages like C/C++ to the web without having to rewrite the game from scratch. Here's a post I wrote about how to port a game like Asteroids to the web: https://medium.com/@robaboukhalil/porting-games-to-the-web-w...
- WebAssembly is really good for building playgrounds out of command line tools. Here's how I built one for the jq CLI: https://opensource.com/article/19/4/command-line-playgrounds..., the benefit being more secure than hosting it on the backend + much faster runtime
- I'm also excited to see how WebAssembly will impact work outside the browser: https://hacks.mozilla.org/2019/03/standardizing-wasi-a-webas..., especially with Function-as-a-service offerings that support Wasm like Cloudflare/Fastly workers, where the benefit is that I can write my function in any language + the time to initialize the function could be much faster
Another shameless plug: if you want a practical intro to WebAssembly, I self-published a book about it recently: http://levelupwasm.com/!
raboukhalil | 7 years ago | on: Writing a Technical Book for Manning
raboukhalil | 7 years ago | on: Writing a Technical Book for Manning
raboukhalil | 7 years ago | on: Writing a Technical Book for Manning
This is my second self-published book and I've loved this approach. It lets me focus on writing and marketing, and I get to craft every aspect of the book.
raboukhalil | 7 years ago | on: WebAssembly for fast and interactive CLI playgrounds
You can find a demo at http://jqkungfu.com and the code at http://github.com/robertaboukhalil/jqkungfu
raboukhalil | 7 years ago | on: We Used WebAssembly to Speed Up Our Web App by 20X
As I mention in the article, WebAssembly isn't always the right tool for the job, but for our use case, it was a great fit because we were able to port an existing data analysis tool written in C to WebAssembly, and use that to replace the slow JavaScript calculations we were using initially.