summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--_config.yml1
-rw-r--r--_layouts/post.html6
-rw-r--r--_pages/index.md6
-rw-r--r--_posts/2018-08-15-the-perl-conference-in-glasgow.adoc254
-rw-r--r--css/custom/blockquotes.less18
-rw-r--r--css/custom/helpers.less5
-rw-r--r--css/custom/navigation.less30
-rw-r--r--css/formats/asciidoc.less45
-rw-r--r--css/main.less99
-rw-r--r--css/variables.less11
10 files changed, 378 insertions, 97 deletions
diff --git a/_config.yml b/_config.yml
index 3236bd9..083f894 100644
--- a/_config.yml
+++ b/_config.yml
@@ -26,7 +26,6 @@ keep_files:
- img
asciidoctor:
attributes:
- icons: font
imagesdir: /img
pygments-style: emacs
pygments-stylesheet: css/pygments.base.css
diff --git a/_layouts/post.html b/_layouts/post.html
index b3d68f4..b00fea7 100644
--- a/_layouts/post.html
+++ b/_layouts/post.html
@@ -6,11 +6,7 @@ layout: default
<header>
<h1>
{{ page.title }}
- {% if page.wip %}
- <span class="badge badge-warning">
- WIP
- </span>
- {% endif %}
+ {% if page.wip %}<small>(WIP)</small>{% endif %}
</h1>
</header>
<main>
diff --git a/_pages/index.md b/_pages/index.md
index 69818aa..557aee6 100644
--- a/_pages/index.md
+++ b/_pages/index.md
@@ -9,8 +9,10 @@ description: >
software related.
---
-{% for post in site.posts limit:1 %}
-{% assign blogpost = post %}
+{% for post in site.posts %}
+ {% if post.wip %} {% continue %} {% endif %}
+ {% assign blogpost = post %}
+ {% break %}
{% endfor %}
## About me
diff --git a/_posts/2018-08-15-the-perl-conference-in-glasgow.adoc b/_posts/2018-08-15-the-perl-conference-in-glasgow.adoc
new file mode 100644
index 0000000..e79b2e6
--- /dev/null
+++ b/_posts/2018-08-15-the-perl-conference-in-glasgow.adoc
@@ -0,0 +1,254 @@
+---
+date: 2018-08-15
+wip: true
+feed: false
+tags: Perl Conference
+description: >
+ My feedback and comments on some of the talks I attended during The Perl
+ Conference in Glasgow, in 2018.
+---
+= The Perl Conference in Glasgow
+:toc: preamble
+
+This year the European Perl Conference was hosted in Glasgow, and of course
+I've attended a number of presentations there. On some of these, I have some
+feedback or comments. These talks, and the feedback I have for them, are
+detailed in this blog post. For some talks, I'll detail it as a summary of the
+presentation, because I feel the message is important.
+
+== Discourse Without Drama
+
+[NOTE]
+====
+There used to be comments here to show a different perspective to the speaker.
+However, someone's lightning talk has been removed because
+https://act.perlconference.org/tpc-2018-glasgow/news/1568[some people played
+the "offended" card], and no specifics are being published about it. As such, I
+cannot make any assertions on what is and what is not allowed, and have to
+assume that criticism of harmful beliefs will be shut down. As such, I have
+removed the comments which used to be here, in an attempt to keep it from
+detracting from the rest of my post.
+====
+
+== European Perl Mongers Organiser's Forum 2018
+
+The Perl community isn't big nowadays, which is sad. The Perl 6 language also
+offers a lot of concepts which are very well suited for modern programming.
+However, if no new users try out the language, it will be all for nothing. As
+such, we need to bring new blood in to the community.
+
+One of the ways of doing this, is by extending our promoting efforts outside of
+the Perl community. Most people who like Perl are in a social bubble with other
+people that are also familiar with the Perl programming language, be it 5 or 6.
+But we need to reach new people as well, who will most likely be outside of
+this social bubble. These people don't have to be techies either, they might
+just as well be marketeers or designers.
+
+I myself am part of the "techies", so I'll stick to this particular group for
+now. And I know people like me can be found at meetups, so it would be
+worthwhile to promote Perl at meetups which are not dedicated to Perl. Think of
+more generic programming meetups, or GNU+Linux User Groups. We have to be
+mindful not to be too pushy, though. Listen to others people, and try to
+understand the problem they're facing. Most of them will not be open to use a
+different language immediately, especially not Perl (which sadly has a
+particularly bad standing amongst people unfamiliar with it). Try to assist
+them with their issues, and slowly introduce them to Perl (6) if it helps to
+showcase what you mean. It might also be interesting to show people examples on
+how to solve certain issues before telling them the language's name, so they
+don't have a negative preconception solely from the name.
+
+Another thing to note is that Perl is more than just a programming language.
+It's a community, and a large library of modules, known as CPAN. And CPAN
+offers some nifty tools, such as the CPAN testers, which help ensure module
+developers that their code runs on a massive set of platforms and Perl
+versions.
+
+This has led me to consider the creation of a new Perl 6 module:
+`CPAN::Tester`, to make it easy for people to contribute to a large-scale
+testing environment for Perl 6. The idea is that one can run `CPAN::Tester` on
+their machine, which will keep track of new Perl 6 modules being uploaded to
+CPAN. The results are to be sent to another server (or multiple servers), which
+can aggregate the data and show a matrix of test results. This aggregating
+server could also be built as a Perl 6 module, possibly named
+`CPAN::Tester::ResultsServer`. This would make setting up an environment
+similar to CPAN testers for Perl 5 quite easy for Perl 6.
+
+== TPF Update
+
+This talk gave some interesting information on the current state of The Perl
+Foundation. And there have been some nice developments in the past year, mostly
+the updated websites (https://perl.com and https://perlfoundation.org). Sadly,
+some sites remain in a slightly outdated state, though there are plans to
+update these too. Most notably, https://jobs.perl.org seems to require a
+webmaster to bring the platform online and keep it in check. If this is
+something you'd like to do, don't hesitate to contact The Perl Foundation about
+it.
+
+Furthermore, The Perl Foundation is looking for more sponsors, as always.
+However, you don't need to be a massive corporation to be able to help them
+out. They are looking for more smaller sponsors as well. The money of the
+sponsorships will be used to support the Perl community. This means money will
+be going towards organizing events, such as The Perl Conference, or grants for
+both Perl 5 and Perl 6 development and promotion.
+
+If you'd like to help the Perl community through The Perl Foundation by
+volunteering, this is also greatly appreciated. The time commitment expected of
+you will depend very much on the tasks you want to deal with, but about 10
+hours a month is a good estimate.
+
+== Perl 6 in Real Life $Work
+
+The speaker shows the perfect use case for
+https://docs.perl6.org/language/grammars[Perl 6 grammars], advanced yet
+readable parsing of text and doing stuff with the results. It's an interesting
+talk, showcasing some nifty grammar constructs. The best part of this is, that
+it actually runs in production, where it parses over 700 files, consisting over
+100,000 lines of code, in about 22 seconds (on his laptop). This goes to show
+that Perl 6 is no longer "too slow to use in production".
+
+It might be interesting to run this application of grammars on every Perl 6
+release to gather more information on the speed improvements of Perl 6, much
+like Tux's `Text::CSV` runs.
+
+== Releasing a Perl 6 Module
+
+Personally, I prefer GitLab over GitHub, as they have much better testing
+functionality, and they actually release their own platform as an open source
+package. I'd like more GitLab love from the community and speakers as well if
+possible. This would also make the speakers CI configuration simpler, for which
+he currently uses a `.travis.yml` file. This requires him to build Perl 6 from
+source every test run, wasting quite a lot of time.
+
+A number of directories were listed which are standard in Perl 6 module
+skeletons. However, the `resources` directory was left out of it, which should
+get its fair share of love as well. Files listed in here can be made accessible
+through the `%?RESOURCES` variable in your program, allowing you to easily
+bundle additional resources with your moule.
+
+It was also noted that there's a module to help you set up this module
+skeleton, `mi6`. The speaker also noted that it doesn't seem to add much once
+you know how a Perl 6 module is organized, and I tend to agree with this.
+Actually, I made a module precisely because I agree to him here, `App::Assixt`.
+This module intends to smoothen the entire course of module development, not
+just the creation of a skeleton file. It will take care of keeping your
+`META6.json` up to date, and ease uploading your module to CPAN as well.
+
+Lastly, the speaker says the `META6.json` documentation can be found in S22.
+While this is technically correct, S22 is *not* the implementation's
+documentation, this lives in the official Perl 6 documentation instead. S22
+offers many additional information to be stored in the `META6.json`, but using
+these fields will actually break installation of your module through `zef`,
+rendering it unusable by others. I would strongly recommend people not to use
+S22 when trying to figure out what they can or cannot do with their
+`META6.json`.
+
+== How to become CPAN contributor?
+
+Submitting a pull request (or more correctly named, merge request) to a
+repository is possibly the most straightforward way to help out other projects.
+However, sometimes it will take a long time to get a response. The speaker
+notes this can actually be on the scale of years. I have authored a number of
+modules myself, and have been in the situation where I had not realized I got a
+merge request from another person (same goes for issue reports). I would
+recommend people who are not getting timely responses to their contributions to
+contact the maintainer via other channels which are more suited for
+communications. Think of email or irc, for instance. You'll generally have a
+much better chance of getting a timely response from the author, and then you
+can work out your contribution and see if you can get it merged into the main
+project.
+
+The speaker also lists a couple of ways to get started with contributing to
+modules. One thing I missed in particular was the Squashatons for Perl 6. These
+generally offer a good entry point to help out with the language's development
+and the ecosystem's maintainance.
+
+Near the end, it was pointed out that it is a good idea to have a thick skin.
+Even when it's not intended, people can come accross as rude. This is in
+opposition to the talking point of the speaker yesterday (_Discourse Without
+Drama_), but he does raise a good point here. People oftentimes don't mean to
+insult you, but context is easily lost in written communications. Try to stay
+mature and professional, you can simply ask for clarification. If you feel the
+person remains hostile towards you, walk away. There's plenty of other projects
+that would love your contributions!
+
+== Conference Organizers & European Perl Mongers Organiser's Forum 2018 BoF
+
+Well, that's certainly a mouthful for a heading, and it even contains an
+abbreviation! This event was not a presentation, but a platform to exchange
+ideas together.
+
+One of the items that were up for discussion was _A Conference Toolkit_, or ACT
+for short. This is the platform used to organize Perl events, such as this
+conference and Perl workshops throughout the world. However, ACT is dated.
+They enabled HTTPS a short while ago, but it's still not the default because
+people don't want to risk breaking the platform. I think this is enough of
+an indication that it might be time to make something new to replace it.
+
+And I'm not alone in that sentiment, it seems. However, ACT is big and contains
+a lot of data we don't want to lose. It's a massive undertaking to make a new
+tool that works at least as well, and allows us to make use of the old data as
+well. There is a Trello board available that lists all the features that would
+be required to implement, so that's a good start already. I think now it needs
+a dedicated product owner with people contributing code, so a start can be
+made. This does seem like a touchy subject, since I'm far from the first person
+to want this. Many before me have tried and failed already.
+
+As such, I'd propose not making it a Perl centric tool. Make it a modular,
+generic event organizing tool. Get a good database design that we can import
+our old data into, so nothing is lost, but things can be converted to be more
+useful for our current needs. This way, we can work in small steps, and maybe
+even reach contributors from outside the regular Perl circles. This might even
+bring in new partnerships (or sponsors) towards the Perl community.
+
+Personally, I'd like to see something like this to be written in Perl 6. This
+way, it could also be used as a showcase project for the Perl 6 programming
+language.
+
+== Writing a Perl 6 Module
+
+Perl 6 has this very neat feature called
+https://docs.perl6.org/language/typesystem#index-entry-subset-subset[subsets].
+These can be used to make your own types with very little effort, which can
+help tremendously to keep your code clean and consise. There are two arguments
+I have in favour of subsets that the speaker did note touch upon.
+
+First off, using a subset instead of a `where` clause in a sub or method
+signature will bring much better error messages. If you use a `where` in your
+signature, and the check fails, you'll get an error that there was no signature
+that matched `where { ... }`.
+
+Secondly, if you want to use abstract methods, you can't really use a where.
+https://stackoverflow.com/questions/51570655/how-to-use-abstract-multi-methods-containing-a-where[I've
+asked a question about this on Stack Overflow], which has the details as to why
+this doesn't work the way you might expect.
+
+Next, there's some cool things about operators in Perl 6. There are many of
+these available by default, and it's _very_ easy to add new ones yourself as
+well. In fact, the `Math::Matrix` module used throughout the presentation makes
+some available as well. Thanks to the ease of adding operators in Perl 6, if
+you have a `Math::Matrix $m` in Perl 6, you can get the norm by writing `|| $m
+||`. This is the mathematically correct way to write this, making it easy to
+understand for everyone using matrixes in their daily lives. If you're a
+mathematician, small things like these are great to have.
+
+I have some comments on the `Math::Matrix` module itself as well, based on
+slides shown in the presentiation. The first thing I noticed is that there's a
+`norm` method using a `where` clause when it's not needed:
+
+[source,perl6]
+----
+method norm (Str $which where * eq 'row-sum')
+----
+
+This can be written instead as:
+
+[source,perl6]
+----
+method norm ('row-sum')
+----
+
+This is shorter and clearer, and you'll get better feedback from the compiler
+as well. I https://github.com/pierre-vigier/Perl6-Math-Matrix/pull/49[submitted
+a pull request on the GitHub repository] in an attempt to improve this, which
+got merged! The speaker was not aware it could be done this easy, so I'm proud
+I got to teach him something right after he did his presentation.
diff --git a/css/custom/blockquotes.less b/css/custom/blockquotes.less
new file mode 100644
index 0000000..3984472
--- /dev/null
+++ b/css/custom/blockquotes.less
@@ -0,0 +1,18 @@
+@import "../variables.less";
+
+.quoteblock {
+ width: 90%;
+ margin: 0 auto;
+ border-left: double black;
+ padding: 0.5em;
+ background-color: @blockBackgroundColor;
+
+ blockquote {
+ font-style: italic;
+ }
+
+ div.attribution {
+ text-align: right;
+ margin-right: 1em;
+ }
+}
diff --git a/css/custom/helpers.less b/css/custom/helpers.less
new file mode 100644
index 0000000..2c4d80b
--- /dev/null
+++ b/css/custom/helpers.less
@@ -0,0 +1,5 @@
+@import "../variables.less";
+
+.center {
+ text-align: center;
+}
diff --git a/css/custom/navigation.less b/css/custom/navigation.less
new file mode 100644
index 0000000..9c9ef4e
--- /dev/null
+++ b/css/custom/navigation.less
@@ -0,0 +1,30 @@
+@import "../variables.less";
+
+// Navigation bar
+nav {
+ padding-bottom: 8px;
+ border-bottom: double @bodyTextColor;
+ text-align: center;
+ font-family: Sans;
+
+ a, a:visited {
+ margin: 0 0.5em;
+ font-size: 24px;
+ text-decoration: none;
+ color: @bodyTextColor;
+ }
+
+ .brand-name {
+ text-align: center;
+ display: block;
+ font-weight: bold;
+ font-size: 32px;
+ color: @bodyTextColor;
+ margin-bottom: 8px;
+ }
+}
+
+// Generic links
+a, a:visited {
+ color: @linkColor;
+}
diff --git a/css/formats/asciidoc.less b/css/formats/asciidoc.less
new file mode 100644
index 0000000..89dfcb2
--- /dev/null
+++ b/css/formats/asciidoc.less
@@ -0,0 +1,45 @@
+@import "../variables.less";
+
+.toc {
+ font-weight: bold;
+
+ ul {
+ font-weight: normal;
+ list-style-type: decimal;
+ }
+}
+
+.admonitionblock {
+ background-color: @blockBackgroundColor;
+ border: 1px solid @blockBorderColor;
+ margin: 0.5em auto 1.75em auto;
+ width: 90%;
+ padding: 0.5em;
+
+ table {
+ td.icon {
+ text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5);
+ font-size: 1.5em;
+
+ div.title {
+ margin: 0 1em;
+ }
+ }
+
+ td.content {
+ padding: 0 1.125em;
+ border-left: 1px solid #ddd;
+ }
+ }
+}
+
+div#footnotes {
+ font-size: smaller;
+
+ hr {
+ margin-top: 2em;
+ width: 80%;
+ text-align: left;
+ color: @blockBorderColor;
+ }
+}
diff --git a/css/main.less b/css/main.less
index 199ef30..21f7a8e 100644
--- a/css/main.less
+++ b/css/main.less
@@ -1,21 +1,13 @@
-@bodybgColor: #fefefe;
-@bodyTextColor: #454545;
-
-// Link Colors
-@linkColor: #07a;
-@linkVisitedColor: #07a;
-@linkVisitedInvertedColor: #ac5a82;
-// ===============
-
-@wrongColor: #c0392b;
-@shittyBlue: #0000EE;
-@shittyViolet: #551A8B;
-@motherfuckingColor: #16a085;
-@blockQuoteColor: #456;
-@openQuoteColor: #666;
+@import "./variables.less";
+
+@import "./custom/blockquotes.less";
+@import "./custom/helpers.less";
+@import "./custom/navigation.less";
+
+@import "./formats/asciidoc.less";
html {
- background-color: @bodybgColor;
+ background-color: @bodyBackgroundColor;
}
body {
@@ -32,33 +24,6 @@ small {
font-size: 0.7em;
}
-nav {
- padding-bottom: 8px;
- border-bottom: double @bodyTextColor;
- text-align: center;
- font-family: Sans;
-
- a, a:visited {
- margin: 0 0.5em;
- font-size: 24px;
- text-decoration: none;
- color: @bodyTextColor;
- }
-
- .brand-name {
- text-align: center;
- display: block;
- font-weight: bold;
- font-size: 32px;
- color: @bodyTextColor;
- margin-bottom: 8px;
- }
-}
-
-a, a:visited {
- color: @linkColor;
-}
-
li p {
margin: 0;
}
@@ -67,57 +32,13 @@ table {
width: 100%;
}
-blockquote{
- color: @blockQuoteColor;
- margin-left: 0;
- margin-top: 2em;
- margin-bottom: 2em;
-
- span{
- float: left;
- margin-left: 1rem;
- padding-top: 1rem;
- }
-
- author{
- display: block;
- clear: both;
- font-size: 0.6em;
- margin-left: 2.4rem;
- font-style: oblique;
-
- &:before{
- content: "- ";
- margin-right: 1em;
- }
- }
-
- &::before{
- font-family: "Times New Roman", Times, Arial;
- color: @openQuoteColor;
- content: open-quote;
- font-size: 2.2em;
- font-weight: 600;
- float: left;
- margin-top: 0em;
- margin-right: 0.2rem;
- width: 1.2rem;
- }
-
- &::after{
- content: "";
- display: block;
- clear: both;
- }
-}
-
pre.pygments {
- border: double @openQuoteColor;
+ border: 2px solid @blockBorderColor;
padding: 8px;
}
code {
- background-color: #eee;
+ background-color: @blockBackgroundColor;
padding: 2px;
}
diff --git a/css/variables.less b/css/variables.less
new file mode 100644
index 0000000..88347cf
--- /dev/null
+++ b/css/variables.less
@@ -0,0 +1,11 @@
+// Main site colors
+@bodyBackgroundColor: #fefefe;
+@bodyTextColor: #454545;
+
+// Link Colors
+@linkColor: #07a;
+@linkVisitedInvertedColor: #ac5a82;
+
+// Special blocks
+@blockBackgroundColor: #f6f6f6;
+@blockBorderColor: #d7d7d7;