00:00:21.240
You promise this won't fall on me? Um, hi there! I'm Adam Butler, a web developer at a company called Simpleweb. I asked one of the people in the office to draw a typical day at our office, and this is what he came up with. I think it's quite accurate. We build startups, mostly using Ruby, and we're hiring, so come talk to me!
00:00:40.559
I was originally going to call this talk "life hacks," but I thought you might think I meant something different. What I actually mean is "experiments." This is something I do all the time. Winston Churchill once said, "To improve is to change, and to perfect is to change often." So I run myself these little experiments.
00:01:07.680
For example, I set myself challenges to change often. You might remember that last year, if you were here, I did a lightning talk about contributing to open source every day. This was the most successful experiment I've ever run, lasting 230 days of consecutive contributions to open source. It was the most productive I've ever been! These are some of the projects I worked on during that time.
00:01:47.640
The only real downside to this experiment was finding the time. This is me at a go-karting place during my stag party, working on open source. The day I decided to give it up was actually the 13th of June, which you may recall was my wedding day.
00:02:01.200
The second thing to do is to test your assumptions. I’ve always had a negative bias about LinkedIn; it seemed to be just full of recruiters. However, I'm currently treating it like the best thing ever by posting every day and seeing what happens. Maybe, just maybe, I can get to be one of those successful people.
00:02:16.360
I've been having a bit of fun with these experiments as well. Recently, I've started replying to spam. For instance, one chap sent me a message that said he needed my assistance. So, I replied, "How can I possibly help you?" He got back to me with a long email that was supposedly top secret.
00:02:27.640
He's a manager at the African Development Bank, which has an acronym, so you know it's legit. He wants to transfer a huge sum of money to me, of which I would get 10%. I replied, "This sounds great! When do we get started? PS: Is the 10% negotiable?" Before I knew it, I was in line to get 15% of $24 million! I thought, that’s great, but $2.4 million hardly seems worth it. I'm still waiting to hear back from this person. Word of wisdom: if you're going to do this, don't use your primary email account.
00:03:02.000
Next on my list is finding some time to travel. I recently visited Skegness. The people at Trip Advisor say it’s possibly the worst place in England, but I was determined to go, and it was actually pretty nice! You might laugh at PHP, but PHP is quite progressive these days, so progressive in fact that they skipped straight from version 6 to version 7.
00:03:20.680
This can be an opportunity to troll recruiters on LinkedIn as well. Speaking of skills, learn new ones! This is me learning to code elegantly. Get involved with projects where you feel you have no right to be, like this debate. If you're looking to start experiments of your own, here’s a suggestion: first, draw a line between things you don’t know and things you know really well. Do the same for things you hate and love and plot everything you have in your mind.
00:03:52.360
I suggest you focus on the items in the bottom left corner first. Deal with those before trying anything else, and just try shifting everything over from the left to the right. The last point is to be nice. Some of the experiments I've conducted involved making myself less available to others around me in an attempt to modify their behavior. However, let me tell you not to do this; nothing good has come out of these experiments, and they've had long-term damaging effects.
00:04:21.400
So, I recommend being nice and working hard. I've been Adam Butler. Thank you.
00:04:46.230
Thank you very much. I don’t really know much about what I'm about to discuss. Some guy on Twitter pointed it out to me the other week, and I thought it looked pretty cool. Today, I hope to show you how to say 'hello world' using this technology.
00:04:54.680
This technology is called gRPC. It has a website at grpc.io, and it's something that Google recently open-sourced. gRPC is an RPC framework, and it works rather well!
00:05:07.360
So how this thing works is that you start off by defining some kind of service in a protocol buffers file. You tell it you're using protocol buffers version three, name your package, and then define a service. For example, we've got a service called 'Hello' with a function called 'sayHi.' It accepts a person as a parameter and returns a greeting. Subsequently, we define our two messages: the 'Person' message which has a name, and the 'Greeting' which contains a message.
00:05:39.560
The cool thing about this is, this is all you need to define the interface that your service will use. After that, you can perform a magical incantation to generate code. There’s a command you have to run, which I've saved in a file so I can remember how to do it next time. This command will take your protocol file and generate a whole bunch of Ruby code for you.
00:06:02.400
In the lib folder, we have a bunch of Ruby files generated for us, which we can use to create a server very simply. We just inherit from the generated code and define the actual method here, 'sayHi.' We also get a bunch of types that are automatically generated for us, so hopefully, this should work!
00:06:43.560
To make things loud, if I run the server, that should work, and then I've written a client as well. When I say 'hello, Ruby,' it works! This means we sent a message from our client to the server saying 'Bath Ruby', and we got the message back.
00:07:04.640
The only problem I hear is that Ruby doesn't scale very well, but the great thing about gRPC is that it actually works with ten different programming languages. So, I went ahead and implemented it in Go as well, which generates a whole bunch of Go code for us.
00:07:29.840
The cool thing is we can then implement the method in the same way we did before. If we kill off the Ruby server and run the Go one, hopefully, the exact same client we wrote in Ruby should work just the same. And indeed, it does! Hello from Go, Bath Ruby! Super cool!
00:08:03.360
You should definitely check it out. The code for my demo is up on GitHub, so feel free to check it out. If anyone's interested in containers, continuous integration, and such, I'm working on an open-source project about that, so come say hi afterwards!
00:08:54.600
So what is Trans*Code? Trans*Code is an organization that runs hack days around the UK. It develops applications for use by trans people, provides networking opportunities for trans individuals in IT, and runs workshops to help trans people gain IT skills. Of course, it comes to conferences like this one. We were at Python UK last year, and it is open to trans and non-binary folk, allies, coders, designers, and visionaries of all sorts.
00:09:25.960
Why is it necessary? The employment situation for trans people is pretty dire. Even our current government, when they finally began to take a look, was appalled at the level of discrimination that trans people face in this country. Although it’s true that many trans people find employment here, there's a historical reason why HR personnel, for example, are hesitant to employ us. They think it’s safe to put us in IT and have us work from home.
00:09:46.720
There’s also a considerable amount of internalized shame for many trans individuals. If you dislike your body, as many trans people do, or if you face constant microaggressions from society, you may very well want to hide from the world. A fantastic book to read on this topic features a trans character, who is a minor character, but it was authored by a trans woman.
00:10:35.520
Here's a little personal background to ground this in experience: I started programming microcomputers way back before the Apple 2. My career progressed in an expected manner and I ended up being a high-paid economic consultant. I transitioned in 1997 and have been pretty much unemployable since then. Not totally; I did spend two years in Berkeley, California where I taught people how to use derivatives valuation software, which was great until my company was bought out.
00:11:18.640
Now, how have I survived since then? My economic model, which I wrote in 1991, is still in use and provides support. This has saved my life. The issue of trans healthcare is a growing problem. The number of individuals applying to gender clinics in the UK is increasing by over 20% a year, with children's referrals rising at an even higher rate.
00:11:52.320
The Equality Act of 2010 states that discrimination based on gender reassignment is illegal. However, legislation alone doesn't change people's attitudes. Nonetheless, things are getting better—when I transitioned, the unemployment rate for trans people was around 35%. Now, it’s down to about 11%, which is only twice the rate for the general population, and much of that success is thanks to people like you.
00:12:14.000
So, what’s happening with Trans*Code? On April 23rd, we're hosting a hack day at the GoCardless offices in London. Over 50 people are already registered! There’s a lot of exciting stuff happening and hopefully more events will be held across the country.
00:12:33.440
How can you help? You can attend our events. Allies are always welcome! You can sponsor events as well. What we're really in need of is offices where we can hold hack days. Please invite us to conferences—we appreciate it greatly.
00:12:56.160
Also, please ensure that your code of conduct includes language about gender identity so that trans people know that your conference is a safe space. Tell others about us, and run trans awareness training in your company. Employ trans people, because we are awesome.
00:13:20.320
Here are some contact details. If anyone wants to speak to me during the break, I will be available. Sadly, I cannot stay for the party as I have to rush off to Canada tomorrow and I haven’t packed yet.
00:13:57.680
Let me explain—part of the issue is with Node.js. Its npm has been making Ruby look bad, and that's not because of we're not cool, but rather the growth that it's having provides a skewed perception. If you look up Ruby gems, there are about 115,566 packages as of yesterday, while npm has approximately 250,000 packages.
00:14:21.760
The download statistics also show a stark difference: RubyGems.org states we've had 7.6 billion downloads ever, while npm had 3.7 billion in the last month alone. I can only imagine the amount of server space they need to manage those numbers!
00:14:41.560
Of course, much of this is due to the absurdly simple modules that Node encourages. For instance, there's the 'is-even' module, which, as its name suggests, simply tells if a number is even. Its genius is in its simplicity, as these small packages end up looking appealing.
00:14:56.760
However, 'is-even' actually has two dependencies — 'is-odd' and 'is-number' — utilized pretty well within it. So how do we foster more growth and bring Ruby back into the spotlight?
00:15:21.680
In this room, who has built a gem before? There seem to be quite a few of you! For those who haven't, I think we should build a gem now! It’s quite simple; all you need is Bundler, and you can create one with simply running a command: "bundler gem is_even," which will create the skeleton for the gem.
00:15:46.200
Next, you would go into that directory and run 'bundle install' to install the dependencies. Otherwise, it won't work. Building a simple gem can actually be an excellent learning opportunity. Let’s implement our function.
00:16:03.480
We’ll implement 'is_even' using the built-in features in Ruby. This is straight forward as Ruby offers clean syntax and usability. While doing this, we should also create proper documentation, because readers need to know that our gem is useful. Remember that if you're creating something, consider making it beneficial.
00:16:33.440
Once the gem is created, run 'gem build is_even.gemspec,' and finally, just push it up. With that, we've deployed our gem! You can go ahead and download and install it, but be mindful that version 0.1.0 might still have changes.
00:17:01.680
Creating your very first gem can be a great way to learn Ruby, just like I did when I created the Bitly gem. It has received nearly a million downloads! Extracting gems cuts down on repetition across projects, and that leads to the creation of effective pieces of software.
00:17:28.640
Also, I wrote a Twilio template to help facilitate writing TwiML easier. Building more gems will contribute to the overall growth, enhancing the Ruby community. Let's improve the numbers, beat out Node.js, and continue to create useful tools.
00:17:54.800
However, I'm not advocating for creating all sorts of pointless stuff just for the sake of it; focus on useful projects, write tests and maintain quality. I ensure that no Node.js developers were harmed in the creation of this presentation!
00:18:23.080
Ruby is an amazing language. You are all amazing! Thank you.
00:19:32.560
In case this didn’t resonate too well, let’s have an easier one. Clearly, we can answer all those questions. The conclusion is that the answer to those methods returns a 'no method error.' But it shouldn't be good when humans should be given a chance to come up with answers!
00:20:25.100
Yes. That’s where our programming logic needs adjustments. My suggestion is that we should include a winter method in programming. However, let's keep in mind that we must address the fallacies linked to our approaches.
00:20:41.760
Lastly, programming should grow from domain concepts instead of language constructs; that’s a major takeaway from this discussion. Here lies the aspect of domain-driven design, which may assist in reflecting real human solutions better!
00:21:25.280
If you appreciate maps, let me show you an intriguing view underneath Bath. While I discourage you from going and observing all the details in the link provided, I think it’s brilliant. And that concludes my talk! Thank you all!