Giter Club home page Giter Club logo

lsug-website's People

Contributors

abuggin avatar adamgfraser avatar cb372 avatar gitter-badger avatar harveymatt avatar kxa14 avatar larsrh avatar mazhara avatar noelwelsh avatar nrinaudo avatar perrydunn avatar propensive avatar rossabaker avatar scala-steward avatar sjrd avatar travisbrown avatar yilinwei avatar zainab-ali avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

lsug-website's Issues

Add bio and event for Travis Brown

Thank you very much for joining us! It would be great if you could fill in some details.

A note on file formats

The pm format is inspired by pollen markup syntax, a programmable xml-like format for semantic document publishing. I appreciate that there is no editor support for this yet (I have an Emacs mode in the works!).

You may have trouble typing the lozenge character ◊. If so, see pollen's instructions on inserting unicode.

Your profile

  • Take a look at the bio template.
  • Copy the template to the people directory.
  • Please fill in your name and bio. The photo, twitter, github and blog fields are optional.
    Let me know if you'd like any other fields - we can add them in the long term.
  • Photos will make your profile all the more friendly. If you'd like one, store it in the assets directory.

Your event

It would greatly help contributors if you could give a brief overview of the projects you'd like them to work on, and the main issues they face. If you have a specific label for good first issues (e.g. good-first-issue), feel free to link it here.

Please also link a contributor's guide, if you have one prepared, and any setup instructions. We'll encourage attendees to do the setup beforehand.

Filling in the details

The event details are in 2020-11-28.

Add a new event tag to the events section. It must have:

  • a name. I've been naming things "Contribute to XXX", but feel
    free to be more creative.
  • a time of 14:00-17:30 This template is geared towards talks as
    opposted to open source days, so there's unfortunately a bit of
    redundancy here.
  • a description

You can optionally add tags, slides, setup instructions, and material for any other links. The Coding with Cats workshop has an example of how these are displayed.

See the meetup template for details on how to structure each of these fields.

Add bio and event for Noel Welsh

Thank you very much for joining us! It would be great if you could fill in some details.

A note on file formats

The pm format is inspired by pollen markup syntax, a programmable xml-like format for semantic document publishing. I appreciate that there is no widespread editor support for this yet. If you're an Emacs user, you can have a go with pollen-mode.

You may have trouble typing the lozenge character ◊. If so, see pollen's instructions on inserting unicode.

Your profile

  • Take a look at the bio template.
  • Copy the template to the people directory.
  • You must fill in your name and bio. The pronoun, photo, twitter, github and blog fields are optional.
    Let me know if you'd like any other fields - we can add them in the long term.
  • Photos will make your profile all the more friendly. If you'd like one, store it in the assets directory.
  • The list of supported gender pronouns is hard-coded, but that doesn’t mean it’s set in stone. Add your gender pronoun to the recognizedPronouns list in the decoder if you can’t find it.

Your event

It would greatly help contributors if you could give a brief overview of the projects you'd like them to work on, and the main issues they face. If you have a specific label for good first issues (e.g. good-first-issue), feel free to link it here.

Please also link a contributor's guide, if you have one prepared, and any setup instructions. We'll encourage attendees to do the setup beforehand.

Filling in the details

The event details are in 2021-02-27.

Add a new event tag to the events section (unless your event is already here). It must have a name, a time and a description.

You can optionally add tags, slides and material for any other links. The first Open Source Saturday has an example of how these are displayed.

See the meetup template for details on how to structure each of these fields.

Meetup page redesign for OSS days

Open Source days are very different to meetups for talks.

  • They’re focused around GitHub projects and issues
  • They have far more speakers (project maintainers)
  • There are multiple groups happening at once, so our current agenda isn’t useful
  • They aren’t recorded. This means they aren’t as valuable in our past events listing.

The title and explanation

Thus far we’ve assumed that we only give talks, so don’t have a space for a title. We need a title to distinguish an OSS day from conventional talks.

The day also needs a brief explaination of how it works. We could repurpose the ‘welcome’ section for this, placing it at the top and getting rid of the host’s profile.

Agenda

Our agenda should list break times and group times. We could use a generic agenda, without mentioning specific projects.

