NorthWalesTech / Community

North Wales Tech Community
http://northwales.tech/
13 stars 3 forks source link

CodeJam: A Cup Full of JVM #42

Closed jonbullock closed 7 years ago

jonbullock commented 8 years ago

This is something I've been thinking about for a while now. The Manchester Java Community have managed to get a few decent speakers to visit them in the past and maybe any event could be aligned with them.

There is also the Liverpool Clojure group and Manchester Scala group as well...

robshep commented 7 years ago

Great, Thanks for the legwork guys I'm happy to think about a common exercise also.

Involve some basic things....

carwyn commented 7 years ago

I have a real one that's quite fun that I've had to do recently, count the syllables per word in a block of text, taking diphthongs into account. It's the algorithm at the core of the Veillance generative audio. There are about half a dozen decent algorithms of varying accuracy, speed and memory consumption.

Fitting given the Veillance exhibition will be open on the evening too.

carwyn commented 7 years ago

Other JVM language resources:

Tempted to take on Javascript to see if Nashorn is any use.

jonbullock commented 7 years ago

This is the kind of thing I'm imagining, a step up from Fizz Buzz that utilises some of the features of these other JVM languages but still small enough to fit within a single class.

https://youtu.be/Q_Z_8HXt68k

Whatever task is selected the algorithm should probably be provided in some generic form.

carwyn commented 7 years ago

Ha! I know Russel! Often bump into him at PyConUK and end up chatting about languages at the conference dinner.

Agree, something a little more challenging but small enough to be able to implement it and discuss in the time we have (2 hours). I'm erring on thee side of suggesting everyone read through the tutorial for language you've picked but keep the exercise secret so that each group is all new to that part?

Also think having 2 to 3 steps to the exercise would be good to bring the group back together after each milestone to compare, each building on the last.

I think 3 to 4 tables at most will work. So far we have:

I'm happy to act as timekeeper/pizza wrangler/game show host.

tamslinn commented 7 years ago

I would vote Scala over ceylon due to greater likelihood of encountering it in the wild?

carwyn commented 7 years ago

Oops, yes maybe Ceylon and Scala and drop Groovy? Groovy could go into a scripting CodeJam?

davehun commented 7 years ago

lets drop java 8 and groovy

@carwyn your doing either https://en.wikipedia.org/wiki/Jabaco or https://en.wikipedia.org/wiki/Apache_Jelly ;)

Kotlin - @jonbullock Clojure - @robshep Ceylon - @davehun Scala - @anorakgirl Jelly - @carwyn

jonbullock commented 7 years ago

Haha that is cruel! :wink:

Rather than an algorithm we could pick a bunch of common tasks and see how you can achieve them in each language... inspired by this: http://www.oracle.com/technetwork/articles/java/architect-10things-2266262.html

Just an idea anyway.

robshep commented 7 years ago

@jonbullock I think that list - or a similar variation is a perfect exercise. A complex algorithm has it's own focus, and there only so much you can achieve in a 90min window, even in your favourite language, and in a group.

I think the aim is to allow groups of newbies to gain an extraordinarily simple appreciation of a new language, and then convey that to others.

Ignoring welcome, admin and other waffle, we're not left with a huge amount of time. I didn't manage to fully complete fizzbuzz in ruby last time due to being somewhat social about my approach.

I much prefer to have relaxed requirements, with an abundance of time, complete something in the social environment, then take the rest of it away for personal study.

davehun commented 7 years ago

Yep totally agree.

Another alternative would be how any of the JVM langs we could get fizzbuzz or similar written in between the lot of us.

On 20 Feb 2017, at 13:47, robshep notifications@github.com wrote:

@jonbullock https://github.com/jonbullock I think that list - or a similar variation is a perfect exercise. A complex algorithm has it's own focus, and there only so much you can achieve in a 90min window, even in your favourite language, and in a group.

I think the aim is to allow groups of newbies to gain an extraordinarily simple appreciation of a new language, and then convey that to others.

Ignoring welcome, admin and other waffle, we're not left with a huge amount of time. I didn't manage to fully complete fizzbuzz in ruby last time due to being somewhat social about my approach.

I much prefer to have relaxed requirements, with an abundance of time, complete something in the social environment, then take the rest of it away for personal study.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/NorthWalesTech/NorthWalesTech/issues/42#issuecomment-281083229, or mute the thread https://github.com/notifications/unsubscribe-auth/AAzQK_nQGyRdEMXdvIok3L6ySASHXKzhks5reZlfgaJpZM4IU9Q6.

jonbullock commented 7 years ago

I suppose if we do go for common development tasks then we should need less time explaining them... when compared to an algorithm that we'd need to explain to everyone.

