Samuel Williams Profile Banner
Samuel Williams Profile
Samuel Williams

@ioquatix

2,812
Followers
412
Following
806
Media
6,849
Statuses

"A candle loses nothing by lighting another"

Christchurch, New Zealand
Joined April 2009
Don't wanna be here? Send us removal request.
Pinned Tweet
@ioquatix
Samuel Williams
5 years
Here is an interview I did recently where we talk about Ruby scalability.
@jertype
Jeremy Jung
5 years
Want to learn how to build scalable applications safely? Check out my conversation with Ruby core team member @ioquatix ! We talk about how languages handle concurrency and parallelism, the dangers of threads, writing asynchronous code, and more.
0
10
42
2
7
45
@ioquatix
Samuel Williams
5 months
Arrived.
Tweet media one
7
12
237
@ioquatix
Samuel Williams
8 months
I compared a "Hello World" Elixir/Cowboy vs Rack/Falcon. Honestly, I'm surprised it's as good as it is. It shows just how far Ruby+Async has come, and this is in comparison to a system that has dedicated it's entire existence to high throughput I/O and parallelism.
Tweet media one
14
35
198
@ioquatix
Samuel Williams
3 years
Async 2.0.0 was released. Now, roll on Ruby 3.1.0 :)
Tweet media one
4
19
184
@ioquatix
Samuel Williams
6 months
Today I'm releasing XRB () a simple template engine for Ruby (and Rails). It's 10-20x faster than ERB, and has a simpler syntax, supporting #{interpolations} and <?r processing_instructions ?> only.
6
35
178
@ioquatix
Samuel Williams
5 years
If you have not tried I highly recommend it. The search is really fantastic and the layout of the documentation is really use friendly.
Tweet media one
5
67
170
@ioquatix
Samuel Williams
4 months
Flappy Bird, implemented on the server side, within a Rails application, running on either Falcon or Puma:
1
23
161
@ioquatix
Samuel Williams
5 years
100k WebSocket connections on macOS using HTTP/2 multiplexing. Next stop, 1 million.
Tweet media one
2
30
134
@ioquatix
Samuel Williams
4 months
Hello World! in 6 lines of Ruby. I know, it's a little bit longer than required, but it's running over HTTP/2 :)
Tweet media one
5
9
135
@ioquatix
Samuel Williams
5 months
#RubyKaigi day 4: Travelling to #Motobu
Tweet media one
2
4
128
@ioquatix
Samuel Williams
1 year
With the efforts of many great engineers, Rails head is now compatible with Rack 3. is closed as completed.
2
14
117
@ioquatix
Samuel Williams
6 months
Folks, unfortunately my team has been made redundant (company shutting down). I am now looking for the next step in my journey, and if possible, that includes helping my team of extremely talented engineers too. Feel free to DM me.
11
62
114
@ioquatix
Samuel Williams
4 years
Hinoki's age detection program. She is 7. We wrote it together. She wanted to share it.
Tweet media one
6
6
114
@ioquatix
Samuel Williams
3 years
Hanging out with @tenderlove in Seattle was a huge highlight of my week!
Tweet media one
3
3
109
@ioquatix
Samuel Williams
10 months
Working on a more flexible implementation of ActionCable with @palkan_tula :
Tweet media one
5
10
96
@ioquatix
Samuel Williams
3 months
Folks, I had a great time with y’all in Japan. Now it’s time to go home. See you again next year!
Tweet media one
3
2
95
@ioquatix
Samuel Williams
7 months
Today, my cat, 21+ years old, passed away. She loved sitting with me while I was programming. Neko nyan, you will be missed.
Tweet media one
Tweet media two
Tweet media three
Tweet media four
23
0
90
@ioquatix
Samuel Williams
10 months
Ruby 3.3 was released. Notably, it includes minor fixes to Fiber #storage , IO::Buffer and small optimizations to coroutines. More importantly, Ruby 3.0 will soon be EOL, at which point we will be able to make significant forward progress and drop async-io in favour of native IO.
Tweet media one
1
7
90
@ioquatix
Samuel Williams
2 years
Rack 3.0.0.beta1 was released today, thanks @tenderlove for cutting a release! Looking forward to trying this out!
2
13
85
@ioquatix
Samuel Williams
4 years
Light weight concurrency for Ruby merged into master for experimentation.
1
21
80
@ioquatix
Samuel Williams
4 months
Rack has an updated logo:
Tweet media one
1
5
72
@ioquatix
Samuel Williams
3 years
was finally merged. This is a great step forward for bi-directional streaming in Rack applications. While this doesn't introduce any functionality we didn't already have by rack.hijack, this makes it non-optional and explicit.
2
8
70
@ioquatix
Samuel Williams
6 months
Falcon + Ollama + Live + Rails. About ~80 lines of application code.
2
7
71
@ioquatix
Samuel Williams
4 months
When I first started writing this specific documentation nothing worked: Puma and Rails didn't support streaming responses. However, today I can write this documentation and it works out of the box with Rails 7.1+ and Puma 6+. And of course, Falcon too.
3
8
71
@ioquatix
Samuel Williams
5 months
Bye bye Okinawa 👋
Tweet media one
0
0
70
@ioquatix
Samuel Williams
4 years
The redis gem has just been released with support for non-blocking I/O :)
1
9
70
@ioquatix
Samuel Williams
3 years
Rails.logger has a mutex. Puma has 16 threads. Thread N logs a huge message and blocks while holding the mutex. Thread N+x logs a message. Entire server blocked on single request. Don't hold a mutex while doing IO.
5
6
69
@ioquatix
Samuel Williams
10 months
Merry Christmas and Happy Holidays :)
Tweet media one
2
8
65
@ioquatix
Samuel Williams
10 months
Gone fishing 🎣
Tweet media one
1
1
66
@ioquatix
Samuel Williams
4 years
Console now dims rows which are not from your own application:
Tweet media one
3
7
64
@ioquatix
Samuel Williams
5 years
I am very excited to announce I am the recipient of the Ruby Association grant for 2019. Thanks so much for this opportunity!
@rubyassociation
Ruby Association
5 years
2019年度Rubyアソシエーション開発助成金 公募結果発表
0
8
12
8
11
62
@ioquatix
Samuel Williams
3 years
Good news, everyone. is now passing including all external tests. This is the ground work for Async 2.0 which takes full advantage of the Ruby 3 scheduler interface, along with a new event gem with direct support for kqueue, epoll and io_uring.
2
5
62
@ioquatix
Samuel Williams
2 years
The latest async-websocket benchmark: 100,000 connections in 90 seconds. 4 seconds faster than previously recorded. That's about 1ms to establish a connection (multiple back and forth packets). I'm pretty happy with that - it could be better, but this is all pure Ruby.
3
1
56
@ioquatix
Samuel Williams
3 years
Exciting!!! How many fibers can we run?
Tweet media one
2
1
57
@ioquatix
Samuel Williams
2 years
Tweet media one
0
0
54
@ioquatix
Samuel Williams
2 years
I migrated a small test suite of 15 tests from RSpec to Sus and added 7 more tests. RSpec: 337ms Sus: 92ms
2
2
54
@ioquatix
Samuel Williams
4 years
I am pleased to share that Async has just hit 1 million downloads, 20% of them happening in the past 6 months.
2
3
54
@ioquatix
Samuel Williams
2 years
Thanks everyone for the great #RubyKaigi now it’s time to go home.
Tweet media one
2
0
53
@ioquatix
Samuel Williams
3 years
I was a finalist in the New Zealand open source awards. But it was cancelled because of COVID :( I wanted to hang out with other open sourcerers.
Tweet media one
2
5
52
@ioquatix
Samuel Williams
4 years
Is Ruby 3, three times faster? I say yes. if RUBY_VERSION >= "3" sleep 1 else sleep 3 end
4
1
51
@ioquatix
Samuel Williams
5 years
First PR to Linux kernel. Life goal achieved.
3
5
49
@ioquatix
Samuel Williams
6 months
I started hacking at about 10AM and it is now about 10PM. I now have `async-http` test suite passing with native IO instead of `async-io`. I found that Ruby's IO has a few tricky gotchas which are extremely hard to debug...
2
2
50
@ioquatix
Samuel Williams
5 years
Just released rack 2.2.1 which fixes a minor bug in 2.2.0 which was released yesterday. @tenderlove has managed releases up until now. I have to admit, it's a bit stressful to release a gem which has ~2000 of installs per hour.
1
5
49
@ioquatix
Samuel Williams
2 years
Real time test feedback. The output position needs a bit more feedback, but it's basically working in real time as you edit the code. Sus being super fast, you barely notice it.
2
5
48
@ioquatix
Samuel Williams
3 years
Observer effect (computer science): Observing the execution of a program with a debugger causes it to execute correctly.
5
4
49
@ioquatix
Samuel Williams
3 years
A fast, efficient memory mapped buffer for the next generation of Ruby I/O and the fiber scheduler, coming (hopefully if everyone can agree) in Ruby 3.1!
Tweet media one
Tweet media two
3
1
47
@ioquatix
Samuel Williams
3 years
Rack 3 should be done soon. However, the documentation could use some work. Many hands make light work, so please come and join in!
1
3
47
@ioquatix
Samuel Williams
2 years
5x faster test execution with sus-parallel. Now I just need to write a RSpec wrapper.
Tweet media one
1
5
47
@ioquatix
Samuel Williams
3 years
Rack 3.0 will focus on the core Rack specification. Some details, like Rack::Session, are being moved to separate gems:
1
4
44
@ioquatix
Samuel Williams
3 months
I feel so privileged to come back to an old project and think "Yeah, I did my best at the time, but I've got new insights into how it could be even better".
1
1
46
@ioquatix
Samuel Williams
4 years
So this ain't quite Phoenix LiveView yet, but the concept is the same and appears to be hitting 60FPS pretty easily:
Tweet media one
7
3
45
@ioquatix
Samuel Williams
3 years
I'm disappointed by this new computer... my last MacBook Pro kept my legs very warm, but this one doesn't get warm at all. I even compiled with all 10 cores, how can Apple do this to me!? The compile was too fast to generate any significant heat...
3
3
44
@ioquatix
Samuel Williams
6 months
This is an awesome talk about Asynchronous Ruby - I'm extremely impressed by the quality of the presentation! well done @matheusrich
@matheusrich
Matheus Richard
6 months
Now that the videos are out, you can watch my talk about async Rails! The Fast Lane: Asynchronous Rails
5
6
70
3
4
45
@ioquatix
Samuel Williams
1 year
I wrote some details about how to host a Rails 7.1 application in Falcon: - I'll add some more application level examples, including WebSockets and streaming soon.
1
9
45
@ioquatix
Samuel Williams
4 years
Fiber Scheduler is supported in the latest Async release. I'm so excited!
@nalsh
成瀬
4 years
Ruby 3.0.0 is released It achieves Ruby 3x3 and introduces * RBS * TypeProf * Ractor (experimental) * Fiber Scheduler * REPL (irb) speed up (copy&paste becomes much faster) and more!
Tweet media one
Tweet media two
6
353
570
2
2
44
@ioquatix
Samuel Williams
2 years
Why our text editors default to 80 characters line wrapping by default.
Tweet media one
3
3
44
@ioquatix
Samuel Williams
10 months
One of the ergonic features of Ruby 3.3. that I'm proud of is `Module #set_temporary_name `. It significantly improves the readability of anonymous classes/modules:
Tweet media one
4
4
44
@ioquatix
Samuel Williams
10 months
Happy new year from New Zealand :)
1
1
44
@ioquatix
Samuel Williams
4 years
After 2 years, Ruby OpenSSL 2.2.0 has been released. Massive ups to all those who contributed, what a huge effort.
1
8
44
@ioquatix
Samuel Williams
8 months
is an extremely light weight proof of concept job server built on Redis. It functions similarly to Sidekiq, but is built on async which I think makes the code simpler to understand.
0
7
43
@ioquatix
Samuel Williams
3 years
IRB can now work correctly inside asynchronous context, it uses io_read/io_write hooks and IO::Buffer for internal communication with selector. It also works with File reading/writing, etc. The underlying selector was based on kqueue in the demo.
5
7
40
@ioquatix
Samuel Williams
2 years
😂I just spent two hours unsuccessfully solving a problem I solved *3 years ago* and even released a package for it... 😭🥳
1
1
42
@ioquatix
Samuel Williams
5 years
100k + 1 simultaneous WebSockets with a single #Falcon process running on #Ruby . Consumed 4GB of memory. @_ko1 @yukihiro_matz what do you think?
Tweet media one
7
12
41
@ioquatix
Samuel Williams
5 years
A single falcon instance hosting 100,000 active connections, 2.91GiB / 100k = amortised 32KiB per connection.
Tweet media one
1
8
41
@ioquatix
Samuel Williams
3 years
Game of Life implemented in pure ruby:
Tweet media one
Tweet media two
1
4
40
@ioquatix
Samuel Williams
5 years
is now running on Falcon.
0
4
41
@ioquatix
Samuel Williams
2 years
Okay, this is fun:
Tweet media one
2
0
40
@ioquatix
Samuel Williams
3 years
Introducing "Ruby", who will help us communicate the excitement and importance of an asynchronous future for Ruby (the language). @LaugesenMalene is the artist and she was supported by myself and @RubyNewZealand . This is just the beginning.
3
5
39
@ioquatix
Samuel Williams
3 years
Async::HTTP will soon have support for distributed tracing, with backends including @datadoghq & @ScoutAPM (via OpenTelemetry).
Tweet media one
0
2
37
@ioquatix
Samuel Williams
4 years
I'm working on a new gem for concurrent access to MySQL and Postgres... I have to say, @antirez the Redis interface is SO WELL DESIGNED compared to these legacy interfaces from libmysqlclient and libpq. I wish we had such a well designed and straight forward interface.
0
1
37
@ioquatix
Samuel Williams
10 months
It’s time to make pizza.
Tweet media one
3
0
37
@ioquatix
Samuel Williams
4 years
I've just completed the first set of commits to support non-blocking fiber aware Mutex: thanks to @eregontp for his help with the initial conversion to make Mutex fiber aware.
1
6
38
@ioquatix
Samuel Williams
7 months
I hope my #RubyFriends in Taiwan are okay, thinking of you all and hope you are safe.
0
1
37
@ioquatix
Samuel Williams
4 years
Asynchronous #PostgreSQL and #MariaDB from the ground up using the latest non-blocking APIs from each respective platform, blended seamlessly into Async. Identical specs passing for both, but underlying drivers are a bit different. Using FFI.
Tweet media one
2
3
36
@ioquatix
Samuel Williams
2 years
Preliminary results from my copy-on-write hash implementation for Ruby (only affects large hash atm):
Tweet media one
1
1
37
@ioquatix
Samuel Williams
6 months
Async::Ollama with real time streaming.
Tweet media one
4
1
37
@ioquatix
Samuel Williams
4 months
The slides for my RubyKaigi 2024 Keynote are now available:
2
9
36
@ioquatix
Samuel Williams
11 months
When I created the Fiber Scheduler interface, it was deliberately missing an implementation. The goal was to plant the seeds of concurrency in Ruby and allow them to bloom without constraint. is a good example of that.
2
1
36
@ioquatix
Samuel Williams
3 years
My daughter requested it. It's a fun piece of maths.
Tweet media one
0
0
34
@ioquatix
Samuel Williams
4 years
Okay, this has been several years coming: This provides a well-defined interface for streaming requests and responses in rack:
1
3
34
@ioquatix
Samuel Williams
2 years
Maybe I should write an article "Samuel Invests in Research for Ruby at Scale" 😂
1
1
35
@ioquatix
Samuel Williams
5 years
Here is my final report for the 2019 Ruby Association Grant: - we have shown that the concept is sound, now we must build consensus for the final implementation for Ruby 3!
3
12
34