| 14:00 | local_cafe | Chat |
| 14:15 | local_cafe | Introduce the projects |
| 14:30 | build | Round 1 of coding |
| 15:45 | local_cafe | Break |
| 16:15 | build | Round 2 of coding |
| 17:15 | local_cafe | Closing discussion |

Where ‘build’ and ‘local_cafe’ are material icons corresponding to Blackboard Collaborate and Spatial Chat. Clicking on the icon should take the attendee to the corresponding virtual space.

Project lists

The project list is currently too large to easily scroll through. We could experiment with:

  • having a condensed list at the top and more detailed projects below
  • having a drawer per project
  • having anchors to projects. This may be worthwhile for talks too.

Project details

All projects have a few things in common:

  • a GitHub repository
  • a contributor guide, or instructions
  • a list of issues

We could pull the issues list from GitHub, searching for the specific repository, and have an ’issues’ tab.
Some projects are manned by the same speaker. In this case, we don’t necessarily want to duplicate the speaker profile.

Add the Contributor guide to the website

The contributor guide could be added to the website as a flow chart.
We could present the user (the new contributor) with questions about their setup e.g

What OS do you have?

  • Windows
  • MacOS
  • Linux

and present instructions based on their answers.

We could also include screenshots more easily than on GitHub.

Investigate tab behaviour

When the async callback for meetup is called, the tabs switch back to the default.

This shouldn't be happening because we're only updating part of the state.

Add bio and event for Ross Baker

Thank you very much for joining us! It would be great if you could fill in some details.

A note on file formats

The pm format is inspired by pollen markup syntax, a programmable xml-like format for semantic document publishing. I appreciate that there is no editor support for this yet (I have an Emacs mode in the works!).

You may have trouble typing the lozenge character ◊. If so, see pollen's instructions on inserting unicode.

Your profile

  • Take a look at the bio template.
  • Copy the template to the people directory.
  • You must fill in your name and bio. The photo, twitter, github and blog fields are optional.
    Let me know if you'd like any other fields - we can add them in the long term.
  • Photos will make your profile all the more friendly. If you'd like one, store it in the assets directory.

Your event

It would greatly help contributors if you could give a brief overview of the projects you'd like them to work on, and the main issues they face. If you have a specific label for good first issues (e.g. good-first-issue), feel free to link it here.

Please also link a contributor's guide, if you have one prepared, and any setup instructions. We'll encourage attendees to do the setup beforehand.

Filling in the details

The event details are in 2020-11-28.

Add a new event tag to the events section (unless your event is already here). It must have a name, a time and a description. This is geared towards talks as opposted to open source days, so there's unfortunately a bit of redundancy. All the events should use the same time of 14:00-17:30.

You can optionally add tags, slides, setup instructions, and material for any other links. The Coding with Cats workshop has an example of how these are displayed.

See the meetup template for details on how to structure each of these fields.

mill.scalalib.GenIdea/idea fails with netty-transport-native-epoll as dependency

mill.scalalib.GenIdea/idea fails with the following error when executing on a project that has netty-transport-native-epoll as a dependency.

1 targets failed
mill.scalalib.GenIdea.idea java.nio.file.NoSuchFileException: ~/.cache/coursier/v1/https/repo1.maven.org/maven2/io/netty/netty-transport-native-epoll/4.1.46.Final/netty-transport-native-epoll-4.1.46.Final-linux-x86_64.pom

It's complaining about a missing pom file which has a linux-x86_64 suffix. Looking into the ~/.cache/coursier.../4.1.46.Final directory, we can see the said pom file does not exists, whereas a pom file without the suffix exists.

 ~/coursier/v1/https/repo1.maven.org/maven2/io/netty/netty-transport-native-epoll/4.1.46.Final:
   netty-transport-native-epoll-4.1.46.Final-linux-x86_64.jar
   netty-transport-native-epoll-4.1.46.Final-sources.jar
   netty-transport-native-epoll-4.1.46.Final.pom 

The issue seems to come from the logic in GenIdeaImpl looks for a POM extension with the same filename as the jar which does not cater for classifiers.

We think one solution to resolve this issue is to change the code to look for any file with a POM extension in the same directory as the jar.