I'm with you on the relaxed requirements too... as long you spark an interest during the event, people will carry on afterwards.

carwyn commented 7 years ago

https://projecteuler.net/

robshep commented 7 years ago

I don’t think we need to offer …

"challenging mathematical/computer programming problems”

… when it’s quite feasible to lose an hour getting a dev environment working.

:/

— Rob Shepherd BEng PhD Director / Senior Engineer - DataCymru Ltd m: 07596154845 e: rs@datacymru.net

On 20 Feb 2017, at 14:04, Carwyn Edwards notifications@github.com wrote:

https://projecteuler.net/

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.

carwyn commented 7 years ago

Project Euler is the one @davehun keeps wanting to do. These are more what I'd go for and are well proven. We don't need to re-invent the wheel here, some have units test ready made too.

@jonbullock 's 10 things is along these lines too. Tempting to pick an established Kata list and just chomp through it.

robshep commented 7 years ago

I was thinking something trivial like this... (but also think @jonbullock's list of common tasks is equally beneficial)

Here's an API endpoint.

https://en.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&format=jsonfm&titles=Java_virtual_machine

The example above fetches the wikipedia page for the "Java Virtual Machine"

Task: write a program which does the following.

  1. accept input from the user with the name of a page to fetch
  2. fetches the contents from the API
  3. find the longest word and most common word
  4. write the results to a file.

Having spent 2 minutes looking at clojure, I am very confident that I will fail to complete the above given 90 mins especially when I have pizza to eat and friends to talk to :)

carwyn commented 7 years ago

How do people feel on the "each person with their own computer" vs "mob programming per table" approaches. In the latter case there's only one computer per table with a big monitor. The latter also helps avoid issues getting runtimes to work on every attendee's computer. The downside is that people don't learn to set up the environment on their computers and take it away, but possibly spend more time thinking about the language and the exercise.

Would you guys rather play tech support or have many people watching you type? :)

tamslinn commented 7 years ago

I really like the 10 tasks idea, as it would get you to do some things you might actually use. See which table gets the most done?

tamslinn commented 7 years ago

Not sure about a mob of people watching me type!

carwyn commented 7 years ago

@tamslinn you could delegate the driver's seat :) Rotating typists is another option (have visions of people spinning on office chairs).

robshep commented 7 years ago

A bunch of pairs might be good. With jon's list each pair can pick whatever they fancy from the list. I don't think it needs to be single solution. Then we have one effort at the start where the table cooperates to get "hello world" working on half as many laptops, but then parallel learning to maximise involvement and personal input.

Although I'm not fussed either way. i'd be happy with any of it, or self organised... whatever people fancy.

davehun commented 7 years ago

I haven’t (yet) seen a non mob event that’s inclusive.

Guess it depends on the aims if its to socialise and have fun then mobs would get my vote.

We could each set up a pi3 (any one got a spare or 2) with a collaborative web editor

On 20 Feb 2017, at 14:33, Carwyn Edwards notifications@github.com wrote:

How do people feel on the "each person with their own computer" vs "mob programming https://en.wikipedia.org/wiki/Mob_programming per table" approaches. In the latter case there's only one computer per table with a big monitor. The latter also helps avoid issues getting runtimes to work on every attendee's computer. The downside is that people don't learn to set up the environment on their computers and take it away, but possibly spend more time thinking about the language and the exercise.

Would you guys rather play tech support or have many people watching you type? :)

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/NorthWalesTech/NorthWalesTech/issues/42#issuecomment-281094334, or mute the thread https://github.com/notifications/unsubscribe-auth/AAzQK3TsMO3cWFr0TeTlwpHlkKrSOqybks5reaRGgaJpZM4IU9Q6.

carwyn commented 7 years ago

I like @robshep 's pairs idea, seemed to work for FizzBuzz and means "mentors" aren't stuck doing one thing, while individuals still have a buddy to help. Also like the exercise menu selection as it caters for ability and pace variation. Only one of every two laptops also then needs to be hammered into submission.

tamslinn commented 7 years ago

Just thinking about doing some prep for this! Have we decided on the kata? I quite like Rob Sheps suggestion about parsing a page from wikipedia a few pages back. Quite nice in a way to all try the same thing and then compare notes at the end?

Are we going to update the meetup with the choice of languages and get people to download/install the compiler for their choice first?

carwyn commented 7 years ago

Are we going for Jon's "Performing 10 Routine Operations Using Different JVM Languages" or Rob's Wikipedia example? Agree we should leave time for showing the solutions people have come up with and discussion as well as the Pizza.

lukepfarrar commented 7 years ago

