From 073b920d7f7a34431503782f6d5c6217452b1bf7 Mon Sep 17 00:00:00 2001 From: Jeremy Kauffman Date: Fri, 27 Apr 2018 17:17:13 -0400 Subject: [PATCH] jerbs done? --- content/jobs/project-manager.md | 2 +- content/jobs/protocol-engineer.md | 2 +- controller/Controller.class.php | 1 - controller/action/ContentActions.class.php | 37 ++++------- view/template/content/_job.php | 19 ++++-- view/template/content/_jobs.php | 8 +++ view/template/{content => page}/join-us.php | 73 ++++++++++----------- web/scss/_badge.scss | 8 +++ 8 files changed, 77 insertions(+), 73 deletions(-) create mode 100644 view/template/content/_jobs.php rename view/template/{content => page}/join-us.php (67%) diff --git a/content/jobs/project-manager.md b/content/jobs/project-manager.md index 54999e45..131ac019 100644 --- a/content/jobs/project-manager.md +++ b/content/jobs/project-manager.md @@ -4,7 +4,7 @@ order: 3 status: active url: https://hire.withgoogle.com/public/jobs/lbryio/view/P_AAAAAADAAADDIQ-YUHEtOA?trackingTag=joinUs --- -Being a project manager at LBRY requires skillful facilitation and coaching of a menagerie of full-time engineers and community contributors. Additionally, it demands the ability to break down big goals into practical plans and keep track of a wide variety of tasks and small details. +Being a project manager at LBRY requires skillful facilitation and coaching of a menagerie of full-time engineers and community contributors. It demands the ability to break down big goals into practical plans and keep track of a wide variety of tasks and small details. This isn't a typical project management position. LBRY is an open-source, community driven company with few externally driven deadlines and a big focus on transparency. diff --git a/content/jobs/protocol-engineer.md b/content/jobs/protocol-engineer.md index 6dfa63c9..50bb2e6a 100644 --- a/content/jobs/protocol-engineer.md +++ b/content/jobs/protocol-engineer.md @@ -1,7 +1,7 @@ --- title: Protocol Engineer order: 4 -status: rolling +status: active url: https://hire.withgoogle.com/public/jobs/lbryio/view/P_AAAAAADAAADALc6v5NkAOf?trackingTag=joinUs --- The LBRY protocol consists of a [set of APIs](https://lbry.io/api) provided via a daemon. This daemon is comprised of several sub-components, and interacts with the blockchain, wallet, and other remote daemons that constitute the LBRY data network. diff --git a/controller/Controller.class.php b/controller/Controller.class.php index 18720e49..51a95cc9 100644 --- a/controller/Controller.class.php +++ b/controller/Controller.class.php @@ -109,7 +109,6 @@ class Controller $router->get(['/press-kit.zip', 'press-kit'], 'ContentActions::executePressKit'); - $router->get('/join-us', 'ContentActions::executeJobs'); $router->post('/postcommit', 'OpsActions::executePostCommit'); $router->post('/log-upload', 'OpsActions::executeLogUpload'); $router->get(static::CACHE_CLEAR_PATH, 'OpsActions::executeClearCache'); diff --git a/controller/action/ContentActions.class.php b/controller/action/ContentActions.class.php index 66be2eab..c06d9406 100644 --- a/controller/action/ContentActions.class.php +++ b/controller/action/ContentActions.class.php @@ -16,7 +16,6 @@ class ContentActions extends Actions URL_PRESS = '/' . self::SLUG_PRESS, URL_BOUNTY = '/' . self::SLUG_BOUNTY, URL_CREDIT_REPORTS = '/' . self::SLUG_CREDIT_REPORTS, - URL_JOBS = '/' . self::SLUG_JOBS, CONTENT_DIR = ROOT_DIR . '/content', @@ -392,33 +391,21 @@ class ContentActions extends Actions ]]; } - public static function executeJobs() + public static function prepareJobsPartial(array $vars) { - Response::enableHttpCache(); + $jobs = + array_filter( + array_map('View::parseMarkdown', glob(static::VIEW_FOLDER_JOBS . '/*')), + function($job) { return $job[0]['status'] !== 'closed'; } + ); - $jobs = array(); - - $jobs = array_filter(glob(static::VIEW_FOLDER_JOBS . '/*'), function($job){ - list($metadata, $jobHTML) = View::parseMarkdown($job); - - return $metadata['status'] != 'closed'; + usort($jobs, function($jobA, $jobB){ + if ($jobA[0]['status'] === 'active' xor $jobB[0]['status'] === 'active') { + return $jobA[0]['status'] === 'active' ? -1 : 1; + } + return $jobA[0]['order'] <=> $jobB[0]['order']; }); - usort($jobs, function($job1, $job2){ - list($metadataA, $jobHTMLA) = View::parseMarkdown($job1); - list($metadataB, $jobHTMLB) = View::parseMarkdown($job2); - return $metadataA['order'] <=> $metadataB['order']; - }); - - return ['content/join-us', ['jobs' => $jobs]]; - } - - public static function prepareJobPartial(array $vars) - { - - list($metadata, $jobHTML) = View::parseMarkdown($vars['job']); - return $vars + ['metadata' => $metadata, 'jobHTML' => $jobHTML]; - - + return $vars + ['jobs' => $jobs]; } } diff --git a/view/template/content/_job.php b/view/template/content/_job.php index a711697e..74933d2b 100644 --- a/view/template/content/_job.php +++ b/view/template/content/_job.php @@ -1,7 +1,14 @@