More detailed information by @zainab-ali can be found here #90

Would you like us to PR this change? Also, thank you for working on and maintaining this build tool. Our project has benefited a lot from this project.

Add bio and event for Sébastien Doeraene

Thank you very much for joining us! It would be great if you could fill in some details.

A note on file formats

The pm format is inspired by pollen markup syntax, a programmable xml-like format for semantic document publishing. I appreciate that there is no editor support for this yet (I have an Emacs mode in the works!).

You may have trouble typing the lozenge character ◊. If so, see pollen's instructions on inserting unicode.

Your profile

  • Take a look at the bio template.
  • I've taken the liberty of creating your profile under the people directory.
  • Please fill in your bio. The photo, twitter, github and blog fields are optional.
    Let me know if you'd like any other fields - we can add them in the long term.
  • Photos will make your profile all the more friendly. If you'd like one, store it in the assets directory.

Your event

It would greatly help contributors if you could give a brief overview of the projects you'd like them to work on, and the main issues they face. If you have a specific label for good first issues (e.g. good-first-issue), feel free to link it here.

Please also link a contributor's guide, if you have one prepared, and any setup instructions. We'll encourage attendees to do the setup beforehand.

Filling in the details

The event details are in 2020-11-28.
Please edit the event section named ScalaJS. It must have:

  • a name. I've been naming things "Contribute to XXX", but feel free to be more creative.
  • a time of 14:00-17:30
    This template is geared towards talks as opposted to open source days, so there's unfortunately a bit of redundancy here.
  • a description

You can optionally add tags, slides, setup instructions, and material for any other links. The Coding with Cats workshop has an example of how these are displayed.

See the meetup template for details on how to structure each of these fields.

Add bio and event for Adam Fraser

Thank you very much for joining us @adamgfraser ! It would be great if you could fill in some details.

A note on file formats

The pm format is inspired by pollen markup syntax, a programmable xml-like format for semantic document publishing. I appreciate that there is no widespread editor support for this yet. If you're an Emacs user, you can have a go with pollen-mode.

You may have trouble typing the lozenge character ◊. If so, see pollen's instructions on inserting unicode.

Your profile

  • Take a look at the bio template.
  • Copy the template to the people directory.
  • You must fill in your name and bio. The photo, twitter, github and blog fields are optional.
    Let me know if you'd like any other fields - we can add them in the long term.
  • Photos will make your profile all the more friendly. If you'd like one, store it in the assets directory.

Your event

It would greatly help contributors if you could give a brief overview of the projects you'd like them to work on, and the main issues they face. If you have a specific label for good first issues (e.g. good-first-issue), feel free to link it here. If possible, we'd like you to use an LSUG label for tracking.

Please also link a contributor's guide, if you have one prepared, and any setup instructions. We'll encourage attendees to do the setup beforehand.

Filling in the details

The event details are in 2021-01-30.

Add a new event tag to the events section (unless your event is already here). It must have a name, a time and a description.

You can optionally add tags, slides and material for any other links. The first Open Source Saturday has an example of how these are displayed.

See the meetup template for details on how to structure each of these fields.

Add bio and event for Nicolas Rinaudo

Thank you very much for joining us! It would be great if you could fill in some details.

A note on file formats

The pm format is inspired by pollen markup syntax, a programmable xml-like format for semantic document publishing. I appreciate that there is no widespread editor support for this yet. If you're an Emacs user, you can have a go with pollen-mode.

You may have trouble typing the lozenge character ◊. If so, see pollen's instructions on inserting unicode.

Your profile

  • Take a look at the bio template.
  • Copy the template to the people directory.
  • You must fill in your name and bio. The photo, twitter, github and blog fields are optional.
    Let me know if you'd like any other fields - we can add them in the long term.
  • Photos will make your profile all the more friendly. If you'd like one, store it in the assets directory.

Your event

It would greatly help contributors if you could give a brief overview of the projects you'd like them to work on, and the main issues they face. If you have a specific label for good first issues (e.g. good-first-issue), feel free to link it here.

Please also link a contributor's guide, if you have one prepared, and any setup instructions. We'll encourage attendees to do the setup beforehand.

Filling in the details

The event details are in 2021-01-28.

