Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!


Node.js code review / tutoring / advice
New on LowEndTalk? Please Register and read our Community Rules.

All new Registrations are manually reviewed and approved, so a short delay after registration may occur before your account becomes active.

Node.js code review / tutoring / advice

joepie91joepie91 Member, Patron Provider

The original information is here, but I've copypasted it below for reading convenience. Posted with permission of forum staff.


Code review

I will review your codebase, and make suggestions on how to improve the readability, maintainability, reliability and security. I will refactor small parts of your code to explain and demonstrate techniques. The code review is in stages - I start out with formatting issues, move on to modularization, specific security issues, and so on.

Note that I'm a perfectionist - I'll keep suggesting and explaining improvements until there's nothing left to improve. By the time the code review has completed, you will have a noticeably cleaner and more reliable codebase.

I do not strictly enforce any style guides - I value actual real-world readability over "following a list of rules". I will also always provide rationale for any suggestions, no "just because". That being said, I am very direct - no sugarcoating, just getting things done as efficiently as possible. My main goal is to teach you how to write better code, not to just change things around.

(Code review is available on both an hourly basis, and on a fixed-price basis (depending on lines of code and complexity). More information about payment is below.)

Tutoring

Perhaps you just want to learn Node.js, or a specific technology or specialization - promises, scraping, and so on. That's possible too! I will help you learn Node.js in whatever way works best for you. Whether that is pointing you in the right direction for self-directed learning, or explaining things step-by-step. I will adjust my teaching style (and language use) to whatever works for you.

It doesn't matter whether you have prior experience. Whether you're coming from another language or just have no experience with programming at all, I'll be able to teach you. That being said, you must be motivated to learn.

(Due to the wide variety of different teaching styles, tutoring is only available on an hourly basis. More information about payment is below.)

Advice

Maybe you just need the odd bit of advice every now and then - troubleshooting, explaining small things, or even just rewording documentation of a third-party library so you can understand it better. That's possible - you can keep me on a retainer/deposit for when you get stuck, and I'll help you out with any topic I know about :)

I have experience with a wide array of usecases - especially unusual edge cases with little or no documentation - and can generally adapt to whatever's needed. Some examples of this are writing an adaptive bruteforce/spidering script for a search engine, extensive experience with Tahoe-LAFS, and so on. See also my specializations below.

(Advice on retainer/deposit is only available on an hourly basis. Note that for this, 'rounding up to an hour' and the minimum deposit still apply, but refunds of remaining hours are not possible. More information about payment is below.)

Method

I generally do code review and tutoring over XMPP or IRC - providing snippets of code where needed using a Gist. I can do screensharing (via TeamViewer or an open-source screensharing tool of choice), but I've found that text-based explanations generally work better.

I suggest trying text-based explanations first - we can always switch to screensharing later if text doesn't work out for you.

Specializations

  • Application security
  • Code maintainability and modularization
  • Web-based applications
  • Promises, map/reduce/filter, data processing
  • Scraping - if it's accessible, I can scrape it
  • Unusual architectures and experimental technologies, with little to no third-party documentation
  • Distributed architectures

Experience

  • 10 years of (backend) software development; primarily PHP, Python, Node.js
  • 13 years of frontend development; HTML, CSS, JS (and third-party libraries like jQuery)
  • A wide array of open-source projects
  • A number of published Node.js modules on npm

Payment

Available payment methods include PayPal, Bitcoin, SEPA, and potentially others. My hourly rate generally ranges from 25 to 50 EUR/hr, depending on factors like project complexity, ease of communication and so on.

  • Fixed price: 50% deposit paid up front, other 50% after completion. Price is based on LOC and expected complexity, and will be set in stone after initial agreement - no later changes.
  • Hourly rate: upfront deposit in 10 hour increments - after 10 hours, a deposit for the next 10 hours, and so on. Remaining hours after completion are refunded. Note that time is rounded up per hour, regardless of the actual amount of work performed during that hour.

