I have a lot of books that get suggested to me that are on your list, on topics like Stoicism and Self-help, but I ignore most of them. Many feel like reading them would just be rehashes of early books I have read on the topic with nothing new to contribute.
I like that your approach was to actually read these anyways, most of the time you rate them low because there was nothing new, gives me an idea of what to avoid. Thanks for posting the list!
Can confirm that review, my first MBP was the 2015 model with El Capitan, it has been nothing but sheer joy for me. I don't even have to deal with temptation because everything that has come out since has been terrible.
> Have I just made something public in order to test it?
>
> If yes, consider instead writing higher level tests that each each test more of the code.
This is one that I struggle with in JS with React.js components. If you have a little helper component in a file that isn't exported but used in the same file by a component that is exported, it is sometimes difficult to test that non-exported component. Because of how enzyme shallow rendering works you don't get the full tree so that component, if sufficiently nested, might not ever be touched. This forces me to export the component just to test it.
I run into the same problem with React and it bugs me from a testing standpoint.
Extracting code from a big component to helper functions and extracting those functions from the component can lead to cleaner code, and it makes it much easier to test the behaviour of the helpers directly than having to render the component with enzyme.
A good example of this is moving state changes to pure functions [1] which makes them much easier to test, but you'll need to export those functions to test them.
I use CircleCI because it allows 1 free private repo. Personally though I do not like Circle too much, it has a lot of cool features but the UI loads so slowly because they have so much stuff going on. They use the UI skeletons technique to make the load time appear to be faster but it is still very apparent how slow the load time is.
I have hit numerous bugs with their website as well where stuff doesn't load, builds kick off into infinity, when I transferred a repo everything broke, ack!
Furthermore, I am frustrated with their pricing, they go from free to $50/mo for the next upgrade tier, that seems like a crazy jump to me. I would gladly pay $10/mo or so for another container or 2x parallelization. The issue is being a single developer I rarely would save any time and the $50/mo is just too steep.
Finally, when I tried to build a justification case for my manager to pay the $50/mo, I wanted to use data from their CircleCI Insights which shows how long your builds are queued on average and some other important data points. But you cannot access these insights from a free account. Seems like that info should be available and prominent to help people understand the cost-savings they might receive by upgrading. I emailed support and asked for a one-time data point for that statistic to build the case as I was considering upgrading and they said sorry, nothing we can do for you. Is their goal to make money and have happy customers? If so they aren't doing a great job of it.
Overall a lot of frustrations with the platform and this just adds more fuel to the fire.
CircleCI, with all its limitations, bugs, and misfeatures, is free, hosted, integrates well with github, extremely simple
- and yet has enough built-in functionality to support 80% your use cases.
We went from Drone -> CircleCI -> Jenkins in the last two years. Jenkins feel opaque and hard to reason about, periodically dies for no _good_ reason and the UI is atrocious.
Drone itself was fine, as a minimal feature set. I think the docs are offline now, but it's fairly straightforward.
You must be doing something wrong then. I run a Jenkins cluster with hundreds of automated pipeline build/deploy jobs and the master node never dies. (It's also the only node up and running 24/7) You should be offloading your work to build agents.
For me at least(I don’t use it, but I do outsource “core” parts of personal code) the reason is time. Time I spend setting up VPS’s, updating build software, managing permissions etc etc is home I could spend writing code. Hence why I use gitlab rather than manage a VPS and run a perforce/svn server
Have you setup a new Jenkins deployment recently? While I personally don't really like CircleCI (or most other CI providers), Jenkins is a clusterf@#$ to setup for anything non-trivial IMHO.
Have you tried the declarative Pipeline[1] files? This plus BlueOcean[2] has made Jenkins much more user friendly, although obviously not as much as CircleCI/TravisCI/etc.
I haven't tried either, no. They do look nice, but they still only solve part of the problem.
I have only been tasked with fixing setups on Jenkins, and a friend of mine has spoken at length about how difficult things are to set up.
Some of that is based on the difficulty in getting a Jenkins configuration into source control. For CircleCI, I know, the CI configuration goes in a configuration file that gets checked in to the repo.
Another big part is making sure the development environment is sane, and replicating it. When we were dealing with Jenkins, Docker didn't exist yet. I assume that build slaves running inside Docker are a thing now? Because that's another thing that CircleCI gives us.
Honestly, though, this is just a thing that's easier to outsource if you can. Running a Jenkins server on your own is valuable if you have business reasons ("Code cannot go onto a third party server!") or if you're doing testing that involves connected devices (build and deploy to this Android device, then run tests...). But apart from that or a similar motivation, why bother maintaining a server when services are available for fee or cheap?
Agreed. Declarative pipelines coupled with pipeline shared libraries and BlueOcean have completely changed the Jenkins game. Pair that with the EC2 plugin and you have an auto-scaling build cluster!
Jenkins is fundamentally broken. Upgrade any plugin and you risk everything breaking. And you won't necessarily know until you run every corner case of your build system.
After I changed to the LTS release channel, I have yet to suffer from that. I think it has been a couple of years without a hassle.
I do wish Jenkins to be a little less high-maintenance, like say having a postgres backend and a docker image for the master. I hate having a different backup routine for each thing.
Why not Shippable? Free for 150 builds/month for private projects, brand new UI created with a focus on usability and perf, integrates with GitHub and Bitbucket, and we're adding metrics very shortly.
I like that your approach was to actually read these anyways, most of the time you rate them low because there was nothing new, gives me an idea of what to avoid. Thanks for posting the list!