00:00:00.000
ready for takeoff
00:00:17.300
thank you for coming I'm glad everyone's
00:00:20.520
excited to be at Ruby comp uh if you
00:00:24.420
were looking forward to more Star Trek
00:00:25.980
memes like at my rails comp talk
00:00:27.980
unfortunately you will be disappointed
00:00:30.539
though I do really like the theme
00:00:32.460
through become swag this year with the
00:00:36.600
NASA themed space stuff so I guess I was
00:00:39.840
a missed opportunity on my part
00:00:41.879
uh but we will be talking about uh
00:00:44.219
discovering machine learning in Ruby uh
00:00:48.059
so you could say we're exploring where
00:00:50.039
few rubyists have gone before that'll
00:00:52.860
probably be my only Star Trek uh
00:00:55.020
reference Maybe
00:00:56.820
I'm Justin Bowen and I am tons of fun uh
00:01:00.120
you can find me on Twitter and Instagram
00:01:03.059
and some other things as tons of fun one
00:01:05.339
one GitHub I'm just tons of fun and uh
00:01:09.659
I'm currently working as a CTO
00:01:11.520
consultant for Silicon Valley software
00:01:13.860
group I'm also a director of engineering
00:01:17.520
at Insight surgical AI where we're doing
00:01:20.400
computer vision for surgical objects in
00:01:23.700
operating rooms so
00:01:25.619
exciting stuff I've been working with
00:01:28.380
Ruby professionally since like 2008
00:01:31.439
and I've been working with python for
00:01:33.540
computer vision since about 2016.
00:01:37.200
and so for me computer vision is tons of
00:01:40.200
fun and I get a lot of Joy from being
00:01:43.140
able to run code with visual inputs and
00:01:46.140
get visual feedback and outputs that you
00:01:50.460
know you can chart and you can
00:01:53.299
highlight so again I hope you have tons
00:01:57.840
of fun just a bit of a background I've
00:02:01.320
built a number of applications like
00:02:03.780
drone mapping
00:02:05.360
which I did with an Irish AG tech
00:02:09.780
company back in 2016 where we highlight
00:02:12.900
different parts of the field using
00:02:15.000
opencv to help farmers see problem areas
00:02:19.020
or areas of their field that are ready
00:02:21.660
for Harvest
00:02:22.980
uh so I've done stuff from drones to uh
00:02:26.940
dairy cows monitoring cow health is
00:02:30.720
something that I did for a few years at
00:02:32.700
the same company it was quite a big
00:02:34.560
pivot
00:02:36.000
um but real-time computer vision with
00:02:38.099
cameras is something that has actually
00:02:40.620
been super engaging for me and is
00:02:43.319
something that I'm working on right now
00:02:44.940
where in the operating room we have
00:02:47.760
eight cameras uh monitoring
00:02:50.819
at all times at 60 frames per second
00:02:53.580
each camera has its own dedicated GPU
00:02:56.400
that we're running our own uh it's a
00:02:59.400
really small image I hope you can see
00:03:02.040
but it's highlighting the different
00:03:05.300
hemostats scissors needles sponges and
00:03:10.019
this is using a YOLO V7 model that was
00:03:14.239
trained with pytorch and is running
00:03:17.459
through opencv all on python but we're
00:03:22.080
at Ruby comp and why am I talking about
00:03:24.060
python so I did a railsconf talk
00:03:27.300
virtually about using python computer
00:03:30.000
vision with rails applications all of
00:03:32.819
the examples I just showed you had rails
00:03:35.700
back ends for the web and API about all
00:03:39.360
of the computer vision code is done with
00:03:41.819
python and really it's just a matter of
00:03:45.480
you know most machine learning libraries
00:03:48.659
out there are built with C plus plus
00:03:51.420
with python bindings and there are some
00:03:55.379
Ruby machine learning and computer
00:03:57.540
vision gems but they're not as feature
00:04:00.299
complete so at this virtual conference
00:04:04.379
during the Q a I got a question that
00:04:06.720
asked
00:04:07.980
why not use Ruby and uh you know my
00:04:12.299
response was because
00:04:14.580
like uh like I said most Ruby like Ruby
00:04:19.440
opencv for example which is what I used
00:04:21.359
for this demo I did just as a side
00:04:25.020
project for highlighting Leaf area and
00:04:27.840
Counting Bud sites and cannabis plants
00:04:30.360
uh the Ruby opencv didn't have the
00:04:33.120
functions that I needed and python is
00:04:37.380
built alongside of the C plus
00:04:39.360
implementation of opencv so I went with
00:04:42.840
python again but it did get me curious
00:04:46.800
um you know with Ruby opencv like I said
00:04:49.979
it's just a wrapper in Ruby for a C plus
00:04:53.280
plus library and I wanted to know a
00:04:56.160
little bit more about what the options
00:04:57.780
were for ruby gems and
00:05:01.919
it's actually interesting I I definitely
00:05:04.320
discovered some hidden gems this is the
00:05:06.240
hidden gems track I meant to mention
00:05:08.100
that in the first slide
00:05:09.960
um but it's uh it's more than just
00:05:12.840
Ruby packages
00:05:14.759
um what I discovered is there's actually
00:05:16.560
one person doing quite a lot of work
00:05:18.840
with machine learning in Ruby
00:05:21.360
and so bear with me
00:05:24.120
but we will get back to the machine
00:05:25.860
learning and a little bit of computer
00:05:27.419
vision but first I wanted to talk about
00:05:30.060
Andrew Kane I'm not sure some of you
00:05:33.300
might have heard of him uh the man maybe
00:05:36.720
the myth the legend uh I've been using
00:05:40.320
gems made by Andrew Kane for about 10
00:05:43.680
years when I first found search kit
00:05:45.840
which is an elastic search gem
00:05:49.560
um and though all indications point to
00:05:51.600
him being a real person that works at
00:05:53.699
instacart there are rumors that
00:05:56.060
he might not actually exist
00:05:59.460
I mean look at that contribution graph
00:06:01.199
it's it's very impressive don't look at
00:06:03.419
mine I I told you my handle please don't
00:06:06.419
it's been a hard year
00:06:08.460
um
00:06:10.919
you know
00:06:12.600
some people say he might just be in
00:06:14.100
artificial intelligence some people may
00:06:16.020
say he's a group of people working under
00:06:17.940
a pseudonym but at least it looks like
00:06:20.820
he took a two-week vacation so that
00:06:22.680
looks pretty human to me so
00:06:25.500
um I even heard a theory yesterday that
00:06:27.300
maybe he's why
00:06:29.100
maybe whatever the case is Andrew Kane
00:06:32.280
is a Hidden Gem in the community
00:06:35.759
um you know I've yet to meet him or
00:06:38.220
anyone who knows him if you do please
00:06:41.100
introduce me be curious to thank him
00:06:45.419
um but
00:06:46.740
seriously uh you know he's published
00:06:49.860
more than a few gems he has 134 gems
00:06:54.300
and this is something that
00:06:57.840
there are other people in the community
00:06:59.699
like Aaron Patterson has 190 something
00:07:02.940
that he's contributed to
00:07:04.800
uh I know Rafael Franca is right up
00:07:07.319
there with him I think Samuel Williams I
00:07:09.780
Aquatics uh he has something similar to
00:07:13.199
that with millions of downloads but
00:07:16.259
those are a lot of rails core libraries
00:07:18.360
like rack and active support and active
00:07:21.180
record
00:07:22.680
um but to date Andrew Kane has 153
00:07:26.580
million downloads for projects that seem
00:07:30.360
to be mostly his contributions
00:07:33.000
his top downloaded project has 23
00:07:36.720
million downloads I don't have any gems
00:07:39.300
I have a few python packages but you
00:07:41.699
know that's not the important part he
00:07:44.759
often tags the gems that he contributes
00:07:47.819
with battle tested at instacart so again
00:07:51.780
probably just a guy that works at
00:07:54.060
instacart his GitHub profile offices he
00:07:56.099
lives in San Francisco as do I never met
00:07:59.160
him so strong migrations is that most
00:08:02.639
popular gem that has 23 million
00:08:04.740
downloads I've actually not personally
00:08:07.139
used this but it seems to be very
00:08:09.720
popular and has a lot of safety features
00:08:11.460
for running migrations I've heard good
00:08:13.440
things about it definitely worth
00:08:15.240
checking out
00:08:16.380
also battle tested at instacart
00:08:19.919
Search kick I have used
00:08:22.139
um you know you can do full text search
00:08:23.879
in postgres but search kit gives you a
00:08:26.099
lot of other cool features using
00:08:29.580
elasticsearch
00:08:31.379
one of the interesting bits other than
00:08:33.839
the ones you see on the screen are the
00:08:36.180
ability to re-index in the background
00:08:38.099
without any downtime so you can have
00:08:39.899
background jobs that re-index your
00:08:41.520
elasticsearch index without stopping the
00:08:44.279
ability for your users
00:08:46.080
to make searches it has a similar query
00:08:50.660
structure to SQL and you know
00:08:54.540
you can do things like tomato or tomato
00:08:58.620
however you describe that jalapeno with
00:09:01.620
special characters it handles spaces
00:09:04.080
misspellings and uh you know depending
00:09:07.019
on where you come from you might call
00:09:08.940
soda pop and it'll match that as well
00:09:12.240
these are is his examples and again
00:09:15.839
battle tested in instacart so
00:09:19.620
um there's also a search joy for
00:09:21.600
analytics for your elasticsearch
00:09:25.080
mail kick and
00:09:27.839
chart kick lots of the kicks all of the
00:09:30.720
kicks very popular for just Ruby
00:09:33.480
one-liners that will give you nice
00:09:35.220
JavaScript charts that you can have
00:09:36.899
little pop-overs for it also works with
00:09:39.540
blazer which allows you to explore your
00:09:42.720
SQL data write some SQL queries generate
00:09:45.300
reports and charts
00:09:47.880
battle tested in instacart but I also
00:09:49.860
found out that Shopify uses Blazer quite
00:09:52.140
a bit
00:09:52.920
so
00:09:54.240
PG hero is something that I have found
00:09:57.899
recently
00:09:59.120
it's based off of a blog post written by
00:10:02.339
Heroku and PG extras queries but it
00:10:05.820
gives you a nice visualization and a
00:10:07.620
dashboard to see common postgres issues
00:10:11.700
uh there's also Dexter which is
00:10:14.279
automatic indexing for postgres it'll
00:10:16.620
suggest indexes that you don't have by
00:10:18.899
analyzing your slope queries uh group
00:10:21.720
date for grouping temporal data high top
00:10:24.120
for group counts active median for
00:10:27.000
median and percentile queries Ahoy matey
00:10:30.360
is actually the gem name of Ahoy which
00:10:33.000
is a first party analytics for rails gem
00:10:35.899
Ahoy email which is also first party
00:10:39.300
email analytics for rails and field
00:10:41.700
tests for a b testing again this is an
00:10:45.060
incredible breadth of ruby gem
00:10:47.880
contributions lockbox awesome gem
00:10:50.820
predates the active record encryption it
00:10:54.600
does field level encryption integrates
00:10:56.880
with things like AWS
00:10:58.700
KMS which is the Key Management Service
00:11:02.220
and also he has a blind index gem that
00:11:05.399
does encrypted field queries so if you
00:11:07.620
encrypt emails you can still query and
00:11:09.839
look up users by their email address
00:11:12.959
there's also Thunder svm uh
00:11:16.440
I'm going to talk about that much
00:11:18.420
and then there's
00:11:20.339
this
00:11:21.600
what is the Ruby machine learning mole
00:11:25.019
stack if you will
00:11:27.180
uh so Ruby ml is an organization
00:11:31.740
created by Andrew Kane on GitHub with ML
00:11:34.740
stack as a repo that contains these are
00:11:37.440
the things I'm highlighting it contains
00:11:38.940
a bunch of other things too iruby
00:11:41.339
notebooks if you're familiar with
00:11:43.380
IPython IPython is kind of like pry
00:11:46.800
similar to Herb it's an interactive
00:11:49.140
console
00:11:50.700
The Notebook side of things is a
00:11:53.100
web-based application where you can
00:11:54.660
interact with code and have markdown in
00:11:57.779
between and see the returns of the code
00:12:00.860
Vega is a visualization tool
00:12:04.800
that's similar to chart kick but a lot
00:12:06.420
more powerful
00:12:07.640
Rover and profit we'll talk about a
00:12:10.140
little bit Rover is data frames gem
00:12:13.380
similar to pandas in Python profit is
00:12:17.040
for forecasting and prediction modeling
00:12:20.480
pneumo and NRA or naray if you will is
00:12:26.640
uh the Ruby version of numpy again
00:12:30.920
numpy is a fundamental and dimensional
00:12:34.380
array manipulation library that is
00:12:36.839
crucial for a lot of Matrix manipulation
00:12:39.959
procedures
00:12:42.060
this is written in Ruby with C plus plus
00:12:44.639
as it's backing and it is very
00:12:47.760
performant and then there's torch RB
00:12:50.160
which is another gem from Andrew Kane
00:12:53.519
that uh ramps Pi torch or the library
00:12:58.740
that uh is pi torch
00:13:02.100
and that's the end of my talk it's not
00:13:04.620
I just hit a button thank you no no I
00:13:07.139
appreciate the collapse
00:13:09.180
um
00:13:11.399
we got this
00:13:13.560
oh yeah right I don't know I just
00:13:15.839
stopped still on the same slide so Psy
00:13:19.320
Ruby is an organization that put out
00:13:20.940
iruby and like I was saying IPython
00:13:23.459
notebooks are really cool I use Google
00:13:25.920
collab and have since I think it was in
00:13:28.620
beta like 2016 or something but it's uh
00:13:32.760
Google Docs integrated uh posted Jupiter
00:13:36.000
notebooks Jupiter I think was an acronym
00:13:39.180
for Julia Python and R doesn't support
00:13:42.480
Ruby natively but with iruby you can run
00:13:47.300
Ruby inside an IPython notebook so
00:13:52.740
um I think this is something that could
00:13:54.540
be incredible as an accessibility tool
00:13:57.420
for new Rubios I think about being able
00:13:59.820
to share a gist or a link to some code
00:14:03.200
and having it run in some hosted
00:14:06.240
environment like Google code spaces
00:14:08.339
where they don't have to install any
00:14:10.440
dependencies they can just shift enter
00:14:12.600
through the cells see the outputs this
00:14:15.660
is an example from the Cannabis computer
00:14:17.880
vision where it is creating a pretty
00:14:20.519
visualization with the bud sites
00:14:22.680
highlighted
00:14:24.120
um but this is posted on
00:14:30.320
mybinder.org which is like a free
00:14:33.300
hosting of Jupiter notebooks and it is
00:14:36.120
using the docker image that Andrew Kane
00:14:39.600
has in the ml stack repo and this is an
00:14:43.500
example of using Rover and profit to do
00:14:47.160
some forecasting modeling based on some
00:14:50.160
of the data you can see at the top
00:14:51.660
that's the data frame produced by Rover
00:14:54.120
and at the bottom that's the
00:14:55.800
visualization
00:14:57.320
produced by profit
00:15:00.180
uh
00:15:01.800
again Rover is simple powerful data
00:15:05.519
frames for Ruby profit is time series
00:15:08.220
forecasting for Ruby
00:15:10.680
so let's go back to pneumo NRA
00:15:14.160
it's uh similar to numpy but again for
00:15:18.660
Ruby
00:15:20.339
um
00:15:21.360
before we get into torch just going to
00:15:24.060
talk a little about
00:15:25.500
data types
00:15:27.180
what is a scalar
00:15:28.860
one that counts just a single value
00:15:33.600
a vector multiple values like an array a
00:15:37.560
one-dimensional array a matrix is like a
00:15:41.040
table
00:15:41.760
it's a two-dimensional array uh
00:15:45.720
grayscale image is another form of a
00:15:47.639
matrix there are others I can't think of
00:15:51.060
right now an image is a tensor so it's
00:15:55.620
just
00:15:56.579
different
00:15:58.440
arrays or it's an array of different
00:16:01.139
matrixes so you have different color
00:16:03.420
channels each color Channel represents
00:16:05.760
the color values of a given pixel these
00:16:09.540
are what are used for computer vision
00:16:12.199
and there are other
00:16:14.760
types of tensors you can have a tensor
00:16:18.120
for image data text Data uh geojson
00:16:21.899
multi-polygons are an example of a high
00:16:25.199
dimensional array where you have
00:16:27.060
coordinate pairs and lists that outline
00:16:30.360
different polygons on a map these are
00:16:33.120
all things you might come across when
00:16:34.620
you're building applications
00:16:36.380
so Pi torch is a framework that is
00:16:41.820
written in C plus plus and it has become
00:16:45.360
the open source machine learning
00:16:47.100
framework and it accelerates prototyping
00:16:50.160
to deployment of production
00:16:54.259
machine learning models so
00:16:57.540
Pi torch has its own implementation of
00:17:01.079
tensor and torch RB wraps that for us as
00:17:06.120
rubyists
00:17:11.280
so deep learning for Ruby
00:17:14.400
powered by lib torch lib torch is what
00:17:17.459
pi torch is based off of lib torch like
00:17:20.520
opencv is developed alongside of python
00:17:24.660
bindings so we as a community don't have
00:17:27.600
access
00:17:28.679
to all of the latest greatest features
00:17:30.860
unless we Implement that
00:17:33.600
so how can we use torch in Ruby one of
00:17:37.860
the ways would be an IPython notebook
00:17:39.960
like we just described there is an
00:17:42.059
IPython notebook available in that same
00:17:45.120
repository that does use
00:17:48.679
torch RB there's other ways you could do
00:17:52.020
it maybe you want to do background jobs
00:17:54.000
you could use sidekick and torture B to
00:17:56.760
process images videos text do some NLP
00:18:00.660
for natural language processing
00:18:03.120
uh
00:18:04.520
really it's all about what you want to
00:18:07.140
do with it so how can we use torch to
00:18:11.539
leverage an Nvidia GPU with Cuda cores
00:18:15.179
this is something that I mentioned
00:18:16.980
earlier in the talk it's a requirement
00:18:19.200
for the work that I do and torch RB
00:18:22.020
gives us a way of communicating with
00:18:24.419
libtorch to check for and utilize Cuda
00:18:27.900
cores
00:18:28.880
if you're not familiar it is the compute
00:18:31.919
unified device architecture for
00:18:35.720
accessing Nvidia GPU cores it's a great
00:18:39.720
API opencv supports Cuda tensorflow
00:18:43.080
supports Cuda Pi torch supports Cuda and
00:18:47.460
now we can access Cuda cores with Ruby
00:18:51.000
so torch RB has torch text again for
00:18:54.840
text classification natural language
00:18:57.299
processing torch audio for computer
00:19:00.000
audio something that I've been
00:19:01.500
interested in but haven't played around
00:19:02.820
with much torch Vision which is
00:19:05.460
something I really enjoy and torch wreck
00:19:08.820
so you can make recommendation engines
00:19:12.080
and all of these things have models that
00:19:15.299
you can just take off the shelf and use
00:19:17.640
so you can give your users these rich
00:19:21.799
machine learning Ai and quotes
00:19:25.880
features without really having to do
00:19:28.440
anything unless you want to train custom
00:19:30.120
models like you saw before with those
00:19:32.340
surgical objects Yolo's typically
00:19:34.799
trained on
00:19:36.059
the Coco data set but we'll get to that
00:19:38.580
in a second this is an example that is
00:19:42.000
available
00:19:42.919
in the ml stack repo it is the minced
00:19:47.280
data set I call it minced looking at it
00:19:50.220
now it's not actually spelled that way
00:19:52.799
it's probably like mnist or something
00:19:54.660
but it is a handwritten digits data set
00:20:00.299
so zero through nine handwritten and
00:20:03.299
different handwriting and you can train
00:20:06.360
evaluate and predict
00:20:09.179
what digit the computer is looking at
00:20:11.880
using this IPython notebook with Ruby in
00:20:14.760
it
00:20:16.260
so if we
00:20:19.140
wanted to go a little further there is a
00:20:22.740
data set called Coco which is common
00:20:25.020
objects in context and Onyx and again
00:20:30.120
this is just how I say it I've also
00:20:32.640
heard people say o n and X but I like
00:20:34.740
Onyx is the open neural network exchange
00:20:39.059
the Onyx runtime is something that
00:20:41.400
Microsoft put out that is again A
00:20:43.799
cross-platform C plus plus library that
00:20:46.200
gives you an interface for training
00:20:47.880
machine learning
00:20:49.640
accelerated with gpus
00:20:52.140
uh so this is an example
00:20:56.340
of using Ruby you can see there on line
00:21:00.000
four reloading an image with mini magic
00:21:02.419
line seven we're loading the pre-trained
00:21:05.700
model that was trained with the Coco
00:21:07.860
data set again you can just download
00:21:09.660
these models and run them
00:21:11.580
and then line eight there you see we're
00:21:14.160
running predict
00:21:16.080
and lower down you can see some of the
00:21:20.120
founding box drawing the outputs are
00:21:23.640
just another set of arrays and the
00:21:28.320
result would be this so you can see now
00:21:32.100
uh
00:21:34.679
at least for me I can see why it's so
00:21:37.320
interesting it's really cool to be able
00:21:38.940
to take a picture take a video and see
00:21:41.520
what's happening in it we have three
00:21:43.080
bears maybe it's not uh something that's
00:21:45.960
gonna make your next startup super
00:21:48.120
profitable but I think it's cool
00:21:50.760
so again this is Ruby code accessing C
00:21:54.419
plus code to utilize Cuda cores to give
00:21:57.960
you this nice visualization
00:22:02.460
and so I mentioned before that my
00:22:05.520
company uses uh YOLO model and YOLO
00:22:10.760
stands for you obviously love owls
00:22:15.360
um
00:22:16.140
really it's you only look once uh we're
00:22:18.600
using YOLO V7 right now and we have
00:22:22.500
uh taken a pre-trained model and done
00:22:25.559
what's known as transfer learning uh to
00:22:28.080
be able to make our own custom objects
00:22:30.780
that can be detected like hemostats and
00:22:32.880
scissors and needles and sponges
00:22:35.340
uh with the hopes of tracking and
00:22:37.320
Counting objects so that they don't get
00:22:39.000
left in you
00:22:40.799
anyway that does happen apparently
00:22:43.620
um
00:22:44.580
still today there's a lot of work this
00:22:48.059
is my stack that I've been using for a
00:22:50.340
while
00:22:51.600
um I used to use celery now I'm using
00:22:53.820
factory jobs which is from Mike param
00:22:56.179
the creator of sidekick and it's a
00:22:58.980
language agnostic background jobs so I
00:23:01.440
can trigger jobs in Ruby and process
00:23:04.440
jobs in Python
00:23:06.059
I use opencv Pi torch and tensorflow and
00:23:09.780
I'll probably continue using python
00:23:12.059
because
00:23:13.200
I still don't have future parity with
00:23:15.960
what these libraries offer
00:23:18.120
it is something that I'm very interested
00:23:20.159
in and hopefully
00:23:22.740
there's a future where Ruby can do as
00:23:26.400
much as python can
00:23:27.960
so why in Ruby why not and with Ruby
00:23:32.460
anything's possible
00:23:33.960
you can do machine learning in Ruby
00:23:36.780
it's really all about the community
00:23:38.280
interest and this is something that I
00:23:40.200
think could attract a lot of new
00:23:41.580
developers I know there are at least for
00:23:45.539
me people that are very interested in
00:23:47.880
machine learning and quote unquote
00:23:50.159
artificial intelligence
00:23:52.380
I think it's something that could really
00:23:54.240
engage people and you know
00:23:57.960
we learn by reading we codify that
00:24:00.659
knowledge by writing and trying things
00:24:02.640
it's really just about curiosity to grow
00:24:05.820
and teach and share with the community
00:24:08.780
contributing can be as easy as being
00:24:11.580
curious download the ml stack click on
00:24:15.299
the button and the repo to open it in
00:24:17.360
mybinder.org play around with it
00:24:20.340
maybe you'll be inspired to do something
00:24:22.260
ask questions
00:24:24.240
really you don't have to be a master in
00:24:27.419
data science or a PhD in computer
00:24:29.100
science I'm not
00:24:31.740
um
00:24:32.340
I I don't have any degrees but I I do
00:24:35.039
get an opportunity to be the data
00:24:37.380
engineer that puts all this work
00:24:38.880
together you don't have to be an elite
00:24:41.940
contributor pushing dozens of gems I
00:24:45.419
listed a few people before but I mean
00:24:48.179
there are a lot of incredible
00:24:51.140
contributors in our community and I'm
00:24:53.400
really grateful for all of them not just
00:24:56.280
Andrew Kane but
00:24:58.200
I know Justin Searles has dozens Uh
00:25:01.080
Kevin Newton has dozens and it again
00:25:03.659
it's not about how many gems uh you
00:25:06.419
publish because if it were I've
00:25:08.760
published zero so what would that mean
00:25:11.720
uh you don't have to get on stage and
00:25:14.100
give a talk uh
00:25:16.140
that's what I'm doing but you don't have
00:25:18.059
to you don't have to have a big social
00:25:19.440
media presence Andrew Kane has a Twitter
00:25:21.960
but hasn't really engaged with it
00:25:24.059
recently he puts out a lot of work and
00:25:27.000
kind of keeps private and really it's
00:25:29.700
all about what you want to make out of
00:25:31.260
it you don't have to come to conferences
00:25:34.799
this is actually my third conference
00:25:37.500
that I I've attended in like 15 years of
00:25:40.860
programming I'm really enjoying it I've
00:25:43.080
gone to like the last three and done
00:25:44.880
virtual ones but
00:25:47.580
I really think that
00:25:49.919
sometimes even just the smallest
00:25:52.020
gestures of engaging whether you're a
00:25:55.799
new developer or someone with Decades of
00:25:59.340
experience uh sometimes I I gain the
00:26:02.880
most from people asking questions
00:26:05.220
because they're just starting out and it
00:26:07.799
makes me think of things like the
00:26:09.840
question of
00:26:11.039
why not in Ruby uh I never really
00:26:14.520
thought about it I always just thought I
00:26:16.860
have these clients they want these
00:26:18.419
products built I just look for
00:26:20.640
whatever's easiest to pull off the shelf
00:26:22.260
but if we want to
00:26:24.320
we can make it happen in Ruby and
00:26:28.679
that's that's my talk
00:26:31.140
I'm Justin Bowen tons of fun
00:26:42.900
and unfortunately we have three minutes
00:26:45.659
for questions so
00:26:48.720
have I played around with or looked at
00:26:50.940
text image with Ruby no I haven't but
00:26:53.640
that actually brings up an interesting
00:26:57.000
point you may see those text image
00:26:59.700
services on Twitter or those Services
00:27:02.520
where you can upload various photos of
00:27:05.220
yourself and you can get avatars
00:27:06.960
generated
00:27:08.580
the cool thing about those is the people
00:27:11.700
producing those like levels IO the
00:27:14.279
Twitter handle
00:27:15.779
he's put out a bunch of very successful
00:27:18.779
products Based On off-the-shelf Tools so
00:27:22.500
you can make something like that maybe
00:27:25.740
not in Ruby unless you make the Bindings
00:27:27.480
that connect to the C plus libraries
00:27:29.640
that can run those models
00:27:31.980
um if there is an onyx model that could
00:27:33.720
do it you potentially could do it with
00:27:35.340
the Onyx runtime gem
00:27:37.679
um
00:27:38.400
but the cool thing is making a product
00:27:41.340
out of something off the shelf doesn't
00:27:43.020
mean you need to know how it works
00:27:44.460
doesn't mean you read the white paper
00:27:46.500
and understand the math and stuff
00:27:50.039
because I don't I just run the models
00:27:52.860
and make them go fast with Factory so
00:27:55.620
yeah I haven't done it but definitely
00:27:57.720
something that's interesting one thing I
00:27:59.760
thought about would be uh doing the same
00:28:01.679
thing with pets
00:28:03.360
so if you do that just remember who gave
00:28:06.000
you that idea
00:28:08.400
I have really cute pictures of uh my
00:28:11.159
cats in uh medieval Formal Wear so
00:28:15.600
someone someone did that though they
00:28:17.640
spent time doing that just
00:28:19.260
auto-generated charge 20 bucks any other
00:28:21.480
questions I'll just keep talking about
00:28:22.980
cats
00:28:24.720
all right
00:28:25.980
great thank you for the question I
00:28:28.080
appreciate it
00:28:29.279
and that's it you guys can
00:28:31.799
snack time