Happy doing whatever is most useful :-) On Mar 4, 2017 10:07 PM, "Carwyn Edwards" notifications@github.com wrote:

Three languages with some of us doubling up may be the best option given time and numbers of people.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/NorthWalesTech/NorthWalesTech/issues/42#issuecomment-284188203, or mute the thread https://github.com/notifications/unsubscribe-auth/ABBkj-kuUgz6CVjUgu-5olcll91pof48ks5rieC0gaJpZM4IU9Q6 .

jonbullock commented 7 years ago

My vote goes for @robshep Wikipedia suggestion, it's simple enough to explain but complex enough to get a feel for the languages and allows for that comparison at the end as @anorakgirl suggested.

@carwyn do you want specific lang install instructions for the meetup page?

carwyn commented 7 years ago

@jonbullock yeah a link to the download install instructions should be plenty, just so people aren't hunting and downloading. We're likely to have Linux, OS X and Windows again based on the people on the sign-up list. We have at least one person coming from Chester too.

For example for Clojure - https://clojure.org/guides/getting_started

The tricky bit might be picking the type of tooling:

There are two schools of thought here start with and IDE to get people moving faster but hide the details vs the standalone from scratch approach. Personally I prefer the "start with javac and a terminal" approach but many use IDEs (including CS in Bangor interestingly).

Up to you guys :) may vary per language.

jonbullock commented 7 years ago

I'd lean towards the IDE for this event myself. But then I'd be happy to show people about SDKMAN to manage the various SDK's or build tools as well.

I'll suggest IntelliJ IDEA Community Edition for Kotlin but make sure I can get the Eclipse plugin working too.

carwyn commented 7 years ago

Especially given we have JetBrains licenses to give away :) They all have IntelliJ language plugins.

carwyn commented 7 years ago

Pruned comment above to pull this down here, lets go with this:

Better to do these well than dilute too much (based on current signup numbers). This way we can use the three table setup we had for the Go CodeJam too.

jonbullock commented 7 years ago

Yeah sounds good to me based on the numbers.

carwyn commented 7 years ago

I've added some instructions to be meetup including the Kotlin setup ( @jonbullock can you check ) via IntelliJ. Note that the Community Edition also as built in Scala support (including sbt) so that could cover both?

The IntelliJ Clojure story is a bit more complex:

Cursive seems to be the most impressive but possibly too complex:

Plain https://clojure.org/guides/getting_started may well be the best bet?

jonbullock commented 7 years ago

Looks good to me, I've added a line about having a Java 8 JDK installed and I've also added a note about the Eclipse plugin as well.

robshep commented 7 years ago

Plain https://clojure.org/guides/getting_started may well be the best bet?

I was going for this and notepad :)

carwyn commented 7 years ago

Added to the meetup page (you all have edit access btw).

@anorakgirl @davehun which instructions would you like for Scala? Standalone, IntelliJ, sbt or other? :)

lukepfarrar commented 7 years ago

I thought @davehun couldn't make it? He changed to not going on meetup.

carwyn commented 7 years ago

He's on the fence. Scotland wouldn't let him in.

jonbullock commented 7 years ago

I put Andres Almiray in contact with the Manchester Java Community and he's coming over to do a talk in August: https://www.meetup.com/ManchesterUK-Java-Community/events/238223376/

He indicated he was going to stay for a few days... is it worth asking if he'd come and do a talk at NWT as well?

tamslinn commented 7 years ago

I'd be interested!

carwyn commented 7 years ago

Absolutely, August would be good.

tamslinn commented 7 years ago

Just had a look at the topics they've offered in the poll, "Java libraries you can't afford to miss" sounds good! :)

jonbullock commented 7 years ago

OK I'll ask him.

Do we have a venue available either Wed 30th Aug or Fri 1st Sep?

carwyn commented 7 years ago

I can arrange one :) 7pm to 9pm?

jonbullock commented 7 years ago

Timeslot sounds good... I'm waiting to hear back what day he could do. He's travelling on the Wednesday so that day may be out depending on his travel plans... is Friday a good day for events?

carwyn commented 7 years ago

Friday is not as good but that Friday is also the day the Byw a Bod project has its end of project conference where the students report back on their experiences. The 9 companies involved have also been invited to talk at it this time. This may allow for stacking up events together as I think theirs will be daytime. I'm trying to get theirs at the end of the day with a view to running a NWT event after it.

Considering a date in September for the Summer Tech Talks too. We can make it work on either day.

@jonbullock do you mind if we split this off into another ticket. Tempted to close this one as that event happened.

jonbullock commented 7 years ago

Yeah good idea.

carwyn commented 7 years ago

Closed this as we've done this event (may do it again though).