Add a new event tag to the events section (unless your event is already here). It must have a name, a time and a description.

You can optionally add tags, slides and material for any other links. The Coding with Cats workshop has an example of how these are displayed.

See the meetup template for details on how to structure each of these fields.

Support different timezones

Each meetup page contains a time schedule. For example:

Screenshot of a schedule on a meetup page.  The schedule contains several times.

This is currently always in BST.
As our attendees are virtual, they can join from anywhere in the world and consequently any timezone. We should let users choose the timezone they want using a dropdown below the schedule. A rough design would look something like the following image, although the style should be consistent with the rest of the application:

Screenshot of a dropdown design

Potential Solution

Converting the time in the client's lsug.ui.meetup.plan schedule component would be preferred.

We use scala-java-time to work with times. It has a companion library containing all timezones that could be used. This might bloat the ScalaJS bundle considerably, but would be worth trying. If that doesn't work well, we could look into creating a bundle of custom timezones only.

Tests

Sadly, we don't yet have any unit tests for client logic. Unless you're comfortable writing some from scratch, we're happy with manual testing.

Prerequisites

You'll find this easier if you've explored HTML and CSS before.

What you'll learn

  • The basics of frontend development
  • How to use ScalaJS to create a dropdown
  • How to use ScalaJS React to manage state
  • How to work with time in ScalaJS
  • How to style webpages with SASS

Getting started

Read our Contributor Guide to get set up.

Add law tests to the parser

The lsug markup uses an applicative parser. It has cats type class instances for functor and alternative.
While the parser is unit tested, the instances themselves could use law tests.

Potential Solution

As we use munit for unit testing, we can add laws with discipline-munit. This is described in the cats laws documentation.
The tests should be added in the lsug.markup.ParserSpec. Provided there are no test failures, the parser shouldn't be changed.

Prerequisites

You should be familiar with the some type classes, such as Functor. You should also understand the concept of unit testing.

What you'll learn

Getting started

Read our Contributor Guide to get set up.

Bundle fonts with web assets

The site displays text using the free fonts Adobe Source Serif Pro and Adobe Source Sans Pro.
These are not distributed with the site. If a user doesn't have them installed on their PC, we use their defaults instead. This causes styling issues.
We should bundle the fonts with the site assets such that all users see the correct fonts.

Potential Solution

The mill build must be adjusted to include bundling fonts. A task should be added under the web module to download and unzip the fonts from their GitHub releases:

Tests

Manual testing is satisfactory.

Prerequisites

  • The basics of CSS and font families
  • Enough familiarity with Scala to work with mill

What you'll learn

This is a great introduction to mill, outside of standard Scala projects

Getting started

Read our Contributor Guide to get set up.

Past events should be ordered by time

The homepage lists past events. These should be listed with the most recent event first, however they appear in any order.

Potential Solution

The events are listed in the order they are returned by the server. You can tell this by using web developer tools to examine the json response returned by the server, and comparing it with the events listed.

The server should return events ordered by time. The logic for finding events is in the lsug.Server.eventsBefore method. This returns a list which is not sorted.

Once you've completed this, take a look at the lsug.Server.meetupsAfter method. This should be amended to list meetups with the soonest first.

Tests

You should unit test that all events returned by eventsBefore are in order. Unit tests for the server have yet to be written, so please reach out to get these bootstrapped first.

Prerequisites

This is a minor change. You'll need a basic grasp of Scala and a curiosity for functional programming.

What you'll learn

  • Working with java.time
  • Functional programming with lists
  • Unit testing with munit

Getting started

Read our Contributor Guide to get set up.

GitHub Actions: ci.synth failed

The GitHub Actions build fails following the updates made by scala steward.

This can be seen by the red x on the main GitHub branch, and the recent actions workflows:

warning package.json: No license field
$ /home/runner/work/lsug-website/lsug-website/out/ci/yarn/dest/node_modules/.bin/cdk synth
/bin/sh: 1: ./stack.sc: Permission denied
Subprocess exited with error 126
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
1 targets failed
ci.synth ammonite.ops.InteractiveShelloutException
    ammonite.ops.Shellout$.executeInteractive(Shellout.scala:56)
    ammonite.$file.webpack$Yarn.$anonfun$$percent$3(webpack.sc:24)
    ammonite.$file.webpack$Yarn.$anonfun$$percent$3$adapted(webpack.sc:24)
    ammonite.ops.Command.applyDynamic(Shellout.scala:118)
    ammonite.$file.webpack$Yarn.$percent(webpack.sc:26)
    ammonite.$file.build$ci$.$anonfun$synth$2(build.sc:230)
    mill.define.ApplyerGenerated.$anonfun$zipMap$8(ApplicativeGenerated.scala:19)
    mill.define.Task$MappedDest.evaluate(Task.scala:392)

The failure was introduced somewhere between the following commits (inclusive):

98d5cda | * 65 Update cats-core to 2.2.0
3a24d17 *   Merge pull request #63 from scala-steward/update/scalafmt-core-2.4.2

I'm firing off the GitHub actions of each one to find the culprit.

Add pronoun field to speaker profile

The speaker profile corresponds to the details displayed for a speaker. It doesn't include a place for pronouns (the he/him in the following example).

speaker-profile

We should make it easier for speakers to add a pronoun, and display it separately to the bio.

Potential Solution

This involves touching both the frontend and backend.

The speaker profiles are stored in pollen markup. We'll need to add a new optional pronoun tag to this:

◊name{Travis Brown}
◊social{
  ◊twitter{travisbrown}
  ◊github{travisbrown}
}
◊pronoun{He/him}
◊bio{
◊p{Travis is a software developer who maintains some open source Scala libraries and lives in Berlin.}
}

and also a decoder for it.

On the frontend, we'll need to display this in the Speaker component. We don't have a set design for this. It might look better under the name, or next to it. Please experiment with positions and styles.

Tests

Please write tests for the decoder. These should verify that:

  • a speaker with a pronoun is decoded
  • a speaker without one is also decoded

Unfortunately, we don't yet have frontend testing. Manual testing for the frontend is sufficient.

Prerequisites

You'll need a basic grasp of functional programming to work with the decoder, and be willing to experiment with ScalaJS components.

What you'll learn

Getting started

Read our Contributor Guide to get set up.

Test failure ResourceSpec on GitHub Actions

The bug

The GitHub Action run failed with the following error:

==> X lsug.markup.ResourceSpec.meetups ./server/src/main/resources/meetups/2021-01-28.pm  0.115s munit.FailException: /home/runner/work/lsug-website/lsug-website/server/test/src/scala/lsug/markup/ResourceSpec.scala:39 assertion failed
38:              val name = path.getFileName.baseName
39:              f(server, name).map { ev => assert(clue(ev).isDefined) }
40:            }
Clues {
  ev: Option[Unit] = None
}

This test succeeds when running locally.

Add bio and event for Lars Hupel

Thank you very much for joining us @larsrh! It would be great if you could fill in some details.

A note on file formats

The pm format is inspired by pollen markup syntax, a programmable xml-like format for semantic document publishing. I appreciate that there is no widespread editor support for this yet. If you're an Emacs user, you can have a go with pollen-mode.

You may have trouble typing the lozenge character ◊. If so, see pollen's instructions on inserting unicode.

Your profile

  • Take a look at the bio template.
  • Copy the template to the people directory.
  • You must fill in your name and bio. The photo, twitter, github and blog fields are optional.
    Let me know if you'd like any other fields - we can add them in the long term.
  • Photos will make your profile all the more friendly. If you'd like one, store it in the assets directory.

Your event

It would greatly help contributors if you could give a brief overview of the projects you'd like them to work on, and the main issues they face. If you have a specific label for good first issues (e.g. good-first-issue), feel free to link it here.

Please also link a contributor's guide, if you have one prepared, and any setup instructions. We'll encourage attendees to do the setup beforehand.

Filling in the details

The event details are in 2021-01-30.

Add a new event tag to the events section (unless your event is already here). It must have a name, a time and a description.

You can optionally add tags, slides and material for any other links. The first Open Source Saturday has an example of how these are displayed.

See the meetup template for details on how to structure each of these fields.

Unable to generate IntelliJ Idea xml file

The bug

The mill mill.scalalib.GenIdea.idea task fails:

