#trying and failing to find entry level web dev work.
Explore tagged Tumblr posts
Text
i rather enjoy being the dumb silly puppy until such point that someone in a discord server needs some investing 201 level financial advice. then the business degree that has branded my soul takes over and i rattle off some john bogle shit about exchange traded funds and lazy investing portfolios in a daze.
like, i am investing fuckin couch change and spare dollars into some robinhood account just because i want to do something with this degree i've otherwise not earned a dime off of cuz it beats going to a casino, but it's really funny to just go Professor Dog and have them be impressed and then go back to barking and such.
#it is infuriating to see like some r/wallstreetbets dummy drop $700k he inherited on intel cuz he thinks he's the 2nd coming of gordon gekko#meanwhile my rate of return is sitting at ~15.5% over the last year which is not GREAT but i could live for years off of 15.5% of $700k#but all i got from this degree was debt and now i'm an unemployed transgender dog girl on the internet with mental health issues#trying and failing to find entry level web dev work.#anyway. BARKBARKBARKBARKBARK.
55 notes
·
View notes
Text
FORUMS!
THEY ALMOST ALWAYS SUCK, AND THAT HAS LESS TO DO WITH THE USERS THAN THE FUCKING DEVS AND MODS.
SEARCH FUCKING SUCKS - I mean way worse than web-search in general. If you are looking for a specific topic, GOOD FUCKING LUCK. Your best bet is to use a suck-ass web-crawler/search like Google if you want to find anything on a god damned forum.
Searches NEVER USE CONTEXT... if I’m on the page for WINDOWS FUCKING 7, then why are results for versions XP, Vista, 8, and 10 appearing HIGHER in the list?
Searches rarely implement TAGS well, especially the ability to CROSS-REFERENCE TAGS. So, if I search the tags #Tomato #Soup #Recipe, I would actually get ALL AND ONLY recipe results for soups that use tomato, NOT EVERY FUCKING RECIPE ON YOU SITE PLUS EVERY PAGE THAT DISCUSSES SOUPS OR TOMATOES RETURNED IN RANDOM ORDER THAT PLACES THE FIRST RELEVANT MATCH SOMEWHERE ON PAGE FOURTEEN OF FIFTY-THOUSAND!
NAVIGATION FUCKING SUCKS - and this makes the shit-sucking search process all the more painful. Less than 1% of forums are designed with LOGICAL SUB-CATEGORY LEVEL AND RECURSIVE SUB-FORUMS that are applicable to the purpose/theme of the forum. If, for example, you are Microshit and you create a user forum (especially to build free crowd-based help as so many companies are doing rather than staffing call centers with trained and experienced individuals who are competent in the technologies they are assisting with as well as the language the customers are speaking...), then you are EXPECTED to create a Super-Forum and split it first by PRODUCT FAMILY, then split the products into Sub-Forums by PRODUCT MAJOR-VERSION (not fucking build number, jackasses! The same goes for fucking Patch Notes), and then, if you aren’t a total douche you will create an ALTERNATE DIMENSION OF SUBDIVISION, this time by ELEMENT or MAJOR FEATURES - which unless you are a fargin-idgit MUST INCLUDE: “INTERFACE/USER-EXPERIENCE”, “BUGS” (and this one subdivides by the NATURE OF THE BUG AS PERCEIVED BY USERS... these bugs are DISEASES, and like diseases they should be NAMED and CATEGORIZED by SYMPTOMS, but you can skip the Latin names like Mnemitis for an Inflammation of the Memory... which is a fair description of a MEMORY LEAK.), “PERFORMANCE”, “INSTALLATION/ACTIVATION/UPDATES”, “PRIMARY-FUNCTION”, and individually listed USEFUL FEATURES with the ability to add subtopics as necessary ad infinitum. (don’t take that to mean spam us with infinite numbers of adverts)
If you’re not already familiar, check out PHP.NET’s online function reference, its like a hybrid between an authoritarian-wiki and an open forum. Each entry is RELEVANT and EASY TO LOCATE, it has ESSENTIAL INFORMATION and CONCISE EXAMPLES, and allows anyone to give direct USER FEEDBACK//NOTES - I cannot stress the importance of this last part enough, LET PEOPLE TELL YOU WHAT THE FUCK THEY THINK ABOUT EACH FEATURE/ISSUE. You don’t have to automatically make them publicly visible, but you are dipshits if you ignore the extremely valuable resource/insight into your customer-base. Too damned many companies make it unbearably difficult for users to give them FEEDBACK, then they bitch when people switch to a smarter product from a company that actually gives a shit. (hey, that’s not a bad slogan... “we actually give a shit”... the word actually serves to chide the competition here... ;p Along the same vein as, “unlike some other Robin Hoods, I can speak with an English Accent.”)
THE MODERATORS FUCKING SUCK - I’m sorry, but you guys do. I understand that you’re mainly trying to keep an amorphous blob of bile and twigs from deteriorating into complete crap... but you are FAILING, and its not your fault... the game was rigged from the start, because they were SHIT from the moment they first went online. You guys suck at your jobs because the JOB SUCKS and that’s because the fucking RULES SUCK. Whomever the fuck came up with this shit needs to have a cheese grater ran along their eyelids for an hour each morning.
THE RULES FUCKING SUCK - so of course they turn the mods into assholes and other posters into fuckwads. There are so many issues here, but I will try to focus on the biggest tossers of all the ideas that went into these digital colostomy sacks:
NO NECROS - first of all, if you can bring the dead back to life you deserve a fucking medal, not to be given shit by peers and admins alike, and it’s not like I’m advocating Necro-Larry for President.. though he really wouldn’t be any more scandalous then what we’ve already had. But, more to the point, DO YOU ASSHOLES UNDERSTAND WHAT THE INTERNET FUCKING IS??? (and I’m not being existential here, we’ll leave the philosophical impacts for the future to reflect on). THERE IS NO PAST, THE INTERNET EXISTS IN THE ETERNAL NOW WE CALL THE PRESENT. That means NO MATTER HOW OLD THE POST IS, PEOPLE WILL STUMBLE ACROSS IT IN THE FUTURE. And it will be JUST AS RELEVANT THEN AS IT WAS WHEN CREATED! Especially since BUGS DON’T STAY DEAD, so why should decriers of old problems be told to shut the fuck up? That’s like saying, “Homelessness? We talked about that once in 1932, stop bringing it up already! It’s a dead issue!” (this is the kind of shit you get from people who want to IGNORE PROBLEMS instead of addressing them - FUCK THOSE PEOPLE, THE GENE POOL IS BETTER OFF WITHOUT THEM!) [wow, if you just read the bold that’s really dark... lol. I’m starting to sound like an industrialist.]
LOCKING THREADS - fucking stupid to begin with, especially in response to necromancy, but lets not forget their monumentally fucktarded cousin, the Self-Locking Thread - what kind of cold war cloak and dagger fantasizing bullshit is this? This thread will self-destruct in 5 seconds! I don’t care if its been 10 years, if the problem ain’t been fixed, then SHUT THE FUCK UP AND GET TO WORK, don’t cry about someone posting relevant information just because you’ve given up hope of ever fixing it... or assumed no one has noticed.
YOU MUST BE LOGGED IN TO POST - that’s kinda like saying you must suck my ass to breathe... it was a shitty idea when some fuckwad dreamed up that god awful movie, and it ain’t gettin any better. Now, I’m not suggesting anons should be treated the same, but ANYONE should be allowed to post FEEDBACK or SUGGESTIONS whether or not they have an account with your fucktarded forum. Google-Tourists have the right to be heard too! If I find your thread by accident (which lets face it, any result in a Google Search is pretty much an accident), and have something to contribute, I should be able to do so without jumping through 60 billion hoops. I don’t want to be a member, but when a Medical Doctor overhears someone giving Awful Medical Advice or finds someone that ISN’T GETTING THE HELP THEY NEED/ASKED FOR, it is their responsibility to become involved! The same goes for any other profession, I may not be “one of you”, but I know what the fuck I’m talking about so listen the fuck up and be grateful I give a shit (unlike many of you). [wow, that came across conceited... lmao]
REVERSE PAGE ORDER - you lazy, half-assed mother fucking programmers! Shame on you. It might seem like a good idea at the time, but this is one of the biggest blunders you can expound on the web. YOUR FUCKING PAGES MOVE, ¡CAVRONE! Do you understand this??? If a user BOOKMARKS A PAGE, they WON’T GET THE SAME PAGE when they reopen it a year later!!! What does it matter? Go back up and reread the bit about the web being TIMELESS... [take a Physics Lesson while you are at it, this is like asking what was before the Universe... there was no time (as we know it) before the universe, therefor there was nothing before it.] So, when I find your forum in a Floogol search and it links me to page 6 when the actual content it matched is now on page 147, I am understandably PISSED THE FUCK OFF... and the first thing I do is curse Larry and Serge, then I realize this one isn’t even their fault.
I’m sure there are a bunch more rules that are written by simpletons for assholes, but that’s enough for now.
TROLLS FUCKING SUCK - even when they not trying to be assholes, they fail miserably at common decency. I swear I am going to kill the next motherfucker who posts “why would you want to ____” as a reply, especially on a Tech Support Forum. It doesn’t even matter whether its my post, or something I stumbled across after 6 hours of screaming at Serge and Larry’s even less than unhelpful online information location apparatus.
MVPs are Worse than Trolls - how the fuck did these dickshits get the job of officially representing the company? They know less than shit about the product they are supporting, and most of the time they suggest installing questionable third party crapware to solve the problem. (Please don’t confuse “the Microsoft MVPs”, who are actually pretty cool and helpful, with the dumbasses that Microsoft calls MVPs on their fucking support forums... these guys barely speak English and haven’t written a line of code in their life!)
And despite an extra row of Microsoft bashing, this wasn’t targeted at their forums any more than Blizzards or any others... ALL FORUMS ARE SHIT!!!!
But, hey, you knew all this already... so who the fuck am I even talking to here?
#Forums#Forums Suck#Bad Design#Bad by Design#Fuck Microsoft#Fuck Google Search#Fuck Trolls#Necromancy FTW!#Necro-Larry for President
0 notes
Link
SitePoint http://j.mp/2t4EVbs
A few weeks ago, I came across a developer sharing one of his side projects on GitHub: a Trello clone. Built with React, Redux, Express, and MongoDB, the project seemed to have plenty of scope for working on fullstack JS skills.
I asked the developer, Moustapha Diouf, if he’d be interested in writing about his process for choosing, designing, and building the project and happily, he agreed. I hope you’ll find it as interesting as I did, and that it inspires you to work on ambitious projects of your own!
Nilson Jacques, Editor
In this article, I’ll walk you through the approach I take, combined with a couple of guidelines that I use to build web applications. The beauty of these techniques is that they can be applied to any programming language. I personally use them at work on a Java/JavaScript stack and it has made me very productive.
Before moving on to the approach, I’ll take some time to discuss how:
I defined my goals before starting the project.
I decided on the tech stack to use.
I setup the app.
Keep in mind that since the entire project is on GitHub (madClones), I’ll focus on design and architecture rather than actual code. You can check out a live demo of the current code: you can log in with the credentials Test/Test.
If you’re interested in taking your JavaScript skills to the next level, sign up for SitePoint Premium and check out our latest book, Modern JavaScript
Defining the Goals
I started by taking a couple of hours a day to think about my goals and what I wanted to achieve by building an app. A to-do list was out of the question, because it was not complex enough. I wanted to dedicate myself to at least 4 months of serious work (it’s been 8 months now). After a week of thinking, I came up with the idea to clone applications that I like to use on a daily basis. That is how the Trello clone became a side project.
In summary, I wanted to:
Build a full stack JavaScript application. Come out of my comfort zone and use a different server technology.
Increase my ability to architect, design, develop, deploy and maintain an application from scratch.
Practice TDD (test driven development) and BDD (behavior driven development). TDD is a software practice that requires the developer to write test, watch them fail, then write the minimum code to make the test pass and refactor (red, green, refactor). BDD, on the other hand, puts an emphasis on developing with features and scenario. Its main goal is to be closer to the business and write a language they can easily understand.
Learn the latest and the hottest frameworks. At my job, I use angular 1.4 and node 0.10.32 (which is very sad I know) so I needed to be close to the hot stuff.
Write code that follows the principle of the 3R’s: readability, refactorability, and reusability.
Have fun. This is the most important one. I wanted to have fun and experiment a lot since I was (and still am) the one in charge of the project.
Choosing the Stack
I wanted to build a Node.js server with Express and use a Mongo database. Every view needed to be represented by a document so that one request could get all the necessary data. The main battle was for the front-end tech choice because I was hesitating a lot between Angular and React.
I am very picky when it comes to choosing a framework because only testability, debuggability and scalability really matter to me. Unfortunately, discovering if a framework is scalable only comes with practice and experience.
I started with two proof-of-concepts (POCs): one in Angular 2 and another one in React. Whether you consider one as a library and the other one as a framework doesn’t matter, the end goal is the same: build an app. It’s not a matter of what they are, but what they do. I had a huge preference for React, so I decided to move forward with it.
Getting Started
I start by creating a main folder for the app named TrelloClone. Then I create a server folder that will contain my Express app. For the React app, I bootstrap it with Create React App.
I use the structure below on the client and on the server so that I do not get lost between apps. Having folders with the same responsibility helps me get what I am looking for faster:
src: code to make the app work
src/config: everything related to configuration (database, URLs, application)
src/utils: utility modules that help me do specific tasks. A middleware for example
test: configuration that I only want when testing
src/static: contains images for example
index.js: entry point of the app
Setting up the Client
I use create-react-app since it automates a lot of configuration out of the box. “Everything is preconfigured and hidden so that you can focus on code”, says the repo.
Here is how I structure the app:
A view/component is represented by a folder.
Components used to build that view live inside the component folder.
Routes define the different route options the user has when he/she is on the view.
Modules (ducks structure) are functionalities of my view and/or components.
Setting up the Server
Here is how I structure the app with a folder per domain represented by:
Routes based on the HTTP request
A validation middleware that tests request params
A controller that receives a request and returns a result at the end
If I have a lot of business logic, I will add a service file. I do not try to predict anything, I just adapt to my app’s evolution.
Choosing Dependencies
When choosing dependencies I am only concerned by what I will gain by adding them: if it doesn’t add much value, then I skip. Starting with a POC is usually safe because it helps you “fail fast”.
If you work in an agile development you might know the process and you might also dislike it. The point here is that the faster you fail, the faster you iterate and the faster you produce something that works in a predictable way. It is a loop between feedback and failure until success.
Client
Here is a list of dependencies that I always install on any React app:
Package Description redux Predictable state container. react-redux Binds Rreact and Redux together. redux-thunk Middleware that allows you to write an action that returns a function. redux-logger Logger library for Redux. react-router Routing library lodash Utility library chai (dev) BDD, TDD assertion library for node. sinon (dev) Standalone test spies, stubs and mocks. enzyme (dev) Testing utility for React. nock (dev) HTTP mocking and expectations library for Node.js. redux-mock-store (dev) A mock store for testing your Redux async action creators and middleware.
Some people might tell you that you do not always need redux. I think any descent app is meant to grow and scale. Plus tools you get from using redux change your development experience.
Server
Here is a list of dependencies that I always install on any Express app:
Package Description lodash joi Object schema description language and validator for JavaScript objects. express-valiation Middleware that validates the body, params, query, headers and cookies of a request. boom HTTP-friendly error objects. cookie-parser Parse Cookie header and populate req.cookies. winston Async logging library. mocha (dev) Test framework for Node.js & the browser chai (dev) chai-http (dev) HTTP response assertions. sinon (dev) nodemon (dev) Watches and automatically restarts app. istanbul (dev) Code coverage.
Building the App
I start by picking a screen that I want to develop and list down all the features the user has access to. I pick one and start the implementation.
After a screen and/or feature is developed, I take some time to reflect on the added code and refactor if needed.
Example: The Home Screen
Let’s illustrate everything that I said above with an example. I develop all of my screens and features by considering the front-end and the back-end as two separate entities. I always start with the front-end, because it helps me know exactly what needs to be displayed. It is then very easy to head to the server and implement the database model and add the business logic.
First, I write down a feature description and add a bunch of scenarios to it. Here’s an example for the purpose of the article:
Feature: In the home view, I should see my name in the header and a list of my boards. Scenario: I can see my name in the header Given I am on the home Then I should see my user name in the header
With this basic scenario in mind, let’s look at how I’d work on the home view.
Client-side
Using the Component-Driven Development (CDD) methodology, combined with BDD, helps split views into small components, making sure they are decoupled and reusable.
First of all, I build a static page with mocked data written in plain text and I style the page with CSS.
Second, I test that:
The component renders correctly
Props logic is handled correctly
Event listeners (if any) are triggered and call the appropriate methods
The component receives state from the store
Finally, I create a Header User component and container and refactor the data that I mocked earlier in the Redux module initial state.
Since I am using the ducks structure, I can focus on one view at a time. If I notice that two views share the same data I can lift up my state and create a higher module that holds all that data. The final Redux state of the app consists of all the data I mocked.
Once all my scenarios pass, I look at my component and refactor it if I notice that it is very similar to another component that I already created. I can either start by refactoring the old component before adding the new one or I can just add the new component so that I can fail fast and think about a more elegant solution later.
I did not waste my time guessing or thinking about what the user needed to see. I can just build my view then decide on what data needs to be displayed. It is easier to react to the design and think while building rather than trying to think in advance about what needs to be displayed. In my experience, it sometimes adds a lot of overhead and unnecessary meetings. As long as you keep reusability in mind you will be fine.
Server-side
The Redux store model that I come up with is crucial, because I use it to design my database and then code my business logic. Due to the work done on the view, I know the homepage needs to fetch the user’s name and boards. I noticed that I have personal boards and organization boards which means that I can separate these two entities and have two different schemas. The main goal is to work with normalized data and have all the heavy lifting done by the server so that I do not have to think about it.
CRUD (create, read, update, delete) is the basic set of operations any app needs, but I do not blindly add them to all of my routes. Right now, what I need to do is fetch data, so I just implement read. I can then write a Mongo query that adds a user to my database later.
Conclusion
I hope you enjoyed my approach to building full-stack applications. My main advice is never be afraid to do big refactors. I can’t count the number of times I changed my app file structure just because I knew it would not be scalable: details like the folder name, the folder depth, the way they are grouped by feature always make the difference.
I am never afraid to make mistakes because they help me learn: the faster I fail, the faster I learn, the faster I grow. If I make 100 mistakes and I learn from them, then I know 100 different ways of avoiding those errors again.
When I notice something that I don’t like, I fix it right away or in the next few days. Since I test my code, I can quickly tell whether or not I am breaking functionality that works.
Einstein said that “once you stop learning you start dying” and I believe that once you stop making mistakes you stop learning. Fail, learn and keep living.
What are my future plans?
I keep working on my project because it is always a work in progress. Just like a real app, it is in continuous change. My plans are to:
Move my monolith project to a mono repo with a server based around microservices. I came up with the decision while working on my HipChat clone. I noticed that I was duplicating a lot of code for the same authentication logic: microservices were the obvious choice. Ctrl-C, Ctrl-V are not your friend in programming.
Deploy micro services on Kubernetes.
Move the HipChat clone to the mono repo and build an app with Vue.js.
Start looking into Electron and React Native.
Add continuous integration (CI) and deployment with Travis.
Learn TypeScript.
How do I manage to keep up?
I have a very strict routine:
Monday through Thursday: practice algorithms on HackerRank and GeeksforGeeks, write documentation for my weekend work, learn new languages, read technical books, and listen to podcasts.
Friday through Sunday: work on new features and/or fix bugs on my apps
I don’t spend all of my free time working on these. During weekdays, 1-2 hours per day is rewarding enough. The weekend, though I do not restrict myself. As long as I have time, I’ll work on the project: I could be writing code, experimenting with a tool or just reading documentation.
Coding is an art and a craft and I take pride in writing the least code possible that works, while keeping it performant and elegant.
Read next: The Anatomy of a Modern JavaScript Application
http://j.mp/2sv4aqq via SitePoint URL : http://j.mp/2c7PqoM
0 notes