Free software licences are not an option. Forbidding specific use of your software goes against the intent of the commonly accepted free software licences you would run afoul of freedom 0:
> The freedom to run the program as you wish, for any purpose
There probably exist other open source (but not free software) licences that do limit the audience, but you probably won't be able to enforce them, and they tend not to be taken seriously. You would on the other hand frustrate users outside of the military who want to legally use your software in ways normally permitted by free software licences e.g., by reusing parts of it, forking it, combining it with other free software, etc.
Lastly, the absolute sure-fire way of preventing any military use of your software is not releasing it at all.
I don't think it's worth the hassle to add such a clause. If the point is not to actually prevent its use, but to make a statement, then make a statement on the project's homepage and in the documentation. It will have the same effect without resorting to weird software licences, and you can choose a well-known free software or merely open source licence.
E.g. Armies operate hospitals for it soldiers. Can your software be used in an army hospital?
E.g. What happens if private company ABC Inc. Is using your software, and then they are contracted by the military to perform work - is that allowed? You say you "want to prevent any military from legally using it" - who's using your software in this situation ... the military or private company ABC?
EDIT: and even if you figure out the exact language to restrict military use, how do you enforce it and what are the consequences of breaking it?
- What kind of use is to considered military? Dual use goods? Software running on some computer in a military department that is used for "civil purposes" (think of some accounting software in the accounting department)? Projects that are also financed by some military pot of money (lots of civil research e.g. in the USA is financed by DARPA)? Consider that the precursor of the internet (ARPAnet) belongs to this category. Civil defense systems that are not owned/built by the military but by private security companies?
- If OSS people would tolerate such a restriction, the next people will come and also want to add restrictions to the usage of their software. At the beginning these will even serve noble purposes, but the time will come when people will use this kind of restructions to build their political agenda, such as
* must not be used for military purposes
* must not be used for animal experiments
* must not be used to produce hate speech
* must not be used for misogynistic purposes
* must not be used for homophobic purposes
* must only used by white people
* must not be used on Intel processors
* must only be used on RISC-V processors
* must only be used by citizens of democratic states
* only for noncommercial purposes
* only for research purposes
etc. So it is accepted practise in FOSS communities not to consider usage restrictions as acceptable.
4. This software cannot be used for military purposes under this license. You must negotiate for a license from the original author, AUTHOR NAME.
So... you don't actually want to prevent any military from using it, you just want to virtue-signal?
I'm not even being sarcastic here; this distinction is pretty important to the license you choose and how you enforce it.
> 6. No Discrimination Against Fields of Endeavor
> The license must not restrict anyone from making use of the program in a specific field of endeavor. For example, it may not restrict the program from being used in a business, or from being used for genetic research.
See the open source definition: https://opensource.org/osd
I would encourage you to use a normal open source license, like MIT, and to not worry about trying to control who uses the software for what.
I took the repo down shortly after, and can't seem to find the original :(
I'll keep looking...
e.g. The RAF used to run search and rescue helicopters in the UK until a couple of years ago - my wife was rescued by them after a climbing accident in Glencoe.
Personally, I applaud it and I would live with these consequences, but be aware of these consequences.
It's improper for anything to use these unassigned in-theory-globally-routable addresses but there are no real hosts there and lots of local networks use them for random internal purposes. At least one commercial Wi-Fi hotspot uses 126.96.36.199 as a captive portal address.
Here's an incredibly detailed report on the situation on the 1-network: http://www.potaroo.net/studies/1slash8/1slash8.html
Like bcoates said, there's a bunch of dumb stuff out there designed by people who barely understood TCP/IP and used non-RFC1918 ranges for customer equipment. Occasionally they leak indirectly into a table that's being redistributed into some mom and pop ISP's BGP announcements, and this happens. The backbone carriers of the Internet all (well, maybe not tata) have much stronger filters than Honest Achmed's used car sales and Internet transit, so they tend to leak only within a country or region.
Occasionally its some ISP internal services and it's done deliberately to have easy to remember IP addresses for techs working on the network. I mean, do you want to have to remember to point SNMP traps to 188.8.131.52 or would you rather only have to remember 184.108.40.206 instead? Then the prefix hits the border bogon filter and remains entirely with that ISP's network.
Now that I think about it, scanning ISPs for known unannounced prefixes in the global table would be kind of a fun project to discover all the little internal services ISPs might have squirreled away throughout their network.
PING 220.127.116.11 (18.104.22.168) 56(84) bytes of data.
--- 22.214.171.124 ping statistics ---80 packets transmitted, 0 received, 100% packet loss, time 79915ms
What mobile network are you using?
I use 126.96.36.199/24 for my home network. Perhaps they're doing something similar.
Personally, I wouldn't bother incorporating unless you have investors or creditors. Or if a tax person says it's in your best interests. You can blow a lot of money on lawyers and tax preparers for no good reason.
A corporation (or LLC) doesn't protect you from being sued. Anyone can sue you at any time for anything. If someone wants to sue you, they'll sue both you and the corporation. Even if you defeat the lawsuit, you'll still be on the hook for a big ol' lawyer bill.
Also, if you plan on borrowing money, a bank won't lend you money unless you have collateral. Until your company has assets, such as inventory, accounts receivable, publicly traded stock, a building, etc., anytime you want to borrow money you'll have to personally sign for it.
If you have a company and don't do any work for it, then you can't possibly be liable for anything because you didn't do anything.
If you did something then you did work for the company which is something you're not allowed to do.
Ultimately consider that if it ever comes up, you'll be dealing with a suspicious immigration official, who has the power to deport you and no reason to give you benefit of the doubt.
You will be deported if you fail to convince him that you registered a company but didn't do any work for it. And I don't see how you can claim that with a straight face. Your explanation of wanting liability protection doesn't make any sense.
For both systems I'm using CraftBeerPi, a python project with a pretty active community around it.
I wrote about it on opensource.com and it was pretty popular, which surprised me a little bit. But I guess a lot of people in our community like beer :). I'm always trying to figure out how to make brewing my career without the related massive cut in income (please share any great ideas on that!)
: http://localconspiracy.com/2016/12/electric-brewery.html: https://github.com/Manuel83/craftbeerpi: https://opensource.com/article/17/7/brewing-beer-python-and-...
The keys have pressure sensitive film underneath that causes a voltage drop when you press on them. There's a wire from under each key that goes to an input on an MCP3008 ADC. There are 20 of those, each with 8 inputs, all connected on a SPI bus running at 2mhz. Effectively, this acts as a 160 channel digital voltmeter. The Pi can scan all the ADCs about 90 times per second, and it converts key pressure into midi commands that can be sent to an external synth or I can run a software synth locally on the Pi.
Locomotion is largely based upon the designs documented by Cynthia Brezeal Ferrell (MIT mobile robots lab, under Prof. Rod Brooks) in her PhD thesis for the hexapod robot, Atilla/Hannibal.
The first attempt was using Python which presented two insurmountable problems : 1) raspian OS boot time of 1.5 minutes which is unacceptable for an embedded device and 2) python threading is not sufficient for realtime. I was attempting to make series elastic actuators but the imprecision of the threading (jitter) was leading to wild oscillations... I finally had to accept it was a dead end.
I have started over in Elixir + Nerves which is designed at its core for embedded work. I will admit it is very slow going. Not because of any deficiencies in the language or environment. Quite the contrary -- I get a 10-second cold boot time and superb stability! But rather my mind is the limiting factor here. After three decades of imperative programming, the shift to functional programming is a challenge!
Use our Hass.io OS build to setup Google Assistant easily on your Pi. Need a USB microphone and speakers connected to the Pi and you'll get the full Google Assistant experience.
(disclaimer: I'm the founder)
We would love to see what you can do with what we are building and to feature you on our website !
Some pictures at http://imgur.com/a/r834D
The Website: http://solarpi.tafkas.net
Github Repository: https://github.com/Tafkas/solarpi
Blog Post: http://blog.tafkas.net/2014/07/03/a-raspberry-pi-photovoltai...
Feedback is very welcome.
Another is a quadrupedal robot (more like a puppet to start with; autonomy would come after I've got the gait control code working). Control would be through a bluetooth game controller. I've got a laser-cut acrylic body for the thing and a servo control hat to deal with timing jitter.
Third, I've got a Pi-Zero and a broken PSP. 4.3" Backup camera screens are the right size, shape, and resolution to fit in the PSP case, they can be modified to take 5V instead of 12, and the Pi-Zero has 2 contact pins for the analog video out. I'd need to experiment with audio out; I've got a couple ideas.
I also have a newer Pi 3 running Stratux for receiving ADS-B traffic and weather on my iPad while flying.
Aside from Stratux there are definitely cheaper/easier solutions for what I've set up but nothing beats the 'free' hardware collecting dust in the bin.
Unless you're doing computationally intensive tasks, I find a Raspberry Pi 3 is overkill. If you go with the cheaper models like one of the low end Orange Pi's, you don't mind dedicating them to projects, even if the project is pretty useless.
I know it's Kickstarter but it will be shipping very soon and you can already download the files to cut your own if you're into that.
(Disclaimer: it's my project!)
With an LED strip, some carpentry, an Arduino, and rpi, I've brightend up my deck a little bit. The rpi is there to program the arduino while embedded and to have a web interface to control the lights. Still to do was to get Homebridge (which is working on the rpi) to turn the lights on and off using Siri.
Personally, I plan to use it as a traffic camera mounted on the window of our office.
It started as a for-fun project and I'm now working full time on it. So I guess it qualifies :-)
If you want to display any kind of information on your Pi, you might take a look. The code that "runs" the display is written in Lua and the system is pretty programmer friendly. You can even 'git push' and deploy directly on any number of screens. Questions welcome!
Fish code is python: https://github.com/djmips/trout
I'll be honest: it's a lot of fun, but if I lived 100 lifetimes, it would never save me time on balance. ;)
I also use one to run stratux as another poster mentions. That one saved ~$650 vs buying the COTS solution.
Potato quality photo of the very advanced system I came up with for keeping all the components together: https://tootcatapril2017.s3-us-west-2.amazonaws.com/media_at...
Here's a grainy video: https://youtu.be/sXVZhv_Xi0I
Here's the code: https://github.com/nick264/music-processor-master
Actual code didn't rely on rPi (Elixir/OTP on Linux). But we shipped them on Pis. Other options considered had been Galileo and also an SoC called (I think) Quark (also from Intel).
Hardware-wise, it's just a Pi and UnicornHat. I wanted to use off-the-shelf components since it's in an office environment with rather strict rules about what can be plugged into the wall.
1) Internet radio w/ an amplifier in a cigar box. It was a gift for my gf and only plays the station she listened to in college. https://github.com/rocktronica/curpi
2) Timed camera and GIF maker for my cat feeder. https://github.com/rocktronica/feedergif
3) OctoPrint server for my 3D printer http://octoprint.org/
The repository below contains code and instructions on how to setup the Raspberry Pi device to report temperature/humidity data along with manual alerts to the server: https://github.com/ankurp/thermostat-sensor
The server code where data is received and saved, notifications are sent, and the entire system configured via the admin portal is here: https://github.com/ankurp/thermostat
Some pictures: https://github.com/Hylian/PiHUD
I built a "Kitchen Dashboard" last year: https://gavinr.com/2016/01/10/raspberry-pi-kitchen-dashboard...
And of course you have to build a RetroPie: https://retropie.org.uk/
It's not strictly a hardware project, but it's a crucial building block for any network-enabled Raspberry Pi project, and we'd love your feedback.
I'm also in the process of building a "magic mirror" which will have some home automation and Google assistant built in.
Making an snes emulator in an HDMI dongle form factor with wireless controllers.
SNES on your main TV system, switch TV inputs, play Super Mario Kart. No hookups, no wires.
If you're already using AWS then I'd definitely look at SES. I appreciate the price may seem too cheap, but the service is now used by huge companies for their transactional emails, the likes of Netflix rely heavily on it. As long as you configure your set-up correctly with DKIM/SPF I'd be surprised if you ran into too many delivery problems. Also worth noting they now offer dedicated IPs, for a not too costly monthly fee.
I find the deliverability comparable (although I'm least experienced with SES). Where they shine perhaps, is in reporting and tracing of issues.
Postmark do look good and perhaps with _only_ transactional email, their deliverability could be among the best.
All the providers mentioned are targets for spammers. So they have to somehow whitelist your account before they allow you to send at full speed.
In that regard I found Mailjet to have the worst on-boarding experience, and Mailgun to have the best.
It's been excellent. I'd say I spend about half my time standing and half sitting on the stool. For me, rather than losing focus when I'm standing, sometimes I'll just pace around my office a bit, which I've found helps me think a lot, and obviously helps keep the blood flowing and the muscles loose.
1. Get a padded mat or soft shoe inserts2. Dont force yourself to stand 100% of the time3. Always start your day standing
I also wrote about how to modify your existing desk or build/buy a standing desk. I haven't taken pictures of my standing desks since ~2014 but my setup hasn't changed much.
Coding while walking was never a concentration problem for me, so I can only offer that as an anecdotal data point. It might be me, but maybe walking rather than standing makes it easier to concentrate?
There were plenty of downsides that make using the walking desk hard for me. I was working in games, and testing a 3d game while walking was often disorienting and would cause me to trip on myself or walk off the treadmill. Frequent visits and phone calls from other employees were more difficult to deal with than coding while walking. And a treadmill desk is bulky and noisy and hard to move around. I got the smallest setup I could find, and it still used up a lot more space than I expected.
I'm kind of the opposite to you, where, when I realize I'm losing focus, I'll switch to standing and try to squeeze out a little more focus before relenting and taking a break. Sometimes that will get me right back into the groove and next thing I know it, I've been coding for another two hours.
That's not to say I don't take breaks throughout the day, but focus can be a bit tougher to maintain on some days. Switching my desk definitely helps.
I've been meaning to try the treadmill hack to get a slow treadmill under my desk. Unfortunately, at 6'6" (2m), I'm not sure this desk (or any automated standing desk) is tall enough for me to get a treadmill underneath and still have my desk at a comfortable height.
- I find it difficult to stand for long periods of time, much more difficult than walking or running for the same duration of time. I tend to get tired of standing after about 40 minutes, and just want to sit down. I can run for hours.
- I find it more difficult to concentrate. If I need to really think about a hard implementation, or a tricky design solution, I find my desire to sit down is very strong.
Negatives aside, I actually wish I used it more.
As I've gotten older, I've noticed lower back pain at night when sleeping. Researching the problem, it appears the culprit is tight hamstrings. Sitting for prolonged period can cause tight hamstrings, leading to lower back pain. In the past couple of weeks, I've been stretching and rolling my hamstrings, and trying to stand more. The results have been very promising: The more I stretch, and the more I stand, the less pain I have at night.
I just wish I could stand for longer periods. There's something about it that my body doesn't like, it's just draining.
I don't think sit-stand desk is such a good idea. Sitting and standing for long periods of time is not good for your health.
Here is the way I work, it's like a game...
+ Work in 30 minutes intervals where you only sit.
+ Have a timer (e.g. Google Calendar) that let's you know your time is up.
+ To get another 30 minutes of work, you have to workout for 2-3 minutes.
+ Have a set of 10-15 pounds dumbbells next to your desk and just workout for 3 minutes. My favorite workout is "goblet squat". You can learn the proper forms from YouTube.
+ You have more focus!
+ You won't waste time solving problems that does not matter because you have worked hard for that 30 minutes ;)
+ You'll become stronger! Your body starts to make muscles.
+ You will never get tired from sitting!
+ You'll be ... OPS... my time is up I have to workout...
In general I am getting more and more envious of people who have a job that allows them to move around a lot. Being in one place the whole day just plain sucks, be it sitting or standing.
See my setup. https://www.dropbox.com/s/089qqvaa7j5ob77/office_setup.jpg
I've lost a lot of weight with this setup. Still have a long way to go.
I've found the key to concentration is walking slow. It has a max speed of 4MPH (which is way too fast). I walk at a pace of 1.2 - 1.4 mph. I walk in segments of 25 minutes. Break for 5. Longer breaks every 4 cycles. (Pomodoro Technique)
I look at this as in investment in my health. It's paid off already, in big ways.
What does work well for me is a treadmill desk. Once you get used to it (it took me a few days) you don't even notice that you're walking. I do find that I have to pause the treadmill to work on particularly difficult problems (I do both front-end and back-end on LAMP-oriented sites), but most of the time my brain can handle both.
edit to add: I work from home, which makes a big difference, I understand that a treadmill desk isn't viable for everyone.
I have noticed that I switch between the two positions really often. Having a fast lifting mechanism (mine uses springs/gas canisters with a hand brake) is essential, since it makes the transition fast enough to not interrupt any flow I have going.
My only real complaint is that when standing, any bump of the desktop is magnified through the monitor arms, making them jump around alot. Not a big deal, but when it happens it's annoying.
For cramping legs, I have an officemate who uses this: https://www.roguefitness.com/rogue-fidget-bar.
My final recommendation for office workers is to hit the gym with a qualified personal trainer who understands flexibility and range of motion. If you spend most of your day at a desk I will almost guarantee that you have http://www.physio-pedia.com/Low_Back_Pain_Related_to_Hyperlo... caused by your quads spending most of the day contracted leading them to be tight. Working to extend your hip range of motion and core strength will pay dividends in everything you want to do.
The biggest issue for me is foot fatigue. I now use 2 anti-fatigue mats - a rubber lower mat (Genuine Joe Anti Fatigue Mat), and a foam upper (Imprint Cumulus9 Kitchen Mat Nantucket Series). Without these there is no way I could handle more than 6 hours. However, even with them, I still have sore feet after 10-12 hours (8 hours is ok). Another useful component of a standing desk is a foot stool to periodically shift weight around.
* Start slow. If possible, alternate standing and sitting on a comfortable interval while your legs and back get used to being engaged more.
* Bring your monitor(s) up to eye-level. If you are looking down at a laptop while standing, your neck and upper back will suffer. Search for laptop risers and get an external keyboard and mouse.
* Make a point to sit down for lunch. That short break makes a big difference in standing for the rest of the day.
* To change up my stance, I have a sturdy shelf built in to my desk that I can put a foot up on. Try a stepping stool if your desk doesnt have one.
* Get an anti-fatigue mat. It will save your feet and knees from unnecessary strain.
I tend not to really get into a flow state while standing, but it's good for briefly knocking out tasks like email or minor changes.
I love it; and move sporadically between standing and sitting. Standing is better for conference calls.
Writing prose, emails, books, and blog posts are better done sitting down.
In terms of writing code, I could go either way.
Often switching between standing and sitting is a really good way to fix a problem I'm having focusing.
That said, I go through spurts where I stand a lot and spurts where I sit a lot; there is no real rhyme or reason, I'm not as religious about swapping every hour.
It surprising how natural it feels to stand and work at the desk, and once I get in a zone it doesn't matter if I'm down or up.
It's absolutely amazing, and it's so habitual now that I have a harder time concentrating when I'm not walking and typing (my legs get really restless).
A really nice side benefit is when I go running or hiking, even after a long spell of not running or hiking, I am far less sore doing it because of all the walking at work.
we're also developing new accessories around the desk, like the anti-fatigue mat, so that your sit/stand experience would be better throughout the day.
we're also working on a software component that reminds you when to stand or sit to maximize your productivity. we'll release it in a couple of months, and hopefully, it will be helpful to you.
if anyone has any suggestion on how to make sit/stand experience great at work, would love to hear from you. my email is email@example.com.
For me the purpose was actually to relieve arm pain, because when you rest your arms against anything for extended periods of time, it aggravates the nerve and causes long-lasting pain from your fingers to your elbow and sometimes higher.
Overall I found it pretty helpful, not because I'm standing all the time, but because it encourages me to move around more (shift legs, walk away and come back, etc) which keeps me from being in a bad posture for too long at once.
The thing cost probably $250 to build out of parts from Menard's, using four 4x4s for the legs and a butcher block for the top, and some metal to keep them together. I'm not a handy guy so assembling it was too confusing and difficult and I almost swore I'd never build anything again in my life. But I'm glad I have this thing.
 standingdesk.image = https://www.dropbox.com/s/7acc2jkc6zgrow7/standingdesk.jpeg?...
Regarding concentration, I'm reminded of an interesting article about concentration and standing desks: https://qz.com/957311/why-cant-i-focus-using-a-standing-desk...
"When standing in an officeespecially one where others are sittingyour range of vision is far wider; you can see a lot more faces from a higher vantage point than you do sitting down. The more people you can see both directly and peripherally, the more faces you are unconsciously trying to interpret. And the more you process this information, the more likely you are to take those emotions on yourself."
I've avoided this problem by facing a partition where I can't see anyone and wearing noise-canceling headphones.
But I like standing for dealing with random little things (email and other reaction mode type stuff), and the standing desk also makes it a lot easier to show people things on your screen when they walk over.
Having said that, I don't know if my health or anything like that improved significantly by standing.
I love working while standing, but...
I work mostly at home (and we don't wear shoes in the house). I have a standing pad, but my heels were bottoming out to the floor and eventually started experiencing heel pain. I started wearing padded slippers on top of the pad, but by that time it was a little too late. I developed plantar fasciitis in both feet. It was worse in my left foot than my right foot. My right foot has cleared up, and I'm working on stretching exercises to help clear up the left foot and have been making progress.
I am currently using a drafting stool until my left foot gets better. I really miss standing. In fact, I'm itching to get back to standing. I will be making a couple of major changes. I now wear Crocs while standing. I get that they're fugly, but they are in my experience, the most comfortably padded shoes for the price. I use the ones designed for people who work in restaurants, and they're great. I feel no pressure on my heels when using them. I also plan on alternating into sitting a little more often.
If you're thinking of getting the IKEA hand cranked desk, be aware that the table top that comes with it is not solid. I originally wanted to cut a hole in it to permanently mount my dual monitor stand, but doing so would have compromised the structural integrity of the table top.
From what I gather, foot problems are common with people who move to a standing only setup, so take some actions to mitigate this if you can.
I usually alternate standing and sitting in 80+% standing / 20-% sitting split. I ront feel guilty when I go home and sit on the couch for a bit, my intestines and other organs feel much better now after standing as sitting prolonged hours seemed to squeeze them leading to discomfort. So overall I feel better. Much better.
Initializing a spout of heavy concentration can be difficult while standing up, but once I get going I lose myself in to it.
But I also recommend once every 30 minutes doing some frantic jumping or whatever to move you heart rate up for a minute or two. A timer is good for that.
I will say that I preferred my treadmill desk. Standing can be a little tiring. I use a mat and good shoes, but I still feel it in my hips at the end of the day. (I'm about to turn 50).
With the treadmill desk, I could feel it in my calves and thighs, but it felt good and was much less tiring. The treadmill was just too heavy to move when we came to Texas, but I hope to have one again.
I never had any trouble concentrating on the treadmill. I do find myself sitting to think sometimes from the standing desk, but I think that is the soreness issue in another form.
similar experience. i find sitting with good posture more comfortable and better on the knees
My focus is about the same from what I can tell, and I actually prefer to stand.
While standing I shift my weight and move my legs which, according to my doctor, is the point of sit/stand desks. They promote/accommodate physical activivty while working at a desk.
That said, my focus while in the office is very low overall because I work in an open office. So, whether sitting or standing, I have to deal with visual distractions and filter conversations with headphones and generated noise.
So like the OP, my body and health benefit enormously from sit/stand and if my concentration suffers, it is not to such a degree that it is noticeable due to other environmental factors.
I wish I had room for a treadmill in my office, but I don't.
Topo standing mat was $50ish and worth every penny. I can stand for about 15 minutes without one and 2 hours with.
For what it's worth, I don't perceive any difference in my ability to concentrate or be effective while standing, with some caveats:
* With the unfortunate advent of glossy-screened displays, there can be additional glare at a standing height. You may want to evaluate whether your concentration problem is related to the amount of glare or outright reflections of nearby activity you are perceiving on your display. For me, it was important to get semi-matte displays (truly matte is ever harder to find these days) and orient the displays to minimize glare. Side rant: hardware manufacturers, please make matte displays mainstream again.
* My desk was quickly hand-built out of plywood and is non-adjustable. It was intended to be experimental but I've used it for about two years now. My intent is to replace it with a hardwood fixture soon. If you aren't interested in splurging for an adjustable desk, don't make a stupid mistake I made: I forgot to factor in the height of the keyboard itself (approximately 1.5 inches for my mechanical keyboard) when planning the height of the desk. I measured the distance away from the floor that I wanted my hands to be at, but forgot that in practice they would be 1.5 inches higher. This is a continuous annoyance making me look forward to replacing this "temporary" desk.
* As others have said, a gel pad may be helpful. I think this may be a matter of taste. I personally use one, but I sometimes move it away since it can cause a weird "floating" sensation at times.
* I do a lot of periodic movement while I am working or thinking. I squat, leg-lift, walk, sway, stand on one foot, etc. I feel this helps keep me from feeling "locked up" in a standing position.
* If you can situate your desk so that you are back up against a wall, you can also do a lean-back arrangement which is pretty comfortable.
It helps me stay "active and focused" on taking control of what I'm doing ... which is super for making sure I get started with actual work rather than drifting off onto some lazy web surfing or whatever.
And then, after getting properly into my work (opened the IDE / tmux/vim setup and started to code), I tend to slip down in my seat pretty quickly, to get into proper un-distracted focus.
Getting back to standing mode occasionally if getting too drowsy etc.
My honest suggestion for back pain is a better chair with stronger lumbar support. Also check your posture. The combination honestly changed my life. You would be shocked how much of a difference it can make.
I don't think I have worse concentration while standing unless I've been standing for awhile and my feet are staring to hurt, which makes me a bit more restless. Another thing I've noticed is that people seem to find me more approachable when I'm standing. They seem to strike up conversations more often, whereas when I'm sitting I must look like I'm working hard and shouldn't be bothered.
Overall, I'm very happy to have one and would recommend a standing desk to anyone, provided they have the option to sit as they please.
I started my standing experiment with an ikea hack (just a small lack table with a shelf attached for a keyboard). I liked it enough that i invested in an ergotron (I work from home, so my bought my desk setup). I made the decision to invest when I realized I had switched from "okay let me sit down and get to work" to "okay, time to work, let me stand up and get to it".
I still sit during the day, whenever I get tired or something, and when I am not at home I am unable to stand for as long - I think the foam pad makes a huge difference.
I deal with that by shifting weight balance (by leaning, or putting one foot on a box or up against the wall) and I have a pretty comfy mat to stand on. If it's uncomfortable I'll just switch to sitting for a while.
I also walk ~3 miles a day.
I have been standing primarily now for over a year and even converted my home gaming computer desk to a standing desk. Yep I stand while pc gaming...lol.
It really helps me feel better, back issues aside, because I feel like I am moving more. Even just the switching feet position.
The only advice I have is to get a good padded mat. I started without one and it was painful on my feet and legs.
I had knee surgery a few weeks back trying to solve the problem, which has forced me to be sitting all day, but I've been counting the days until I can be back at my standing desk.
Instead of a chair, I built a leaning stool out of an old cane. Takes up less space than a chair and easier to transition to as well.
My sit/stand desk solved that issue and when I'm standing I feel a lot more focused. Even if in the end I'm not moving that much more than while seated, it feels like a world of difference to just be able to step around and move my legs a bit.
I used to have this problem as well. Over time, my body adjusted and now standing is so natural, I have trouble working if I am sitting. That process took about 6 months. I've been standing for about 4 years now and have a gel pad for the floor.
Definitely would not go back to just sitting.
People should note that with any new position it takes a little time for your body to adjust to the new position. So if you are standing, your legs will hurt for a week or two. But then you will get over it.
Your ability to concentrate while standing will improve over time, but for certain tasks like intense coding, I often prefer to sit, even after this many years.
I have an Ikea Bekant desk with motorized adjustment and probably alternate 2-3 times a day.
I have a Humanscale Float (non-electric adjustable sit/stand desk) and I love it. It was a bit expensive but being able to very quickly transition between sitting and standing means I'm more likely to do it.
I find that in long stretches of work I really need to switch between standing and sitting else I become irritated. When I work outside home I'm most productive at a specific cafe that has both standup and sit down tables.
I also noticed I drink a bit more water and move around a little bit more since there isn't the "get up from sitting" process.
For me there's a huge difference in focusing while standing and while sitting. I start the day with emails and busy work while standing and sit after I really start to dig in to a problem that needs focus.
I also find it hard to write code when standing so I use standing position mostly for reading, calls, standups etc. when I want to get in the "zone" - only sitting + headphones works for me.
What desks are you using and do you have any recommendations?
I crank out volume when I stand.
Switching between them is pretty great.
Probably a mobility issue. The pain is similar as if I try to do an overhead press.
I have been squatting for 60 seconds twice a day. I should probably try hanging too. Any other ideas ?
What's your age and how active are you?
 Robin A. McKenzie, "Treat Your Own Back".
There are ones that have a preset, and I wish mine had that option.
I have never had any problems concentratingonce I actually get focussed, I completely stop noticing that I'm standing.
I have the opposite experience, if you're a fidget-y ADHD person, standing desks can be great. Sitting in a chair all day is torture.
Also invest in an anti-fatigue mat IMO.
My advice: be careful choosing property management agents. Get referrals and communicate clearly what you expect as far as them quickly fixing problems, providing receipts, etc.
My meta advice: prefer buying modest homes to live in, not MacMansions, and try to hang on to them as rentals as you move. It is a good way for someone in the "middle class" to accrue resources. It is better to live in a modest home and have separate income property than to just own a huge/expensive house that you live in.
Long term rentals have less issues. I'd say venting tenants if you are doing it yourself can be tough, although you can work with an agent if you choose.
Dealing with issues that are small, but need to be done, for example, dealing with a clogged drain, or dealing with a broken toilet in the middle of the night, are tough to manage. You can call a plumber, but prepared to spend a lot of money for something that can be done yourself without much trouble.
Short term rentals the biggest issues I've seen is the check in/check out process, cleaning, and being able to adjust to client expecations.
Some renters will have issues finding the location for a variety of reasons despite providing directions. This goes for finding wifi passwords, not knowing how or when to checkout, etc. Being there helps enforce these policies and deal with these small matters.
As others have said, prepping the unit with consistent quality can be tough as finding reliable staff isn't easy and their is high turnover.
For some context, my short term rentals are in the Caribbean, my long term rentals in the states.
A good agent will have a handyman on staff so you can get simple stuff fixed for a reasonable price, a network of contractors that do good work at a good price, and know what channels to advertise in to get good tenants in the local market. They also know the local market better, which means they can better optimize price vs time empty, and depending on how bad you are at that, that optimization alone will pay their commission.
It's all too easy for unsupervised people to flake out hours before you have some renters with high expectations due to move in. Some may have the courtesy to let you know beforehand, others after the fact, and still others will bill you anyway.
Others may not have a consistent work ethic (spit and wipe a few spots and spend the next three hours checking Facebook).
Getting the reliability numbers up is very expensive. I'm starting to see maintenance staff take before-and-after pictures as part of their work.
When we did short term rentals we even had the manager greet the new tenants, and take pictures in front of them, as well as meeting them for departure.
It's also worth it to set up a local telephone number that forwards to your remote number so everyone can still reach you. Unpredictable stuff does happen, and if it is something costly or big, you want to be in the loop.
Some people are going to take advantage of you, or at least try. Budget some extra money for this. Insurance may replace things eventually, but if you want to keep renting and your property description says there is a TV, you'll need to replace the stolen one right away.
1. A living space just requires a lot of physical labor: gardening, repairs, maintain, etc.
2. You can outsource a lot and still have holes. Example: property management company handles everything. The dishwasher breaks. You order a new one. How do you co-ordinate that the installer and the delivery is at the same time? What if the person there doesn't want to deal with it? Can you hire someone to let the delivery in and store it till the other person comes? What if they don't show up on time?
Imagine scenario #2 x 100 over and over again.
Main problem was peace of mind, knowing that tenants were there & not causing issues. Had a friend in the local area drive by every so often to make sure the place was in good condition. Let one do their own gardening, they let the place get run down so in the end mandated lawn/pool service for the tenants. The gardener was good at alerting us to issues.
Tenant changeover was hard and usually necessitated a flight down for a week or two to show the property (to a pre-arranged appointment list) and ensure move-in/move-out went smoothly.
Co-ordination was difficult sometimes (tenant reports an issue, get vendors out to triple-bid repairs, arrange for tenant to be there to let in vendors both during bidding and doing the work). Ongoing maintenance issues (the pool constantly leaked) were difficult to evaluate properly & had to trust our contractors.
Considered a property management firm but at 10% of the gross rent (and fees to find/place new tenants) on a property we were not cashflowing on we chose to manage it ourselves and it worked out alright. Short term I'd definitely want a local agent, too much to go wrong.
Biggest problem: Property management company. I don't trust them to manage my house, and see that the tenant doesn't destroy it. A lot of my problems are things I never worried about, or thought needed to be fixed immediately, but my property management company has screwed me multiple times, but I can't afford to break the contract. My tenant is demanding, and exposing glaring holes in the lease.
Find a reputable property management company and get references. Talk to the home owners, real home owners, not property investors. Require the company to send your payment within the first month, don't let them keep that and earn interest off of it, choosing to remit next month, etc. Include strong clauses in the lease about property and appliance damage, detailed instructions in the lease for tenant maintenance (i.e. air filters), expand the section on pest control to explicitly state what you will, and won't do. Buy warranties on your central air, and if you can find a good place for it, on your appliances. Trust me on this one. Meet, qualify, and set up your own agreements with handymen, contractors, etc. Don't let the property management company do this unless you are absolutely clear on the costs, etc.
My saving graces for this house if my contractor, who is also the handyman, but has a rolodex of reputable people for all situations. Find someone like this, preferably an independent contractor in your area, and get to know them. Worth their weight in gold.
Screen your tenants. Better to be vacant for months than let a bad tenant trash the place.
Make your money when you buy. Don't overpay and rely on appreciation. The property should cash flow from day one.
It seems like too much of a headache, so I will likely sell the house.
This seems like a lot to manage and I wouldn't trust a tenant to do it and some stuff requires tenant coordination. Seems like an annoying logistic problem to solve.
i remotely manage hundreds of SFR & MFR units.
How much do you pay?
As for the people culture, Spotify values the growth of employees. We focus heavily on personal growth over product delivery. We believe if we build good people they will build good products. I was doubtful before joining Spotify that they would fulfill everything I was told (about the culture) during the interview process but everything has held true.
For better descriptions of Spotify check out the engineering culture video:https://labs.spotify.com/2014/03/27/spotify-engineering-cult...
I would encourage you to apply. Spotify is a great place to work.
I worked at Spotify Stockholm (doing my master thesis there), and it was quite nice. Pretty much what you'd expect from bigger tech companies (Google, FB), only on a smaller scale. I'm sure you'll find a lot to do as a UX researcher since they are constantly experimenting with new features.
Using 400k as down payment gives you at least 2mil buying power. There will always be expenses so keep the 100k for that. Build a partnership and the sky's the limit.
Make sure you do the math on expenses and payback period so you'll know your approximate holding period. The problem is that there are many people looking to do the same and bargains are hard to find. It's a lot of work.
Up and coming neighborhoods are probably your best bet. Think gentrification. Great for investors. Sucks for current residents. Always look at the neighborhood and try to project its future.
Stay way from real estate stocks. They are great on the way up -no work, all gains. But on the way down, they'll have to liquidate or go bankrupt leaving you very little protection.
BTW, a big chunk of the real estate billionaires are developers that bought, developed and held for 20-30 years. It's not a business where you need lots of brains but you need lots of patience and sweat equity. FU wealth comes with time and even multiple generations. So the goal is to get to a point where you can meet your expenses and have a nice living ASAP, wait and then go for the ride to wealth. Be ready for multiple ups and downs in real estate. Building relationships helps a lot. There's a reason why the rich have so many parties. It's a way to keep relationships with people you wouldn't otherwise see. Good Luck!
1. In some markets to buy some property that can be actively managed.
2. Pay off a home mortgage and improve cash flow...which is probably a good consideration when thinking about real estate investing.
3. Speculate in (more or less) an "all my eggs are in one basket" sort of way on anything from houses to commercial property to raw land.
4. Place the capital at substantial risk via leverage to create a larger portfolio...but still probably not enough to create a passive investment.
In regard to flipping houses, the money is not just in getting the house at a discount. It is also in getting the improvements at wholesale cost rather than retail (or doing the work ones self). It also helps if the property can be acquired and sold in a manner that one avoids or receives or reduces real-estate commissions because 7% of $500k is real money when it is your money.
Likewise 10% contractor overhead + 10% contractor profit on $100k worth of construction is real money when it is your money. There is a reason the stars of the home flipping shows usually have contractor licenses. They also use the same crews and have relationships with businesses in the various trades. To make real money, house flippers need a continuous deal flow. It's not part time work.
If it were me, I would probably sit on it and wait for an opportunity that clearly appeared to be well above average. That means understanding at least one particular market really well and being very patient and financially conservative. Basically, it is a recognition that I am going up against professionals as an amateur and with the intent of making money more or less passively. There are lots of other businesses with better cash flow if I am actively participating.
Not sure about your tax laws but here it's usually best to borrow 100% and chuck your cash on your primary residence mortgage first ideally via offset then the rest offsetting the investment loan.
In that sense it may make sense to spend the money upgrading the primary residence and pull equity out for the deposit on the investment so there is a 100+% loan to maximise tax deductions. That's if you are aiming for capital growth and can stomach the lack of cashflow of course.
The only downside is that you have roommates now, so choose carefully!
I wish you the very best.
2. Pocket , it comes with an extension too
-  https://getpocket.com
It's not about the credentials as much as it is about how well you can explain what you know in an interview. Any decent company would rather hire the person who is fluent and well spoken about what they know about AWS over the person who has a certification but lacks the communication skills. So the best way to get hired is to practice explaining (and whiteboard diagramming) what you know about AWS, and also detailing why what you know can be really helpful to a company's business. That will give you much more of an advantage than a certification will.
I'd face the same issue when I'd applied for 1st job (at startup/small WordPress company) and HR does not reply next 1-2 days, So I was thinking to scan that company website and found some security issue so download the DB take some important screenshot and sent to CEO and next couple of hours get a call from CEO :)
After that 2nd job, I'd again found security issue and direct email to the 2nd company CEO.The issue is in INDIA, HR needs Cert/Degree more than what you are qualified for real work.
So in India without cert/degree HR directly rejects you as they don't understand what AWS/Security etc.
It gets you in the door when you have no other in, but not too far. If you go work for a bozo shop, they'll put more weight behind a current cert. However, if you get hired, do what you can to not rely on certification alone. Your peers will smell the bullshit, even if management outwardly loves your certification.
One of the best books on programming style and function, backed up with actual research for the recommendations.
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.
(in roughly chronological order. As you can see from the chronology, it took me a long time to start to like OOP.)
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.
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.
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.
The Description of Finite Sequential Processes http://www.jsoftware.com/papers/DFSP.htm (see e.g. the concrete implementation of the Simplex algorithm , the hamming code corrector). It shows that, with the right primitives and notation, a lot of things are simple and elegant. It's not an necessarily an easy read (depending on your math level and background), but it is a very rewarding one.
Notation as a tool of thought http://www.jsoftware.com/papers/tot.htm - a longer introduction.
Bottom line: a different take on abstraction. It makes a huge difference when you peel most abstraction layers.
I'm still trying to achieve everything he advocates, but what I've managed so far has been extremely beneficial.
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.
This helped me break my analysis paralysis when it came to figuring out how to organize my code.
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.
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.
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.
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.
_Head First Design Patterns_ is a great influence too when it comes to OO-abstraction, for good and bad.
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)
* 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
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.
I would assume all the best knowledge could be found online for free by now.
My own is rust can be conquered with enough patience and time, but because of the high entry costs it will always remain a niche language.
I've written C and C++ professionally, also used Go and Rust on hobby projects. Rust, by far, was the hardest to learn and get something useable out of it. Because of that, I would never recommend someone put it into production unless they have a very specific use case that Go could not handle. The onboarding costs would be just too much.
I do like the concepts behind it, and thought it would be the answer to Go's limitations in expressiveness.
I do still hold out hope for it though. I think with the right tooling and development environment it could one day become useable, just like Java and C++ benefited.
In terms of raw numbers, there's not as clear a thing - I've been in companies that were acquired for doing really well, and others that might not have been able to pay payroll in a month.
If a company is heading towards an IPO, they MUST already have a CFO in place, probably 3-5 years in advance. While there are financial systems required, there are practices, reports, etc etc that require day after day, month after month, and quarter after quarter monitoring. It's not something that can just be "cleaned up" at the last minute.
Profitability is not a hard requirement but certainly helps.
The "magic number" used to be $100MM ARR but that doesn't appear to be the case anymore. I'd wager this is in part because of the increased private/VC valuations the last few years.
Strong growth is good. Strong growth among the more profitable product lines is even better. Margins should be high, potentially increasing as the cost of delivering the product goes down. If the team can put $X into Sales and Marketing and get 3-5X revenue out, that's a good sign.
If you can determine LTV, CAC, and churn, those are GREAT indicators but unless you're senior management, odds are you won't see those.
Regardless, it is NOT something you can bet on because even if it does happen, it can be YEARS down the line and if you're an insider, there are complex rules on when you can do or say what.
After 7-12 years in VCs will want to get their money out to pay out their LPs. Around this time they will start pressuring management to find a buyer or prepare for an IPO. Though this pressure depends a lot on the company's financial situation and how willing the VCs are to wait for an exit.
It's not the best indicator but it still is one.
This is probably the top indicator IMHO.
To quote the former CFO of Blekko, "Every month we have a number of dollars in the bank, that number is bigger than last month, 'Bueno', its smaller than last month 'No Bueno.'"
Easy and quantifiable.
Also, if the company is losing money, and each month the bank balance goes down, divide the rate of loss by the balance, at the zero intercept the company will 'exit'.
Also easy and quantifiable.
Between those two 'easy' versions, lays the challenge. But for your question which included the caveat "... in the near future" only the easy ones apply.
- A cleanup of administrative processes such as HR. Standardisation of leave, expenses, release of a overly-detailed employee handbook, change of employment contracts. Exec HR contingency plans, documented reporting lines. Beyond HR, compliance may also be given more attention than usual.
- Removal of minor shareholders, cleaning up equity structure, if it was not done exceptionally well from the beginning.
- A PR push with a common focussed narrative on the companies aims & growth. Following this, announcements of comparatively minor things that support it. Lots of quotes from key management. However, as you draw closer to d-day there will be a quiet period where no information will be released as part of the process.
- Some key execs removing themselves from day to day ops while its ongoing. Guarded language during announcements as mentioned previously, especially in the final stages.
There are presumably more indicators based on the companies performance, investors and the market in general, but I think it would be guesswork without being in the loop on their corporate strategy.
1) Game changing technology. These are very hard to measure, especially from the outside. You have to ask yourself, "Is this technology for real?" and "Could a large company monetize this?" This is what's happening in the autonomous car market. Let's step aside from this.
2) Companies that are growing well and fast on their own. In this case there are 3 metrics that matter: Revenue, Revenue Growth (new business minus churn) and Margins. Revenue is the base for valuation, and Growth and Margins determines the multiple. A weak rule of thumb that answers your question is that once a SaaS business hits 50mm in ARR, Growth Plus Margins should equal 50%. (It's ok to lose 10% of revenue in margins if you're growing 50% per year. If you're only growing 20% per year, you should have 30% profitability.) If it has this it's trending towards a positive exit.
1) In case 2, if the company has external venture money, they are more likely to exit. (The VC funds need to return money to investors) If they are self-funded, they can stay private much longer.
2) Very few companies pull off the high multiple exit or IPO. It is hard to maintain growth, and hard to eventually turn a profit when you are growing fast.
3) There are a small subset of VC firms and specific VC partners with disproportionately outsized success. In the absence of other information, an investment by them is a good signal. (But smart money won't help a bad business)
You'd have to chain all those together to answer your question as posed.
Generally, look for $100M+ revs, strong growth, institutional investors, and a reasonably-new CFO with a track record in sales/IPOs.
The scale of the business has to be reasonably large. Market cap in at least 8 figures.
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
I did a makefile like
file1: wget http://example.com/file1 file2: wget http://example.com/file2 file3: wget http://example.com/file3
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.
I use Makefile's regularly on open source and personal profiles (e.g. https://github.com/tony/tmuxp/blob/master/Makefile). Feel free to take and use that code, it's available under the BSD license.
The creativity comes in when dealing with cross-platform compatibility: Not all file listing commands are implemented the same. ls(1) doesn't work the same across all shell systems, and find on BSD accepts different arguments than GNU's find. So to collect a list of files to watch, we use POSIX find and store it in a Make variable.
Then, there's a need to get a cross platform file watcher. This is tricky since file events work differently across operating systems. So we bring in entr(1) (http://entrproject.org/). This works across Linux, BSD's and macOS and packaged across linux distros, ports, and homebrew.
Another random tip: For recursive Make calls, use $(MAKE). This will assure that non-GNU Make systems can work with your scripts. See here: https://github.com/liuxinyu95/AlgoXY/pull/16
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
Point being that autoconf is often overkill for smaller C projects.
- 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.
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:
* 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.
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
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)
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.
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.
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.
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.
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.
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
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.
make seems to be easier to install/get running than the myriad of non packaged, github only projects i have found.
It's pretty cool, but not ideal.
From what it seems, they are doing internal events to figure out what they should be doing. This basically sums up what they is happening there: "what he really wants to do is make the stuff of his childhood become real. A robot that can do Luke Skywalkers surgery. A way to see day dreams all the time"https://www.wired.com/2016/04/went-inside-magic-leaps-myster...
Or well it did, but so poorly that it's not worth the hassle. This was a couple a years ago tho
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.
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.
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.
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"
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!
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.
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.
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.
I've had a few coding tasks completed by Redditors on this subreddit.
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
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!
It's flexible part-time remote work, and you don't have to find clients yourself.
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 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 ! :)
Once you pass their screening process, you will get jobs in one or two weeks
Meanwhile -- can you do canvas/d3/realtime charting type of stuff?
My actual most visited website is one that has hit the front page, but not because of my "Show HN".
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.
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/
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@ ..
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
The result was a spike in GitHub stars, more users and feedback. So a great way to increase an open source project.
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:
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
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
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
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!
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.
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
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 ()
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/....
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.
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
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
Besides the traffic increase, the repo trended on Github and now we have +1,400 stars.
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..
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...
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.
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.
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.
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
It was a solo attempt at the beginning. Right now there are 5 of us working on it and building a business around it.
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.
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)
- 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.
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.
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.
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.
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.
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 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.
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 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)
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
Here is the HN post :
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).
We're doing well, and hiring! :)
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.
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.
Show HN: https://news.ycombinator.com/item?id=13687353
Summary: Simple web analytics
Result: Lots of great feedback, added about 100 active users
I got a good spike of traffic from Reddit and Medium, HN a bit less.
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.
https://certsimple.com now has clients including Superdry, CrowdCube, The Motley Fool and most of the fintech startups in London.
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.
Details:I feel like there's an undercurrent of heavy handed moderation here. Replies get detached, deleted, and no one would know unless you really looked.
PS:I'm not saying these forums aren't vulnerable to abuse. They're and should be moderated (I guess), but make the moderation visible and obvious, is what I'd say.
My worry is if and when I step over to the wrong side of the (imaginary) line that the mods have drawn in the sand, my replies or posts here would be doomed, pushed out of existence and visibility.
Mods also do appear snappish here based on the few replies that I've read.
All of this seems anecdotal. The question did say "feel". I'm not going to bother collecting evidence because don't think this topic would get that much attention (it should though)
I wouldn't come here instead if it was too welcoming - getting to the end-result of high-quality discussion involves being harsh or exclusive in some way, and false-positive/debatable-positive moderation happens. I'd personally like to see a little less technophilia (or more philosophy/critical commentary), but you can't say WYS!=WYG with a name like Hacker News.
Thus, I don't feel welcome to participate in such discussion.
But as another comment said, I don't think HN is a meant to feel like a welcome community by design. It feels more like a semi-anonymous public forum.
I think overall the active HNers a great.
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/
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).
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
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
Eli Bendersky http://eli.thegreenplace.net/
FreeCodeCamp/Quincy Larson on Medium
There's also an OPML file that you can import into Feedly.
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 :)
He's the guy behind Have I Been Pwned (https://haveibeenpwned.com/).
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.
I'm also a fan of the comics the author Peter Krumins puts out https://comic.browserling.com/
Its a hardware/hardware startup blog written by what looks like a full(ish) stack hardware VC.
Enough programming news for a lifetime, or two.
* 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):
Lots of high quality code examples in a variety of languages.
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:
This is an almost random selection of some of the blogs that I subscribe to.
- scott hansleman
- coding horror
- decyphering glyph
- eric lippert
I couldn't help noticing that your post contains several generalisations ('every founder is full of shit', 'every product is crap', 'my 10 years of experience is worthless').
We're all wired in different ways, and this might only be a small component of your problem, but it might be worth talking to someone about generalised anxiety or similar.
I hope this doesn't come across as patronising or anything. It's just something I learned about myself recently that could be useful for you too.
It took me well over a year to get out of it. I spent practically a year playing games (thanks acquisition money!) My only job was teaching for a while.
I honestly don't know what worked.
The games, travel, spas, and idle time didn't help much. If anything, they made me feel worse about spending lots of money and time. They pressured me to do more.
Freelancing was such a terrible idea. I ended up losing money and getting even more burnt out. After that, I refused to do any coding at all for a while.
The teaching assignments helped quite a bit. It was well paid and I got to achieve my bucket list of visiting every state in the country. Teaching is also really easy with enough years under your belt and it's relaxing to have a lot to say. It's even more relaxing if they pay well.
I did a lot of exercise. Felt better than ever, but didn't cure it. Same with meditation.
I think what finally got me out of it was working 7 days a week on low difficulty tasks. It sounds really dumb to treat burnout with more work, but it worked for me. Maybe startup people have their comfort zone working 60 hours a week?
You might not even want to do hard work coding. Try working in F&B or some other grunt job. Somehow it was like a meditative process. Just do something that feels like it's not a total waste of time.
Perhaps you may be depressed, seek counseling and see if that helps.
It can be a rough world out there. Look at what you have though, a ton of valuable experience that you can apply towards the right opportunity when the time is right.
Hang in there, time changes if nothing else, and that may be all you need.
It might be difficult financially. I don't know your situation on how feasible that is. Perhaps you have family and other hard commitments. But I think in general people tend to overestimate the cost. Wind back your outgoings. Head somewhere cheap. Meditate, exercise, eat fresh food.
(Your experience is not worthless, if you've been doing the relevant work then some companies will hire you even if it doesn't match previous job titles. But if you're this burned out you should probably not think about it.)
The hardest thing to get past, and the first one I encountered, is the very real sense that what I'm doing right now is a mistake or a poor fit or below me or not enough of a challenge or etc, etc. When I'm in that burn-out mode, like depression, what I see and feel is through a particular lens. So maybe it's not that bad or maybe there are parts that are enjoyable or maybe I can make it work but when I'm in it then all of that falls away. The first step for me was to realize that I can't really trust my brain to give me an active picture when I'm rushing from thing to thing and hate every minute of it.
So my way out was not to make any rash decisions but to figure out an escape plan, even if it's temporary. I've been freelance for 10 years so I was able to pare down my projects and stop taking on new ones. I'm down to basically a single client part-time and everything new that comes in the door gets referred to someone else. I've deleted all of my various Trello lists of possible businesses to start and OSS to create and contribute to and unwritten blog posts. If I'm at a computer then I'm working with that one client. If I'm not I'm playing with my kids or riding a bike or building something in the garage.
The reduced stress, reduced time in front of a screen, and less demands on my time are very slowing starting to add up to what feels like recovery. I can trust myself a little better and have been surprised by what bubbles to the surface as important to do. It becomes easier to say no and enjoy life a little more and make better decisions. I feel like I've still got a long way to go but I don't dread my keyboard anymore.
For me, the pressure of "make a hugely important decision about your life right now! you're running out of time! you hate every minute!" was immense. It just felt like this always-looming thing that I had no answers to. What company to start or join? What idea to build? What person to meet? WHAT NEXT?!?! Once I started letting go of that question and just focusing on the absolute basics - spend time with people, work enough to pay the bills, get some exercise, eat well - then I become more competent to answer that question. It's like trying to do your best work at 8pm after a 12 hour day. Just not going to happen.
One more thing that I found can be tough but helpful. Regardless of what you're doing at any given minute, charge yourself with doing the best job of it that you possibly can. Not just for you but for those around you. Even if you're fixing spaghetti CSS or washing dishes or driving or cooking or anything else, tell yourself "I'm going to do this thing the best I possibly can right now." Good things will happen as a result but concentrate only on the action itself. I've found that I enjoy what I do far more, regardless of what it is, if I stay really present and let go of whether the task is enough of a challenge or enjoyable.
Hope that helps. Good luck out there.
Plenty of countries with bright people who are like miscalibrated, misaimed, lasers looking for a target to pulverize.
Now if you have a bit of a math/engineering background and want to understand how modern AI really works, the two best books/shortcuts to go from beginner to expert are:- Ian Goodfellow's "Deep Learning" http://www.deeplearningbook.org/- Richard Sutton's "Reinforcement Learning: An Introduction" http://incompleteideas.net/sutton/book/
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 soon as one of the VCs cracked a jokeno matter how classy or appropriateHN would inform them that the pitch meeting was in fact "not Reddit", and that humor is not toleratedthereby killing the deal in the process.
The VCs would instead proceed to allocate the funds to autism research, reaping the tax benefits in the process.
Thought experiment: imagine Techstars owned HN. How much would YC pay to avoid that fate?
Though the difficulty would be that the brand is so attached to HN that the VC firm might struggle to get the brand value.
Also, given that they have around ~20 million visits per month according to similarweb it could probably make $10-100k per month if it charged for job ads.
It could also probably sell ads and do ~$30-100k/month from that based on a ~$3 CPM.
Junior developers need to be given time to make mistakes and learn. I know a senior developer might seem too expensive for your budget, but hiring a junior developer might ultimately cost more for your project over time. The time that they're going to take to have to ramp up and learn everything is probably going to eat into the time to deliver any sort of product. What I'm saying is that a junior developer is a time and money investment, and sometimes it just pays to hire a senior developer/contractor and have them get the project out.
Anyway... what I would look for in a junior developer isn't whether or not they're amazing at data structures etc. I could really give a rats ass as to whether or not they're able to do something like Codility. What I need to see is that they know at least some basics on how to code, and that they have the aptitude and motivation to learn.
The two most important qualities to me in a software developer is the ability to communicate and the ability to learn. Why is communication necessary, particularly in a junior developer? I need to know that they're willing to swallow their egos and come to someone for help. It's the fastest way to learn.
Hell, I feel like I learned much faster because I was able to swallow my pride and ask someone with seniority for help. It didn't mean that I would run to them at the first sign of a struggle, but if I was burning most of my day doing something that I felt wasn't really going to teach me much, but was causing me to struggle with something - I would go and ask someone senior for help.
Maybe you shouldn't hire juniors? Junior devs are an investment and we owe them respect and genuine mentorship. By definition, they will 'waste your time'.
And frankly, if you can't afford seniors, your company's mentorship opportunities will be weak enough that the smart play for truly capable, career minded juniors would be to work elsewhere.
That said, I think there may be a deeper issue here. You want to hire seniors which suggests that your startup _needs_ seniors and the experience that they bring. But you're hiring juniors.
You're going to end up disappointed as you need senior developers at this point.
They're going to end up disappointed as they require senior developers in the team to learn from and grow.
(Perhaps unrelated, I think if you've interviewed 400 people and haven't found someone "good enough", the issue may not be with the candidates...)
* Technical education (college degree, classes, etc.)
* Hands-on technical experience. This can range from an internship, to just building computers for friends and family. Something that shows initiative.
* Some other work experience, even if it's a cashier at Dominos or a volunteer position at a library.
I avoid resumes of candidates that have degrees but no measurable hands-on experience outside of school. I find students that have gone through high school and college with absolutely no work experience to be entitled and often spoiled. I understand that is not a universal truth, but I've observed it enough to not bother with those candidates.
In the interview itself, I look for candidates who:
* Are excited about the job, learning new stuff.
* Don't have a bad attitude. This can often be evident when talking about your stack. If you have, say, a Java stack, and the candidate makes some offhand comment about how Ruby is so much better, it's a hint about how they'll act on the job.
* Can answer basic questions about the stack they'll be working on. I'm not talking algorithms here. This is mostly to test if they give a shit about the job enough to read up on the details for 20 minutes before coming in for an interview.
Typically you hire junior developers for what they will become, and not where they currently are. That means the traits you're looking for is a desire to learn and genuine interest in technology.
If you only have junior developers, they will have a much tougher time learning. They'll never see how software should be built.
There are exceptions. Really simple prototypes is one of them. Some maintenance of existing projects might be another exception, depending on the quality of that project, and the type of work involved. Anything reasonably complicated, I wouldn't expect them to finish, and if they did finish, I'd expect it to need to be rewritten very early on.
If you want to do it right, hire a mid level or senior developer. It's better to have a single senior developer than 5 junior developers. If you're looking to hire multiple developers another choice would be to hire one senior developer and one junior developer. Just don't hire only junior developers.
Main thing is to give them homework: not more than 2 hours project that they will solve at home and commit to private repo. Make it unique enough to avoid stackoverflow copy-pastes. Do not give them academic problems, ask them to create real world examples. For example: create CRUD that does something specific like file uploads with resize or similar; access unreliable API and do something with it; create calendar that allows multiple tasks per day (UI/UX); scrape data from the website and put it in to DB.
Those are just examples, but they are easy enough to do in under 2 hours and you can test results in under 2 minutes. Out of those 400+ applications, half of them will not even bother spending 2 hours on a task, then in a day or two you will restrict that remaining ones to about 50-60 just by checking results of the task. Rest are just personal interviews. Just remember to write a feedback email even to those unsuccessful applications.
I think you will find you will save money in the long run if you hire senior developers if you actually do require senior-level development skills instead of expecting junior developers to do the same work for lower pay.
It sounds like you're trying to hire cheap developers, not junior developers.
If you really want junior developers, you have to do a crazy thing; hire people that are actually junior (have very little experience) but have potential. If you'd done that 4 months ago you'd probably have some decent developers right now.
Junior developers need to have high IQ and ability to code, everything else you will need to teach them anyway. Keep in mind that if you don't have time to teach them they will not be cheaper than seniors, unless all you need is bums on seats to fool investors or something nefarious like that.
If they don't do it on their own, and don't seem interested in programming for their own benefit outside of the job, then don't hire them.
People who are new but enthusiastic and spend a lot of time learning on their own are who you want.
Subsequently, hiring too many junior developers can be a hinderance because there aren't enough people to coach and guide them. It adds technical debt to your organization and makes for a shitty experience for the junior dev. They need help and they need people who have the time to help them. It's easy for junior devs to feel inadequate and suffer in silence.
Finally, ask yourself why don't have the funds to hire a more experienced engineer. It may be a sign of an unhealthy organization or goals which are way too big. I say this from experience and the pain I felt as a result of not listening to my gut and pushing back ferociously. You think firing someone "sucks," try laying off a room of people you know, who you care about, and who have been good to you and your organization... bad goal setting will cause it.
- A genuinely nice person.
If I have two things, I'm pretty sure the rest will work out in the end.
Mainly, though, I look for enthusiasm and eagerness to learn, the ability to communicate clearly, and intelligence. I also look for a balance of self-determination and the willingness to work through a problem on their own but also enough sense to know when and how the to ask the right questions when needed. Finally, honesty. If they've fluffed up their resume that is a red flag.
You are not going to be hiring senior level developers who've misclassified themselves. Juniors are going to take work; there is no avoiding that. Adjust your expectations to that reality and you will have a better chance of pulling in an employee that will do well for you over time.
In your case, I'd say someone passionate enough to provide good value for the team. Just make sure you don't scare them away by making them feel they might "waste your time" ;-)
Finishing the challenge on itself will be the first filter; then you can review the ones who finished it and interview the ones you like most.
BTW if you are looking for a remote web dev (front-end or back-end) drop me a line "public at francisco.io" <= my CV.
If you're looking for how to find hidden gems, my best advice is don't bother. Ask them fizz buzz (yes literally fizzbuzz), some basic OO vocab, and have them do an easy design problem. If they have a pulse and can do that, they're probably worth your time. For most devs of any level it's really hard to tell whether they will be valuable additions until you've actually worked with them. For a jr dev it's a pointless exercise. Find someone motivated, who seems like they can learn, and spend time putting in place a framework to make sure they have the tools to succeed.
We look for people with analytical backgrounds: engineering or the hard sciences. They have to be capable of independent thought and interested in solving hard problems. That's what we have to offer as an employer: you get to do interesting work and live in a really nice town.
Sounds to me like what you really want are senior developers at a junior developer salary.
* Take initiatives
* Knows how to learn new things, +/- fast (and loves it)
* Knows when its the wrong way (even if its too late) and turn back
From my little experience, you don't have to do big technical challenges to detect those. But again I have very little experience in the business (5 interns and 1 junior hires)Social habilities are important too, but don't get fooled by those who talk too much
Good luck !
Also when hiring programmers, you should be doing so from programmer communities (GitHub, SO) rather than job sites. Even FB groups will give you better odds. 400+ applicants sounds like you're hiring from the wrong places.
With 400 apps you'll need to send them a quickie programming challenge to thin the herd.
But, some advice: if you get 400+ applicants again, just throw out all but ~50 without looking at them at all. That's too many to process, any you're wasting too much time trying for find the "best" ones. Randomly limiting your pool will make it easier to make a decision.
Also, I hope you don't go the traditional interview route (ie white boarding). I think more companies should do a "make your own interview process" where the candidates decide what to show off. Maybe that's walking you through a project, some live coding/pair programming, assessing your product, or a presentation on some aspect of technology (like functional programming, databases, security, etc). The one that impresses you the most wins.
Perhaps something in the fast food industry.
> we had so many applicants (400+) that it was a tough challenge discerning the best candidates
You just want good candidates that fit your company. Then you /make/ them the best by teaching and mentoring them.
> I would like to hire senior developers instead, but they are too expensive for my budget
Sorry to say it but this sounds not like a good place for junior developers. You can't just put them in a senior position and expect results for cheaper payroll costs. They need to learn (experienced developers need to learn too, but juniors even more so).
If you are willing to proceed the next step is setting up your hiring process. I've used a loose, informal specification for a rather simple program as a take-home exercise. It takes around 3-4 hours to complete for a reasonably-experience programmer and can be completed in any language that the applicant is most comfortable with. When designing this specification I made sure that the language was clear and intentionally left some requirements vague. It is intended to be representative of a typical specification for a low-risk feature or system that you might encounter on the job: a few paragraphs detailing the problem, a description of the API, the inputs, the expected outputs, etc.
What's interesting about using this exercise with junior developers is seeing how they interpret the specification. Most developers out of school aren't trained to think in terms of specifications, requirements, etc. Your junior applicants will typically write some code to start solving the problem. They will skip translating requirements from the specification into tests. They won't think of the bounds on inputs or outputs. Often they will start writing code and implement the first thing that "works" (for some definition of "works").
This is wonderful! It gives you plenty of leading questions when you invite them in for a code review session. A good, naive solution is great. It gives you opportunities to talk about edge cases, tests, assumptions, invariants, performance, etc. The more you can get them to talk the better!
If they seem enthusiastic and are capable of taking a leading question and connecting the dots then you have a great candidate.
As others have said, you should create a take-home test for someone to complete on GitHub. Have them fork a repo, pass some coding test, and submit a pull request into your repo. That will reduce the number significantly, and you'll know with some certainty that the person you're speaking to has some basic skill. The interview should purely be an exercise in seeing if they are a good fit, and to gauge where they are in their journey.
The way I would do it is to focus on side-activities. If a hardware engineer built a website for a side-project, that's a good sign. Anything that shows success outside their expected space. Smart, fast learners tend to pick up random knowledge and apply it quickly and successfully.
People who need hand-holding tend to know their core topic well enough (they spent years in college refining those skills), but are having difficulty learning anything outside those core topics.
Another approach: break your backlog into piecemeal tasks and hire senior freelancers to do fixed work for fixed costs.
Basically I look for the following things.
* Do I think the candidate has the capacity to learn. Every hire we've taken straight out of college has been fairly useless for the first 3 months. They typically know how to write software, but they have no idea how to do it in an actual production setting. We've had hires who couldn't publish and deploy a simple asp mvc site to an IIS for instance. I typically judge this by what projects they've done during their education (and their free time) and what sort of roles they've filled in those projects.
* Does the person have the minimum technical skills required to learn. I don't care if you can write a double linked list on a whiteboard, but I do want you to be able to do simple things, know about best practices and preferably things like SOLID. We'll typically ask what people think about test-first-development as an example, and we'll try to provoke an answer that doesn't come from a text book to see whether or not they actually have an opinion and knowledge on the matter or they're just telling us what they think we want to hear.
* Do I think the candidate is capable of failing, accepting responsibility for the mistake and learning from it. It's perfectly fine to screw up, we all do it, but people who don't admit when they do it are dangerous.
* Communication skills. I need candidates to be able to explain what they are doing to their grandmothers without getting angry. Both because the business end won't understand otherwise but mainly because politeness and a well mannered temper is more valuable than gold.
* Do I think the person will be a strategically good fit in the team.
* Does the team think the person will be a good fit.
* Does it seem like the candidate wants to work for us. The best employees are the ones who value and take pride in their work. I don't want people to be blind zealots, but I want them to be able to tell their friends they're making a difference.
Often we end up with a few who are strong technically and a few who are strong in personality and willingness. We always go with the latter. Obviously I can't tell you about what we've missed out on, but I can tell you that we've always had successful hires which is pretty important, because the most expensive you can make as a manager is hiring someone who doesn't work out.
tl;dr: I want someone who is excited by the platform and has shown a willingness to learn, as well as some autodidactic tendencies.
That should filter 2/3 of the candidates.
This feels like a red flag. Do you have existing, more senior, people that can oversee the work? If so, perhaps that's a valid trade-off. It won't reduce the overall cost though, just the monthly burn. More junior means slower delivery, or less quality. There's no free lunch.
It seems like you are in the same shoes as me at the moment. What I suggest you to do is to prepare a small test tasks they can do at home. This saves up time for you going through unnecessary extra interview processes and also shows some of their dedication and skills. I am not saying you should not have interviews, but it is hard to filter candidates just by resumes (and you can not have 400+ interviews).
Answering your question, I usually look out for the following:
1. After I sent the candidates the test task, but before they finish it (NOTE: I don't know they progress on it):
- Do they let me know when they have time to do the task (in case they are not able to it immediately) or do they just let time pass by.
- Do they come back with questions if they hit a wall somewhere.
- Do they let me know if they are not able to do the task (for whatever reason). At this point they are obviously out of the process, but they might re-apply at a later time.
- Communication is key at this level of the application process.
2. After I received the results of the test task
- Obviously did they finish the task in a reasonable quality. There are most likely mistakes in it, but this is irrelevant in case the general quality of the result is ok and the solution works as expected.
- The quality also reflects on how much time they spent testing their own solution.
- Did they finish all the sub-tasks (usually I also ask for documentation and tests) or did they just skip those.
- Did they try to find quick and dirty solutions or did they try to implement things properly (and most likely spent more time on it).
The best developer you can hire is somebody who does communicate pro-actively, is dedicated and develops maintainable solutions over "easy" ones. How much time they spent on the task and how proficient they were with the tools at hand (programming languages/frameworks) is not relevant in my opinion. If they were unfamiliar with the programming language for example and they spent the time during that task to learn part of it and delivered a proper solution with it, they got all my respect and I would be very likely to hire them.
You will also have to spent time reviewing the test task results, but I think this is less time-consuming than interviews. More than half of the candidates will probably jump off before you even see the results. For the other half you will learn how to distinguish a good from a bad solution quickly.
You have to put time and money into training them; it's a responsibility more than an easy buck.