1 targets failed
mill.scalalib.GenIdea.idea java.nio.file.NoSuchFileException: /home/zainab/.cache/coursier/v1/https/repo1.maven.org/maven2/io/netty/netty-transport-native-epoll/4.1.46.Final/netty-transport-native-epoll-4.1.46.Final-linux-x86_64.pom
    sun.nio.fs.UnixException.translateToIOException(UnixException.java:86)
    sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
    sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)
    sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:214)
    java.nio.file.Files.newByteChannel(Files.java:361)
    java.nio.file.Files.newByteChannel(Files.java:407)
    java.nio.file.spi.FileSystemProvider.newInputStream(FileSystemProvider.java:384)
    java.nio.file.Files.newInputStream(Files.java:152)
    os.Path.getInputStream(Path.scala:474)
    os.read$bytes$.apply(ReadWriteOps.scala:258)
    os.read$.apply(ReadWriteOps.scala:218)
    os.read$.apply(ReadWriteOps.scala:216)
    mill.scalalib.GenIdeaImpl.sbtLibraryNameFromPom$1(GenIdeaImpl.scala:300)
    mill.scalalib.GenIdeaImpl.libraryNames$1(GenIdeaImpl.scala:313)
    mill.scalalib.GenIdeaImpl.$anonfun$xmlFileLayout$86(GenIdeaImpl.scala:347)
    scala.collection.StrictOptimizedIterableOps.flatMap(StrictOptimizedIterableOps.scala:117)
    scala.collection.StrictOptimizedIterableOps.flatMap$(StrictOptimizedIterableOps.scala:104)
    scala.collection.immutable.HashSet.flatMap(HashSet.scala:34)
    mill.scalalib.GenIdeaImpl.xmlFileLayout(GenIdeaImpl.scala:347)
    mill.scalalib.GenIdeaImpl.run(GenIdeaImpl.scala:36)
    mill.scalalib.GenIdea$.$anonfun$idea$2(GenIdea.scala:14)
    scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)

To Reproduce

Run mill mill.scalalib.GenIdea.idea in the root directory.

Version details

  • OS: Linux
  • mill version: 0.8.0

Additional information

This is likely due to the GenIdea.idea task attempting to inspect netty's POM file:

