Moreover, reading code is a skill, and much of being a good developer involves working with other people code, which means being able to efficiently parse other people's code.
What does it mean to be a good developer? Do you simply want to write your own black-box undocumented software? Then there is a much lesser advantage to reading other projects' code.On the other hand, if you want to manipulate another codebase, or use another library, reading code is a necessity.
That leaves one final question: Is it beneficial to your own development skill to read others' code? Yes. Proficiently reading others' code is a very beneficial skill, even if you do not intend to write code to be read by someone else. Not only will you get better at reading your own code, you will learn idioms and practices that will improve your comprehension, and writing skill.
I see one interpretation of better as "can copy, repeat, fix, comprehend, maintain." And the other as "comprehends and exceeds - often without explicitly 'reading' that which is comprehended in the first place"
The first group will argue that you have to read.The second will argue that it's optional.
I am in the second group but would argue in favor of the first. It never hurts to stand upon the shoulders of the giants who came before you.
That being said, I never read other's code unless its to fix it.
-It lets you work effectively as part of a larger team or project
-Gives you a much larger surface area of material to learn from: you can learn new patterns and libraries by seeing how other people use them instead of having to find documentation or tutorials
-Sometimes there are bugs in libraries (open source or otherwise) that you depend on. You will find these much quicker if you are good at reading code.
Partly people want to retain any privacy gain they can get, however small.
Some reports say that ISP, browser, and Web site privacy will be regulated by the FTC in the future so it would be interesting to hear what their policy is going to be.
To help us troubleshoot this, my boss asked me to program the unit to give a missed call to the server every hour. If we got a missed call, we knew that unit was still working. In countries like India, giving a missed call is a zero cost way to communicate. For example: You would pull up in front of a friend's place and give them a "missed call" to let them know that you are waiting outside etc.
Anyway, I implemented the logic and we sent off our field techs to intercept trucks at highways and update the firmware.
The way I implemented the logic was the unit was to call our server's modem number every hour at the top of the hour. No random delay nothing. So, soon after that, around 50 units tried to call our server at the same time. Remember the clocks in the units are being run off GPS and they are super accurate. This caused our telecom company's cell tower BTS to crash. Cell service in my office area, a busy part of Bangalore, was down for a whole 2 hours.
I was called into the telecom company's head office for their postmortem. They didn't yell at me or anything. They were super nice. In fact, when I finished explaining my side of the story, one of their engineers opened his wallet and gave a hundred rupees to another guy. Guess they were betting on the root cause. From what I understand, they escalated the bug to Ericsson who manufactured the BTS and got it fixed. For my part, I added a random delay and eventually removed that feature.
We just received a new Mainframe from IBM. Big beast big power consumption.
My primary task was to be Sysadmin of LPAR/instances of Linux inside the new IBM.
The new mainframe was unpacked, and the power connectors had to be "modified" to the local standard. You know.. You ask your local contractor to read the manual in English and hope for the best.
There was two person on that day on that Data Center. Me and the IBM Tech Representative.
Well, I was checking some blade servers looking at the Robotic library, and I see him plugin it 5 meters from me.
I just heard a BANG. And for the first time, I saw an electric fire. Like a Dragon spitting green fire. I shout for him stop and move away. He by instinct unplugged it (I grabbed a chair to throw at him if by chance he gets stuck on electricity).
It stops.And everything gets pitch black.Lights onHe looks at me.I look behind. And there are. 200 servers Down. all Down.It even had broken the APS system.
I walk to the extension. Dial 28 to my co-worker and say:
"P.... come here. Serious! Get everybody here... Big problem.. BiiiiiiiiiiiiiG."We had to start everything on its right orders (SAN storage, ADs, Servers, SQL) but we knew it.
8 minutes late the electricity company appears the IBM tech had to go to the hospital with cardiac arrest by the stress.
The IBM tech guy got lucky and is alive.I got a good recommendation for keeping cool in emergency situations.
The owner was a very impatient youngish founder who new just enough about HTML/CSS to have the dangerous notion that he new something about programming. Additionally he was obsessive compulsive to the point where when he saw that different browsers didn't render the HTML/CSS EXACTLY identically in all cases, he had me redo ALL text on the site as IMAGES!..because those would look the same regardless of what the browser supported.
Now, the payment processing part. Since he was a cheap bastard and didn't want me spending any time on actually versioning, managing code, doing deployments, testing etc....we only had one development/test environment: PRODUCTION.
Yup, I'd connect my trusty VisualStudio IDE directly to the file system on the production IIS webserver and code away. Whatever I had coded when I hit save...was live.
No issue. Since we had no monitoring, logs, analytics or anything else unnecessary like that, he never could tell how many live transactions were lost because I had forgotten to close some tag, looped once too many times, mistakenly truncated some part of a card number, swapped the first name and the last name field accidentally or mistakenly told the payment gateway to CREDIT rather than DEBIT the charity's account (yes, that one did happen...and he did notice).
I would come home a nervous wreck every day just wondering what kind of pissed off customer calls I'd be hearing about the next day for something I had done that day.
Turns out that the only difference between testing and opening night was that the front doors of the theater were open, and it was a windy night. The projector has a "wind vane" style airflow sensor in its exhaust vent to check and double-check that the fans are running correctly. The sudden changes in airflow when the control room door was open was enough for the airflow sensor to drop and trigger a panic shutdown. Since the projector also had fan sensors and temperature sensors, the manufacturer okayed us to bypass the airflow sensor.
Datacenter had about ~300 servers in it. Not huge, but not small either. The lynchpin in the system is this: neither the battery supplies or generator can run the AC or air handler, so when the power is out everything non-essential needs to come down to maintain sane temps in the DC.
Anyway, my page goes off in the middle of the night -- power outage. The DC is running on battery backup. I hurry into the office to start powering things down as temps are climbing. I start shutting down VM's, blades, and 1/2U servers. About 1/2 of the way through, the power comes back on -- but the AC isn't kicking on (red flag). The air handler will function though, so let's run with that until the AC guy comes out.
I start powering everything back up. At this point, a few co-workers trickle in to help. After about 2 minutes the fire suppression alarm triggers -- 30 sec to evacuate the DC. I glance over to the air handler vent, and it's SHOOTING flames into the DC. We oh-crap the heck out of there just in time to see the suppression system trigger and the door lock closed. I run to the electrical panel and kill the power to the AC and air handler knowing that they were possible sources of the fire. The fire dept. arrives and forces us out of the building. At this point, nearly the entire DC is cranking on sustainable power with 0 cooling. It's a locked box effectively. We watch our notification slowly alert to servers going down hard due to heat one-by-one. VM hosts -- boom. Network switches -- Boom. SAN -- BOOM.
Long story short, we lost a number of servers and restored a lot of data from backup once things were back online. The cause was traced back to the wiring of the air handler motor. When the power came back on, only 2 of the 3 phases came back online. This was enough for the UPS system to operate, but not enough for the AC (wired correctly). The motor on the air handler was 3 phase but installed incorrectly (or something to that effect, it's been years and I'm not an electrician) allowing it to run, but turning it into a ticking time bomb of an electrical fire.
Spent some time trying to figure out why. No luck.
Spent some more time.
Eventually I realized that the log timestamps were weird - it looked like the query had been sent a response, but the log message appeared 30 seconds later.
I instrumented the servers to measure disk latency. I noticed massive spikes in latency every few hours. Couldn't figure out why. Then someone told me the servers were running on virtual machines with a shared NetApp for storage... and it all came together.
Every few hours a multi-gigabyte file was delivered to each machine. This was a design that had originally been done for physical machines. With virtual machines, 30 copies of a multi-gigabyte file were being dumped to a single NetApp, filling up the file server's memory buffer and making disk latency spike since it was waiting for physical writes.
Meanwhile, the server I was debugging was doing log writes in the main I/O thread, so it blocked on handling requests when this happened.
I went and talked to team lead for the server. "Oh yeah, we fixed that recently, logging will be in its own thread as of next release."
Moral of the story:
1. Talk to the people maintaining the software before you spend too much time debugging.
2. Disks do block, don't assume they won't.
3. Changes to operational setups can have significant, hard to predict impacts.
If you want to hear more stories, I'm writing a weekly email with one of my programming or career mistakes: https://softwareclown.com
The project was late and there was a daily-charge penalty clause in the contract with the customer, a very large company. A long enough delay could wipe out all the profit from the project. So engineering management told the programmers to suppress all signs of runtime bugs, no error messages, no halts, just slog on, bugs and all.
I objected, nobody paid attention. For my sensor, I had it scream bloody murder (on the diagnostic console) for every runtime problem it found. So I could fix it. The rest of the team followed instructions.
My unit was debugged, up and running, a year before everybody else. If the whole project would have been ready, the profit would have been reasonable. In a whole-team meeting,near the end, I asked the testing team if they had found any bugs in my unit. They asked "What's that?". They didn't even know its name. Suddenly, I was a hero.
Early in my career a fellow team member working with me at a fairly well known fortune 500 company was testing out a process where using Microsoft Forefront Identity Manager we would cleanup in-active accounts and shuffle things around to various systems auth systems. Since this service was used to sync our prod AD and test AD there was a "connector" into prod. From this single FIM instance you could hit dev, test and prod ADs. Sadly there had never been any rules put into place to prevent a push from test -> prod.
On the day that this co-worker was doing some testing he somehow managed to push a change that he though was going to our test AD but instead went to the prod AD. This change ended up wiping out quite a few prod AD accounts. As in totally deleting them. All of our systems, including the phone system (not sure why) were tied into AD. All of the sudden people on our floor were saying they couldn't login to anything or send e-mail. Soon we found out that the CEO of the company was feeling the same pain and on top of that, was not able to receive or make phone calls. My co-worker took a look at the process he was running and realized he had screwed up big time. He killed the process but not before about half of our production AD had been wiped out.
Like most backup systems, restoring our AD from a backup had not been tested in awhile. Between figuring that out, since it naturally didn't work as designed, and having to get the backups from our off-site backup company most of the company was unable to do anything for about 8-10 hours. This included remote sites, field techs, customer support agents, etc.
What sucked is that this co-worker was one of the top members of our team and had been handed this FIM environment that somebody no longer with the company had built. On top of that he was not provided any sort of formal training and was really learning on the job. They let him hang around for another week or so and then let him go.
I looked at him and said the installer is ~200MB in size, 20 seconds is more than reasonable. He started arguing that the network connections had to be at least 100meg links so it shouldn't take more than 2 seconds. It went round and round, until I realized he didn't understand that network links were in bits/sec. At this point, he was refusing to listen and started disparaging everyone 'against' him. I gave it one more go and showed him the unit conversion and basic math on file size, rate, and time.
For a while, it looked like he was trying to get everyone arguing against him released since he was an 'architect' and everyone else was engineers and I was just the ops guy. Too bad for him, he didn't realize in the land of inflated titles, I was the security, storage, and infrastructure architect. I just felt it was presumptuous and relabeled myself the ops guy.
Top-level execs had made the decision to not get a backup generator. The one compensation was that we got a manual transfer switch, so that we could easily truck in a generator & cooling in case of a planned outage. There was the possibility that we'd be moving at some point, so self-containinment was a big thing.
Taking that into account, I suggested getting an Eaton 9390 UPS, with two IBC-L battery cabinets and an IDC breaker/distribution cabinet. (http://lit.powerware.com/ll_download.asp?file=Eaton9390UPSBr...) The distribution cabinet outputs went to in-rack Eaton RPMs (http://powerquality.eaton.com/Products-services/Power-Distri...), and from there to PDUs.
This setup gave us ~45 minutes runtime at normal load, and more if we shut down non-prod. The one time we had an outage (during my tenure there), shutting down non-prod allowed us to ride the outage. I also liked this setup because our only connections to the outside (power-wise) were from the fused disconnect input, and the EPO. In the end, the "single-line drawing" looked like this:
Building fused disconnect-->Manual Transfer-->IDC cabinet breakers-->UPS-->IDC cabinet-->Rack-->PDUs Outside Generator Hookup---> Switch (input/bypass) dist. panel RPMs
Unfortunately, the electrical engineer hasn't seen such a thing before. In the past, the 480/208 transformer was external to the UPS, and this is what the electrical engineer was used to. So, the engineer wrote up plans to run an electrical duct from the UPS, to the Manual Transfer Switch, and then on to the transformer (in other words, back to the UPS).
I totally missed this mistake on the plans. It was actually caught by the construction crew, who was laying out the ductwork and realized that something looked weird.
In the end, one of the conduits was used, and the other one was just left in place. Luckily our connections from the IDC distribution panel to the RPMs were flexible, because that second conduit got in the way of pretty much everything.
If maybe I'm too busy and can't read HN one night, what I do is read the next day starting from "?p=10", if I miss two days I start from "?p=15" and so on, though that query has a varying limit, going after the limit gives no results, in the past I've gotten a successful request til "?p=25" but today it seems the limit is just "?p=10", most times I've seen the "?p=15" working.
I don't want to miss new tools or discussions so I always try to keep a maximum of 2 days of not reading HN.
I read a lot of articles about AI in medicine, pretty much anything I can get my hands on. I also read generic tech articles related to everything from Nintendo Switch, Tesla, Brain-Computer interfaces, and other popular media articles.
-How many articles do you read each day? Likely 10+. These aren't high-brow articles, just random blog posts and pop culture tech. I read about 2-3 research abstracts per day in medicine and maybe skim the text of 1-2 articles.
-They're usually related to your job or to some side projects? Usually they are related to my interest in medicine or technology. Sometimes they are related to my job (I work as a part-time developer / data scientist). I also run a small website (https://www.cronote.com). I encountered a number of issues with time-zone switching and the daylight savings change on March 12th. Read about 20 articles having to do with correctly implementing timezones in Python.
-Do you usually read about a variety of topics or it's focused in 2 or 3 topics only? Topics cover a vast span of medicine and computer science. I enjoy computer science more than medicine so it's a 20:80 split.
-Do you usually read during some time of the day or it's usually random? I read whenever I'm behind my computer, usually alternating between work and browsing the Internet. This amounts to ~5 hours per day.
If there's something I want to read later I send it to Pocket which my ereader supports, so I can read them on my nice portable eink device whenever I have a spare moment stuck in a waiting room or on a bus or whatever.
According to my reading habits I've averaged reading 690 articles that way in each of the last two years.
In order to track my article reading habits, plus follow up on articles in related forums such as Hacker News after Id read them and such, so I wrote a litte PHP browser based application that interfaces with the Pocket API to help me manage all that.
Naturally I called it Pocket Lint.
I usually clear my pocket reading list each weekend, even if there was something I dint finish reading (used to happen a lot), I just flush it out because that helps me determine my bandwidth for reading over a fixed time period.
Though mostly I am interested in comments section of tech/startups related topics, I also use feedly's reader count to decide whether to read or not articles on other topics.
The subject doesn't count. I don't read the new stories though, otherwhise it would be a bigger timesink ;-) .
Always interested in hearing other people's thoughts, HN has some good reasoning in comments. I prefer it over watching the daily news in the noon :)
I save interesting stories on my side project http://tagly.azurewebsites.net/, which can also show HN comments when adding the tag: commentsbyhackernews ( it's currently a bookmarking service for myselve mostly, but it can do a lot more under the hood)
Eg. : http://tagly.azurewebsites.net/Item/Details?id=49b1ed7e-5d35...
Edit: Example feature, add a article to wsj.com ( paywalled) and it will automaticly create a link through facebook. So you can read it ( i hate paywalled articles)
If it is the former, I middle-click 3-4 articles a day, and if they are also juicy topics, I middle-click the comments links as well.
If it is the latter, I read tons of articles a day (avg 20), some related to tech, but mostly not. I read in the morning, at lunch (very productive time to read), and after dinner.
Offline: I have subscriptions to dead-tree versions of Time, Harvard Business Review, and Foreign Affairs. I also have 4-5 books on the go at any given time, mostly nonfiction. I go through phases, and my last major one was statistics and category theory.
Online: Slashdot, Reddit, HN, Marginal Revolution, John D Cook, Farnam Street, Quora, and a bunch of data science related blogs. I also read articles on the getpocket.com recommended list, and I find myself drawn to reading articles on The Atlantic.
I use https://bazqux.com as a RSS reader to keep up with the stuff I actually want to follow. Some gaming sites, LWN, EFF's deeplinks and the blogs of various products my company or I use.
(BTW, I highly recommend bazqux. UI very close to Google Reader, very cheap and with a lifetime subscription option)
As to the type of article, I'm all over the place. Sometimes it's work related, sometimes a side project, sometimes just something I've got a passing interest in.
0 - 1 Articles
100+ Comments on 20 - 25 articles.
I use the comments as a curation tool, to decide if the article is really worth reading, or click-bait. Sometimes the comments also do a TL;DR; summary of the original article, so that saves me time (esp. on rambling articles that write 1000 words to prove a couple of points or make a statement / take a stance on something).
> They're usually related to your job or to some side projects?
Job, side-project and technology related. I'm here only for the comments as I see gems from software industry veterans and experts whose knowledge on various tech topics far exceeds mine.
> Do you usually read about a variety of topics or it's focused in 2 or 3 topics only?
Usually 2 to 3 - I mostly come here for "Show HN", "Ask HN" and technology related announcements / findings. I come here to find inspiration and motivation to ship my side-projects.
> Do you usually read during some time of the day or it's usually random?
Random, throughout the day. It's gone up more ever since I gave up reading mainstream news after the elections. ( Nov 10th 2016 to be precise). I try to avoid political news on HN also. The mods have done a great job of flagging and removing them, so I am very grateful for that.
Related Reading: http://joel.is/the-power-of-ignoring-mainstream-news/
P.S. I also use https://hckrnews.com/ It loads super fast , has a very clean pleasing UI and helps me quickly scan the top stories on HN and decide which ones to come and peruse.
also fwiw this is by nature a broken census since the people that will click this link are already gonna be the people that like the comment threads (since it's only a comment thread) and the people that respond are the people that post comments. so basically your feedback about how people behave based on comments is already going to select down to people that post comments on HN, which is likely a single-digit percentage of people that visit HN. asking users how they use a website on that website will always be subject to extreme sampling bias. so... this is fun by all means but let's not look too far into it ;)
I also try to read a book or article on something new I want to learn. My most recent book I started reading is called the Mom Test. Its about doing customer development, and it touches on the subject of what type of questions you should be asking.
Depending on my energy and/or how long my build is taking, sometimes I just skim articles headings and throw them to Pocket. Then when I have medium energy and more time, I open up my Pocket, filter aggressively, and read the rest. Really long articles get tagged with #someday and go to the weekend.
I've been trying to focus on C & C++ related articles, as that's what I want to and will be doing more. But I also find articles about Functional Programming very interesting.
I couldn't care less about start-ups or the culture. I can't even open most policy or political posts now because it's just a punch to the gut every day. I read less than 1 comment on average per article.
I've been on a reading diet for the last few weeks, I plan to kick back into high gear soon, with a project I'm building to ingest all my reading materials and present them to me in bite-sized formats. I used to be satisfied with Pocket, but my reading workload is too heavy to comfortably shoulder, so I need my own power tools.
What would be great is if I could break books up by chapter and feed them into the system, so that way they don't feel so heavy. I'll find a way to do that eventually, probably based on some ugly hack of converting Kindle books to EPUB or something ungodly like that.
Grab a copy at your local indie bookstore!
During the workday, I check various sources of information about once an hour, unless I'm working on something that requires either research or flow.
I run an RSS collector to manage repeating sources of information and categorize them for me. I add sources as I come across them and clean it out about once every six months.
Everything I read during the workday is related to work, but that's about fifteen different topics.
That's why I'm in the diet of not skimming through instead if I start one article I finish no matter how boring it is. But it's very hard I'm old surfer and suffering for deep concentration..
For the others, I would usually skim through the article and also read the comments.
I am finding that there's a lot of value reading the comments, as some folks have that deep seated knowledge, as well as providing relevant links that will help you further grasp what's on the article.
I read about 15 articles on average and all comments to about 10 of them and scan some comments for the rest. My reading is batched around morning, lunch, and evening. I download few articles to Pocket for offline readin. During subway commute.
I still have a list of ~40 articles to clear out...
Either about iOS development, design or (lately) learning thai language-material.
2) Usually I open the interested topics in other tabs and have a quick scan on the passage/ website
3) If that's interesting, I will add it to my reading list
4) I go over the reading list after dinner when I have free time
Fun stuff : xkcd and the like, 4 sites
News: Chinese edition NYT and the like, 11 sites
Technical: Hacker News, Venture Beat, ARS Technica, etc. 12 sites
Daily I maybe read / peruse ~100 articles out of what is summarized in the RSS feeds. Meaning, I see an article headline, it interests me enough to actually click to open the underlying website article. Maybe half of what I open I spend 10 seconds looking at only to immediately close. Half of what remains gets a speed read scan through. Maybe 5-10 articles a day get a thorough slow read. I try not to comment as much as humanly possible. I need to do other stuff in life youknowwhatimean....
Probably split equally between tech things I think might be helpful ("Python, Bash, SQL how tos" etc.) and non-tech things which are novel.
Like "Guy frozen in ice brought back to life after 600 years" (which wasn't a real article but if it had been you bet I would have read it).
I avoid most article from major news source (I keep up with the news anyway) and most Medium stories and anything with a social justice type slant (nothing wrong with that, it's just not of interest and not why I'm here). Also skip most "Our startup is doing XX or shutting down or whatever".
Skim comments for many more articles (~20) and if they look interesting read more in depth.
To be honest with you, DBA's no longer exist at many companies. Most modern databases are easy enough to use that all you need is developers. My current company has a single DBA for 7 development teams.
If you want to break into software dev the low hanging fruit is usually web development with something like PHP.
You're going to be competing with a ton of people that have degrees and experience so try not to get disappointed about your search. If you can't land a developer job straight away, I know many who have gotten into dev by starting as testers and building their knowledge laterally within the company.
It take the average candidate with experience and a degree maybe 4 interviews to get an offer, you will probably have to do at least triple that.
My first reaction to your question was that each command is executed as a separate process and depending on what you are doing, e.g. piping outputs to inputs, using temporary files, other operations could create lots of variances between one run and the next.
But why would you want to do this anyway? Why do your servers need to be restarted?
If your problem is more complicated and you want to use some unique architecture, you'll have to use one of the more low-level frameworks. I would recommend Tensorflow just on the basis of its popularity (you're more likely to find people who have run into the some problems as you). But Theano, Torch, and MXNet are probably pretty much equivalent in terms of speed and ease of use. I hear Caffe has a steeper learning curve.
If you're really doing something fancy, then you'll have to look into more detail. Torch and MXNet have the advantage that you can adaptively change your computation graph based on the data, but you'd probably have to be pretty far into deep learning research before something like that is useful. Tensorflow Fold does something similar, but I'm not sure how well integrated it is with the rest of Tensorflow (I've never used it).
You might also take a look at this:
It's a little out of date now, but it'll get you started.
Some of these frameworks are more general than others (e.g., Tensorflow is more general than Keras), so you can specify architectures in some that you can't in others. But as long as you can specify the architecture in a particular framework, you'll be able to get a working model. Your choice of framework just comes down to whatever one is easiest to work with for the problem at hand.
I started off using Caffe/Torch and currently use mostly Keras for most of my deep learning related experiments. With a more base level framework, I actually could tinker with different moving components to understand why they are used as they are, while with a higher level abstraction, I can concentrate on the problem at hand, knowing that most basic abstractions (or building blocks) are well developed already and have more or less been battle tested by people far smarter than me.
And of course, when it comes to pure speed numbers and architecture for scaling/deployment, these frameworks do vary among themselves: https://github.com/zer0n/deepframeworks/blob/master/README.m...
That is about right provided that 1) you use the same initial values and hyper-parameters, and 2) you can implement the same network with all frameworks. Issue 2) is complicated. Some networks are easy to implement in one framework can be hard or even impossible in another framework. Here "hard" can mean two opposite things: lack of flexibility (which disallows you to construct a certain topology) or excessive flexibility in the framework (which takes too many steps and care to construct a topology). Which framework to use depends on your goal and skill level. For starters, keras is usually easier.
I ended up bumping into the edges of the Keras API too much, and coming up with hacky type solutions to do things that are actually quite simple if you just do them in TensorFlow yourself.
Theano and Torch are also great options, but I think I will be sticking with TensorFlow, simply because I trust that Google will be putting solid effort behind it for years to come.
The math involved is pretty simple, in terms of the calculations that have to be performed.
Where frameworks differ is in things like speed and ease of use. Use the one that is the easiest for you. Tensorflow is certainly going to be the most popular for the foreseeable future.
Our own work calls cudnn/cublas directly because we're C++ programmers and its just more convenient for our use case.
Yes you can use many tricks, and they work. But in the end of the day you are not different that a czsino, a drug dealer or a tabloid magazin when you use them.
It is more economically efficient to trick the user into staying in the short run. But in the long run, we are using google and stack overflow because they are the most useful, not for tricks.
Among tricks, some useful ones are also often badly implemented and become armful.
Ex: notifications are only useful if it result in more productivity than distraction. I hate most notifications, they disturb my flow, but I like being request them for specific cases to save me time.
A light gamification can be fun, but if it's at the price of my main usage of the site I'll leave.
Basically give me want I want, quickly and in a useful way, and I'll stay. Save me time and energy and i may even pay.
Unfortunately, hn readers are not a good sample for user behavior. We all have ad blockers, we boycott sites with behavior we dislike and we know how to by pass stupid tech decisions.
But if you manage to engage hn users with the same content and design than regular user, your model has a good base to be sustainable because it has credibility.
Credibility is harder to build than addiction. It's not quickly as rewarding, but it more reliable. And more satisfying for you.
Figure out how the app can trigger or remind them of these moments. Notifications are the obvious one, but you want to be careful not to train the user to tune out your app if you send too many notifs or notifs they are uninterested in. The best triggers are ones the user has asked for themselves.
For example, when they get a new book you can prompt them to set a goal to finish reading it in a week or two, or whatever is comfortable, and then ask them if they want you to check up on them (notification) when that time is up. If they set the goal, they will probably welcome it.
Additionally, you want to try and build habits that help the user improve his or her life. So if you build a habit of recording their daily reading log, and reward the user for reading every day without missing one, then they are happy because they are reading more books and they are also connecting their new reading habit with the action of opening and using your app.
I would say look at what Facebook does, they are like digital crack.
Your site should be very useful to users and you should try to gamify things a little bit as others have said.
I would recommend building out a segmented newsletter for people. Say for instance, you get a bunch of HN users that signup. If they are interested in startups, you have a weekly or monthly email that goes out that lists books on startups, customer development, lean startups etc.
You give a small summary on each book in the newsletter and the link brings them back to the site.
I have also seen email notifications for responses to forum posts that have worked really well.
One other thing, I tried your site on a Nexus 5, and the images of the books are a little shifted and oversized. I would suggest tweaking this a little as the majority of people browse the web on their phones these days.
* Rewards (variable rewards)
Ref book on Amazon: http://amzn.to/2ngLIuz
For example, if I use the app for X minutes in a day, the next day I will get a summary as a notification.
It also adds light questions, to give an example it takes a random word and asks something like "how do you pronounce this?" or "what does X mean?". Tapping it takes you to the answer. They are made to require as little actual app interaction as possible, kind of making the learning (or rather, retention) almost passive to a degree.
I found the success of this minor so far, but I think it can work fairly well. It just needs a good balance.
Also while being fully employed as an engineer, I would take side projects, contracts etc that I would work on during the evenings and weekends. Eventually that became my full time job. I now run a small consultancy.
Not an insane amount of money, of course, but enough that you can consider the project successful if you're getting a solid amount of views.
My largest project, http://sleepyti.me, gets about 1.5 million unique views per month. The revenue Google Adsense brings in is not nearly enough support myself, but it's enough to make the effort feel solidly "worth it" in terms of development time and hosting costs (which are very low at this point).
How (or if) you should be monetizing depends on the nature of your side project. If your "side project" is a business -- say, designing WordPress themes -- then you should sell your product! If it's something that gets 50 views per month, maybe it's not the best candidate for monetization (and is instead a portfolio/resume builder). Either way, gaining experience building things is almost always a good thing.
One important idea from the book is the distinction of side project/product confusion:
> A project is a software application that you build as a fun side project. The code is fun to write because youre not concerned about quality and performance, and the end result is a neat little application that likely isnt of use to many people.
> A product is a project that people will pay money for. In other words, its a project that has a market (a group of people who want to buy it). Without a market, a software application is just a project.
I think it's important to start in the right place here. Both approaches are fun but they have opposing goals. If you want to build a product that makes money, start with the market. If you want to build a side project... that's great, just keep in mind that when a side project tries to tack on "and make money" later, it mostly doesn't work.
I charge a subscription fee - either $5.99 or $9.99 a month. One of the hardest things for me to learn is that as developers, we tend to price things too low and don't really value our work enough.
60 Seconds Everyday is currently trending on Product Hunt too!
It aggregates tech events (mostly meetups, conferences, workshops, etc) across ~50 US cities and tweets them out and broadcasts a weekly mailing list. Hashtags, time of day of messages, including/filtering submissions, etc are driven by some simple machine learning. It's grown from basically nothing to ~13M+ impressions last year and is on track to generate ~30M this year.
The business model is affiliate links to the conferences and workshops. It turns out when you find 5-10k tech people in a given geography who are trying to improve their skills and network, event organizers come to you.
I do not include jobs, job fairs, etc though I know that would make more.
If you gain some traction, there is ad revenue to be gained. I have found even 100 to 300 page views a day is enough to start seeing a few dollars each day. B2B ads pay out more. I've seen single clicks bring in $5+. Once built, not usually much you have to do after that, and they will typically grow slowly over time. And I feel good about them, because I know businesses are getting actual value out of them.
I have not struck the right chord with affiliate revenue yet. But I know there is money to be made with the right niche. I think you need to be a little more invested in affiliate sites, and have a real interest. These sites seem to require a steady flow of new content, though you may be able to automate some of it.
Of course I'd love to hit on something that meant I could quit the day job, but I think that unlikely.
In 2011 I built www.illustrators.co, a multi-vendor marketplace for artists to sell their work. I met some cool people and learned web development and UX in the process, completely changing my career trajectory. It just about covers costs, despite languishing for the last few years. I'd love to work on it full time.
In addition make and sell prints of public domain images. A chance to experiment further with online marketing and selling and building sites with static generators. I also make and sell cyanotype prints of my photographs. Mostly to experiment with photography processes.
I'm currently building a compendium of UX concepts, methods, tools, books and events. Mostly to help me better understand the subject, but it may also be useful to others.
My latest side project is https://www.smsinbox.net, which provides a drop-in chat interface for Twilio apps. It's targeted at developers who use Twilio in their apps, and want to easily expose a two-way messaging interface to their users. It doesn't make a ton of money right now, but definitely covers costs.
It's averaged US$340 gross per month since last May but it's been hard to grow it. I think in some ways it's quite a technical tool and you need to be interested in actually debugging issues on device, but there are a lot of people using Unity who aren't super technical. Also it doesn't lend itself to sexy screenshots. I've noticed some of the successful plugins are those which are about creating things, and they get a lot of people sharing screenshots of things they've created on the forums.
We've just started selling customised modular staves to people who use them as props, novelties or promo items. We've become good at 3D printing via much learning at our makerspace (http://sparkcc.org) and so with a couple of printers we can basically run our own small-scale manufacturing business.
Currently we just take orders via email and word of mouth but we're building a website that allows people to customise their own staff (like in a video game).
I definitely learned a lot during last year while emailing with people interested in the product. Thanks to that I improved my tool iteratively while the early adopters discovered new areas or edge cases about testing I didn't even think about.
This week I published success story about running tests across 100 parallel CI nodes with my tool:http://docs.knapsackpro.com/2017/auto-balancing-7-hours-test...
> I made a stamp calculator for any postage for my own use then shared it online. It's all organic traffic via google searches and lots of repeat users. One google ad that pays for my server and a few meals a month. A Pennsylvania post office uses it to help the Amish! I love that. http://fancyham.com/stamp_calculator
> Just released a music notation iMessage sticker set For a music teacher friend. My goal for this one: long tail. We'll see!https://itunes.apple.com/us/app/music-notation-sticker-pack/...http://fancyham.com/#notation
> Helvetica shirts for font nerds like myself: Lots of sales at first through Twitter, but nothing now that the fed has passed. Other folks copied the idea, too. http://fancyham.com/shirts
> Geiger counter app, secretly controlled by pressure on the screen, that always drops jaws but just a few sales a month. http://fancyham.com/#detecto
I do UX design for a living and while these are fun creative outlets and an opportunity to try some programming, I think of these as play, not work.
Though I'd like to say these projects bring in money via boosting my day job, I don't know if that's true. These are such quick and dirty projects that I haven't mentioned them on my resume.
Though, I have been inspired recently by Nadja Buttendorf's 'brutalist' HTML site: http://nadjabuttendorf.com/ I'm going to embrace the ugly.
If you're curious on the details, I wrote a post recently about getting to $100/month with them: https://www.simonmweber.com/2017/01/09/side-project-income-2....
2) I put side project technologies on my resume.
3) I put side project link on my resume.
4) I put my resume on LinkedIn.
5) I get a raise during my next performance review (or next job)
I write side projects when I want to try a new technology in order to integrate it into my flow. I don't make money from putting a couple of JS libraries and generating an automatic ping pong game from Bitcoin transactions (https://writecodeeveryday.github.io/projects/bitpong/) but I do get the experience on Websockets for clients.
Not a huge money maker (>300 copies sold) but I also filed a patent on it in 2015, so hopefully a larger VR company will see our locomotion technique as an essential step (no pun) to bring VR to the masses, since it reduces cybersickness.
To monetize it, I use Amazon affiliate links. When Uncover tells you about new books, it presents links to buy those books on Amazon, for which I earn a commission.
So far, it has not been a huge moneymaker; I have made exactly $2.10 USD.
Still, if it can make ~$10 a month, it covers its cost, which is good enough for me.
Getting projects from personal connections is pretty easy ( eg websites, shops, ... ), got some money on a webapp ( not much though) and hosting off course.
I'm working on a second SaaS product at the moment.
I can't recommend this book enough. Go get it right now. It's worth it.
However it is pricey!
"Termination by You. Unless you have signed a minimum term addendum, you may terminate this Agreement for any reason at any time by notifying Comcast in one of three ways: (1) send a written notice to the postal address of your local Comcast business office; (2) send an electronic notice to the e-mail address specified on www.comcast.com; or (3) call our customer service line during normal business hours. Prior to affecting such termination, or any other change to your account, Comcast may undertake actions to verify your identity and confirm your election. Subject to applicable law or the terms of any agreements with governmental authorities, all applicable fees and charges for the Service(s) will accrue until this Agreement has terminated, the Service(s) have been disconnected, and all XFINITY Equipment has been returned"
Seems fairly clear to me, except for the "Prior to affecting such termination, or any other change to your account, Comcast may undertake actions to verify your identity and confirm your election" part. I guess a weasel could easily take 90 days to do so.
1. What is your operator ID and/or first name and last initial?
2. Can I please speak with your manager?
They either fix the issue or get the manager on the phone.
Manger gets on phone and usually resolves issue. If not then I repeat step #2.
I was furious at the thought of paying for a service where I wasn't even living (To add insult to injury they threatened to fine me if I cancelled anyway), so I simply kept calling and escalating. They'd assign me a ticket, and if they EVER slipped their 48 hour SLAs, I'd call again and escalate again. (document everything) Luckily for me their ticket handling was so shoddy a higher manager eventually saw the churn on the tracker and handled me himself, he seemed both competent and sympathetic to the BS I had to put up with and both cancelled and credited my account.
To answer your core question with a ramble: in this situation the squeaky wheel really does get the grease. I'm sorry you have to go through their shit, "not comcast" was frankly a large motivator in choosing my house where I did.
It's nearly impossible to look at a new technology and determine if it will be around in 10 years. But you know for sure that these timeless fundamentals will still be relevant, so the first step should be mastering all of those.
Example: Unix system administration fundamentals are not going anywhere and are more important than ever in the age of containers and developers owning more parts of the stack. It's funny to read blogposts like "check out this problem we ran into with docker" that is really just a rediscovery of a long-known problem in system administration. Example: the recent post from codeship about running thousands of containers on one network. Surprise, they ran into issues with an overflowing arp cache.
Oh yeah - if you save 68% of your earnings, you can retire in under 10 years.
The Shockingly Simple Math Behind Early Retirementhttp://www.mrmoneymustache.com/2012/01/13/the-shockingly-sim...
Pick up an artistic or handcraft technique.
Comedy, music, drama, or something other performing art.
Know your means, live within them.
You may also push up your own technology and contribute in changing the next 10 years.
Processor clock speeds will not rise much or any. Everyone has enough memory for most every day problems now, so memory will only gradually increase. The next bragging rights will be how many processing elements my box has vs. your box.
Learn how to analyse and decompose problems. There always will be some.
Surprisingly, most turkers (laborers) are US or India based. You can limit by country, or even by state. They average in the 30's, and run the gamut from ~40% full time turkers to janitors to security guards to police to teachers to attorneys and physicians. Many are high school or less, many college-educated.
Happy to answer any more detailed questions.
Essentially I am looking to avoid hiring someone on fiverr as its more of a hassle with poor results. Turk is what I am considering now even if I get some duplicates.
Most importantly, it's not hard to learn a new language, but you do want to make sure you learn and apply best practices.
Pickup a couple of those books maybe (also there are online versions of most of those available for free. I do like physical books, but that's just me), read them and practice every day.
* A functional language * An object-oriented language * A scripting language
If I was in your position and if you are just tired and want to do something else you need to get the business growing consistently again month to month. Maybe that means finding some fresh blood to bring in.
Another option is instead of selling, look into hiring professional management to take over and you drop back to advisor and chairman. Hold them accountable to grow the business. This means for some period the net income will obviously drop but it come back. Plus it may give you the push and distance you need to be able to help the business and yourself.
And of course you could just sell and try to maximize right now but it won't be as favorable since you are not in a strong position. But sometimes it is nice to just move forward and put cash in your pocket even if it isn't the highest amount you could.
I would just map out how long you think that would take, and forecast all future cash flows by that hypothetical method, and then make your sale price $1 above that amount (discounted).
Very simply if this year you net $240k, next year $200k, then $150k, then $50k, then $0 without you lifting a finger, why would you sell for less than the NPV of that $400k?
That's just a long long hunch. But if it is true, and you feel that way even a bit, I'd say sell. Not as a financial or any other kind of scientific piece of advice. Just out of kindness to yourself and those working with you, allow yourself to step away and sell.
I'd consider spreadsheeting the biggest leaks and getting super aggressive with multiple approaches. Empower your team, consult with professionals, leverage third party tools, outsource... all out offensive.
It's difficult to know the ONE THING that will increase retention, but improving many things by a percent or two will give you noticeable lift.
And by compressing it into a short timeframe, you'll reduce the number of variables around cohorts, seasonality, etc.
You'll have to reduce your asking price quite a bit (so maybe you end up with $450k vs $600k), but I'm guessing that won't really matter in the grand scheme.
As for what's next, you need to figure that out anyway. It doesn't sound like your business is going to continue forever without some new passion, so this gives you 2-3 years of runway to figure out what gets YOU excited.
If you choose your buyer well, maybe you'll get a huge recurring payout over time. Or maybe you'll get nothing. But hey, without passion your business is on its way to zero anyway, so there's no real loss there.
1. I'm quite bothered by the fact that I can't fix churnMaybe you have already done, but I would suggest that you can be more transparent with your employees, who may have some ideas on how to resuscitate the business and make good returns again. This statement seems to imply that you are solely trying to fix whatever is broken with your current business model.
2. My broker believes we can get a good payout for the businessDo you believe that your broker is acting on your best interest or the interest of the company? There's a fine line between those two. A payout at this stage of the company seems to be a scenario where you are simply abandoning ship while the rest of the crew is still paddling towards shore.
Hope you find what's best for you, the company and everyone that may be affected.
On the other hand, 3 things could happen if you stay with the business:1. It keeps declining. You'll have to fire employees and down-size. :(2. It stays stagnant. You'll end up feeling like you're wasting your life. :\3. It grows. You'll likely have to hire outside management, growing pains, etc. That's the "not-fun" part of entrepreneurship. :|
Sell it and move on! :)
Try to interview every user that churns (offer them a Starbucks card for their feedback) and figure out why they are leaving. For some reason, their expectations are not being met. Fixing that is probably easier than starting a new business.
Move product development to 3rd world country, by spending 6-7K$/month you can gain 3-4 fresh bloods, who will continue working on your project. You will go to passive CEO position, where you control project development and oversea new features. may sound weird, but you dont need to think about giving shares to new employees, taxes for salaries or giving them office space. Just pay for their work and it will go as much as you want to continue with your project.
I am living in one of the developing countries, reach me out by email if you wish. simon dot kerstein at gmail
If the space is really that crowded though, you shouldn't have issue finding someone to pick up your clients, don't you think?
I am glad to find these headphones. You should definitely try these without bothering about price. The price will look small when you start using them. If they allow you to go into Deep Work and focus on whatever you are doing then the price pays off!
Also have Sennheiser 380 Pro but am looking for something that blocks a lot more.
In-ear headphones don't provide enough comfort for extended listening day in day out, so over-ear headphones are the best choice IMO.
Anything of good build quality in the $150+ price range is likely worthwhile, assuming you don't go for the overmarketed brands like Beats. I chose the DT 770 Pro because they are studio-quality, meant to last, and Beyerdynamics even supplies repair parts. They are meant to last through heavy use while providing studio level sound quality.
Pushing for this shouldn't be underrated.
I simply use some cheap skull candy earbuds. The important thing to me is earbuds. They almost never leak sound, and can easily drown out surrounding noise at mid-volume.
Some examples. Sitting outside in a noisy cafe, with NC and white noise playing: zero background noise.
Same setup without a track playing, only NC: I can hear everything, but it's just quieter. Voices, cars still there. Not acceptable.
The way I interpreted the promise of NC was it would actually play the inverse wave and cancel everything. I don't understand why some sound gets through. And I feel cheated.
I don't think my expectation was unrealistic because it was based on the following episode. I was on a plane and the Qatari American guy next to me chatted to me about films. When our conversation died he started watching movies, with some huge black headphones. I asked him about them. And he told me they were NC and asked if I'd like to try. I put them on, then he pushed one button on the side and whsp! Every noise disappeared! The plane engine was gone. He kept talking but it was gone too. It was literally a religious moment for me. I glimpsed another world I didn't know existed. I never knew I could end all the noise. So naturally I had to get myself a pair. I asked what they were and he said Bose QC. They were from a few years ago. So you see I thought I'd found something I could trust.
At Yodobashi Camera I was so excited to buy my QC 35. But when I used them, I could not rationalise away my disappointment. It was qualitatively different. On the plane those headphones had clearly put my ears in a pressurized bubble. Of total silence. But the QC 35 was just like God had turned the world volume down a third of the way. Really not good enough.
So now I still wear them, but I'm always playing tracks. At least I've discovered Spotify. But I still think I'd much rather prefer, the Total Noise Cancellation my first experience promised. Now sometimes I even go back and question the trustworthiness the guy who introduced me to NC such is the magnitude of the difference between my expectation and the reality. Did that Qatari American guy trick me? Did he just start mouthing silently as soon as he pressed the NC button? Or did that NC tech really cut everything? And if the tech was legit, did Qatar or 2014 get better NC tech than Japan or 2017? Why has Bose foresaken me?
I like IEM's for the size but in terms of comfort not so much.
For those on a tight budget, best value headphones I've used are Soundmagic e10 IEM's and Superlux HD681 Evo closed back headphones, for about 25 each they are great.
The HD600s are brilliant for gaming, music and movies, but obviously are open backed so are no good for a busy office. I find in games, people often complain they couldn't hear me coming, but I could hear them! The sound quality is amazing and I don't think I'd ever replace them, unless they broke - in which case I'd either buy more or try HD650s.
The momentums are great for travelling and this morning I actually bought my other half a pair of the folding on-ear versions for travelling and being away from home.
Although ACS no longer make custom eartips there are other places that do such as snugz, without doubt custom tips are the single best upgrade you can buy for your sound
Also if your media playback hardware is Sony, you can use their proprietary Bluetooth audio codec (less compression) for superior sound... (assuming your source media is high enough quality)
Build quality is phenomenal and they're surprisingly low profile. My first pair actually had a problem with the touch interface and B&O not only replaced them, they expedited shipment so I'd get them in time when I explained I had a long trip coming up - so great support.
The only drawbacks are:
- they're on-ear which takes some getting used to, especially early on before the band takes shape to your head and can press to your ears. However, the padding is very soft and even replaceable! I now believe on ear produces the best accuracy as there's no acoustic reverberations and feedback that you can sometimes get with over ear. However, over ear is more comfortable and even after breaking these in, you'll still get ear fatigue after some hours of use. That being said, I've fallen asleep for hours on flights wearing these and not even playing music as the noise cancellation completely eliminates engine noise and most external sound in general
- they cannot be charged and used at the same time, even if using the wired lead. This is probably the biggest drawback though at 14 hrs play time and having a replaceable battery, this can be mitigated
- the previously mentioned drawback of not having noise cancellation when using them wired is annoying because the noise cancellation is exceptionally good
- they don't fold in any way, so you need to consider how to carry them if not in use. I usually just extend the headphones and keep them around my neck. In general though, you'll find the higher quality headphones won't be foldable as that's an easy point of failure
They're pricey but I've tried a number of other brands and the features/sound quality of these are far and away the best to be had. Not to mention, they look great when worn unlike most others that look cheep or goofy in their bulk. Highly recommend
Amazon has them on Prime:https://www.amazon.com/Bang-Olufsen-Wireless-Headphone-Cance...
You could try getting some pull requests going to gain some experience.
You'll be able to figure out if it's a direction you really want to head in.
Of course I do stick to my preferences, but seeing how they compare is interesting.
Anyways, try Rosetta code: https://rosetta.alhur.es/
I'm pretty sure with a little training, it will just click for you.
1. Is the salary enough to pay my rent, feed me, and allow me to save a little bit every month? (This one is obvious. Don't take a job that will put you in debt!!!)
2. Do I trust that my direct manager will protect me from bullshit? (This is a REALLY important one for me, and is the reason I've rejected offers. If your future manager is an asshole or treats you like shit during the interview, don't take the job. A good manager exists to make sure you do the best work you can possibly do for the company, and gives you any resources you might need for that. A good manager is your leader, not your enemy.)
3. Will I be able to learn and grow in this role? (A good manager will help immensely with this one.)
4. Do I like the people I will be working with? (If you don't at least tolerate the people you work with on a daily basis, you're going to be miserable).
5. Is my commute within reason?
The first thing I will look into is 401k. Early stage startups do a particularly bad job of this. Ask if you have an employer-sponsored 401k plan and how much the employer will contribute. I'd also ask about the investment options, just to be safe.
Next is healthcare package. Ask for the full prospectus for all available options and how much they cost, after employer contribution. Also make sure that your dependents are covered too.
Ask about WFH policy. If you don't have to commute to work everyday for 9 AM meetings, you can save a lot and live better by living further away from city center / downtown area.
Make sure you have enough PTO for vacations. Ask about accrual policy and make sure their policy is to pay you for unused PTO when you leave.
If you have a bonus target, make sure you know exactly what you have to do to get all / most of it. It is easy to promise bonus when they can get away without paying it.
There are many more points like the above. The cost / savings from these add up. You are the only one who can do the math and decide whether it is substantial or not.
I don't like jerk bosses, difficult customers, unrealistic deadlines, lack of specs, reqs, or schedules, tough commutes, or unreasonable pay, but over the years, I've learned to live with them.
I have never learned to live with shitty code.
I'll answer your phones. I'll clean your toilets. I'll even take your daughter to the movies.
But I will never refactor another 800 line case statement with 26 early exits, 14 double negatives, and 90 unintelligible variable assignments inside a 23,000 line module. Never.
I wish I had adopted this philosophy years ago. Oh how much better my life would have been.
- I work remotely. Under no circumstances will I ever show up in person at your office or any other location that requires me to spend time away from places I want to be.
- I bill 2 weeks in advance. You chose to buy hours of my time and my compensation is tied to those hours. My compensation is not tied to any kind of result. If you are unhappy with the result, there is no way for you to sue me. If you decide to hire me and then waste my time with meetings and your IT department not being able to procure a simple ssh key, that is your problem, not mine.
- I understand that you have deadlines, but so do I. I need to be places and under no circumstances will I ever work more than 40 hours in a week as part of this contract. If you need more resources, we will have to talk about a separate contract.
- I do not care for your employees. You are hiring me because you need me to fix their mistakes, do not expect them to be happy about that. If you want to make it my job to be their nanny, I'm cool with that, but don't expect them to suddenly drop the wilful incompetence.
- You get a weekly e-mail update which should suffice as far as communication is concerned. Anything beyond that has to be initiated by you and will consume time that I could spend working productively.
- I work with Python, exclusively (and some fun low level languages but nobody works with those anyway). I understand that back in 2013 someone decided that node.js was a great idea and now they left because it wasn't all that great, but that's not my problem. If you want it fixed, we can rebuild it in python. It will work phenomenally.
- I do absolutely not do any kind of User Interface work. I know people who do and can manage them for you. But I will not ever touch anything like that personally. Watching paint dry is at least an order of magnitude more entertaining.
- This is a contract negotiation, not a job interview. You can ask me technical questions if it makes you feel better about yourself, but time spent on such nonsense will be considered billable hours.
Those are the things that matter to me. Other things do not. I charge extra for boring work, like "restFUL API". No its not difficult to instantiate a framework to write some endpoints.
Its perhaps not surprising that my list of priorities doesn't touch on usual employment stuff. Its not employment, after all.
Work/life balance (a.k.a. will I be expected to work 80 hours a week, or will I be fighting fires at 3am on a regular basis.)
Sadly sometimes they will lie and you don't find out what it's really like until you start the job. This happened to a friend recently. Despite setting expectations up front about hours, work/life balance, etc. the first week he started working there he noticed developers were fighting fires (and getting distracted) all day long and often at night/weekends. Luckily for this friend, he had another offer come along and he gave his new employer a choice: Let me help you fix this problem or I walk.
"Well, this is actually better than what it used to be like."
(He quit (a week after his start date,) and took the other offer.)
1. Is the job described what your actually going to be doing?
2. Team/Company Culture, did you meet the team? how are the managers? the company values? etc..
3. Salary expectations (whatever yours is or anyones is) don't be afraid to negotiate if you feel its to low.
4. Do you see your self here for more than a year?
5. Room to grow, do you want to become a manager? or a senior developer? what options are available to you?
- the kind of questions they asked, was it mostly stupid algorithm stuff? Useless 15 minutes HR multiple choice questions?
- the interviewers. Were they involved during the interview or were they thinking about their day ahead? Were they jerks, making you feel like crap? Did they asked anything else than work related questions such as "how is your day going?", "what did you do this weekend?". etc.
- Last but not least, I look at HR, how transparent and genuine were they during the process? Very often, when it comes to arguing about salary, feedback, etc, they often show that they lie and don't even make sense. Like "you were the last person we've interviewer" when one of the interviewer told you - you were the first candidate in the process!. Things like that...
I've been through a LOT of interviews. The process is a snapshot of the company. Most of the companies fail at it. More often than candidates actually.
Case in point: I was hired under one manager, then another manager (who was worse than the first) replaced him three months later, and I was fired two years later.
It may take a year to discover the true bullshit the company is hiding. So in that case ignorance is bliss. Enjoy that time, and if you smell something rotten, best steer clear of it, even if that means getting a new job.
The most important thing is your happiness. To me that's salary. Some people like clean code. Some people want to grow in a position. Some people want a good commute. I don't care that much about the code base, because I'm technically a hired whore. And currently my commute is 4 plane segments a week, and I don't mind it because in the end, the people are nice.
Sure it helps if the people treat you nice, but as long as you are the employee, you can be treated like shit at anytime during your employment, and you may have very little recourse.
The other thing to steer clear of is how much the company brands it's employees. If your own personal identity is wrapped up in the company brand, then if you or one of your co-workers are later separated, it can be especially painful.
In short, figure out what it is you want from a company, and see if it matches your needs, roll the dice and hope for the best.
Did they respect your time in the interview process?
-Good: schedule a full day of interviews and make the offer within a day or so.
-Bad: ask you to come into their office several times, or make you wait outside the CEO's office for 30 minutes (feel free to replace CEO with department head, partner, etc)
Did the interview involve a reasonable number of people to make a decision?
- Good: mixture of peers or management levels, each interview session has a clear point
- Bad: lengthy HR gate keeping, meeting with multiple non-technical people to evaluate your culture fit, seemingly everyone in the org needs to sign off on a hire
In general, I've found that organizations execute "real" projects the way they execute interviews.
Some of the parameters that can be used for evaluating a job offer:
1. Startups:How much money the company has in terms of its burn-rate? Given a choice, I would not join a startup that is running out of funding and next round of funding is nowhere in sights.
2. Growth in team: Are you replacing someone or it's a new position. If I am replacing someone the scope of work will be well defined. It will be worth checking why the earlier person left. If it is a new position, check how the team will grow. If a team grows, earlier employees tend to get bigger roles.
3. Compensation and other benefits: This is mostly a relative study, but I would not join a company that is not really giving me a decent raise in terms of salary or stocks. I have not seen people not join a company for healthcare benefits unless it is a really low paying job.
4. Commute and other flexibilities: You may be ok with commuting for an hour, but if you are asked to reach office at 9 am, your 1 hour commute might get converted into a 2 hour commute. So check out what are reasonable work hours and how flexible is the company in terms of working from home, sick leave and PTOs in general.
5. Manager and upper management: It is not very easy to figure out how the company management is, by taking to someone who is making you the job offer. Check our reviews on glassdoor and similar sites. Take them with a pinch of salt, because those reviews are either from frustrated employees or employees who were requested to write reviews.
6. Work: Join a company that will help you grow both in terms of compensation and skills. A general rule of thumb is to see if taking this job will help you in finding your next job.
- interviewers talk poorly about their employees (means they are bad managers)
- the interview is too easy (means they do not know how to recognize talent)
- they are too agreeable (could mean they are not being honest about the role)
Ask to the interviewers:
- What are the traits of your most valuable engineers?
- What are the traits of your low performing engineers?
- How do you balance features with bug fixing and technical debt?
- Is the project on track?
You want to get a feeling of their definition of success, and if they're already being successful by their own metrics.
Are there people in this group that I want to be working with in 20 years? (Before evaluating this question, make sure you give people a chance to show their interestingness, either by looking up their profiles/websites online, or asking them many questions when you meet them)
Would I buy the product if I was the customer? (Charlie Munger, Vice Chairman of Berkshire Hathaway along with Warren Buffet, in my opinion one of the best investors in history)Do I respect and admire the people Id be working with/for? (Charlie Munger)
Do I enjoy hanging out with the people? (Charlie Munger)
Is my future manager stellar? (Keith Rabois)
Is the CEO a learning machine?
Is this valuable (to the world), and going to remain valuable over the next 10+ years? (Peter Thiel, co-founder of PayPal, Palantir, Clarium Capital, Founders Fund, Mithril Capital)Does the world/people want this, and will they continue to want it over the next 10+ years? (Big difference between what is valuable and what people want. i.e. perhaps reading for two hours a day is more valuable than spending two hours on Facebook, but looking at the numbers would indicate most people want the latter more)
Am I going to be able to perform the job (well), and maintain/improve my ability to perform over the coming years? (Peter Thiel)
Are other people not doing this, and not going to start in the next few years? Note, this question is less relevant for a mid or later stage company. (Peter Thiel)
Is this something that I feel I am slightly unqualified to do? (Marissa Mayer) Please dont use this to justify taking an impressive role at an unimpressive company.
Would it be fun to work on this and with this group? (Paul Bucheit, employee #23 at Google, creator of Gmail, YC partner)Is this either a mid-stage high growth company, or an early stage company with an extraordinarily strong team and network? Obviously, if its something that just seems really fun and interesting to you, thats great too. (Joe Lonsdale, Marc Andreessen, Andy Rachleff, etc)
1. Network2. Market and Growth Rate3. Optionality (does it build new career capital/skills for you, or is it more of the same)4. Brand (more important if you dont already have 12 strong brands like MIT CS or Google Engineer on your resume) Elad Gil, co-founder of Color Genomics, early investor in many past breakout companies, e.g. Airbnb series A, Optimizely seedDoes the company have at least one of the above attributes noted by Elad?
Are you less focused on both role and compensation (because even in a less important role where you earn less, if the company ends up being a far more important company you will have far more future opportunities)? (Elad Gil)
If they have impressed you with revenue numbers, are you aware of how they are reporting revenue and the differences between for example GMV and net revenue, or revenue and bookings? (http://a16z.com/2015/08/21/16-metrics/)
Have you read some/all of the pages on understanding offer letters? If not, re-read the sections on Understanding options and equity on BreakoutCareers
If this is a pre-breakout company, have you read some/all of the pages on thinking like a VC? If not, check out the section Think like a VC on BreakoutCareers.There are three types of start-ups:1) Ones that are so young that its difficult to tell if the dogs are going to eat the dog food.2) Ones where theres clear evidence of market pull.3) Ones that are unfortunately stuck in a push market or have a very difficult product to sell. The trick is to say away from #3. You only go to #1 if you are a domain expert and you have an informed opinion on a product/market, but this is a rare trait. The real trick is to end-up in #2. Doug Leone, Sequoia CapitalDoes this either fit #1 with you being a domain expert, or #2?
Is this a tribe you want to be a part of? (John Lilly, Partner at Greylock)
Struggling to decide between two options that both fare well?Ask: Where would I be spending the most time with people that I admire the most? (If you dont know who you admire the most, consider looking for people who are energetic, smart, independent minded and curious)
"Do I know someone in it and do they say it's awesome?"
Anything else is just bullshit, come on. you're a programmer. network just a little teeny tiny bit with your peers. you can work wherever you want. why should you be the first person to try an unknown job environment, when you can just join one that is good already?
Statistically, nothing else you can possibly do will come close to having as good a result for you. Find out which of your friends are working at awesome places and then just onboard with them. that simple.
Now, I realize you were asking about how to evaluate a job offer you've already received! Well, the answer is simple: using the exact methodology above.
But how can you do that, you say? How can I evaluate a job offer on the basis of my friends working there, if I don't have any friends working there?
You still can. But how! How! It's a logical inconsistency!
Nope. Just make a friend!!! If you're in the office, go barge in and apologetically steal 10 minutes of someone's attention, become friends with them and figure out if they're saying the workplace is awesome.
Can't do that? You'll have to dig deeper. Network your way into finding someone (by name) who works there. Then figure how to email them and make a friend over email. 100% serious.
This is how you actually separate bullshit from reality. You'll be investing many months of your life there. A bit of hustling to make sure you're getting someplace awesome will pay better dividends than anything else you can possibly spend that time doing.
EDIT: Downvotes? I've just given you a formula that is all but guaranteed to make you happy.
Misplaced trust can happen at any level.
They did fix the bug with search not handling quotes properly, however.
Probably, but because nobody except the mods than can give you a definitive answer on this you really should ask them (e-mail is in the footer) instead of posting here and ask for guesses.
The question many (maybe most) companies are going to ask is simply "can you create value?" If you can create value for a company by helping them reduce costs, or increase revenue, or both, you can probably find a job.
Coming at this from a similar position (did not complete my b.s. degree and have only 3 a.s. degrees as formal credentials), I have come to believe there is a crucial extra bit that factors in. And that is domain knowledge as well as general business understanding. You can understand the math behind back-propagation and gradient descent as well as any Ph.D., but if you don't know how to apply that to solving an actual business problem for a particular organization, you aren't going to be able to create much value for them. So if you really want to find a job, you may find that there's value in taking some business classes as well, and choosing a domain to really dive into. This is, of course, assuming you'd be content to chose a role that's more of "applied ML" as opposed to desiring to do cutting edge research.
If you want to do cutting edge research without formal credentials, I don't have any definite advice for you. I believe it's possible to get there, but I'd be entirely speculating as to the details. Well, besides just setting up shop for yourself of course. Then you can research whatever you want. The issue there might be paying the bills if you can't convert what you do to a revenue stream pretty quickly.
This is what HN uses for search.
I was using searchpath.io, but developer announced he was winding it down. I was paying $75/yr. Loved it - simple, clean, pretty good results. I would pay more, but not as much as some of the major offerings. I am sure they are worth what they do, I just don't need that level of complexity.
On April 1st, 2017, Google will discontinue the sales of Google Site Search, the paid version of Custom Search Engine. All new purchases and renewals must take place before this date. This product will be completely shut down by April 1st, 2018. This note does not affect Custom Search Engine.
This website has got a bad reputation, but I've rarely had any issues with them. I think any issues I have had were easily handled with some CSS or some htaccess URL blocking.
Nonetheless, I still use it on all my websites. Simply copy the code into the pages you want or the footer if you are using a platform like WordPress, and the code takes care of the rest.
FYI: I am in no way associated with the owner of that website.. I just think whoever created it did a great job at making social sharing easy... and no plugin required!
Flexible hours can work really well; most offices are blissfully quiet at 4am. Also the lights can be off!
Reserving a conference room for a few hours is great. You don't even have to be alone; a small group who are all working on the same thing at the same time can be immensely productive this way. Here's a good example: http://rachelbythebay.com/w/2011/08/24/projectdarkness/.
Basically, find all the ways you can exert some control over your environment and use them.
We don't have enough conference rooms for actual meetings, so that's rarely an option.
Really, I've only managed to mitigate the problem a bit, not solve it. Would love to hear anyone else's tactics. I'm seriously considering going freelance again mostly just because it means never having to work in an open plan office.
I'm hypersensitive and easily distracted so cutting off sound is a must. I also combined it with the pomodoro method for additional boost of focus. I'm now thinking of making it an online app to help others.
However, a recent change made it so that a reply to your post will disable deletion. The intent is that it discourages conversations from being broken up, but after a couple months with it, I don't think the advantages outweigh the disadvantages.
A problem with extending that window is that there can be subsequent comments in reaction to yours (and, in turn, other comments reacting to those), and removing an original well after the fact can ruin context.
It would basically ruin the majority of older posts where good conversations (read with opposing positions) existed.
I like the content left in its genuine (or original) form.
- Learn to cook. You'll want to eat unprocessed foods that come from good sources. Don't worry about how much protein you're getting. There is no need to supplement with protein shakes or fake meats. Amino acids are plentiful in all whole foods except fruits. Nuts, peas, beans and whole grains are all rich with protein. If you're eating whole foods you shouldn't really have to worry about it.
For example, why buy isolated whey protein when you could purchase ricotta (made from whey) or pea protein when you can have split pea soup. The whole food will be more nutritious and hell of lot cheaper to make. On that note, purchase an electric pressure cooker, an immersion blender and some basic cooking utensils if you don't already have them.
- Learn how to ferment foods. A lot of grains, legumes and vegetables have mild amounts of phytotoxins that are removed during the fermentation process. Sourdough breads, yoghurt, kefir, kimchee, sauerkraut, etc. are all great sources of vitamins, minerals and umami flavors that are not in the "fresh" sources.
- If you decide to be ovo-lacto vegetarian, find a good local farm for eggs or dairy (local for milk, not so necessarily local for cheese). You'll be saving a lot by not buying meat, so make sure you're purchasing ethically raised chicken eggs. Eggs are great foodstuff. Chickens are also easy to raise yourself if you want to feel closer to your food.
- Don't evangelize. Over the years your reasons will change. Answer peoples questions when they ask (and they will), but don't push YOUR personal decision on others.
- Have fun with it!
I can see three strands:
1. For health reasons. This is IMO the weakest reason. I'm not interested (nor qualified) in starting an endless debate about the health risk/benefits of meat; but if you only want to eat healthier is best to start with the obvious: cut sugar, snacks, sodas, sweets, junk food and deep fried; eat more low-GI and greens, etc.
2. For Ahimsa . Ahimsa is a beautiful and subtle topic, but broadly speaking it means that you try to minimize the amount of suffering caused by your actions. Buddhists (as well as Socrates) believe we constantly fail to understand that our actions have consequences. Ahimsa is about getting in touch as best as we can with these consequences, and act accordingly to our insights.
3. For environmental reasons, i.e. reducing your ecological footprint. This has some overlap with Ahimsa, but the reasons are practical rather than ethical and there are exceptions: in terms of sheer sustainability, battery farmed chicken might be OK (maybe, I don't know).
Whatever your reasons are, it's something I believe is worth thinking about.
Watch the film on YouTube: "Earthlings"
Try to watch it in a full sitting. You probably wont be able to, but try. Then walk to a mirror and look yourself in the face, and ask if you and this world are really real, that is, do your own version of a reality check.
Then you will see your proverbial red pill and blue pill.
Dont do it because you think you might lose a few pounds and impress some stranger at a beach. Do it because you want to deeply re-examine life and this world. Make it a life path for yourself.
Its either a difficult and impossible path OR its a trivially easy path, it all depends on your intentions.
Watch the film.
I have been vegan for several years.
It took me almost 2 years to watch the film in its entirety.
I was 16 then. I cut out the meat intake immediately. I happened to one day take a stroll in a part of the town where butcher shops were in plenty and I stood and observed the butchering process out of curiosity. Whatever I saw left me pale and horrified. I came back home and cried a lot. The shrieks and cries of the hen didn't leave my mind. And I decided from that day onwards that I wouldn't kill for my taste buds.
As for how, I went cold... tofurkey?
(The reason being that I had already been thinking for a while how gross it actually was to eat animal corpses, and that I'd also rather be alive than dead, so others shouldn't suffer that fate just because I had to satisfy my taste buds)
That was the easiest part - the social aspect of it is a lot more complicated than that, mostly because I had to explain to people why I made the decision, over and over again. And obviously the braindead comments about not getting enough protein etc.
Some things I did not even know initially, like how many products contain gelatine (which is made out of animal bones and skin), but nowadays it's rather easy to avoid such products.
Going Vegan is the next goal, probably when I move into my own place, and I already tried going Vegan, but always ran into a wall because I am not the person doing groceries in this household.
Transitioning slowly really set me up for success. Doing so allowed me to adjust my habits. Took longer for my tastes to change.
I thoroughly enjoy my diet now. It doesn't feel like a burden and I don't feel like I have to compromise on enjoying food.
One thing that is really easy is just eating less meat. By just cutting down, you don't have to change/think about your diet. Just eat less meat, more everything else. Cutting it out entirely takes a bit more work (still totally doable).
Since then I've stuck to a low-meat diet; I mostly eat vegetarian, and when I eat meat I try to eat low on the food chain. I'd say I eat fish and chicken about once a week each, and pork or beef maybe once a month. I also cook with chicken broth pretty often.
When my wife and I took the plunge I had been eating lots of meat at lunches...mostly in sandwich form and we had been unintentionally transitioning from all meat to chicken and fish to mostly just fish at home for dinners...wife's preference for fish over other meat drove that.
Then we watched the documentary "Forks Over Knives" and, regardless of the scientific accuracy of the film, said "Why don't we try going vegan for a month and see what happens".
So after a New Years trip to see family in LA where we are a ton of meat we drove home and then...never ate meat again. After the first month "test" we asked each other if we should try it again for another month, agreed to do it, and then never asked again.
Over the holiday break in 2014 we ended up eating a bunch of eggs and decided we really wanted eggs and cheese, so we ditched the veganism and went vegetarian. We probably eat 80% of our dinners as vegan still, unintentionally, but we don't feel bad about eating cheese anymore.
One quick tip if you try to be vegan...be flexible if your not doing it from a moral standpoint. If I ordered a sandwich and they accidentally put mayo on it, I just ate it anyway. If a coworker brought cookies or cake, I ate it. I didn't ditch my shoes or belt. True vegans would probably be appalled, but life is so much easier if you go with the flow. Try to stick to it, but don't fuss or worry about the occasional lapse.
Hell, I know plenty of vegetarians that are 99.9% vegetarian but occassionally grab a slice of pepperoni pizza or slice of bacon or whatever. There aren't any rules...it's a personal decision. Do what makes you happy.
There were a lot of factors involved in moving over fully, but the precipitating event was joining a farm share for the summer. I got a huge box of vegetables every week and it just didn't make sense to keep buying meat on top of that.
I had serious (and strange!) meat cravings about 6 weeks in, but those stopped after a week. I tried a few meat dishes after the summer ended but they didn't taste good to me any more. And I noticed after a couple of months that I felt physically better than I could ever remember. So it was easy to not go back.
So I turned vegetarian and started exercise (tennis, walks) and I started feeling the benefits.
Hindsight (20/20) of course, I think it was just exercise that was needed. I think we are what we eat but we are polished if we exercise.
Last year I tried just eggs a bit (for me vegetarian = no meat/fish/eggs, definition I guess allows eggs) but did not like the taste, after 6 years of vegetarianism.
I woud overall say, listen to your body, eat what you like, but don't forget to burn those fats irrespective of if you eat meat or not.
Do you usually cook for yourself? Do you live in a rural town with few vegan options? If the answer to either of those is "yes", I'd give yourself a couple months to learn how to eat meat- and dairy-free. Otherwise I'd say just go for it. Especially in a big city it is easy enough to find vegan substitutes (e.g. mock meats) in a pinch that you should have no trouble supporting a rapid transition.
Don't forget to take B12 supplements.
Back during the birdflu scare (2008-09), my parents decided to stop eating meat (chicken - which was the only meat I used to eat). I was ~12-13 yrs old.
Overtime, I wanted to switch back but for some reason or another (saw some videos on Youtube about how chickens are treated and killed didn't sit right with me), never did.
We cut meat immediately. While I didn't miss a lot it, I did eat a lot of soy in the interim period (ofc a few friends of mine who tried didn't succeed).
Just as an FYI: Don't watch those videos if you like stuff like leather for example...I love the feeling of leather seats, but I'm looking for synthetic leather in my next car.
If you're planning to go veg, my suggestions would be
1. Go all-in straight away. 2. Stick to it all the time. It's easier on others if they just know that you won't eat meat rather than guessing 3. Prepare a canned answer to the "Why" question. You'll get asked this every time you share a meal. 4. Don't preach it, just do it 5. Don't equate vegetarian/vegan with healthy. Any diet can be healthy or unhealthy.
Now, I just try to eat healthy. I tried the book Vegan before 6, which I thought was a nice way to move into that lifestyle.
I also am working on a side project to help me find vegetarian / vegan dishes at restaurants in a location. I still want that healthy option when I am eating out.
I love animals and care for their welfare (and still do), but reflecting back as an adult, the reason did it was because I wanted to control over some aspect of my life, and I consider my own vegetarianism (and my young cousins 'low fat high carb veganism') as eating disorders.
I gave up beef a few years after college for green reasons, as managing my personal carbon footprint as best as possible made sense to me. Because of this I would (and still do) make exceptions if I knew the source of the beef was local/sustainable. I found that after a while of abstaining from beef I lost an appetite for it and can't really digest anymore and I have very little interest in beef.
I started to eliminate eggs and dairy for allergy/IBS reasons. I've found that the less of both I eat, the better I feel in general, but I know that everyone's mileage varies. For me, eggs turned out to be a bigger culprit than I imagined in some of my worst food issues. Of the two, I'm more likely to cheat with dairy than eggs these days.
I live a few blocks from a major industrial pork slaughterhouse. I can live in ignorance most of the year, but there are a few points in the year where the output at the facility gets its heaviest (the big one being the holiday months of late October through mid January), or they do something illegal/wrong, and their smell ekes over to my part of the neighborhood. Walking into a BBQ place in my neighborhood to meet friends one day during the holiday period, I had the nausea inducing moment of realizing how much the smells inside and out were deeply entwined and more similar than their difference (which at that point seemed merely hints of charcoal versus hints of feces). From there I realized I couldn't criticize the facility in my neighborhood and continue to eat pork, and definitely could not stomach the thought of pork that day.
I find it interesting that without pork, chicken lost most of its interest. I still eat seafood somewhat regularly, but that's about the last of it for me.
I'm not very strict, still, and see it as my job, not a restaurant server's to manage it. If I order something that isn't quite right, that's my mistake, and mostly I eat it and enjoy it anyway. The green reasons on the one side are full of intentional exceptions for local/sustainable food. On the other side the allergy issues and growing inability to digest certain meats comfortably are "spell slot management" issues. I know there are consequences and I try to be careful and know my limits, but those are, for the most part, my own problems to deal with.
I took to heart the "Vegan Club" idea that you don't talk about being vegetarian/vegan unless asked a direct question. I like it to be more of a private concern. I find small joys in those moments when someone I've had lunch with for several days in a row gets that surprised realization I've only really ordered vegetarian/vegan and finally thinks to ask.
The ones with enough experience to hate thoroughly so far are:
- windows cmd/batch
- azure clis, azure powershell api
- aws python api, cli
- MS Team Foundation Services
- Docker (one of the nastiest ones)
I always managed to solve the tasks with the tools at hand (one of these), but all have so many weak points one must always work around, that I cannot say any single one made me feel like a boss when I had to use them for any non-trivial task.
If you want to feel like a boss, be a boss!
It's so powerful, there's very little it can't do.
- Workspaces! These help with focus and isolate the "blast radius" of getting randomized
- Spectacles: windows manager to assign windows to left/right side of screeen, across monitors, or left, middle or right 1/3
- CopyClip: I don't use this clipboard manager all the time, but when I do, it SAVES MY BUTT
- Sublime: speaking of saving my butt...Sublime has never once lost a single file. I love Vim but Sublime has flawless reliability
- Cmd+0: Global hotkey to "new browser window" If you do something 20+ times a day, make it super stupid fast (I know it conflicts with "reset zoom" but I can just manually adjust zoom back to 100%)
- Shell scripts: If I'm typing more than 3+ commands over and over again, just script it. Scripting isn't scary and more developers need to be doing it. (I seem to be the only one on my team, which is why I say that)
This and Powershell, which although its syntax is mind-bending and in some cases just outright appalling, is a decent attempt at a scripting language with exceptional power over Windows.
It's saved me an insane amount of time lately.
That said, my second biggest time saver has been saving language reference and library docs to my local drive:
#! /bin/bash wget --recursive --level=5 --convert-links --page-requisites --wait=1 --random-wait --timestamping --no-parent $@ local_docs.sh http://docs.python.org/2.7/library/
Salt is a little confusing at first, since it's essentially just a framework for systems management with Python + ZeroMQ, but you can do a lot with it.
The computer voice is not too annoying, and it can read news articles and blog posts to you, rather than wasting your eyes. I often do the dishes or exercise while the computer reads hacker news to me.
The text-to-speech tool is also very useful to proofread any text you might be writingI catch a lot of typos this way.
I considered using saltstack, but despite spending a few hours reading their doc, I'm still very confused by all the lingo.
I recently started reading and considered using NixOS, but the still relative newness (it's 14 years old!) makes me worry about missing packages and updates.
Though technically, this can save time in tracking down errors or weird state-based bugs, I guess? So it even still qualifies under that.