TL;DR - Decide who is your ideal client. Identify their 1) common pain points and 2) which online communities they participate in (may or may not be HN). Write advice that will help them with their pain points, and share it in those communities. This will in effect advertise that you know how to solve their problems. Don't be too modest to say you're available for consulting projects, and make it easy for people to contact you.
PS - As someone else suggested, you may want to add your contact info here. There's a big overlap between people who browse HN and people who need and have the budget/authority to hire contractors.
- https://getbetterluck.com/ (one of our own internal tool)
You are on the front page of arguably the PREMIER network of people with access / need for technologists.
Also, get a stack of business cards and start going to local business networking events. Look up the local Chamber of Commerce, search meetup.com, and see if your county has any small business development classes or lunches you can attend.
That's my short-term advice. I'm still trying to figure out what to do in the medium- and long-term myself.
Your clients could or could not know much about the software development life cycle, and how to evaluate if you have the skills to meet whatever needs they may have. Perhaps you could network with existing freelancers who are too busy to take on new clients.
Spitballing here, but maybe working on or creating an OSS project could give you credibility to those freelancers. Or maybe you could work under a successful freelancer to establish yourself in the space. Maybe the site you built will lend you credibility to others.
Alternatively, if you have business ideas you'd like to try out, you could try working for yourself and creating your own income. Also, it doesn't hurt to sign up for LinkedIn. It might not be immediately beneficial, but once you find your first client, maybe they'll write you a glowing review.
> having worked remotely for the past 5 years has really limited my ability to build a network. I don't have LinkedIn and even if I did, it's more meant for building a network than for finding a quick gig.
Yeah, it's hard to build a network. Time to start putting in the effort. I sense a tinge of can't-do attitude here (but obviously, the tone interpreted in written communication is subjective) -- I don't know if it's the case or not, but a can't-do attitude is not what you want to have for freelancing work. Your lack of a network, or having an expansive one, is ultimately the result of your personal decisions. You have to be willing to give it a shot. If networking sounds not fun, or like a chore and otherwise unpleasant, you're probably better off just working for a big tech company. Personal skills are far more important in freelancing and entrepreneurship when compared to standard full-time employment.
Best of luck. Now go out there and kick some ass.
You seem to have experiences, which is excellent. In the short term, if you're in the throes of an emergency, perhaps get some help from love ones while you get your feet back on the ground.
Looking for a project under stressful circumstances feels like it might create an uncomfortable environment to do good work and sustainably remedying what you're going through.
Good luck, whatever route you choose!
In my experience, face time matters if you are from place no one knows about. There is a reason most engineering talent is in and around Silicon Valley.
I am not sure about github or other technical profiles as the people who make the decision of hiring you never visit github or understand code. I am taking about the CEO of a small company who will hire you and not the cool SF startup that we read more often.
Companies want to reduce risk, remote increases it because of the unknowns. If I were you, I would again start with upwork and similar freelancing sites. The shady things you hear are distractions and everyone has a different experience. There is a reason the upworks of today still exist and are doing business.
I wish you the best! :)
So your options are really limited: Credit card debt? Family debt? Low paying jobs?
In the longer run, there is no way around building a network. If you want high quality work, you have to build a network. It's like some guy coming to a big city and want to hit the high-end clubs, meet with high-quality people and get back home with a 9/10 girl to sleep with. Not gonna happen.
He's probably going to fail at entering the clubs (first step) and then blame it on the clubs having bad policies and stuff. If you want high paid work, you have to establish yourself first.
Establishing yourself in a certain market/niche take years of hard work on establishing yourself. It can happen on different dimensions and will depend on your style (blogging? Forums? Conferences? How about writing a book? Contributing to a popular open source project? How about becoming a main contributor of a popular open source project?).
Good luck. Tough times but I'm pretty sure you'll come out of it and it'll shape your perception down the road.
I was applying to both remote and office-based offers, but only in my location (which suffers from lack of good job offers currently-most of them are dedicated for students with low payment).
It took me 2months to finally land in a new workplace)and it is remote which was my very dream form of working-I've done some remote freelance in the past and loved it)
I've applied to dozen job offers, most from LinkedIn, some from remote portals mentioned by other users in this thread.
In the end I've got a job from a job offer that was on stackoverflow, so maybe check there because I don't see anyone mentioned this as a source of job offers.
Keep on trying, as You can see it won't magically come to You without any action. Good luck!
Building a brand is hard, it takes a long time, but it's worth a lot and is monetized over time.
Paying someone means accepting you're going to pay 10-15% or whatever price to someone like 10x consulting or some other sort of agency to find you work. This can be the right option if you aren't in it long-term or just plain don't want the hassle of brand-building.
Which of these do you think works the best? In my experience its the former by far (all of the people who have sought me out had the most reasonable and interesting project.) But I do understand that in the beginning you're going to have to grind to get anywhere (share your work where ever you can) which means putting in A LOT of unpaid hours doing research and development for new stuff. It's worth it though.
If you keep working on your portfolio and learning new skills then you will never have to look for work again. Just think of the security that would bring: To know that if anything happened to the company you're working for (or you get fired) you can sign a new contract the very same day. Would be amazing for most devs... But in my experience this can only happen if you specialise.
The problem is, there is too much competition for the skills you listed. As an example, if you were to learn some skills in say - big data or AI then you would be much more competitive. I know that's a big ask but one thing I think is true about the tech industry is that anyone can succeed if they put in the effort. In the end its a meritocracy, so the good developers quickly go to the top and the bad ones are weeded out... Remember companies ARE looking for good developers all the time, you just have to make yourself heard and do something worth showing (this doesn't necessarily mean applying to a company. Get creative. There are a lot of ways to stand out)
Good luck OP
More short term, I would definitely try to find a single gig, maybe via some subcontracting or via sites like toptal, just to build some runway and to make sure the techniques described above have enough time to bear fruit.
I have something else to add. Once you do get a gig and start on it, budget some time and money to grow your network. There's no real substitute for a real circle of influential and well connected contacts in my experience. Perhaps attend conferences related to technologies that you're interested in, participate on online fora (mailing lists, stack overflow etc.) to help people with their problems in exchange for visibility, get a linkedIN profile, go to local user group meetups (or atleast attend nearby ones less frequently if you're in a city that doesn't have many such groups).
I've had a few coding tasks completed by Redditors on this subreddit.
It's flexible part-time remote work, and you don't have to find clients yourself.
I would suggest you to have a LinkedIn profile and update it regularly and start building the network now.. It is never too late.Meanwhile, for the job which you cannot wait for, there are many remote job portals like remoteok , weworkremotely , remote.co ,remotive, workingnomads, WFH.IO ,dribble etc which you can try .. But I would suggest you check angellist (angel.co) which offers jobs from mainly startups all over the world.
Another tip : Apply to local companies which are offering full time jobs , attend the interview and try to convince them to offer you a work from home based role ( It might work out, you never know).
Hope you find a suitabLe job real soon.
All the best ! :)
Meanwhile -- can you do canvas/d3/realtime charting type of stuff?
Once you pass their screening process, you will get jobs in one or two weeks
Of books that are more on the craft of programming, "Refactoring" (Also Fowler) is good. And I enjoyed "Practical Common Lisp" by Peter Seibel too.
In general, I suspect that the value of a book has more to do with where the reader is, than where the book is.
One of the best books on programming style and function, backed up with actual research for the recommendations.
It contains this gem , which is pretty much how every program works. I occasionally riff off this diagram for work as an inside joke with myself.
* Fred Brooks - Design Of Design
* Fred Brooks - The Mythical Man month
* Eric J. Evans - Domain Driven Design
* Design Patterns: Elements of Reusable Object-Oriented Software
* Kent Beck - Extreme Programming Explained
* Kent Beck - Planning Extreme Programming
* Michael C. Feathers - Working Effectively with Legacy Code
* Daniel Kahneman - Thinking, Fast and Slow
[EDIT] Correct the author for legacy code
Learning Ruby itself was a huge influence to me; hadn't considered that a language should be designed to make programmers "happy", as Matz said. "Confident Ruby" was one of several books that had this human-happiness focus. "Confident" is broken down into patterns, many of which can be found in books like Sandi Metz's POODR, but as a semi-experienced programmer, Grimm's way of writing really appealed to me.
Even the title of the book itself was revelatory to me. The idea that the functions and methods and conventions we create should be rooted in a "confident" mentality (such as the old adage of being promiscuous in what a function accepts, and strict in what it returns) really improved the way I designed code. Not just in terms of technical proficiency, but with less cognitive burden, which ultimately leads to the elegant simplicity we desire in our work.
(in roughly chronological order. As you can see from the chronology, it took me a long time to start to like OOP.)
After reading I began to think about programming as an algebraic transformation from one system to another, in doing so radically reduced the amount of errors I made.
This helped me break my analysis paralysis when it came to figuring out how to organize my code.
Of course, in recent times, it has become all that much more relevant to me as I began working in data science/engineering space. Even though it's not specifically about code structure for a particular language, it addresses a common flaw in most programming approaches that seem to treat all functionality as a servant of the current context which is strange and silly and not how anything works in physical information processing so why do it in code?
A somewhat common pattern that maps well to FBP is "Railway Oriented Programming." Though FBP in full takes this well beyond simply shooting errors along in sideband to the happy path.
It's essentially a list of anti-patterns to avoid. But crucial to it is the idea of clarity and avoiding misinterpretation by either human or compiler.
I'm still trying to achieve everything he advocates, but what I've managed so far has been extremely beneficial.
I did love Design Patterns a lot though. Purely Functional Data Structures by Chris Okasaki was also really useful for Haskell, as was Real World Haskell.
Programming Prolog probably had a bigger influence on my Prolog than the other books, even though I read Art of Prolog and Prolog Programming in Depth first. Especially the latest edition, it's a really beautiful book.
I'm not sure I would recommend it today, but at the time I read it, in the mid 2000s, it did change my view on these "unmaintainable" technology stacks. I later came across the fusebox architecture/pattern, originally from ColdFusion - and realized that many PHP programmers had skipped some history, ending up reinventing code structure, sometimes badly.
Note that fusebox has grown and changed, I'm mostly talking about the fundamental ideas, and I don't think the later "port" to using XML was a very elegant or good idea. For those interested, see:
https://en.wikipedia.org/wiki/Fusebox_(programming)#Fusebox_... and most of the rest of that page.
The best way to write better code is to avoid writing it badly in the first place. But you need to know how to write bad code to write code better than it. Definitely a different way of learning how to write good code, also a good laugh for anyone in industry.
Also, Scott Meyers's books were very helpful.
The design of the D standard library has also been very influential on my code (Mainly convincing me of the benefits of ranges over iterator)
It came along at just the right moment in my career, when I was struggling to understand how I could build things in a more elegant way. I picked up the book thinking I was going to learn about some esoteric design pattern, and came away with a much better understanding of the languages I was using and all of the other design patterns I thought I had learned about previously. It's clear, concise, and focuses on concepts over specific tools and libraries, but most importantly it's practical - it has real, practical code examples and explains how to actually build an object-oriented system. It's such a stark contrast with most presentations I've seen of the Gang of Four patterns and of SOLID, which usually come with really weak examples that aren't helpful or motivational.
Everything snowballed from there. I started using composition a lot more than inheritance, I started identifying problems with side effects and eliminating them, I started writing real unit tests, I was able to better critique other peoples' code. I felt like I was finally using the tools available to me in the way they were supposed to be used.
What's funny and satisfying to me is following the author's blog and seeing that he has since moved on to focus primarily on F# and functional programming, which I naturally started to do myself after more practice with the concepts in his book. Once you start decoupling things well, and you've built a few systems big enough that you have trouble finding the actual implementation of your IWhatever and an AbstractSingletonProxyFactoryBean actually does solve your problem pretty well even as you realize the insanity of it, the encapsulating borders of classes and the need to assign everything to a noun start to feel more like a hindrance rather than a guide.
That said, I still think that most of the world's code written in object-oriented languages would be better off if everyone using them had brief, practical training to understand the value of specifying the behavior of an object through the interfaces it depends on, giving it other objects that implement those interfaces right when you create it, and doing all that creation up front (or specifying other objects that can defer that creation to later). I still see so much C# code from developers at all levels who clearly create classes only because the language offers it and it seems like the right thing to do, randomly jamming methods and fields into classes with names vaguely related to the domain, calling static methods to access databases and external services, and proudly adding unit tests for their one loose little function that mushes strings together. I push this book as hard as I can on junior devs.
Why? Because we software engineers can learn a lot from the hardware guys. Almost every piece of software I write these days contains some finite state machines (technically, every program is a finite state machine, where the binary string that makes up all your variables at a given point in time is one state, that insight alone is valuable, but I mean with explicit states in the code) - in fact, they often make up the core structure and uphold some strong invariants that make reasoning about the code simpler. And if one finite state machine does not do it, then you can nest them and keep all the benefits.
I would assume all the best knowledge could be found online for free by now.
Almost four years later, we've raised a couple hundred thousand in equity and grants (mostly the latter, happily), and I'm working full-time on it. Equity is from Intel Capital and grant awards are from Stanford, The Tech Museum of Innovation, and NewSchools Venture Fund (a nonprofit backed by various SV family offices).
I will say that there is lots of luck in where posts end up. My second post about BeeLine Reader when we released our Chrome extension hardly got any attention. This was a big surprise, given how popular the (very alpha-version) bookmarklet had been.
original post: https://news.ycombinator.com/item?id=6335784
current website: http://www.beelinereader.com
We're looking for a rails dev and a dev with PDF experience, BTW! Email developers@ ..
I must say I never expected this amazing reaction from the community.
-  https://news.ycombinator.com/item?id=13170837
-  https://www.robinwieruch.de/the-road-to-learn-react/
Paying customers now include consultants, journalists, realtors, insurance companies, and others! There are few developers who use it because it saves them time, but they're the exception.
My actual most visited website is one that has hit the front page, but not because of my "Show HN".
We got some awesome customers (including some big names) from our HN launch, and it kickstarted out growth. If I remember correctly, we finished out the week at about $4k MRR... nothing compared to now, but at the time it felt awesome to be making money.
We've come a long way since then, but our Show HN was a great way to kick things off!
Since then I have released version 2 which has the ability to add fx to the instruments, use MIDI devices and lots more. It gets a few sales a week with traffic still coming from those music sites.
Over time I got 60k+ downloads and sold it for $8.5k :)!
Original link: https://news.ycombinator.com/item?id=7950866Story: http://www.germanespitia.com/habit-streaks
Project: http://symbolflux.com/projects/tiledtext [video]
Original Show HN: https://news.ycombinator.com/item?id=5306155
I was in college then and found making a well formatted resume a huge pain when I was applying for internships. I met my Co-Founder also via that particular post, and went full time on it after passing out of college.
We are bootstrapped, pay ourselves well and work remotely. Not sure if that qualifies as a 'big' success, but we receive these kind of comments from our users that make us super happy - https://www.resumonk.com/testimonials
By now largest streaming search engine in the world at Alexa/Similarweb Top ~#4700 global with around 12 million unique visits per month. Not too shabby all around.
Launch post: https://news.ycombinator.com/item?id=9005641
It helped us realize that a web-based version of our "CodeAcademy for Excel" product wasn't going to cut it. We built an integrated version that actually lives inside of Excel and won a contest with Microsoft.
I talk a little more about what happened here:
The project went from 50 to 550 stars overnight, eventually reaching 3,000-something stars when the hype died down. (it's now at ~14,500 stars and growing)
That submission kickstarted my career. Among other things it led to me speaking at over 20 international conferences, to being featured in Forbes Austria and to the privilege of being employed as a full-time open source developer. (which eventually led to the creation of styled-components)
I wrote a bit more about my journey on my blog a while ago too in case you want the longer version: https://mxstbr.blog/2016/12/a-dream-come-true/
It's been an awesome ride and I wouldn't be where I am without HN!
Show HN Link: https://news.ycombinator.com/item?id=6046227
Status: Still growing, almost 100k users, vibrant leaderboards
Project 2: CLMapper Chrome Extension (https://chrome.google.com/webstore/detail/clmapper/omonmigal...)
Show HN Link: https://news.ycombinator.com/item?id=4324884
Status: Unmaintained. Reached peak of over 4k users, now under 2k and decreasing
It was on the homepage for around 24 hours I think. We had ~500,000 unique sessions during the first month after the launch. Hacker News played a big part in that.
We stopped actively working on the project, but it's still being used by more than 100,000 people every month.
I wrote a little case study about the whole thing here - http://codetree.co/case-studies/movieo
A few of them rank on google and get consistent traffic. There's definitely a lot of randomness in getting to the front page. If I were to do it again I think I'd collect emails or have some kind of plan for the traffic.
On this day, it was also featured on Product Hunt and The Next Web leading to around 30k uniques across 2 days. Traffic is now nothing like that unfortunately.
One nice upside is that when I launched, it was picked up by a manager at BT Shop, a fairly large online electronics store in the UK, and I have released a variant of the app which uses their own affiliate scheme and branding. They've integrated this into one of their category pages at https://www.shop.bt.com/category/cables-and-adapters,cables/....
Response was great: lots of sign ups and feedback, but I haven't had time to do anything. Started a new job and moved cities. Everything is open-sourced if anyone wants to take a crack: https://github.com/tmm/notational
Subscribers increasing slowly but steadily. ShowHN didn't lead to any direct sales as far as our reporting shows but doing a "ShowHN" is something of an internal milestone for us and the comments have been interesting a good motivational boost. Hopefully have more to Show HN in the future!
Led to a large traffic spike, and attention from a company that would acquire it roughly 18 months later. The team has grown from 3 to 100+, with over 1m registered users. Although the domain has changed and it looks like nobody bothered to keep the original registered ()
Not even one upvote though. Do any of these posts get on the homepage organically?
LE: 2nd (and last) try: https://news.ycombinator.com/item?id=14841172
The traffic bump and feedback was motivating and helpful to know I was on the right track with my content. I also learned there are some comments you just need to ignore and focus on your own vision :)
edit: my traffic was lower than I originally remembered, it was ~5k per month, not 25k in mid-2014
Show HN Links: https://news.ycombinator.com/submitted?id=peterburkimsher
Summary: Chinese-English word-for-word translator for education.
Result: 16 points, 4 comments, still no idea how to market it.
Basically, I've built this simple project to see if there was any commercial interest in building rest apis using mock data, and I am almost certain that the answer is no - which is fine by me, i'm waiting for the next idea.. :)
Edit: By the way, besides simple SEO with google, I haven't bothered doing any marketing at all with this project, because I'm being mostly lazy, also because if the idea was any good, it should (hopefully) had success initially, and also because I suck at marketing..
Besides the traffic increase, the repo trended on Github and now we have +1,400 stars.
It was up for a nice 24 hours and while I got a huge amount of traffic (10,000 page views) it resulted in only 100 accounts.
I'm not giving up though - I'm still constantly improving it and it has come quite far since the first Show HN version :)
I submitted a Show HN the other day for a natural language chatbot that gives harm reduction info about drugs and it pretty much went nowhere fast. Got way more traffic from being on the front page of reddit r/drugs (and arguably a more useful demographic)
To the people asking, I definitely think there is a high amount of luck getting anything on the front page of HN. Just has to be right time, right place, but it's inspiring to read about people who have seen their businesses launch, in part, from that brief exposure.
tl/dr: HN provided a nice boost, but websites don't grow if you don't feed them.
Backstory: ~5 years ago I started driving a taxi, for fun & adventure & freedom. And to support myself, while trying to figure out how to finish recovering from a head injury . After 8 days I made an account on kuro5hin.org (k5) & started blogging about my experiences.
At first I was just trolling k5 user "Zombie Jesus Christ", who had grand ambitions to help people, but was handicapped by a history of mercury poisoning -> mental illness. My point in being 'TaxiCabJesus' on k5 was to show that it's the little things that count. After a 3.5 years I'd learned a lot about what people actually experience (which I hadn't appreciated due to my upper-middle-class upbringing), and was forced into retiring from the taxi driving gig...
One day kuro5hin.org went away. K5's absentee founder Rusty hadn't prepared for a datacenter move, and the site was lost. I posted in HN submission RIP kuro5hin that my story "Electronic Taxi Dispatch, v1.0" was last to post , and one of you responded that you appreciated my k5 submissions & encouraged me to re-post them at a site of my own.
I still intend to write a Taxi Wars trilogy: A New Hope, The Vultures Strike Back, and Return of the Drivers. I also have some other stories to tell. Retrospectively I realized that I was learning about the various 'predicaments' that people find themselves experiencing. Draft titles include:
The Predicament of 'old people' / Ordinary Rendition: The Public Servants' Quagmire / the predicaments of doctors and patients
I joined Toastmasters several months ago. Recently I gave a speech that's based the 'predicaments of doctors and patients'. It went over pretty well, which was motivation to work on my little site...
The project: https://urlroulette.net/
I actually wrote a post about being on the HN front page: https://hackernoon.com/urlroulette-24-hours-on-hacker-news-e...
It's also available to read for free online (https://leanpub.com/the-tao-of-tmux/read).
tmuxp (https://tmuxp.git-pull.com), a tmux session manager, gained over 1k stars over the years.
vcspull (https://vcspull.git-pull.com), a repo sync tool, compare to myrepos. Received a lot of valuable feedback on documentation that I ported to other projects.
MindMup (https://www.mindmup.com), an online mind mapping tool appeared in 2013, and got a nice traffic bump that day, it took about two years to reach that level of regular traffic. the site now gets between 400 and 500k visits monthly during busy school periods (seems to be mostly used by educational users), and grows around 5% per month.
ClaudiaJS (https://claudiajs.com) is an open source tool that helps deploy Node.js projects to AWS Lambda and API Gateway easily. Originally built for MindMup, we decided to spin it off as a separate open source tool. It appeared on HN about a year ago, and according to NPM stats now has roughly 85K downloads.
We are consistently getting a good rating in Play Store  and thanks to HN we now have around 50 daily active users playing 75-100 games. Meanwhile, we are developing the features that were suggested in the comments and we felt are required.
 https://play.google.com/store/apps/details?id=com.buildmyvoc... - Two-Player Vocabulary Game
I submitted RemoteBase 400 days ago: https://news.ycombinator.com/item?id=11890991
For the first time, someone paid for something I made from scratch. I wrote about what I learned from this launch: https://sung.io/lessons-from-successfully-launching-remoteba.... I have since gotten a job, and the site sort of stopped making money. But I am still iterating on it.
Also submitted Dnote 100 days ago: https://news.ycombinator.com/item?id=14031649
I pitched it to a live audience shortly after: https://sung.io/pitching-dnote. I never got around making an actual sale.
Compare to catfs (https://github.com/kahing/catfs/) which I recently posted but did not make to front page, and right now it's at 14 stars. I would say both projects have similar audiences comparable in complexity, which would mean front page on HN gave goofys a 20x or so boost in terms of github stars.
Note that the first time I posted goofys it did not make it to front page. @dang emailed me to re-post it and the second time it was boosted to front page.
- They got me around ~3000 subscribers for hugobots.com which I have been promoting through my repositories (it would have been much more; unfortunately, I forgot to put the link on the first day while the repository was on the first page. I put it on the third day and the emails that I got were mostly from the traffic from the people sharing the post on twitter/facebook/reddit etc)
- One of the project (developer roadmap) got me two sponsors paying me around ~1000$ each every 6 months for just putting their links in the project readme.
- Follower count on my github profile was around ~100 at that time; now it is about 2.3k
- Had been approached for freelancing gigs and was able to make connections.
Show HN Link: https://news.ycombinator.com/item?id=13983085
Summary: A new diff algorithm
Result: About 50,000 visits to the web site, which then averaged about 1000 visits a day. Not much repeat traffic from those visits, but the daily traffic is now about 1200 visits a day.
Synopsis: Elm arch. in Haskell, but supports isomorphic js
Show HN link: https://news.ycombinator.com/item?id=14685677
Status: Still kickin', ~17k views, top 15 repo globally on GH (for a day)
933 HN users are signed up and have received 38109 email notifications so far.
2. Show HN: A date range picker for Twitter Bootstrap ( http://daterangepicker.com )
5-year-old open source code that averages 3000 visits per day and 750 git clones per day.
My Show HN (https://news.ycombinator.com/item?id=14778497) made it to the homepage, but I don't think its what you're asking about. My site is just a personal site with random content so its no different than before my post.
Also a lot of complaints over my poor choice of language, and "why don't you open source it, we'll do a JS port". I did. They didn't.
Anyway I don't think it's seen much use since that (mostly positive) experience - if you're willing to download and execute a java app you still can:
I did not notice it, and the traffic brought down my tiny blog with the 25.000 visits I got the next couple of days.
It was a really cool feeling, and I learned what measures to take to keep my self hosted WordPress blog up in these cases. Unfortunately I never needed it afterwards. If someone is interested in a write up, let me know so I can make one.
Since then my blog gets about 40 visits a day. Only a small amount, but it still satisfies me and keeps me writing.
I still get a regular stream of traffic now, and there are tons of others making sounds for UI. So, hopefully it helped kickstart that market a little.
I'm in the process of creating a second set of sounds now to try and keep the interest alive.
I still make good money on Ghostnote and is working on new features plus a new SAAS service.
This one is alive but not really active. Around 8K users on a mailing list. If anyone want to take over this project pm me.
This was fun to do but just a project we did for fun.
Posted in November 2016. Got a ton of traffic for about three days (~20k users/day). Now DAU is around 10-15. More a side-project type site, never was intended as a business.
I have just under 900 people signed up for an email list of hand-picked talk recommendations - about 200 of these were from HN, and a couple people sign up every day.
Based on the feedback I got, I'm working on an add-on to send email alerts with talks based on people's interests (if you want in, contact me, I need a few beta users)
I got a few hundred sign-ups but not much else; I am still maintaining the site but have not found as much time as I would like to develop it.
Got ~1500 active subscribers on the newsletter, some web traffic, some passive income, a lot of interesting contacts, met some cool people in Zurich, where I live. Overall, really glad I did it.
Original post here - https://news.ycombinator.com/item?id=12365693
Show HN: https://news.ycombinator.com/item?id=13687353
Summary: Simple web analytics
Result: Lots of great feedback, added about 100 active users
Here is the HN post :
I got a good spike of traffic from Reddit and Medium, HN a bit less.
The traffic spike, remained a spike and didn't continue long. But it gained a few regular users. I run my own blog with HexoPress (http://hexopress.com).
When it was first posted it hit front page, then hit reddit, melted my machine. I started moving to static files, but not in time! HN removed it from the homepage.
I think the exchange rate between Github stars and Facebook/Twitter Likes is favourable. Tinder Swipes, not so much.
Not much of a BTC/Github-Star exchange yet.
I had around a 30% increase in users and around $500 in sales over the following couple of weeks, which was pretty great.
We're doing well, and hiring! :)
Read https://news.ycombinator.com/showhn.html. Point users to something they can try out for themselves. Don't require signups or permissions that aren't obviously needed. Avoid popups. Avoid overly slick website design and (especially) marketing language: HN users tune all that out and in fact it hurts you. Text and text-based layouts are good. Information density is good. Avoid super-large fonts and excessive pictures, they make you look lightweight. Put intellectually interesting details up front. If you're launching a company, corporate branding is fine; otherwise it's a negative, so tune it down.
Add a first comment to the thread with the backstory of how you came to work on this and explaining what's different about it. This tends to seed better discussion.
Make it easy to tell what the product/project is; otherwise the discussion will consist of "I can't tell what this is". Link to any relevant past threads.
Your primary mission is to engage intellectual curiosity. If you try to sell HN readers on your stuff, you'll evoke objections. Engage their curiosity and they will sell themselves.
Mention areas you'd like feedback about or open questions. Surprising or whimsical things that came up during the work are also good--they are unpredictable and that makes them interesting.
A little humor is ok; more than a little feels presumptuous. Don't be chummy, just answer straightforwardly. Don't address other users by their usernames (it's not the convention on HN and feels out of place). Don't introduce yourself more than once.
Don't say nice things about yourself or your work. It invites comeuppance. Instead, be humble or even mildly self-critical; then readers will look for nice things to say, and even when finding fault, won't make as big a deal about it.
Don't ask for upvotes. Our software ignores most promo-votes, plus HN users notice them and get mad. Especially make sure that your friends don't post booster comments or softball questions. HN users sniff that out a mile away and then we have to kill the thread.
Email us a link to your submission when it's up and we might be able to give you some help or make sure it doesn't get flagged.
This originated as advice for YC startups but I always liked the pg/yc tradition of giving the same advice to everybody.
I "follow" several which are mostly defunct, but in terms of blogs that still feature active updates:
Evan Klitze's blog: lots of topics around Linux, C++, etc. https://eklitzke.org/
Sutter's Mill: lots of "state of the world" for C++, but also context, history, etc. https://herbsutter.com/
IT Hare: C++, game programming http://ithare.com/
The Erlangelist: Erlang/Elixir http://theerlangelist.com/
null program: lots of miscellaneous topics http://nullprogram.com/
Fluent C++: the name speaks for itself http://www.fluentcpp.com/
Another Programmer's Blog: Linux, C, C++, C#, MSSQL https://www.stev.org/
Aphyr's (aka the guy behind the Jepsen distributed system test series): https://aphyr.com/
Fred Herbert, the author of Learn You Some Erlang: http://ferd.ca/
Eevee, who posts a mishmash of stuff about programming in general but these days is mostly focussed on games: https://eev.ee/
Tef/Programming is Terrible, which features strong opinions about programming/programmers: http://programmingisterrible.com
Matt Kline, who posts mainly about low-level stuff and embedded systems: http://bitbashing.io/
Evan Miller, whose blog topics are wide-ranging: http://www.evanmiller.org/
tptacek, who can be seen tirelessly defending common sense in the comments on this very site: https://sockpuppet.org
Sonniesedge, who talks about front-end stuff and the human impact of programming: https://sonniesedge.co.uk/blog/
Carin Meier, who posts most often, but not exclusively, about Clojure: http://gigasquidsoftware.com/
Also Julia Evans, as mentioned in the OP.
Eli Bendersky http://eli.thegreenplace.net/Jeff Preshing http://preshing.com/
A few months back I wrote a Reddit comment listing "just" the high-quality React-related blogs that I read : https://www.reddit.com/r/reactjs/comments/5t8loz/what_are_yo... .
I read a lot more besides that. To pick out just a few:
- Scott Hanselman: https://www.hanselman.com/blog/
- Robert O'Callahan: http://robert.ocallahan.org/
- Henrik Warne: https://henrikwarne.com/
- Andrew Wulf ("The Codist"): http://thecodist.com/
- Lin Clark: https://code-cartoons.com/ . (Her actual blog hasn't been updated in a while, but she's also posted many in-depth articles to Mozilla organization blogs over the last few months.)
And while I don't think
This is an almost random selection of some of the blogs that I subscribe to.
The URL is very misleading, his blog is about Objective-C (and now Swift) internals, in a very loose way like an "Old New Thing" for Apple's tech stack (w/o the insider knowledge parts, he's not an Apple employee).
Lots of high quality code examples in a variety of languages.
It's like a daily readers digest of software development stuff. And the tagline just quoted is a little out of date - it's got a strong .NET leaning but that's not the only thing on there.
It's a curated and tagged list of company blogposts - published every weekday (or whenever I get 5-10 good links for the day)! As of now it is limited to only engineering blogs.
To know more, visit : https://www.discoverdev.io/about
I'm also a fan of the comics the author Peter Krumins puts out https://comic.browserling.com/
a few of my favorite blogs:
- http://blog.acolyer.org for fantastic daily summaries of CS papers.
- http://stephaniehurlburt.com/blog/ -- she has a business creating a new compression algorithm and I love reading about it
- https://rachelbythebay.com/w/ is pure gold for weird debugging stories
- https://accidentallyquadratic.tumblr.com/ is always a fun read
- http://wingolog.org/ on building compilers
- http://composition.al/blog -- Lindsey Kuper on her programming languages research
- aphyr's blog on distributed systems, of course
- http://www.pgbovine.net/writings.htm -- Philip Guo is a CS professor whose blog on his experiences in academia I really like
- http://whilefalse.blogspot.com by Camille Fournier, mostly on engineering management
- http://larahogan.me/blog/ by Lara Hogan, on engineering management
Also I think this comment from Dan's blog (https://danluu.com/about/) is very true and important:
> I view that as a sign theres a desperate shortage of understandable explanation of technical topics. Theres nothing here that most of my co-workers dont know (with the exception of maybe three or four posts where I propose novel ideas). Its just that they dont blog and I do. Im not going to try to convince you to start writing a blog, since that has to be something you want to do, but I will point out that theres a large gap thats waiting to be filled by your knowledge. When I started writing this blog, I figured almost no one would ever read it; sure Joel Spolsky and Steve Yegge created widely read blogs, but that was back when almost no one was blogging. Now that there are millions of blogs, theres just no way to start a new blog and get noticed. Turns out thats not true.
I really think there is a shortage of understandable explanations of technical topics, and I see new people writing great posts clarifying complicated technical topics all the time. And I find people really do notice/appreciate it. So if you're excited about blogging, maybe do it :)
* Blogs with a math focus:
* Blogs with a programming languages focus:
* Blogs with a UI design focus:
* Blogs with a graphics / 3D rendering focus:
* Other interesting / more general programming blogs (many of these have a "systems" focus):
Enough programming news for a lifetime, or two.
There's also an OPML file that you can import into Feedly.
Also I use the open source Django project Newsblur as my RSS reader, and follow Samuel's blog: http://blog.newsblur.com/
A couple others I like:
- scott hansleman
- coding horror
- decyphering glyph
- eric lippert
It was quite simple really, but really powerful to be able to tweak/replace a dataset hit make, and have a fully updated version of my thesis ready to go.
- make test : run the entire test suite on local environment
- make ci : run the whole test suite (using docker compose so this can easily be executed by any CI server without having to install anything other than docker and docker-compose) and generate code coverage report, use linter tools to check code standards
- make install-deps : installs dependencies for current project
- make update-deps : will check if there is a newer version of dependencies available and install it
- make fmt : formats the code (replace spaces for tabs or vice-versa, remove additional whitespaces from beginning/end of files etc)
- make build : would compile and build a binary for current platform, I would also defined platform specific sub commands like make build-linux or make build-windows
And we run tests on 3 flavors of Hadoop (HDP, CDH, and IOP), each of which is broken down into a flavor-base image with most of the packages installed, and various other images derived from that, which means we have a dependency chain that looks like:
base-image -> base-image-with-java -> flavor-base => several other images.
Enter make, to make sure that all of these get rebuilt in the correct order and that at the end, you have a consistent set of images.
But wait, there's more. Docker LABEL information is contained in a layer. Our LABEL data currently includes the git hash of the repo. Which means any time you commit, the LABEL data on base-with-java changes, and invalidates everything downstream. This is terrible, because downloading the hadoop packages can take a while. So I have a WIP branch that builds the images from an unlabelled layer.
As an added bonus, there's a graph target that automatically creates an image of the dependency graph of the images using graphviz.
Arguably, all of the above is a pretty serious misuse of both docker and make :-)
I can answer complaints about the sins I've committed with make, but the sins we've committed with Docker are (mostly) not my doing.
Even though Make does not have built-in support for arithmetic (as far as I know), it's possible to implement it by way of string manipulation.
I don't recommend ever doing this in production code, but it was a fun challenge!
http://www.oilshell.org/blog/ (Makefile not available)
and build a Python program into a single file (stripped-down Python interpreter + embedded bytecode):
Although generally I prefer shell to Make. I just use Make for the graph, while shell has most of the logic. Although honestly Make is pretty poor at specifying a build graph.
tmux: ln -s $(CURDIR)/.tmux.conf $(HOME)/.tmux.conf tmux source-file ~/.tmux.conf reload-tmux: tmux source-file ~/.tmux.conf gitconfig: ln -s $(CURDIR)/.gitconfig $(HOME)/.gitconfig
- Compilation of papers I am writing (in LaTeX). The Makefile processes the .tex and .bib files, and produces a final pdf. Fairly simple makefile
- Creation of initial conditions for galaxy merger simulations. This I obtained from a collaborator. We do idealized galaxy merger simulations and my collaborator has developed a scheme to create galaxies with multiple dynamical components (dark matter halos, stellar disks, stellar spheroids, etc.) very near equilibrium. We have makefiles that generate galaxy models, place those galaxies on initial orbits, and then numerically evolve the system.
Point being that autoconf is often overkill for smaller C projects.
File outputs were progress logs of the backups that got renamed after the backup, so if any jobs failed in the backup window, you could easily inspect them and rerun the failed jobs just by rerunning the make command.
Fun times. Handling filenames with spaces was an absolute pain, though.
We gradually swapped them out in favour of our own DAG-runner written in Rust, called Factotum:
The idea is if you want to use the library, you just include the makefile inside your project makefile, define a TARGET values and you will automatically have tasks for build, debug, etc.
The key is a hack on .SECONDEXPANSION pragma of GNU make, which means it's only work in GNU/Linux environment.
Edit: ah, turn out I write some documentation about it here: http://kilabit.info/projects/libvos/doc/index.html
* a source code download, * copying IDE project files not included in the source, * creating a build folders for multiple builds (debug/release/converage/benchmark, clang & gcc), * building and installing a specific branch, * copying to a remote server for benchmark tests.
It probably will require quite a few changes, but if the /proc file system exposed running processes by name, and contained a file for each port that something listened to, one _could_ run make on that 'directory' with a makefile that describes the dependencies between components of the system.
Useful? Unlikely, as the makefile would have to describe all hardware and their dependencies, and it is quite unlikely nowadays that that is even possible (although, come to think of it, a true hacker with too much time in hand and a bit of a masochistic tendencies could probably use autotools to creative use)
The shell script generates a Makefile and the Makefile runs the hadoop commands, so that the parallel dep handling is entirely handed off to Make.
This make it super easy to run 2 parallel workloads at all times - unlike xargs -P 2, this is much more friendly towards complex before/after deps and failure handling.
Using a Makefile allowed someone to quickly drop in new keys/certs and have all of the output formats built in a single command. Converting and packaging a single certificate requires one or more intermediate commands and Makefile is setup to directly handle this type of workflow.
Well, I have "make encrypt" and "make decrypt" commands that will iterate over the files in an ".encrypted-files" file. Decrypt will also add a pre-commit hook that will reject any commit with a warning.
This is tons easier than trying to remember the ansible-vault commands, and I never have to worry about trying to remember how to permanently delete a commit from GitHub.
A personal wiki and resource catalog. The only thing delivered is the makefile, which uses existing tools, and a small convenience script to run it.
It has much of the same functionality, but I already know (and love) ruby, whereas make comes with its own syntax that isn't useful anywhere else.
You can easily create workflows, and get parallelism and caching of intermediate results for free. Even if you're not using ruby and/or rails, it's almost no work to still throw together the data model and use it for data administration as well (although the file-based semantics unfortunately do not extend to the database, something I've been meaning to try to implement).
Lately, I've been using it for machine learning data pipelines: spidering, image resizing, backups, data cleanup etc.
I use one to build my company's Debian Vagrant boxes: https://app.vagrantup.com/koalephant
I use one to build a PHP library into a .phar archive and upload it to BitBucket
My static-ish site generator can create a self-updating Makefile: https://news.ycombinator.com/item?id=14836706
I use them as a standard part of most project setup
It's pretty cool, but not ideal.
make seems to be easier to install/get running than the myriad of non packaged, github only projects i have found.
Instead of bloated autotools I also call a config.sh from make to fill some config.inc or config.h values, which even works fine for cross-compiling.
ZeroNet (distributed TOR hosting):https://zeronet.iohttps://github.com/HelloZeroNet/ZeroNet
Though basically you're just routing .onion at a bucket.
Another thing to look at would be building on https://libcloud.apache.org/https://libcloud.readthedocs.io/en/latest/supported_provider...orhttps://jclouds.apache.org/https://jclouds.apache.org/reference/providers/
And providing a storage target. Though you have to consider the possibility of seizure of the host[s] by the service providers state.
Wasn't the question about business applications?
Redeeming answers: ERPNext, Odoo, OpenERP, OpenERM
Nginx has a lot of respect on the market for handling high concurrency as well as exhibiting high performance and efficiency.
I don't even have to speak about the Git architecture. It speaks plainly for itself.
There's a series of books called The Architecture of Open Source Applications that does justice to this topic
None of this is arguing that one or the other style of architecture is "better" per se, but rather the architectures are different because they were in the end optimized for different kinds of development organizations.
Most business applications remain fundamentally a three-tiered architecture, with the interesting stuff today tending to happen in how you slice that up into microservices, how you manage the front end views (PHP and static web apps are pretty different evolutionary branches), and critically how you orchestrate the release and synchronization/discovery of all those microservices.
(None of which is directly an answer to your question, but is more meant to say that lots of the most interesting stuff is getting harder to spot in a conventional github repository because much of it is moving much closer to the ops side of devOps)
Frappe also lets you build extensions (apps), add hooks to standard events, has a built in RESTAPI and more. Here is a quick overview https://www.slideshare.net/mobile/rushabh_mehta/frapp-framew...
Disclaimer: see my bio
Spree has a clean API, clear models, front end and back end, extensions, and command line tools.
Especially take a look at the models:
But this chapter is great: http://www.aosabook.org/en/500L/an-archaeology-inspired-data...
Something that's expandable by multiple departments, expandable business-specific logic, modular, plug-in infrastructure, the ability to work with multiple authentication schemes, etc....
Take a look at Liferay Portal: https://github.com/liferay/liferay-portal/
Edit: fixed all my typos.
It's part of the book, "Architecture of Open Source Applications", which has many such essays. This one is freely available -- and quite good.
Graphite is used for the business purpose of simple & fast real-time analytics for custom metrics inside an organization. It was built inside Orbitz and is now widely used at many startups, including my own.
Graphite is now a vibrant open source project with a community around it here:
If you dont want to do youtube case studies there are also books to read about distributed systems. Also reading about cloud architecture can help.
OpenERP, now Odoo, is written in Python.
OpenEMR is written in PHP. It dates from a while ago, but has been mostly updated to the latest PSR standards.
Might also try OrangeHCM, but not sure what those guys are doing these days.
Anyway, here are some projects which I can recommend by its source code:
* OpenBSD. Also the other BSDs. Plan9. And the BSD tools. Linux is a bit bloated but maybe it has to be. I don't recommend the GNU tools.
* WebKit. Also Chrome. Firefox not so much, although maybe it improved.
* Quake 1-3, as well as other earlier id games. Really elegant and clean. Also not that big in total. Doom 3 has become much bigger in comparison but again maybe it has to be.
* CPython. Anyway interesting also for educational purpose.
* TensorFlow. Very much not Theano.
I really enjoy reading the source code of most projects which I used at some point. Some code is nicer, some not so nice, mostly judged by how easy it is to understand and how elegant it seems to be. In any case it really is rewarding to look at it as you will gain a much better understanding of the software and often you will also learn something new.
The learning curve to go from I've never heard of them to reading about them, to installing them and using them was very small at least for Consul, Nomad, and Vault.
They use a lot of interesting stuff, like FRP, lenses, etc.
"On January 16, 2008, MySQL AB announced that it had agreed to be acquired by Sun Microsystems for approximately $1 billion"
Edit: sorry, missed the question entirely. I thought OP said "open-source businesses worth studying"
What you can do, however, is make it hard so that the vast majority of developers can't do it (e.g. My tech crawl billions of pages, but there was a whole team dedicated to keeping it going). If you have money to spend, there's Distill Networks or Incapsula that have good solutions. They block PhantomJS and browsers that use Selenium to navigate websites, as well as rate limit the bots.
What I found really affective that some websites do is tarpit bots. That is, slowly increase the number of seconds it takes to return the http request. So after a certain amount of request to your site it takes 30+ seconds for the bot to get the HTML back. The downside is that your web servers need to accept many more incoming connections but the benefit is you'll throttle the bots to an acceptable level.
I currently run a website that gets crawled a lot, deadheat.ca. I've written a simple algorithm that tarpits bots. I also throw a captcha every now and then when I see an IP address hits too often over a span of a few minutes. The website is not super popular and, in my case, it's pretty simple to differentiate between a human or bot.
Hope this helps...
I remember working hard on a project for a year, then releasing the data and visualizations online. I was very proud. It was very cool. Almost immediately, we saw grad students and research assistants across the globe scraping our site. I started brainstorming clever ways to fend off the scrapers with a colleague when my boss interrupted.
Him: "WTF are you doing?"
Me: "We're trying to figure out how to prevent people from scraping our data."
Him: "WTF do you want to do that for?"
Me: "Uh... to prevent them from stealing our data."
Him: "But we put it on the public Web..."
Me: "Yeah, but that data took thousands of compute hours to grind out. They're getting a valuable product for free!"
Him: "So then pull it from Web."
Me: "But then we won't get any sales from people who see that we published this new and exciting-- Oh. I see what you mean."
Him: "Yeah, just get a list of the top 20 IP addresses, figure out who's scraping, and hand it off to our sales guys. Scraping ain't free, and our prices aren't high. This is a sales tool, and it's working. Now get back to building shit to make our customers lives easier, not shittier."
Sure enough, most of the scrapers chose to pay rather than babysit web crawlers once we pointed out that our price was lower than their time cost. If your data is valuable enough to scrape, it's valuable enough to sell.
The only technological way to prevent someone crawling your website is to not put it on a publicly-facing property in the first place. If you're concerned about DoS or bandwidth charges, throttle all users. Otherwise, any attempts to restrict bots is just pissing into the wind, IMHO.
Spend your energies on generating real value. Don't engage in an arms racw you're destined to lose.
There's a nice Github repo with some advice on blocking scrapers:
Finally, you could use a plugin in your Webserver to display a CAPTCHA to visitors from IP addresses that cause a lot of requests to your site.
There are many more strategies available (up to creating fake websites / content to lead crawlers astray), but the CAPTCHA solution is the most robust one. It will not be able to protect you against crawlers that use a large source IP pool to access your site though.
You really can't protect against this unless you start making the experience of regular visitors much worse.
Imagine if everyday they changed? It would make things a lot more difficult.
There would be disadvantages to actual users with this method like caching wouldn't work very well but maybe this alternative site could be displayed only to bots.
The crawler could get smart about it and only use xpaths like the 6th div on the page so maybe in the daily update you could throw in some random useless empty divs and spans in various locations.
It's a lot of work to setup but I think you would make scraping almost impossible.
Otherwise, your best bet (hardest to get around in my experience) is monitoring for actual user I/O. Like if someone starts typing in an input field, real humans have to click on it beforehand, and most bots won't.
Or if a user clicks next-page without the selector being visible or without scrolling the page at all. Not natural behavior.
Think like a human.
Both worked, both worked well with http downloads and selenium (and common techniques). Neither worked against someone dedicated enough - but there are the usual tricks for bypassing them (which we used, to test our own stuff).
We also developed something in-house, but that never helps.
For example, a dictionary site. Someone tries to crawl your site after triggering your "This is a bot" code, serve bad data to every 20 requests. Mispell a word, Mislabel a noun as a verb, give an incorrect definition.
If you combine this with throttling then the value of scraping your site is greatly reduced. Also, most people won't come up with a super advanced crawler if they never get a "Permission denied, please stop crawling" message.
This is for Drupal sites. It has a strong firewall (csf) and it has a lot of crawler detections on the nginx configurations. It checks the load and when on high load it blocks the crawlers.
For ill-behaved ones, it depends on why you're trying to block them. Rate throttling, IP blocking, requiring login, or just gating all access to the site with HTTP Basic Auth can all work.
simple demo: http://botbouncer.xyz/
I ran it for awhile on some medium traffic websites that were being heavily scraped. It blocked thousands of IP addresses, but IIRC only received one Bitcoin payment.
The company I work for does a large amount of scraping of partner websites, with whom we have contracts that allow us to do it and that someone in their company signed off, but we still get blocked and throttled by tech teams who think they are helping by blocking bots. If we can't scrape a site we just turn off the partner, and that means lost business for them.
Also you can do frontend rendering, it's a bit larger roadblock but you can use phantomJS or something to crawl that.
IIRC there is a php framework that mutate your front end code but I'm not sure if it does it enough to stop a generalized xpath...
Also I used to work for company where they employ people full time for crawling. It will even notified the company if crawler stopped working so they can update their crawler...
- permanently block known anonymizer service IP addresses
- permanently block known server IP address ranges, such as AWS
- temporarily (short intervals, 5-15 mins) block IP addresses with typical scraping access patterns (more than 1-2 hits/sec over 30+ secs)
- add captchas
All of these will cost you a small fraction of legitimate users and are only worth it if scraping puts a strain on your server or kills your business model...
One technique that bothers me quite a bit is constant random changes in class names or DOM structure, which can make it more difficult. Not impossible but more difficult.
1) request fingerprinting - browser request headers have arbitrary patterns that depend on user agent. matching user agent strings with a database of the request header fingerprints allows you to filter out anyone who is not using a real browser who hasn't taken the time to correctly spoof the headers. this will filter out low skill low energy scrapers and create higher costs.
3) do access pattern detection. require valid refer headers. don't allow api access without page access, etc. check that assets from page are loaded. etc.
4) use maxmind database and treat as suspicious any access not from a consumer isp. block access from aws, gcp, azure, and other cloud services offering cheap ip rental.
then Zip bombs.
Most crawlers will make hundreds of requests in five minutes, while legitimate viewers will make be bellow 100.
Another good resource is the three-volume set, "The Handbook of Artificial Intelligence ", also by Feigenbaum. It's a very thorough catalog of programs developed in the 60s and 70s that illustrate various techniques used in AI programs.
In the words of Alan Kay, "the past is vast".
As long as it isn't holding you back from productivity - there's no real downside to being held back by nostalgia. If keeping old tech is holding you back in any way (security flaws, being out of touch with your industry, unable to collaborate, etc.) - then you'll find the happiness quotient goes up if you upgrade ;)
It appears your work/life balance is lacking. Do you have a significant other? Do you have hobbies you enjoy and/or actively pursue? I have been where you are with the dreading going to work each morning even to the point of being physically sick each morning. I had to find purpose in my work and as a result have just recently formed a startup that I hope will be accepted into Y Combinator.
I would encourage you to find someone you can talk to about the feelings you are experiencing before they become even more pronounced. Success at work is terrific but happiness is not always tied to employment success.
I ended up putting down the dog and by my gym was a normal pet store that didn't sell dogs/cats but had a dog rescue event going on. So I went there to donate what stuff I bought. I ended up talking to the founder there on why pet store dogs are so bad.
So that day I signed up to foster a dog. A few months later I was helping with events and then a group of us split from that rescue to start our own that imported dogs from the south that were surrendered up north. It changed my life doing something I felt was good.
Maybe you can try to take some of your time and donate it to some cause you might be interested in. I turned from hating work to thinking of work as a means for me to make money to help a cause I loved.
Based on what you wrote, it seems like you are only focused inward, on yourself. Figure out a way to focus on someone else.
Had an old, wise friend tell me, "You learn to love, by doing for..." i.e. when you tend to someone who is helpless, you are focused on them, and their needs. You gain a whole new perspective on life.
Do _for_ them. Do something that doesn't bring you any gain or benefit. Just to be a good human. Selfless.
Kids make this happen, naturally. But I'm not suggesting you go have a bunch of kids, just for that, I hope you get my drift.
Try new things, break your routine. Life has a lot to offer my friend :)
Having material things is worthless unless you do not have any long, deep, and meaningful relationship and belong in a community. We, humans, long for deep connections. None of the material things will make you happy unless you share it.
Life is about things outside of work, people, loved ones, pets, plants, hobbies.
Set some goals to connect with friends and family. Get a pet, do gardening, volunteer, read. Go hiking, go biking. Play a team sport.
Most people dread going to work, that's why they call it work, btw. Although it is nice if you can enjoy work, short commute, great pay and interesting projects can help with that.
Build other things in your life where you look forward to going to work, but you really look forward to getting off work to pursue the people/hobbies you really care about.
Exercise can help too but sounds like you have that covered. Try something new though. Hiking, Biking, Rock Gym/Climbing. Team sports.
Good luck finding the illusive 'happiness', sounds like you're on the right track.
This article is a great summary that may help you:
These parts specifically may provide key insight:
"Often, psychologists have distinguished between two types of well-being: hedonic well-being (a sense of happiness) and eudaimonic well-being (a sense of meaning and purpose). Although happiness and meaning overlap significantly, researchers suspected that helping others is especially crucial to developing a sense of meaning."
"A recent article published in The Journal of Positive Psychology by Daryl Van Tongeren and his colleagues sought to examine this relationship. In a preliminary study, the researchers asked over 400 participants to report on how frequently they engage in different altruistic behaviors (such as volunteering) and how meaningful their life feels. Participants who were more altruistic reported a greater sense of purpose and meaning in their lives."
Get into a romantic relationship or even multiple parallel if that is your thing. (I'm in non-monogamous relationships for 8 years now and started feeling much better)
Start a company or get kids. Having to care for your employees or kids can give you a purpose.
Try to help people in general. Teach some lesser fortunate people your skills, see what they make of it, maybe it helps you to get meaning by lifting others up.
Become a monk, christian or some other religion. They always search for people and the constant work and prayers gave some people meaning. Also the 100% structured daily life lets you age much slower.
There are many ways to make yourself feel better, but the most effective actually is to understand "Why I am doing this?".
Jesus or a puppy can alleviate the symptoms for some time but if you are living somebody else's idea of a good life it's just kicking the can down the road. It's treating the symptoms.
It is not an easy task to align yourself with you ( as crazy as it might sound :)), but this is the only way to feel right.
And is not an easy thing to do in the materialistic society which we live in. Where stuff and possessions are supposed to make you feel fulfilled . They never will, so try new things that are not about money or owning things but rather about experiences. The more out of the ordinary experiences you get the easier it is to answer this question "How do I become happier?"
Maybe you need to work on something that helps people.
Maybe your work is the wrong variety. Maybe you need to do work where you shower after your shift, rather than before.
Maybe you need to work for yourself, rather than a company.
Just a few thoughts, maybe one clicks.
Are you dating?
I'd recommend reading "The Way of the Superior Man" . One of the things that's stuck with me from the book is that no one ever feels like they've "made it". Even if you do feel like you get to the point, like you have, you suddenly become miserable as there's nothing left to strive for. We need some driver in our lives that push us forward.
The author also makes the claim where everyone should have an hour per day to focus on something they want to do. It helps give you direction and purpose. I know the times when I've done this, I've enjoyed work and life a lot more than the times where I haven't.
1. From where you actually came from.
2. What are you here for.
3. Where to go afterwards.
By the way, it started with your first intention, i.e. for what did you worked so hard for all these?
1)Find out what you really want to do even if it's less money
2)Do you need to find someone to share your life with?
3) Do you need to work up the career ladder?
4) if what you want to do won't let you make a living. Use your current job to finance what you want to do. It will give your job a purpose.
5) Talk to a mental health professional.
I would take one of those long vacations and test different things. You'll have to take action. You can talk about it forever and it won't make a difference.
As a start, volunteer one hour every week at an organization that interests you. Do the grunt work. See what the effect is after a month and grow from a simple base.
Start meditating :)
Something has put you near the top of the power pyramid for its own reasons. And the whole of global consumerism is here to service your happiness. Consider all that went into the wealth and influence you have as a rich person. Everywhere you go you can buy approximations of happiness, but your beliefs are preventing that from happening. You worked to get your job that provides your high status. Now you have the right to that level of buying power but your beliefs are holding you back from being a successful consumer at your place in the pyramid scheme.
1. Because it was first .
2. Because it's got a strong ecosystem .
3. Because a lot of new ones are scams, pump and dumps or unreliable.
SegWit will activate soon and after that we'll get things like lightning with super fast / cheap transactions and no more waiting for transactions to get confirmed.
I think we'll see a lot more mainstream use after LN and the price will either skyrocket or stabilize as a result.
I believe the most important task is to teach your team members those project management skills.
Teach them the skills to recognize unexpected events and know to communicate those bad news proactively. For example, an assigned task turned out to be much more difficult or larger scope than previously thought? Communicate. Uncertainty whether things can get done in time? Communicate. Feeling even the slightest uneasy about anything? Communicate.
Understanding of the business goals? You have to teach it and make it clear. You're not gonna have a textbox, type it in and expect the team to just get it. There's a difference between reading something, and understanding something.
Again, tools are "tools". No tool can allow your team to just be in zombie mode and not use their brain to think. Tools are there as an aid, not to fill in a hole in competencies.
Choose whichever tool that works for you. Observe how your team members are doing and teach them the necessary skills as needed.
At my company we've used simple Google doc, Asana, Trello, and now we're on JIRA. They all have pros and cons, but so far JIRA is working out alright and I think better than Trello.
I know there's also a lot of scorn for agile, but the core tenet is really just writing well-defined stories. Make each ticket the smallest possible feature with incremental value than can be built, tested and deployed. Then stack your tickets in priority order. Everything else about the process is for communication and visibility, but if you write your stories well, they are less important.
A lot of solutions posted so far (post-its, E-mail, whiteboard) work well for 2 person projects, with discipline scale to 20 person projects, are problematic for 200 person projects, and are totally inappropriate for 2000 person projects.
Specialized tools are recommended when projects scale beyond 10-20 people. Formal process helps. You also need to track risks as another poster pointed out. If your project is a part of a larger whole, you need to track dependencies and their schedules (other teams at your company, vendors/suppliers, 3rd party open source dependencies, etc.)
You can monitor this for basic uptime monitoring and refer to it to sanity check which version is deployed. We do this at my place and it's super convenient.
> Know what each other are working on? (progress/blockers)
a. Gantt chart = Asana + Instagantt
- Instagantt is great. It allows you to create a Gantt chart from multiple Asana projects. I have an Asana project for each customer project with the deadlines/milestones. I also have a project for Ops/Refactoring "projects" (changing ORM, dockerizing, etc.), a project for Releases, and a project for Meetings.
- I use to think Github could do everything but business-folk seem to struggle with it, and Asana is more flexible. Assigning tasks to people in Asana is great.
b. Kanban board = Github + Zube
To actually get things built we work in loose two week sprints. We create Github Issues for tasks we are working on usually keeping them quite broad as usually a lot of details emerge once we start working on them.
We estimate time based on Planning Poker with the goal being to become better at estimating time and scoping tasks.
> Know what is currently deployed to production and staging? (heroku)
I've started keeping details of releases in Asana. Could also use Github Milestones. We feature freeze releases to a branch called `release/0.5.x`, when we ship we use a tag called `release-tag/0.5.0`, and then tag our deploys with `deploy/staging`, `deploy/prod`, or `deploy/<on-premise-customer-name>`.
> Keep track of larger goals (milestones)
We use a Gantt chart is visualise this, and usually some high-level strategy docs in Quip.
1. We do all of this from Github using issues, milestones and projects. We have a GitHub Slack integration which can also give a feel of what everyone's working on. We also have a meeting every Monday where everyone says what they'll be working on this week.
2. Master branch is always in production. Staging branch is always in staging. We use CircleCI for CI/CD.
3. Milestones in GitHub.
1. How do we know what each other is working on?
All of us (~15 people, 5 of which remote) participate in the daily at 10 o'clock. The daily takes around 15 min and it is focused on the stories and every one has a good overview on what is everyone doing. Other meetings are usually organized in the daily. Typically like
A) "I have this and that problem with X, I would like to talk with B)"
B) "Okay, let's talk after the daily."
C) "I have also interest in this"
Every day the daily is lead by another person. At the end of daily we ask questions regarding if everyone has enough/to much to do, knows what to do and so on.
2. How do we know what is currently deployed to production and staging?
Version numbers ;) And Bamboo deployments.
3. Larger Goals
Big releases every few months with planning directly after each release.
It's simply to early to think about the solution at this stage.
(With that said I manage a remote team and we use kanban on trello, heroku and slack. We only meet as needed)
We can see what everyone is working on just by looking at the stories in our 'in development' list which show who picked up that story.
We can also group stories into epics and milestones to track progress towards larger goals
Tracking the larger goals is often not well formalized, but I like this podcast episode about levels of planning in agile projects: http://deliveritcast.com/ep33-always-be-planning. It's often included in frameworks for scaling scrum, like SAFE of scrum of scrums.
2. is a purely technical problem. If I remember correctly, stuff deployed to heroku corresponds to git branches, so it should be pretty easy to create some visualization about what's deployed right now from looking at git repos. I could be wrong here.
For example my dashboard I has a 2 column layout, on the left top is my in-progress stuff and down the left side is the other team members in progress stuff. On the right top is my assigned tasks and below is monitored tasks. This layout is useful to me for tracking my work and I get to stay aware what the others are working on. It helps a lot to keep tickets small in scope, so you can rotate them fairly often.
Of course what works depends on the nature of your teams work. Anyways, just some ideas.
The closest thing I've seen to a nice solution to this is to e-mail a brief report of what you've been up to to the manager at the end of the week, who collates into a summary at the start of the following week. Lightweight, avoids superfluous detail (because the coordinator can edit it out), and not so fine-grained that individuals can't sit on a problem for a day or two while thinking it over if that's their preferred style.
Obviously, this doesn't preclude talking about individual issues during the week! But daily check-ins force this too quickly in my view.
For the task spreadsheet, you can have a twice-a-week stand up where everyone goes around and updates their own tasks on a google sheet in turn.
For the milestone spreadsheet, a period between one month and one quarter works well.
Although meetings are often eschewed by software engineers, they really do help to keep projects on track.
Also appoint someone to be in charge of tracking the "health" of various milestones, red = needs course correction, orange = at risk, green = on track, etc.
Start with Trello. You can easily bend Trello to work with any productivity/PM system. Easy to get started and easy to evolve your process over time. Lots of great examples of how people are using it and some cool plugins to extend it.
#1 is extremely easy to implement in Trello. #3 is definitely possible but takes some time and buy in.
I would add that visibility into what everyone else is working on is also super helpful to avoid stepping on other's toes or duplicating work.
Once you've got communication down, you might find one of these tools useful:
1) Team members have to reply to a thread on "What are you working on?" at the end of the day. This keeps everyone informed of progress and blockers.
2) We use the CI dashboard to answer this (any changes to the master branch are auto-deployed to staging, and then staging is manually promoted to production.)
3) We use a Gantt chart to track high-level milestones (usually we go through it once a week to see where we are at).
Trello, jira, aha, whatever won't help if you don't have clear lines of communication and a chain of command
Process is key. Tools should serve the process and the team. First thing I did was to put together a basic scrum process. This had an immediate positive impact that has persisted. Some recommendations:
- Respect your team members. Give them the benefit of the doubt. There have been some good threads on HN about the distinction between being a dev and a manager.
- Short daily standups: no more than 10 minutes, just the three questions: Did? Doing? Blocks? We do them in-person in the office, but I also do them over email with some of our contractors.
- Regular sprints (I like two-week sprints) with focused, structured demo, retrospective, and planning meetings.
- Retrospective meetings with developers and product owners that identify pain points but emphasize fixing the process not blaming or fixing individuals.
- One-on-one meetings every other week with members of my team and with my manager.
- Weekly grooming meetings: product owners and developers together review, size, and prioritize stories.
- Projects are managed in Trello: cards are either user stories or defects with acceptance criteria.
- Issues are tracked and documented (in Github). I set an example for my team by thoroughly documenting issues and emphasizing best practices.
- Developers don't work on anything that doesn't have a Trello card (we have an action item card for small one-off tasks.)
- No burndown charts!
A lot of these practices I carried over from my previous job, where we used scrum but, because of laziness and laxity on a few points, ended up with a pretty dysfunctional team.
My only real innovation was the "No Card/No Work" rule. I think it's essential. It both stops managers and stakeholders from derailing the process. And it provides a record and reference for the team's accomplishments. Coming into an existing team, I made sure I was flexible and accommodating in implementing the new process. But this is the one point on which I told my manager I needed to be firm. We agreed to leave a little bit of room in each sprint for any urgent stories that might come up. It's worked out well.
Finally, my managers support and respect the process. Commitment was one of the keywords that was emphasized when I was first trained in Agile Scrum and I appreciate the significance of it now. Without the investment and commitment of management, this would probably all be futile. For larger goals, we created an Epic board that my manager likes to use with senior management. Trello is great because it visually reinforces the reality that priorities are a queue and if you push some urgent new job to the top, everything else in line is going to get pushed down and delayed. It's funny how easy it is for people on high or under stress to ignore that basic law of nature.
It is very flexible - you can label tickets, assign them and you even have git integration!
For remote teams that run on Slack, give http://www.slash-done.com/ a try - a good friend of mine had this built after missing a simple way of having everyone check in once their tasks were completed.
it is quite interesting to see that no one has yet created one that combines all three in a simple / minimal interface.
Upload a video a week. Full complete projects. Post them on reddit.Reply to every comment. Ask for suggestions of next project.
After 3 months or 12 videos. Start posting 3 times a week of projects in progress.
After 3 months start live streaming twice a week.
At the 6 month mark start a Patreon. Even if you don't have any patrons immediately learn the platform and incorporate it into your videos. Set a goal that entices ppl to participate. Maybe one of your projects was a hit.
Hope that helps.
1) One-off mechatronics projects: museum exhibits, cable-cams for filming companies, puzzles for escape-rooms etc.
2) Regional distribution and support for a particular brand of lasercutters.
From what I see, he spends most of the time on first category but most of the revenue comes from the second.
Do you think you can make a kit that parents or other hackers would want to buy, like the build your own robots kits that come in pieces but include all the parts needed?
I know of one guy that got certified on shopbot and the laser cutter, and used that knowledge to get clients. He helps them go from idea to something repeatable.
2. Learn how to make it for a lot less than people will pay for it.
3. Partner with people who can market your projects.
Its big brother CHIP Pro ($16) can be ordered in any quantity but you will need to solder your own headers. Depending on what you want to do it might be a good fit:
Pine also has a $15 board that seems to be shipping:
$20 but they do not need a permanent SD card and they need a heat sink. The Allwinner CPU's seem to get much hotter than the Raspi Broadcoms. The issues I have experienced really have been nuances of the Linux distros but very workable.
I wanted to make a "real working" diagram of our standard AWS platform as a wall chart - with 3 ELB load balancers, 5 autoscaling ec2 instances (3 "active" and two "spares"), and 3 "multi-az" RDS db servers - each represented by a Pi Zero, with ws2811 led strip running between them representing the network which lights up animating packet/data flow. It'd have big red killswitches next to everything, so you can push buttons to kill off bits of infrasructure and visualise how the platform responds (with the spare ec2 instances autoscaling in to replace dead ones, ELB and RDS traffic auto-rerouting). And I'd use this to run our "standard" backend, so people could connect with their phone (with a browser or test app) and "see" their own network traffic and watch how it still works even if you kill any 2 and up to 8 different parts in the right combination.
I think that'd be a really useful way to demonstrate to non-technical stakeholders why if they want better response times that "we'll get to that Monday morning" when something breaks after 5pm on a Friday - I'm going to charge them _way_ more to support their site if it's running on a $5 or $10 per month VPS than if they spend $120/month or so on AWS to host it.
(Oh, and I second zapt02's recommendation for the NextThing CHIP - I've got half a dozen of those, and they're working out really well in other projects - but I've also got another 5 on order and have been waiting several month for em...)
Overall I like listening to either instrumental stuff or stuff I've never heard before, I feel like listening to songs with words that I know becomes a distraction somehow.
Interestingly, while driving and doing chores it's the exact opposite - I'm always relistening to songs I've heard a million times :)
Music for Programming
Music for the masses by Depeche Mode
Syro by Aphex Twin
The inevitable end by Royksopp
Dead can dance by Dead can dance
Ghost in the shell soundtrack by Kenji Kawaii
I also listen to a lot of podcasts lately though I tend to tune them out and they become mostly white noise.
The up-tempo beats and lyrics keep me well paced throughout the day
The first part of my day is spent listening to either Kanye West's discography or Kid Cudi's discography (omitting some of his experimental stuff) then I might mix in other albums after lunch
The bleeding edge is much more interesting but also carries much higher risk and potential reward. You may find yourself expert in something that was technically very interesting but the timing is wrong or the specific tech fades quickly. So failure mode has you learning and relearning the latest frameworks trying to stay hip and potentially changing jobs frequently. On the other hand, success out on the bleeding edge might but you in an equity position in a start-up that turns into a unicorn.
I gravitated more toward the fringe and have built some cool tech but the start-ups and projects never reached market success and so I often reflect that had I picked more standard problems and tech and become expert in those I would have very high consulting rates today and plenty of work. As it is I have moderately high rates but I don't quite fit into people's mold and it is somewhat harder to stay busy with billable hours.
In the end you also have to live with yourself intellectually and emotionally. So although my more fringe focus hasn't yielded the best economic ROI - I have mostly enjoyed the choices and outcomes for my own life.
Personally, I think once you have enough experience you should be able to easily pick up new frameworks. I don't understand developers who try to define themselves by a single language or a single framework. You should be trying to pick the best tools available and learn as you go when required. You might be safe for a couple of years sticking to one thing but the industry is constantly changing so you should have a diverse skillset and always be learning.
The rest will follow.
I graduated Construction Engineering Technology, worked manual labour and moved into an estimating/quantity surveying role at a small construction firm. I was still site foreman at the time, and did just as much physical labour after graduating as I did before.
I decided physical labour was not the life for me. Got hired on at a small oil and gas engineering firm which engineers specialty products for large diameter pipeline construction. What was I doing? Reception. Answering phones. Doing dishes. Booking flights. All the administrative things which were (I thought) far and below me, the educated man.
Fast forward 6 months, I've had two promotions, two raises, and am having my IIBA membership and classes paid for. I still do some reception duties, but rarely.
I think there's a lesson to be had here. I was pretty upset moving into a role at the bottom of the pole, after being fairly "high up" in my old role (well, lots of responsibility even if the pay didn't quite reflect that). But, now I'm making more money than I was, with as much schooling as I (reasonably) want paid for. I showed up with a good attitude every day, and no matter how remedial I felt the work was, I put in 100% effort. It paid off. It's continuing to pay off.
tldr - Started as a receptionist, now am much more
TL DR: Air Force enlisted to CEO.
Edit; Now that I think about it, I also worked for another company who's CEO had started of enlisted in the military (army national guard iirc). So two enlisted to CEO stories.
I think that it qualifies as both unthinkable and impressive (albeit mostly in terms of collateral damage).
While my pay wage was something of a joke, although at some sites it was more than others, but 4 years later and a penny raise (boss probably did it as a joke), I realized, I was stuck in a dead end job with no opportunity to grow.
I went back to college, having no idea where I would end up. I continued working security jobs in order to help me pay my way through college. I was interested psychology (which I have my degree in) and eventually wanted to do something with career counseling -- helping college students find their place or helping people who decided to have a career change later in life.
During my latter years in college, I got out of security and worked for student life, which only paid some minimum wage, but I got to do a series of jobs such as orientation leader, secretarial work, and even campus card (I took photos of everyone), and even worked at a liquor store in downtown Chicago for a year.
Anyways, after college, I moved to Israel for a year, where I taught English to elementary and middle school students, and although it was nice, I wasn't very interested in working with kids. This nonprofit organization needed a website so I volunteered to do it for them and loved it. It gave me some insight into web design.
I moved back home and I was desperate for a job with no money and student loans to pay off... so I did the only thing I knew to do: I applied across the boards on Craigslist. I figured I had a college degree now, who wouldn't hire me? Only one company responded, a software company that licensed out their autobody shop software, a program created in Visual Basic 6.0. I had experience in it personally, having taught myself when I was like 11 or 12, but not any experience professionally, but they took a chance on me, and I worked there for a year and a half. I was hired to make the UI more friendly and fix bugs.
After that, tired of a tyrant boss, I moved on to full-time web designer for a Solar Panel company, working in Flash and did the animations for them that displayed on a kiosk for companies in their lobbies. At the same time, I also got hired as a web designer for the media (Solar Panel company on location from 8 AM - 5 PM, media company remotely from 6 PM - 2 AM). I was also freelancing on the side as a web designer. So for almost 2 years, this was my life.
I was eventually laid off from the day job and currently still have a job working for the media, but I am no longer working remotely. They gave me a choice: move across the country or get laid off. So being one of the only employees who chose to move, out of about 20, I negotiated a nice salary rise and they even paid for my move across the country.
If you asked me just a decade ago what I would've been doing today, I probably would have never guessed I'd be working as a web designer / web developer.
There's a reason your country has sustained corruption that has global implications. Do you know what foreign influences the corruption serves? A good way to tell might be finding out what corporations are invested in your countrieseconomy. Then as an activist you can target that corporation in your search to expose the truth of who funds and perpetuates the corruption.
Your past experiences don't really matter. My best advise is for you to memorize as many algorithm problems as you can and to make your Resume look like you'd be someone who could easily crack a "technical" interview. They usually look if you've already worked for one of these companies in the past, if you've graduated from a prestigious institution, with an excellent GPA, if you've won a hackathon and things like that. Forget about buzz words, technologies, prior projects and open source stuff. We all do that by default. Unless you're someone like Guido van Rossum, they don't really care.
That doesn't mean a ridiculously over-engineered side project with distributed micro-services, BTW. Most of the top-tier companies don't actually fall for the bullshit that makes up most of the tech industry hype cycle.
It could mean investigating an interesting data-science problem with publicly-available data, building a model with some predictive validity, and publishing your findings & code via blog & GitHub. Or it could mean building a side-project for some local organization of importance to you, but really going the extra mile on user-experience so it's not just a CRUD screen, and you collect data in unobtrusive ways that don't bother the user. Or it could mean working on a hobby programming language and delivering a working compiler.
I didn't plan that. I was trying to get a different job when a relative suggested I apply. But I knew people at the job who had spent years trying to get good enough to qualify.
Get a copy of "What color is my parachute?" and read up on the section concerning informational interviews. See if you can get a few information interviews. The point is a fact finding mission to get some idea of what it really takes to get into the company in comparison to where you currently are.
Do some googling online and start a folder to compile information on your target companies. Try to get some insight into what they are looking for.
Try to find out what the application and interview process is like. Big companies tend to have very formal processes. Insider connections will generally be less useful to you than in small shops like you have been working at.
I would do some basic legwork before asking further questions of this sort. I got a job at a big company and I can't really tell you how to make that happen. I had several years college and I had the math and language skills they wanted. I ended up qualifying for two positions and picking which one I wanted, this after more than a year of getting nowhere in my job search while going through a divorce. But there are people who are talented at job hunting (my sister is one such person) and my impression is they do a lot of research before applying.
And I mean the social kind.
Regardless of experience, resume, whatever.. Networking is everyones number one way of getting a "foot in the door". Honestly, if I were you, any time you think you should spend polishing up your resume / brushing up on data structures whatever; you should instead spend your time getting out there and networking.
Ask people to refer you to other people. Meet people for friendly coffee, and don't even bring up that you're looking for work the first coffee. Start commenting on popular blogs, insightful articles on LinkedIn, etc.
I too am a developer with 7 years of experience, probably a bit more if I count freelancing during university. I studied at a not-so-great university in the UK where I studied Computer Science, and most of my experience is either in a non-tech startup or digital agencies. In terms of agency strength I currently lead projects for a big UK agency in a satellite office. I'd say I'm a decent developer. Not the greatest in the world, but typically one of the better developers in most places I've worked. I've also got some open-source work behind me, and some user group talks, although primarily to do with content management systems.
Over the past decade I've applied to Google and Microsoft a couple of times, and every time I've been quickly rejected by email. Whether it's for a college internship, grad scheme, as a recent graduate, or after a few years of experience, I've received a rejection email after a week of applying. I've had recruiters from Amazon and Microsoft contact me on LinkedIn in the past, and after sending over my CV I've heard nothing back.
My thoughts match yours, in that I think it's because I don't have the "right" experience. It's probably a mixture of me being a .NET developer (and the stigma that comes with working on Windows), and primarily working with Content Management Systems. It's been a negative at jobs I've applied to in the past, so I can only guess that it's the same for the larger companies. I have a CS degree, and a public repo full of C# implementations of various data structures and algorithms, so I doubt it's to do with a lack of knowledge. Outside of me being put on some kind of top four blacklist, I can only guess it's because neither company wants to hire a .NET dev.
Apologies if my reply isn't that helpful, but I thought I'd wade in as someone with a CS degree who feels that they are in the same position as you.
I'm a full stacker too, so I sort of know what you're going through.
> but the response has always boiled down to "we don't think you have the relevant experience"
This has been my experience but as a guy one year out of school. And I live in the Seattle area, so you would think that I should have ample opportunities.
In my extremely limited experience, "relevant experience" can literally mean anything in this context. It might be true that they were looking for other technical knowledge. It could also mean that they were looking for another trait and wanted to let you down on a more neutral note. Basically, it's an HR term meant to avoid opening a can of worms on both sides.
>figuring I don't have the strongest resume
You have five years of full stack work. That's an incredibly strong background.
What languages did you write in? Platforms/programs/operating systems? What software patterns did you use?
Since you worked on a very broad area of software development, your resume is fine as long as you fine tune it a bit more to emphasize your knowledge on certain languages and frameworks, as well as the fact that you should have a good idea on how a software project evolves over time.
> Do I work on brushing up my algorithms and data structures knowledge in a lower-level language (and blog about it)?
You could try that. But that still doesn't guarantee that you'll get an interview. You could literally do this for a full year and still not get a code screen because someone will ask you "why did you only study this stuff for a year? where are your projects/work experience/meetup talks/OSS contributions/the holy grail/etc etc etc?!!!"
> Or do I spend time on MOOCs (and blog)?
Since you say you've graduated, I'm assuming you have a formal college degree. A MOOC would be a waste of cash at this point. You have the experience and education already. You don't need another diploma just to satisfy some HR drone.
> Or build a ridiculously over-engineered side project with distributed micro-services just to prove I can do it (and blog)?
Again, this is something that might get you in the door. It might not. Either way, I wouldn't recommend trying to write anything too specific. As the old saying goes, don't put all of your eggs in one basket.
And, once again, even if you're successful in building it, whoever replies to your application could still give you the "we don't think you have the relevant experience" jargon for literally any reason they feel like.
> move to a more opportunities-rich location, networking on the ground?
Only move once you have another job lined up. All those stories we hear of people moving for work reek of Survival Bias. We don't know how much they saved prior, if they had family/friends in the new location that could help them out, if they borrowed money, if they had their parents pay for it, etc. Moving anywhere is a huge time and money cost, so only do it if you have the cash and resources to do it. Reliable housing comes first, networking second.
But, then again, I do not know where you live.
Basically, my big points are
1. Don't do a MOOC if you already have any sort of professional programming experience (especially full stack). You already have the tools and knowledge necessary to learn almost anything related to modern programming on your own.
2. Don't move just to network. Networking won't necessarily get you a job, let alone an interview.
3. Don't read too far into those "I did it, so can you" articles. They're full of Survival Bias.
4. Companies can reject your application for any reason they feel like and get away with it by telling you something purposefully broad like "we don't think you have the relevant experience". It's total BS, but it's next to impossible to challenge it from outside the company.
5. It might be time to consider starting something new if it doesn't already exist in your town. If you know 3-5 people that have good business skills, you might want to consider talking to them.
6. There are a lot of over achievers in tech right now. Looking at them as you are right now can lead to phycological problems. You might want to consider talking to your doctor and/or a psychologist.
If you have any further questions or just want to talk/vent, feel free to give me a buzz at firstname.lastname@example.org.
Never understood why people associated "biohack implants" with sticking a magnet or NFC chip in your finger.
I can't imagine any situation where you need an NFC chip and don't carry along your smartphone. Ok, there's one: You are swimming in a swimming pool and need to open the locker afterwards.
To those who believe it will never become mainstream - the same could have been said for tattoos and piercings a mere few decades ago. I remember a time when visible tattoos were a sign of a counter culture, not a normal part of life.
Heck, Google Glass was shunned for its camera, but the Snapchat Spectacles are actively embraced only a few years later.
Core engine programming is no joke either, let alone on a commercial engine used by half the industry.
Maybe AirBnb & Netflix?
I'd guess Stripe, Palantir and AirBnB would be up there too.
If you get a project out there, people interested in it will start to help out. Gradually, this turns into that person becoming a contributor to a project.
The link I have posted only covers the mozilla servo project and I can see this concept working with multiple projects/languages/etc.
Of course one would need to heavily moderate the submissions but I think this idea is great. Anyone know if something like this exists ?
You still need a core team to drive a project.If you want contributors you'll need users.
People have a finite amount of time in a given day.They aren't going to contribute because you want them to.They want to get something out of it. It could be learning something, fixing a bug that affects their day job, an interesting side project for a weekend (some folks pick random projects to contribute to)
Open sourcing something also has different incentives.Many successful projects are either run by foundations or companies with the hopes of attracting talent.
Try to understand what the incentive structure is for people and contributors follow from that.
You still need to do project promotion as well.That's a whole separate topic though.
The README is so clear and welcoming new contributors, by telling how exactly they can start contributing. In fact that encouraged me to start contributing to opensource. Now I'm doing Google Summer of Code under the same organization.
A) Just start contributing, sure in the knowledge that they aren't missing some piece of background that others would consider obvious.
B) Go off and search for a good book/course to learn about X, where X is a googlable phrase that your contributing.md just told them.
I think it works better to focus on a) making sure to create a welcoming or inviting atmosphere and b) leaving the door open logistically.
It needs to be apparent to other people that new contributors are welcome and it also needs to be apparent to other people where and how they can go ahead and step up to bat. These can be tricky things to pull off. It is much, much easier conceptually to just think "I know! I will actually literally invite people!" (aka ask them to contribute) and this means you may be asking people who have no interest in the project or not ability to effectively contribute or both.
I am still working on solving this piece for my own projects. Trying to be inviting without literally sending out invitations is tricky. But I think that is what works best to make it possible for those who have both interest and ability to get involved on terms that work for them.
Here is the project : https://learn-anything.xyz/
And here is the article we link to : https://learn-anything.github.io/2017/06/15/contributing.htm...
It saves quite a lot of time as we try to cover all the ways in which one can help with the project there.
Too bad I don't have the time to maintain or update such website, nor to actually keep reasonable docs at the pace things are changing.
I had the aspiration to create a truly contributor friendly project. It turned out to be way harder than I expected, at least for a small team like ours.
Lampson's classic on hints for computer system design:
Here is a previous HN post on the subject: https://news.ycombinator.com/item?id=8000811
The Clean Code author has a Clean Architecture book but I don't think it is out yet.
And, if someone recommends a book called Code Complete, quietly begin to question some of their life choices.
If you prefer a graphical user interface consider backintime.https://www.howtogeek.com/110138/how-to-back-up-your-linux-s...
Otherwise check out duplicity.https://help.ubuntu.com/community/DuplicityBackupHowto
Duplicity supports a bunch of protocols / target services (SFTP, dropbox, google drive, amazon S3 ...)
Duplicity uses asymmetric encryption (via gnupg)so the backup commands can be run unattended.(Your private key is not required for encryption during backup)
its a super useful tool to execute tasks using all cores of your machine. A simple example https://vidanp.wordpress.com/2016/11/04/paralelizando-en-lin...
* RetroArch - for all your emulation needs in one package.
* ripgrep - better and faster than ag (The Silver Searcher).
* mpv - very nice video player, it can also be used together with youtube-dl for streaming from various websites, including youtube, etc.
To site admins: stop marking my comments as dead for no good reasons, my suggestions are valid.
Ranger is an highly customizable file manager that can be controlled by using the keyboard only.
File management (searching, copying, moving, renaming...) takes considerably less time since I switched from windows-explorer / nautilus / nemo to ranger.
I can't imagine going back.
Getting started with ranger:https://github.com/ranger/ranger/wiki/Official-user-guide
It's a cross-platform messaging client that combines, Whatsapp, Facebook chat, Slack etc. into one application.
Its a wonderful CLI app when you calculate things with units.
Eg:You have: (1000W * 5 hour)/(24V100A)You want: min 125
Or:You have: 10 km * 6L/100km * 1.3 EUR/LYou want: USD* 0.837486
You should try it !
If you're feeling adventurous, you could experiment with different window managers, such as bspwm, awesomewm or i3.
Check out some examples in https://www.reddit.com/r/unixporn/
Here's a good demo of bspwm https://github.com/windelicato/dotfiles/blob/master/why_bspw...
OpenOffice or Libre office; for all your Office needs, it can also output to Microsoft formats.
Screen; for multi terminal windows within one terminal. Also very handy when working remotely.
I like the Clementine music player.
Being able to hop into the command line to process text is neat. You might want to do a toutorial on grep, awk and sed.
Gimp is nice for photo manipulation, I use Inkscape for vector graphics.
Opera is a nice second browser (chrome is a memory hog) it also has built in vpn and Adblock.
Matrix is federated (I suppose XMPP is federated too). You can send an email from Gmail to Yahoo, Outlook to Protonmail, etc.