In the mill GenIdea code, we see:

    // Hack so that Intellij does not complain about unresolved magic
    // imports in build.sc when in fact they are resolved
    def sbtLibraryNameFromPom(pomPath : os.Path) : String = {
      val pom = xmlParseDom(os.read(pomPath)).flatMap(Pom.project).right.get

The library netty-transport-native-epoll doesn't have a POM on maven.

I'm as yet unsure why this is (are POM files necessary for libraries in maven?).

Quite possibly, the GenIdea.idea task should skip the POM if it doesn't exist. If so, we should work to fix this in the mill codebase.

Add event for Jon Pretty

Thank you very much for joining us @propensive ! It would be great if you could fill in some details.

A note on file formats

The pm format is inspired by pollen markup syntax, a programmable xml-like format for semantic document publishing. I appreciate that there is no widespread editor support for this yet. If you're an Emacs user, you can have a go with pollen-mode.

You may have trouble typing the lozenge character ◊. If so, see pollen's instructions on inserting unicode.

Your event

It would greatly help contributors if you could give a brief overview of the projects you'd like them to work on, and the main issues they face. If you have a specific label for good first issues (e.g. good-first-issue), feel free to link it here. If possible, we'd prefer it if you used an LSUG label for tracking.

Please also link a contributor's guide, if you have one prepared, and any setup instructions. We'll encourage attendees to do the setup beforehand.

Filling in the details

The event details are in 2021-01-30.

Add a new event tag to the events section (unless your event is already here). It must have a name, a time and a description.

You can optionally add tags, slides and material for any other links. The first Open Source Saturday has an example of how these are displayed.

See the meetup template for details on how to structure each of these fields.

Add bio and event for Chris Birchall

Thank you very much for joining us! It would be great if you could fill in some details.

A note on file formats

The pm format is inspired by pollen markup syntax, a programmable xml-like format for semantic document publishing. I appreciate that there is no editor support for this yet (I have an Emacs mode in the works!).

You may have trouble typing the lozenge character ◊. If so, see pollen's instructions on inserting unicode.

Your profile

  • Take a look at the bio template.
  • As you’ve graced us with past talks, I've taken the liberty of creating your profile under the people directory.
  • You must fill in your name and bio. The photo, twitter, github and blog fields are optional.
    Let me know if you'd like any other fields - we can add them in the long term.
  • Photos will make your profile all the more friendly. If you'd like one, store it in the assets directory.

Your event

It would greatly help contributors if you could give a brief overview of the projects you'd like them to work on, and the main issues they face. If you have a specific label for good first issues (e.g. good-first-issue), feel free to link it here.

Please also link a contributor's guide, if you have one prepared, and any setup instructions. We'll encourage attendees to do the setup beforehand.

Filling in the details

The event details are in 2020-11-28.

Edit the event tag named "The Scala Language". It must have:

  • a name. I've been naming things "Contribute to XXX", but feel free to be more creative.
  • a time of 14:00-17:30
    This template is geared towards talks as opposted to open source days, so there's unfortunately a bit of redundancy here.
  • a description

You can optionally add tags, slides, setup instructions, and material for any other links. The Coding with Cats workshop has an example of how these are displayed.

See the meetup template for details on how to structure each of these fields.

Add a code tag to the markup

Some speakers have small inline code snippets in their abstracts. These are usually references to Scala classes.
For example, Jacob’s abstract references ExecutionContext and cats.effect.Timer.

We should support these through a code datatype that is converted into a html tag.

Potential Solution

This involves:

  • Adding a new markup datatype for Code in the protocol
  • Adding a decoder for this markup to the decoders. It should be similar to the strong decoder
  • Rendering the code html tag on the frontend.
  • Updating the meetup template with an example of how to use it.

Tests

Take a look at the tests for the strong decoder

Prerequisites

You should be reasonably familiar with html and basic Scala algebraic datatypes (case classes and sealed traits).

You will need to touch some fairly advanced functional patterns in the decoder, but you’ll be making very small changes.

What you'll learn

  • How to work with monad transformers
  • The basics of ScalaJS React

Getting started

Read our Contributor Guide to get set up.

Create a typeclass for custom decoding

The server contains a decoder trait to decode our custom format into algebraic data types. This can be modelled as a typeclass with instances for each datatype.

We can then make use of several libraries to help construct and use the decoder. simulacrum can be used to generate ops, and magnolia for typeclass derivation.

Potential Solution

Enrich lsug.markup.Decoder trait with ops using simulacrum. This makes working with decoders a little easier.
You can then write the functions required for magnolia to derive instances automatically.
The current decoders are explicit in lsug.markup.Decoders. These can be made implicit and, where possible, rewritten to be derived automatically.

Note that most of the decoders probably won't be able to use generic derivation as they have custom handling for missing tags.

Tests

The assertions in lsug.markup.DecoderAssertions should be rewritten to use an implicit decoder. The existing tests should cover the rewrite, but feel free to add more.

Prerequisites

You should

  • have a basic understanding of functional programming
  • be comfortable using typeclasses on higher-kinded types, for example Functor.
  • be keen on reducing boilerplate

What you'll learn

  • How to create typeclasses with implicits and ops
  • How to use simulacrum to generate typeclass boilerplate
  • How to use magnolia to generate typeclass instances

Getting started

Read our Contributor Guide to get set up.

Cache the results from meetup.com

The number of attendees is displayed on each meetup page. For example:

image

This number is obtained by the server through a request to meetup.com. The server makes a request to meetup.com each time it receives a request for an upcoming meetup. Hence, it makes a request each time someone visits a page under https://www.lsug.co.uk/meetups/....

The number of attendees of meetup doesn't change much. If many people visit the same page at once, we'll make many redundant requests to meetup.com for the same unchanging information.

It would be far better to cache the number of people. We can store it in memory in the server for one minute, and only request it if the stored value is older than one minute.

Potential Solution

A simple cache can probably be implemented with a cats-effect ref containing a Scala Map. This should be added to the lsug.Meetup class.

Tests

You should at least test that:

  • the value is re-requested after one minute
  • it isn't requested before one minute is up

You will need to mock meetup.com. This hasn't been done in the codebase yet, and you're free to experiment with mocking tools and patterns.

Prerequisites

It would be useful if you've dabbled a little in functional programming.

What you'll learn

  • The motivation behind caching.
  • The basics of cats-effect.
  • How to safely work with state in concurrent functional programming.
  • How to test with time and cats-effect
  • How to mock during testing

Getting started

Read our Contributor Guide to get set up.

Upcoming meetup page should be responsive

The upcoming meetup page isn't friendly to different screen layouts, including mobile. Taking an example

The right sidebar is partly hidden on desktop:
Screenshot of the desktop view of an upcoming meetup page.  Half of the right sidebar is off the screen.

The content width is much larger than the screen width on mobile:
Screenshot of the mobile view of an upcoming meetup page.  Most of the content is off the screen, with only the leftmost part showing.

It should be made mobile friendly.

Potential Solution

The SASS stylesheets need to be adjusted to cater for responsive design. We already make use of CSS flexbox, grid and media queries, but there are probably fixed width styles interfering with them. The styles for the page can mostly be found in web/stylesheets/event.scss.

Tests

Unfortunately, we don't expect to test for different screen sizes any time soon. Manual testing is satisfactory.

Prerequisites

No experience is necessary. This issue probably won't involve any Scala — only CSS. You do need a mobile phone to test with.

What you'll learn

Getting started

Read our Contributor Guide to get set up.

Add bio and event for Jon Pretty

Thank you very much for joining us! It would be great if you could fill in some details.

A note on file formats

The pm format is inspired by pollen markup syntax, a programmable xml-like format for semantic document publishing. I appreciate that there is no editor support for this yet (I have an Emacs mode in the works!).

You may have trouble typing the lozenge character ◊. If so, see pollen's instructions on inserting unicode.

Your profile

  • Take a look at the bio template.
  • Copy the template to the people directory.
  • You must fill in your name and bio. The photo, twitter, github and blog fields are optional.
    Let me know if you'd like any other fields - we can add them in the long term.
  • Photos will make your profile all the more friendly. If you'd like one, store it in the assets directory.

Your event

It would greatly help contributors if you could give a brief overview of the projects you'd like them to work on, and the main issues they face. If you have a specific label for good first issues (e.g. good-first-issue), feel free to link it here.

Please also link a contributor's guide, if you have one prepared, and any setup instructions. We'll encourage attendees to do the setup beforehand.

Filling in the details

The event details are in 2020-11-28.

Add a new event tag to the events section. It must have:

  • a name. I've been naming things "Contribute to XXX", but feel free to be more creative.
  • a time of 14:00-17:30
    This template is geared towards talks as opposted to open source days, so there's unfortunately a bit of redundancy here.
  • a description

You can optionally add tags, slides, setup instructions, and material for any other links. The Coding with Cats workshop has an example of how these are displayed.

See the meetup template for details on how to structure each of these fields.

Improve the pollen ergonomics

Pollen is a bit difficult to work with. We could improve it by:

  • using a better parser (cats-parse?)
  • adding a linter to mill
  • polishing up the Pollen Emacs mode

It would also be great to improve the decoders to generate a specification for pollen tags.

GitHub actions: setup-java failed'

Our GitHub release workflow failed with an error in the setup-java action.

The error is related to untarring with gzip. The archive ends unexpectedly (Unexpected EOF in archive), so was possibly not downloaded correctly.

The build succeeded on retrying. If this is a rare occurrence, we can ignore it.

Run actions/setup-java@v1
/bin/tar --version
tar (GNU tar) 1.29
Copyright (C) 2015 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by John Gilmore and Jay Fenlason.
/bin/tar xz --warning=no-unknown-keyword -C /home/runner/work/_temp/temp_1625864822 -f /home/runner/work/_temp/77c04a09-e7b0-4572-b770-eaf232b96b97

gzip: stdin: unexpected end of file
/bin/tar: Unexpected EOF in archive
/bin/tar: Unexpected EOF in archive
/bin/tar: Error is not recoverable: exiting now
Error: The process '/bin/tar' failed with exit code 2

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.