00:00:15.240
hey how's everyone doing one good to see you um yes so I'm going to talk about future proofing of Ruby stack uh first
00:00:22.480
of all um I going to apologize for my accent I'm from Australia you can
00:00:27.720
understand me right okay good all right if if you miss something I say because I
00:00:34.440
am not understandable or you just didn't understand it I don't know CU I said something weird just jump up and ask a
00:00:40.760
question totally fine I'm more than happy to be interrupted so go for it um
00:00:45.800
what I want to talk to you about today is um uh more from the business aspect
00:00:51.840
actually of what of what the future of your Ruby stack is full transparency I'm
00:00:58.000
not a senior developer like obviously I'm a developer but I'm the CEO of the company which means that um you know I
00:01:04.920
get to run a magnificent team of developers of senior developers who know what they're doing uh we have as a
00:01:12.280
company we're quite large we've onboarded tons of Ruby applications and
00:01:17.880
still and present like lots of new applications being on board at all the time and we get to look after some
00:01:23.439
Legacy applications and and so on I might talk about a few of those a little bit later um so as I said not a
00:01:30.400
technical talk uh so what we're not going to talk about we're not going to talk about improved concurrency there's definitely
00:01:37.399
other talks on that uh we're not going to talk about the move from rail 7 to 8 although that's important and you should
00:01:44.320
know about it we're not going to talk about that today and what we're definitely not going to talk about is
00:01:49.360
whether to use the term master or main if you've been reading Twitter
00:01:56.039
recently okay so let's talk about first of all what the current Ruby application
00:02:02.200
is it's you know for all of our diversity in our community things are
00:02:07.399
actually reasonably standard in Ruby world so in Ruby it's usually a rails
00:02:12.599
application right I mean usually not 100% but usually it's usually on AWS or
00:02:19.000
Heroku and I'm telling you this just from this is my experience talking to a lot of people every week I'm talking to
00:02:25.800
companies that are running Ruby apps um and it's still aw or
00:02:31.480
Heroku um most companies have either a developer that is working full-time on
00:02:38.720
the application could be a mid or a senior developer sometimes it's larger teams sometimes that's outsourced to
00:02:44.440
companies like mine um but there's usually developers so things are usually under constant work usually
00:02:52.680
speaking um and the question that a lot of clients ask me is am I doing things
00:03:00.440
the right way and you know I'm not controversial at all like I don't go for any
00:03:07.080
controversy and I've got to say there's no right or wrong way to approach your stack there are certainly some ways that
00:03:14.440
I might consider better than others and you might consider better than others but we're all very free and welcome to
00:03:22.080
have have our own opinions you have to do what's best for your applications for
00:03:28.120
your clients you know what I mean just give me a quick shot of hands who in here is uh works as a
00:03:35.200
developer okay most of you and then who's like an executive or some other part of the company okay good good so
00:03:42.360
what I want to talk to you today about is how to approach this stack from both sides so if you're the manager if you're
00:03:48.200
the executive if you're the CEO then you've got control over that stack you get to say this is how it works this is
00:03:54.400
what server I wanted on this is what uh version I want to be on by next week you
00:04:00.280
know that sort of thing if you're a developer you might feel like you've got less of a viewpoint on that and you
00:04:06.400
might have some very very valid opinions and here's what I want to tell you from years of working in this industry as a
00:04:12.680
developer I would like you to have more of an opinion that you can push up the
00:04:18.400
organization because quite often the developers will know things like hey we should be upgrading from Ruby 2 uh Ruby
00:04:26.800
2.0 like we should be upgrading from that you you know that very well does the CTO know that does the CEO know that
00:04:34.479
maybe not they might have the consideration about how expensive that is or why not to so I just you know as developers I
00:04:42.840
want you to have more of an opinion and feel free to be able to to speak your
00:04:48.440
mind to say your opinion because you know what you're the guys on the ground you have the best Viewpoint in my
00:04:54.199
company I listen to my developers you know when they tell me hey we need an extra week on this or this isn't going to work or that feature is not a smart
00:05:01.039
feature listen to them these guys know okay so let's have a look at um the
00:05:07.000
currency of where most Ruby Stacks are at and then we're going to talk about what the future is going to look like a
00:05:12.360
little bit okay so when I'm talking to people three main considerations that we
00:05:17.479
come up against one is security uh and this is probably by
00:05:24.280
survey and anecdotally the most important is security if it's not
00:05:29.919
probably should be um security is one of those things that if you get it wrong it's
00:05:37.680
catastrophic you might have had some experience with this or you probably know some of the stories um you hear
00:05:43.600
about data leaks you hear about uh companies that get things I'm going to talk a little bit more about this in a
00:05:48.880
minute I'm going to give you an example of one that is absolutely horrific the second consideration that we hear about
00:05:54.639
is the ease of development you know your production pipeline your backlog um
00:06:00.160
do we write new features or do we improve the existing ones um does the application do what my users want it to
00:06:08.160
do and you can often get the push and pull because you might hear the noisy few who demand certain features get
00:06:14.840
written uh and they represent actually a small number of users the large majority of people you don't hear from because
00:06:22.039
things are going right you know what I mean yeah okay all right there's probably some other points here that I
00:06:27.880
haven't brought up I'm just like these are for me these are the top three this is what comes up most okay so let's dig
00:06:33.599
into security a little bit more so companies can sometimes not think about
00:06:39.440
security as a top concern a top consideration and that is disastrous
00:06:45.560
security is one of those things that where it goes when it's right and there's no infiltration and nobody's
00:06:52.599
done anything wrong you don't hear about and you don't have to worry about when something goes wrong it's a problem I'm
00:06:58.520
going to give you an example this one that you may have heard of uh there's a company in Australia called Opus anyone
00:07:04.879
heard of this company Yeah couple of you it's sort of famous in the security world so Opus is Australia's second Le
00:07:12.919
largest telecommunications provider about 10 million users so they're pretty big right 10 million Australians have
00:07:20.199
their details with Opus One Day a midlevel developer in that company
00:07:25.759
wanted to test out some work that done and somehow for
00:07:31.759
some reason he was able to access the public database and he connected that
00:07:37.879
public database to his development I mean you get a shiver up
00:07:42.919
your spine just hearing about this right and the worst happened the absolute worst happened someone
00:07:49.520
discovered that this had happened it wasn't Switched Off like somebody turned it on was never switched off sometime
00:07:55.599
later 10 million records were taken 10 million records and I'm not just talking
00:08:01.639
about names and email addresses I'm talking driver's license
00:08:07.080
numbers passport numbers because a mid-level developer did that now was it
00:08:12.840
that mid-level developer's fault actually no I mean you could say yeah
00:08:18.159
you know he should have known better but how would he have known better he would have been better trained he wouldn't have had access to that public database
00:08:24.440
there should be no way in the world that that database could ever be connected with a development pipeline just no way
00:08:31.840
so that that's an obvious and horrific example millions of drivers licenses had
00:08:37.959
to be reissued because of that it was just horrific uh and that guy probably felt really bad about it but whose job
00:08:44.720
was it well okay you got Senior Management that's whose job it was so as
00:08:49.920
a as a as a developer on the tools you should be pushing for higher
00:08:55.800
security because when things go wrong you shouldn't get blamed for that I mean for sure you know you need to do your
00:09:01.760
due diligence and be cautious and everything else but security is your concern but it's also a management it's
00:09:08.279
an organizational concern uh here's another problem that's looming for all of us it's the problem
00:09:14.240
of AI um it's not looming it's present right now um and I'm not going to harp
00:09:19.720
on AI I might bring it up again in a moment but when you feed your data into a generative AI model what happens to
00:09:27.000
that data it's a it's a to think about it's something to think about the answer
00:09:32.200
is I actually don't know I mean the larger companies will tell you that that data is not being used to train the
00:09:37.640
models but I'm not sure about that and you shouldn't be sure about that either
00:09:43.079
so just have that as a consideration if your company or you yourself want to use a generative AI model and there's
00:09:49.560
information going into it that needs to be that um that is personal in some
00:09:54.760
sense you're going to want to do that all on board keep it within your own Sur make sure that data doesn't go outside
00:10:01.600
your server think about that very seriously because it's a little bit of the Wild West out there at the
00:10:08.279
moment um the other point on security obviously is the infrastructure I'm going to talk
00:10:14.160
a little bit more on that in a moment and obviously versions what versions are
00:10:19.320
you running we talk about this endlessly of course you know it's the question that I it's the first question I ask
00:10:25.720
every single new client that comes to me what versions are you running what's your you know the development to get
00:10:31.040
that upgraded typically in companies and I tell you this with the greatest of love for those companies um they want to
00:10:38.079
build features and they want to fix bugs all very well and good and should be done the upgrades come later so in the
00:10:46.160
last 12 months I've done some very very extensive upgrades for some very very
00:10:52.079
big companies some of them might be represented here today I'm not going to mention them because you might even be in this room right now and I'm sorry if
00:10:59.360
I'm talking about you but those very very large companies with millions of users haven't done their upgrades still
00:11:06.760
operating off old versions it's you know you think uh it's embarrassing but I think we've all experienced
00:11:14.120
it uh the next one okay feature upgrades bugs or the latest versions so how do
00:11:22.040
you prioritize those concerns now you know when we talk about these upgrades I've seen some horrendous things you've
00:11:27.639
probably seen them too which did an upgrade for a company recently they're on Ruby 1.0 how does that even happen I don't
00:11:35.200
know there's probably people in this room that weren't even born when Ruby 1.0 was around like that's how old that
00:11:42.079
is puts it in perspective right when you get a company like that interesting
00:11:48.200
thing the developer who was the main developer on that obviously he tells me he's getting pushed to right you features all the time and so that's why
00:11:55.120
he could never get around to the upgrades and anytime he did start it was like the job is so big how to I even start it the truth of it was he knew how
00:12:03.839
to program in those in those versions and you know the corresponding rails
00:12:10.360
version which might have been two or something I can't remember he knew how to program in that not many people do
00:12:17.320
like you actually have to know something about about those languages at that time to be able to program in that so it
00:12:24.040
makes it extra hard his job was Secure because of that not a great look so
00:12:29.760
anyway again if he's listening I'm sorry um so we know that upgrades can be hard
00:12:36.920
work they can be a lot of work in particular if you've sort of left it a little while and you're on an older version let's say you're on Rails four
00:12:44.079
maybe or five the upgrades can take a bit of work you know some of those larger ones that I was telling you about
00:12:49.160
with millions of users that's uh many many weeks of work estimate to do one
00:12:54.399
recently was um 26 weeks of development
00:12:59.800
that sounds like a lot but that was 26 weeks from a guy who knows how to do rails upgrades Ruby upgrades knows how
00:13:07.000
to write the tests knows how to run the pipeline and all of that like that's you
00:13:12.639
know that's serious work to get those done they weren't in particular involved writing rewriting all the all the squl
00:13:18.959
as well so that was a whole different thing um so have some influence
00:13:25.240
on the executives and the management in your businesses and if you're a CEO or CTO or someone like that in this room
00:13:32.839
put some consideration into it because upgrades are important not just for security uh stability speed as well okay
00:13:42.839
server costs this one apparently is a Hot Topic uh so like I said I'm using in our
00:13:50.399
company we use AWS or we use Heroku I am aware that these are not the cheapest options in the world I'm well aware of
00:13:56.680
that why do we use them we use them because because they are the most
00:14:02.040
certain and when I'm dealing with large companies and I'm dealing with businesses whose very production and
00:14:10.199
day-to-day work relies on their applications they need to know that that server has maximum up time they 100% but
00:14:17.880
maximum up time they need to know that the security is not in question they need to know that if it falls over
00:14:23.440
someone can put it back up rapidly um these things are more than minor
00:14:29.120
considerations if a company's server goes down and their application stops working and I get a phone call at 3:00
00:14:35.720
in the morning I'm not going to be super happy about that so I want to make sure it's working um so for those reasons we
00:14:42.199
I guess to put it bluntly pay the premium um that doesn't mean that
00:14:48.040
cheaper server options aren't out there and you might want to test those and I'm
00:14:54.639
I'm talking to you from a history of um I started I have a a confession to make
00:15:00.639
I started as a PHP developer so let me apologize for that straight away
00:15:07.639
um uh and back in the day everything was by
00:15:12.759
FTP and you know I thought that was the best system wasn't it was Dreadful it was absolutely Dreadful pushing straight
00:15:19.399
to production by the way um so when I discovered AWS and I
00:15:25.600
discovered Cloud servers uh it was like this is incredible this is amazing there is
00:15:33.560
actually security implications that can be taken care of here I can actually uh spin up a whole pipeline here I can use
00:15:40.920
this thing called git never heard of it before you know all of these things were amazing and impressive to me and so I
00:15:47.120
paid for it and then as those companies AWS and subsequently Heroku
00:15:53.519
grew uh they started increasing their costs because they had to they entered the market at a loss at a very big loss
00:16:02.160
as a matter of fact I if you remember AWS when it first started it was like everyone was like how can they do it
00:16:07.399
this cheaply truth is they couldn't uh and then we see a lot of things on the market today that are at a
00:16:14.480
lower price point for much better performance you know you know higher
00:16:20.360
performing CPUs and so on uh there's a concern that those ones
00:16:25.519
will go up I'm not going to say they are because I don't run those companies that I know don't know their profit and loss statements but I have a feeling they're
00:16:32.800
probably going to move up in price at some point um they certainly have to improveing Performance as in uptime so
00:16:39.880
these things are considerations um Community contributions this one's
00:16:47.560
very important to me very dear to my heart obviously I'm a sponsor of this event here today uh but I sponsor a lot
00:16:55.120
of events I do the ones in Australia as well and I try to spread it as much as I can why do I sponsor I sponsor because
00:17:02.600
the community is important yes it gives me some exposure or the rest of it whatever but I can do that through Google ads as well this is much more
00:17:09.919
important to me you know what we do here and this community is so much more important so consider yourselves whether
00:17:17.079
you're working for a company or you're working for yourself or you run a company consider gems consider
00:17:23.439
sponsorship consider open source contributing to open source here's another one that's very very important
00:17:30.400
is giving your developers or if you're a developer yourself time to up skill now a lot of
00:17:37.520
companies do this and if you do do that thank you very much um but I think it is
00:17:43.440
very very important um in R Tractive we have uh a full day every week where our
00:17:48.559
developers up skill um I'm going to talk a little bit more about what else gets
00:17:53.640
done in that in a moment uh the third point on community contributions includes mentorships and community
00:18:01.120
events so um we've run a lot of these sorts of activities in Australia and I
00:18:06.400
realize they can be a lot of work and I realize it can be quite a an imposition to do them but mentoring or going to
00:18:13.559
events where you can help people on board and learn how to spin up Ruby and rails on their
00:18:20.000
machines um it's very very important when I go to these events when I go to the Ruby conference in Australia there's
00:18:26.120
like maybe 1502 200 people like a lot smaller than this one obviously but out
00:18:31.559
of all of those people constantly are coming up to me saying hey I got into the industry because of your company or
00:18:37.320
because of what you did this is not you know I'm not telling you this to be egotistical or anything I'm telling you
00:18:43.120
because it's important to do like a small contribution to the community means an entire career for someone
00:18:50.480
entire applications running on Ruby that were not before and now will be because
00:18:55.520
of what you do um another point that I didn't put down here is uh contribution in terms of
00:19:03.080
writing articles so you have senior developers or you are a senior developer
00:19:08.559
and because of that you have this vast repository of knowledge up here and this
00:19:14.240
is incredibly important so when you solve a problem or you do something that you think no one else has properly done
00:19:21.080
before you should write it down write an article it doesn't matter if the article is this big or this big it doesn't
00:19:26.679
matter but write it down get the article written I get probably about two articles a week out of my team sometimes
00:19:33.039
a bit less sometimes a bit more um but these technical articles right they're not this is not for SEO
00:19:40.360
purposes I don't write I don't get them to write these things because it's great for our SEO sometimes it helps sometimes
00:19:46.480
the strangest things rank well that you just didn't expect to uh but we write it
00:19:52.039
because one day in the future some developers going to be looking for a solution to something and chat GPT is not going to know the solution to it but
00:19:59.200
our article will be there for them that's why we do it so this history of
00:20:04.559
what we do and how we do it is important um AI going to talk very
00:20:09.840
briefly about it um if you're using AI in your applications think about do I
00:20:15.960
actually need this the same as you do when you're writing a feature do I actually need it you know is this going to be important is it going to be used
00:20:23.120
you know does anyone think this is valuable goes W for AI because you can spend a lot of time trying to write it
00:20:28.960
trying to get it right trying to make it useful and find that no one's going to use it so uh use AI correctly where it's
00:20:36.640
needed like uh we have an application we wrote recently that uh company has a ton of emails that come in over tonight
00:20:42.520
they're an import sorry overnight they're an import company so these emails arrive overnight and they need to
00:20:48.159
be able to pass those emails to understand what to purchase for the next day right because they're in Australia
00:20:54.200
the emails are coming out of Europe they can't read all those emails in enough time to do action those emails someone
00:21:00.159
else has already bought the stock before they did so we wrote something to pass those emails to read them these are all
00:21:05.880
like plain text nothing formatted all unformatted so we read the emails dump it into a database and they know first
00:21:12.200
thing in the morning exactly what to buy and what not to buy so that's a great use very low touch it's good use uh it's
00:21:18.520
about 98% accurate too so that works well uh another company I recently working with is a real estate company
00:21:24.960
they help people buy and sell real estate they want to build an application and um the application has to be able to
00:21:31.559
filter through you know I want two bedrooms this location this many bathrooms this space all of that sort of
00:21:37.600
stuff you know the normal filters that you see on those real estate apps so he said I need all those I go oh why don't
00:21:42.880
we just do it as a like a plain text well you know plain text I'm looking for a house that has blah blah blah it goes
00:21:48.440
why why what's the benefit of that and you're right there's actually no benefit to that it doesn't help anybody tick the
00:21:54.760
boxes it's much clearer it's very plain nobody's going to get it wrong there no hallucination happening you know what I
00:22:01.200
mean so just think about where you're going to implement and where you're not um that's all I'm going to say on
00:22:06.919
the subject of AI okay looking to the Future now very
00:22:12.000
rapidly we know security is the most important or at least should be um stay
00:22:17.600
on top of your upgrades obviously make sure the application is
00:22:23.960
tested and doe testing at regular intervals so uh I don't just mean in pen
00:22:29.000
testing there's a bunch of tests that are necessary you know making sure your gems are all properly published and up
00:22:34.240
to date things like that uh making sure uh your form inputs are all correctly
00:22:40.080
done you know proper filtering making sure that um uh what else I don't know
00:22:46.000
like there's a bunch of things that you know you need to consider when you're riding your applications there's automated tests for all these things so
00:22:51.640
you don't have to be overly concerned just run those tests make sure they're done regularly uh the other thing I do
00:22:57.120
in our company is staff training so we use a company called No before I don't know if you've heard of no
00:23:02.480
before they do um well they sort of started off doing just fishing testing for staff but they've sort of broadened
00:23:09.000
that out quite a lot um but they do regular testing and education of the staff so we run them through quizzes and
00:23:15.320
we do testing and we send them uh emails to check that they don't click on the
00:23:20.400
wrong link you know those sorts of things you have no idea like when we first started this testing this is a
00:23:26.440
company of really really smart people people and uh we had a 50% failure rate
00:23:31.919
on the fishing tests 50% um the last test that we did zero so the Education
00:23:37.880
Works recommend it very very thoroughly in particular a company like ours we're dealing with other people's data all of
00:23:43.600
the time if we do something wrong you know I think the company's over if that happens so consider that uh leads me on
00:23:52.000
to staff training um provide time for your staff to be properly trained like
00:23:57.360
allow their time for study uh we give our staff a full day every week to do
00:24:03.279
this so I you know I charge our our clients for a 4-day week so the fifth
00:24:09.000
day is used for that occasionally it's taken over by a public holiday or something but that's basically how that works uh it means that you always have
00:24:16.039
internal knowledge to solve problems it means that you always have the smartest guys on the Block if you do that
00:24:22.559
currently I'm getting through all of my stuff through the Ruby silvert program do you know about this program it's um
00:24:29.679
it's um an official certification um and it's tough like it's hard um the staff
00:24:36.679
did a dummy test to start off this process we did a dummy test and we had you know like the top result the top
00:24:44.360
score was 75% out of you know these really smart senior developers the top score was 75% and it went down from
00:24:50.320
there um so now we've done a bunch of retesting we've had the staff write questions for each other to test each
00:24:56.880
other out it's working really well and now we're going for the actual silver sht itself and I think we've just got
00:25:03.440
the first one through just recently and then the next and the next and we'll get everybody through and then we'll go for the gold certificate after that um in
00:25:12.240
doing this we're sort of making it a game like you know there's a game going on now of who can who can get the best scores who can write the toughest
00:25:18.520
questions but it becomes an activity that the staff play against each other and our team like many of your teams
00:25:24.200
will be is completely remote so I have staff at every corner of the planet um
00:25:30.320
but they can still play against each other and it's a great way to have people uh internally connect with each
00:25:36.320
other um if you do this sort of thing you'll
00:25:41.399
also have less staff turn over we've got developers that have stayed with our company for a very long time we don't
00:25:46.720
have a lot of turnover and I realize it happens in these sorts of companies I understand um but if they're achieving
00:25:53.679
new things constantly and feel like they're progressing personally and in their career is
00:25:59.799
then um sorry I don't know where my slides went then they feel like they they're achieving something make sense
00:26:07.240
all right um and this is the most important point the people are our
00:26:13.960
greatest asset when we talk about our Ruby stack this is the most important
00:26:19.600
this element here is the one that's that needs the biggest concern and the biggest attention and the most um
00:26:29.360
um the most attention from you here's something that I'm going to tell you that I think is incredibly important in
00:26:36.159
your company the morale of your staff is directly dependent upon their
00:26:41.960
production now of course the perks are nice you know nice chair a nice desk all
00:26:47.880
the rest of it these are incredibly important but if you want Happy staff they're productive staff that means
00:26:54.480
they're shipping features regularly they feel like they've achieved something when they've completed an application or
00:27:00.520
completed a scope of work or a project that they know the result of that hey the client was super happy with that
00:27:06.360
they loved us they want to use us again you know that sort of thing it's very important that company that we did that
00:27:12.080
development for last year they've just grown 150% because of the feature you
00:27:17.559
wrote th this is stuff that happens regularly with our code when we write it
00:27:22.799
but sometimes we forget to tell each other these things so it's good to know it's good to find out that actually you
00:27:29.440
weren't just valuable but incredibly valuable okay and that this doesn't just
00:27:36.799
go for the developers by the way it goes for every person in your staff it goes for the marketing team and HR and the
00:27:42.799
sales people the sales people sometimes never find out they sell something and
00:27:47.840
the development team do it and they do a great job and someone forgets to tell the sales guy hey that's a that was a
00:27:53.559
fantastic application that you advis them on that feature worked incredibly well just save that company a ton of
00:27:59.799
money you know so make sure you tell everyone okay summary then so your Ruby
00:28:06.039
stack is benefited by considering the security the performance in terms of the
00:28:11.679
development Pipeline and backlog and the budget is a concern but less of one I
00:28:17.279
didn't really talk about it in this talk here because it becomes sort of obvious it's actually a secondary concern the
00:28:24.120
budget consider these now like today and what you're doing um and their future state so you have to
00:28:31.000
think now about what things are going to be like in a year or so and remember finally that people are your real and
00:28:38.919
greatest asset um we've only got a few minutes left but any questions anything you want
00:28:44.799
to ask me yeah yeah right so um obviously we're
00:28:50.679
agile obviously um so how do you do the calculation you have to take into
00:28:56.120
account all the various scenarios and then select the most obvious path that's
00:29:01.679
that's how I would do it so yes you can go okay I know we need to do the upgrade from let's say we're going to go s to
00:29:06.960
eight and we're going to plan that for March April next year okay that sounds fair what if something comes up in the
00:29:13.799
meantime that is more important okay we we might have to Pivot to that but don't forget you know just keep it on the
00:29:20.200
timeline maybe it moves out by a month but keep it on the timeline yeah yeah any other
00:29:26.279
questions if you want to ask me anything personally just come up and grab me at the end I'll be around uh I've also got
00:29:32.840
some beanies if you want a beanie come and grab me they are very necessary in the weather here I didn't know I knew it
00:29:39.720
was going to be cold but it was cold right are we not cold yet this is not
00:29:46.600
cold yet oh okay okay wait till it starts
00:29:59.679
does it really can you go ice skating on it no no okay not quite that Frozen oh
00:30:05.279
okay right okay great all right well I'll be going home on Saturday
00:30:12.679
then oh yeah yeah okay yeah okay so can be CER all right well thanks very much for for talking to me today my number's
00:30:19.880
up there give me a call anytime I got a US number if you need to call that um or you can email me or uh jump on to
00:30:26.279
LinkedIn and find me it's under the QR code uh thank you very much I appreciate it thank you