My rates are affordable, so don't hesitate to ask!

For hourly-rate payment, the deposit increments can be decreased if you're on a particularly tight budget. For example, you could pay a deposit for 5 hours at a time. Note that an upfront deposit is still required.

Contact

  • E-mail: [email protected]
  • XMPP: [email protected]
  • IRC: joepie91 on Freenode (other methods preferred though - it's easy to lose track of PM windows)
  • ... or send me a PM here! Questions in the thread are also welcome, of course.
Thanked by 1ehab

Comments

  • edited May 2015

    nvm

  • Only available for node.js? I'll be contacting you shortly to review something.

  • joepie91joepie91 Member, Patron Provider
    edited May 2015

    @KwiceroLTD said:
    Only available for node.js? I'll be contacting you shortly to review something.

    Currently, yeah. PHP is pretty much just a total mess, and no matter how much code review and refactoring you do, it will always remain a mess to some degree (eg. proper modularization of code is really hard, if not impossible). What is generally considered "good code" in PHP-land is still bad, really. You end up with either overabstraction or tightly coupled procedural code.

    Python just annoys me, so I've chosen to stick with Node.js - a language (Javascript) that I know well, a sane ecosystem around it, plenty of ways to write maintainable code, and generally the code quality I encounter there is at least good enough to understand what's going on with some reading :)

    Thanked by 2KwiceroLTD perennate
  • ehabehab Member

    i liked how you presented yourself if i was a manager i seriously think about you using your nodefu, may be in touch in future. Good luck for now.

    Thanked by 1joepie91
  • joepie91joepie91 Member, Patron Provider

    I noticed that I forgot to link a few things in the version on here, but I can't edit my original post because of the CloudFlare WAF going crazy at me... so here are the links in question (both from the 'Advice' section):

  • @joepie91 said:
    I noticed that I forgot to link a few things in the version on here, but I can't edit my original post because of the CloudFlare WAF going crazy at me... so here are the links in question (both from the 'Advice' section):

    Maybe work with LET on the WAF

  • Good luck joepie, I always enjoy your posts, very insightful :)

    Thanked by 1joepie91
  • joepie91joepie91 Member, Patron Provider

    @TinyTunnel_Tom said:
    Maybe work with LET on the WAF

    Heh. That's probably just a matter of decreasing the sensitivity slider a little :)

  • deadbeefdeadbeef Member
    edited May 2015

    @joepie91 said:
    proper modularization of code is really hard, if not impossible

    Namespaces + PSR-4 + composer for handling the modules a la npm, problem solved ;) If you're feeling funky, you can add some IoC library to automate things a bit as well.

    Edit: Good luck with sales, curious how LET responds to your pricing.

  • joepie91joepie91 Member, Patron Provider
    edited May 2015

    deadbeef said: Namespaces + PSR-4 + composer for handling the modules a la npm, problem solved ;) If you're feeling funky, you can add some IoC library to automate things a bit as well.

    I'm aware that modularization approaches exist in PHP, they just don't work out quite as well. They require a considerable amount of boilerplate (although not as much as in eg. Java), the isolation tends to be not quite as good. IoC and DI further complicate things, and make code hard to reason about.

    Composer and the 'PHP library ecosystem' have a whole host of problems of its own - for example, semantic versioning is rarely used (correctly), dependency conflicts are easy to run into with Composer (from what I remember anyway), and so on. All of which ends up seriously harming proper modularization of things.

    If the cost of writing, publishing or using a third-party dependency is too high, that will necessarily lead to monolithic frameworks, and that is exactly what happens in PHP. Python has the same problem.

    EDIT: Plurals are hard

    Edit: Good luck with sales, curious how LET responds to your pricing.

    Thanks :) I'm curious also. It's pretty low for freelance work in general, as far as I've been able to determine.

    Thanked by 1deadbeef
Sign In or Register to comment.