- ">

-
-
- -Apply Here - \ No newline at end of file + + + "> + + + +
+ Apply +
+ +
+ +
\ No newline at end of file diff --git a/view/template/content/_jobs.php b/view/template/content/_jobs.php new file mode 100644 index 00000000..ddba2568 --- /dev/null +++ b/view/template/content/_jobs.php @@ -0,0 +1,8 @@ +
+ + $job[0], + 'jobHtml' => $job[1] + ]) ?> + +
diff --git a/view/template/content/join-us.php b/view/template/page/join-us.php similarity index 67% rename from view/template/content/join-us.php rename to view/template/page/join-us.php index c040d428..165da92a 100644 --- a/view/template/content/join-us.php +++ b/view/template/page/join-us.php @@ -70,74 +70,69 @@

Positions

- If a position is marked paused, you are still welcome to contact us. For blockchain, protocol, and application engineers, we will be hiring regularly throughout 2018. -
- - $job]) ?> - -
-

Applying

-

How To Apply

-

- Contact joinus@lbry.io if interested in a position. Please include the following: -

-
    -
  1. A resume, LinkedIn profile, or other resource that would serve as a work history.
  2. -
  3. A code sample. Preferably a link to a public repository for a project you have built or significantly contributed to.
  4. -
  5. One sentence about why you'd like to work for LBRY.
  6. -
+ -

The Process

+

Hiring Process

- We use a 3-step hiring process: + Click "Apply" next to any job listed above to begin the process. We use a 3-step hiring process:

    -
  1. A brief (20-30 minute) non-technical, introductory phone call with either the CEO or CTO.
  2. +
  3. A brief (30 minute max), non-technical, introductory phone call with either the CEO, CTO, or appropriate lead.
  4. -

    A compensated code contribution (4 hours minimum) on the repository you'd be working on.

    +

    + All technical hires are required to complete compensated code contribution on the repository they'd be working on. + Non-technical hires will also be asked to complete a compensated trial task after they apply and complete step 1. +

    +

    + Issues tagged "good first issue" are suitable for this purpose, though you are welcome to work on another issue or even something not filed at all. +

    - + - - + + + + + + + - - - + + + - - - - - - - - + + +
    ProjectProject(s) Position Issues
    lbryProtocol EngineerlbrycrdBlockchain Engineergood first issues
    + lbry (daemon)
    + lbryum (wallet) +
    Protocol Engineer good first issues
    lbry-appApplication or UX Engineergood first issues + lbry-desktop
    + lbry-android
    + spee.ch +
    Lead Application Engineergood first issues
    lbrycrdBlockchain Engineergood first issues
    lbry.ioWeb Developergood first issues(not public)API engineercontact us / apply first
    -

    - We ask all potential full-time contributors to take on a potential issue on the project they'd be working on. Issues tagged "good first issue" are suitable for this purpose, though you are welcome to work on another issue or even something not filed at all. -

    The issue you choose does not necessarily need to be fully completed, and we don't expect a perfect first contribution. Open a pull request as soon as you'd like any feedback from one of our developers. We compensate at or above market rates for all accepted pull requests.

    - For questions or problems with a particular issue, please comment directly on the GitHub issue. For setup or environment trouble, open a separate issue. You can also join #dev in our chat to interact with other community members. + For questions or problems with a particular issue, please comment directly on the GitHub issue. For setup or environment trouble, open a separate issue or email the contact listed in the project README. You can also join #dev in our chat to interact with other community members.

  5. -

    A longer (1-2 hours) meeting with the team members you'd be working directly with, as well as the CEO and/or CTO.

    +

    A longer meeting with the team members you'd be working directly with, as well as the CEO and/or CTO.

Steps 1 and 2 may be completed in either order (i.e. you're welcome to try contributing before the introductory call).

diff --git a/web/scss/_badge.scss b/web/scss/_badge.scss index 197e8d76..d13aca84 100644 --- a/web/scss/_badge.scss +++ b/web/scss/_badge.scss @@ -22,4 +22,12 @@ $badge-height: $spacing-vertical * 3/4; { background-color: $color-info-bg; } +} + +h1, h2, h3, h4, h5, h6 +{ + > .badge + { + vertical-align: middle; + } } \ No newline at end of file