HNHacker News
TopNewBestAskShowJobs

codebeaker

1,632 karma · joined May 4, 2012

http://lee.hambley.name/ http://www.capistranorb.com/ https://www.harrow.io/
submissionscomments
codebeaker··on A list of modern C++ features
Thanks, that page looks like hell, but I recognise a few terms.

http://clang.llvm.org/extra/clang-tidy/ is much more approachable, and gives a solid overview.

The introductory sentence gave me project-naming cancer:

> clang-tidy is a clang-based C++ “linter” tool.

Then why is it called tidy ??? It appears first on page three of google's search results for "C++ linter" in spite of the fact that anything from LLVM is probably a) current and b) of exceptional quality.

A little marketing-mindset would go a long, long way for these kinds of things.

Whilst the Ruby community lead by the example of DHH often takes this concept too far, it is inarguably effective.

codebeaker··on A list of modern C++ features
I really wish there would be a linter (I realise it's probably a nearly impossible task) which would complain when you use legacy, unsafe language features.

As someone who doesn't work in C++ or have the benefit of 10 years experience to see the flaws, trying to write modern, safe C++ is essentially impossible. I spent a solid week trying to write something safe and only use C++14/17 features when they were available, and encountered a mountain of outdated- and mis-information about what one can and can't do, what is and isn't considered safe and why one certain feature is better than another.

It's nobody's fault that this happens, but with C++14 apparently fast becoming a language that is addressing it's #1 pitfall (safety) in an apparently very adequate way, it's frustrating that there's no "safe code" linter to stop rookies stepping on landmines.

Thanks for the list, it's a solid start, and the sibling comment about C++ Core Guidelines is another solid resource.

codebeaker··on Things I will tell my kids if they become entrepreneurs [slides]
Curious too, the phrase is very widely attributed to him, if it's falsely attributed, I've been unknowingly contributing to the misattribution!
codebeaker··on Most Germans don’t buy their homes, they rent
somewhat arbitrarily choosing your comment to reply to, I noticed you're picking on the idea of buying a house being an investment, rather than a simple alternative to rent.

For me, the motivation for owning a house isn't so much an investment as it is that renting and owning cost virtually the same, given that one has the means to get on the ladder.

I bought my first house (I'm 30) in north Germany about 18 months ago, we paid 515k and it was recently valued at 700k due to large improvements to the area, and the renovation of an old hospital site which is now luxury flats and houses, the mortgage (2.5% fixed-for-25-years) costs us about the same as renting a flat (100sqm) in the city, and we now have 200sqm of living space and 250 of garden to ourselves, we also now own, rather than rent a parking space (which always annoyed me more than it perhaps should have)

The capital gains tax is an interesting point, given the rent we were previously paying at 1800/month (warm == includes some bills) we'd have been over 20k/year out of pocket just by maintaining the renting status-quo. My wife and I discussed whether it was the perfect house for us, whether we wanted to take a risk on living 20min north (metro) of the city, rather than 5 minutes to the west, and whether waiting 2/3 years was justifiable, we poured about 70k of our savings into legal fees, ground-tax and the deposit for the property, we figured that sitting on our hands for 2-3 years could cost us essentially the same.

Naturally one can't write-off the convenience of renting and being able to terminate a contract and simply move, but I have almost the same freedom to rent out my house should I choose not to live there anymore, although the rental market for houses ~20 min north of the city will make it tricky to cover the cost, then keeping the house turns into a question of eating the capital gains tax, or paying out of pocket a few hundred euros per month to make the difference. I also don't have to pay €4k for a "Markler" to help me find a flat, and fax me a contract, a rather shameful act that persists in Germany, even if you do all the work yourself, the Marker can still get their commission, legally speaking, they often do deals to prevent you pushing the issue to the courts.

Given the duration of my mortgage, the low (fixed) rate, I can look forward to the last 15 years of my useful working career being rent and mortgage free, which might be a bit too late to build a nest-egg, but it's certainly better than being at the mercy of ever-increasing rental rates in an ever-expanding city. (in my opinion)

I think it might be fair to close by saying that Germans are typically fiscally risk-averse, and huge debt, variable rate mortgages, and the uncertainness about maintenance and insurance might be as big a driver as anything else. There's also the cultural shift away from generational houses (think "Home Alone") where many generations live together longer term, I think this is significant.

codebeaker··on FastNetMon – very fast DDoS analyzer
Project site has some pretty aggressive scroll hijacking, it was basically unusable on my macbook 13" under Chrome... Guys, just drop the scroll hijacking.
codebeaker··on Web DRM moves to next phase, Defective by Design to continue opposition
I thought the general consensus amongst people, including the general HN crowd was that it was better to allow the w3c to specify a "black box" with well defined inputs and outputs. Allowing vendors to slot in their own (probably closed source) implementation than it was to slam the door in their faces whilst screaming "SCREW YOU, USE SILVERLIGHT OR FLASH".

Defective by design seems to be misinterpreting the "build the web for the users first" quote here, because the alternative to this proposal is not "no DRM", the alternative is a worse UX from a plethora of more hostile, wider reaching proprietary DRM implementations.

There's a time and a place to fight about DRM vs. no-DRM , but it's not here, this is the fight about how the DRM we will inevitably get works and interoperates.

codebeaker··on Coming Soon: Gut Bacteria That Cure Disease
I have a food intolerance based allergy/autoimmune issue which is under a broad headline of "Non IgE mediated autoimmune disorder".. manifestations are depression, fatigue, chronic skin issues (on my face :-().

I've been told the only "cure" is to abstain from eating about ~160 staple foods that contain proteins that my autoimmune system incorrectly recognises as something to attack, the problem is however you can barely get through a day without eating one of those staples unless you cook all your own food, and don't mind eating tuna, rice, chicken and (some) beans all the time.

I have a lot to look forward to from these treatments. I've had very good experiences with General Biotics' (SFO) product which claims to try and get the gut bacteria back in balance, I have no affiliation with them other than a dependence on their product if I want to be sane, happy and healthy in the short term..

codebeaker··on Voice Assistant? Yes please, but not in public
Could you share a product link for whatever bluetooth button you were using, that sounds like a product I've wished existed for a long time and failed to find in the market. I remember an old wireless/30-pin connector for my iPod that had a weather-proof armband with controls from the company iMonster a long long time ago that I loved, but snapped many a connector off in my leathers!
codebeaker··on Capistrano maintainers add new dependency to promote paid service
I've had something on the tip of my tongue since seeing the parent comment last night - I think this is close https://en.wikipedia.org/wiki/Spiral_of_silence but it doesn't seem to say too much about when the majority behave this way, maybe it's a disparity between perceived like-minded group size and actual group-size.
codebeaker··on Capistrano maintainers add new dependency to promote paid service
That's pretty much what we did! The fact that the `capistrano-harrow` code is a dependency rather than being embedded into Capistrano itself was supposed to benefit people by allowing us to experiment with tasteful integrations without having to repeatedly bump `capistrano` every time we wanted to try something out. Having the integration in a tiny gem also makes it easier to audit for anyone who wants to know what exactly we're doing. It's regrettable that this has drawn such negativity about the process when it was intended to be better this way. Lesson learned, I suppose.

Please excuse the stray line numbers, but here's what the output looks like [1], the prompt respects the presence of a tty and defaults to no after a few seconds, and the prompt is only visible when running "cap install" (not "gem install capistrano")

Almost certainly this dependency will go away soon, not because of the negative comments on HN, but because silly as it sounds, I don't really like it anymore than anyone else does, I just need to apply a little pressure and see if the product we tried to build will find it's place in the market or not.

[1]: https://gist.github.com/leehambley/7c18c9760e5ec81f5181c018f...

codebeaker··on Capistrano maintainers add new dependency to promote paid service
> My understanding of this phenomenon is that only people with extreme views comment.

I believe so too, we have much more positive feedback from new customers from the exposure this post has brought than we have negative.

In either case I'm glad for the opportunity for HN to discuss how to monetize FOSS, to see what people consider fair and unfair and to learn a little bit more about people's standpoints.

codebeaker··on Capistrano maintainers add new dependency to promote paid service
> If people are concerned about the gem installation (and not the promotion itself), I can suggest that you promote harrow differently. Maybe put it as part of some command's output. Like "Cap by codebreaker (thanks to funding by Harrow.io)" or similar.

Actually we wanted to ping people once not on every time they use the tool, this is the lesser evil, it also allows us to push something to turn off the integration without having to bump Capistrano's version for no reason, simply by deploying another (noop) version of the integration gem.

codebeaker··on Capistrano maintainers add new dependency to promote paid service
That's the question we're trying to answer now. We've been maintaining Capistrano with effectively zero data about our users since the project's inception.

HN always has very extreme, and usually very negative reactions to any kind of tracking, integration, promotion, analytics, etc - and rightly so, with governments and corporations eroding our privacy at every step, we have to be on guard.

That said, this isn't some coup to drive Capistrano into the hearts of it's victims, it's an experiment to see how to approach people and whether sitting on the front page of hacker news is a net benefit or a net loss.

My gut feeling is that the reaction has been fair. The thread title is unfortunately misleading because of OPs miscomprehension of the message displayed, and I don't know how to reach the mods to request it be reviewed.

> Maybe it is better to find other ways of reaching potential users than with a message during cap install.

Almost certainly, we have to experiment a little bit and see where the threshold lay.

I'm glad you're getting value out of Capistrano, I hope it can continue, and that Cap will improve at a faster rate once we better understand how people use it and optimize for those cases.

Might I ask, how do you find the new default formatter?

codebeaker··on Capistrano maintainers add new dependency to promote paid service
> An additional point is - what if I have another CI gem that conflicts with capistrano-harrow but not capistrano?

We could find synthetic cases if we looked, Gem conflicts aren't unheard of and everything is name spaced. Fortunately the code is all open source and if a conflict were to arise it would be easy to diagnose, and the support would be quick, since there's a team of developers who's job it is to make this work well.

> What if capistrano-harrow introduces a security vulnerability that I'm not prepared for because I don't pay attention to a gem I'm not using?

That's something nobody can help you with, it's a small gem, the signatures are published, Rubygems verifies the integrity, but it's a risk for sure. Have you audited the 47 Gems that `rails` pulls in as direct and transient dependencies?

> If capistrano is too expensive to maintain on your own, address that problem don't drag the Rails community kicking and screaming.

A single prompt shown to about 1-3% of people who download Capistrano is hardly "kicking and screaming", most of that is happening on Hacker News anyway, the people who've seen the message and signed up are too busy enjoying the platform!

> What about soliciting help from RubyTogether?

I wasn't aware RubyTogether still existed, I'd assumed it had fizzled out. Regardless we've tried crowdsourcing and soliciting input and sponsorship in the past, it simply didn't work. Capistrano sits in a space where people can't get excited about it. It's a tricky piece of glue between other (very complex) systems.

Thanks for bringing RubyTogether to my attention.

codebeaker··on Capistrano maintainers add new dependency to promote paid service
> From an engineering point of view it should be a separate gem...

Absoluitely, this isn't an engineering decision it's to finally test and see if there's a market for people to support open source now that we've built something that was widely requested.

> From a marketing point of view I understand the move, but I don't like it much.

I'm actually with you, it's a little bit driven by the fact that if we don't make the product break-even we'll have a hard time to continue running it at a loss.

HN often complains about services that were free suddenly disappearing, or being discouraged from investing to learn/adopt a product that has no clear model behind making it sustainable.

I find it interesting that for closed source products that people run for free the crowd seems to have a different view than when someone tries to make open source sustainable through some measurement/monetization, even when it's done in a very considerate way.

> Anyway, I'm using mina (less feature complete but much fa

Mina is great where it fits, I have a slew of projects using everything from Mina through Puppet via Chef and Ansible, a couple on the side still using Capistrano ;-)

This luxury of choice is one we too often take for granted.

codebeaker··on Capistrano maintainers add new dependency to promote paid service
I appreciate your candor educar. I'm also on the fence with some software:

- iTerm2 prompted me to opt-in to some pre-beta phase, it was widely discussed on HN and the author was criticized.

- Just this week homebrew announced they integrated Google analytics to help understand their user behaviour and were called out and extensively critiqued.

- ohh-my-zsh frequently breaks my workflow to prompt me to ask about checking for updates, this is a thinly veiled "statistics" collection.. if I had a problem with my shell, I'd check for updates by hand, I'm a developer I can't work without my shell.

Those points fly in the face of the extreme freedom-of-software view, but if people don't want to use the latest version of Capistrano they can stick with the old version, or volunteer to back-port changes they care about and we'd be happy to release a dot-release with any bug fixes for a previous version.

Thanks also for the kind words in regard to Cap being "great software", as an infrastructure tool we have a privileged place in a hot, and potentially dangerous path for all our users, right between them, and their uptime! That trust is not lost on us, and we walk the line.

codebeaker··on Capistrano maintainers add new dependency to promote paid service
Those are certainly valid points, and they don't fall on deaf ears. Through a mistake when failing to push to the upstream remote this gem caused exactly that problem for someone yesterday[1]. Fortunately I was able to fix it in a few minutes and get the OP back on track.

[1]: https://github.com/harrowio/capistrano-harrow/issues/1

codebeaker··on Capistrano maintainers add new dependency to promote paid service
If you're ever in Hamburg look me up and I'll buy you a beer. I don't hold anything anyone tweets against them, I'm glad you were able to sort the upgrade in spite of my incompetence :)
codebeaker··on Capistrano maintainers add new dependency to promote paid service
> I thought your response was fine :-) I see what you are saying now - basically that was part of Capistrano already, so moving it to its own gem is a very good idea.

Thanks for the vindication, if it wasn't an external gem, I'd probably have to re-release Capistrano, exactly. This is less invasive.

> Wouldn't the new gem rely on Capistrano and not the other way around?

Typically yes, but I have a vested interest in promoting Harrow so that I can afford to keep working on open source, it's slightly cheeky but apparently I earned some good will in all the time I've worked on Capistrano as we've had genuinely net-positive responses to the suggestion.

> Regardless, the one lodging the issue probably should have stepped away from the keyboard before lodging the issue.

I'm guilty of writing much worse, a little empathy goes a long way on the internet. I just apply Hanlon's razor anytime I see something that makes my blood boil, apart from making me feel a little bit less bad about myself, it's a quality of life improvement.

Thanks for the constructive discourse.

codebeaker··on Capistrano maintainers add new dependency to promote paid service
> For example, RSpec 3.4 will use `coderay` for syntax highlighting [1] if it’s available, but doesn’t make `coderay` a dependency of the `rspec` gem.

Absolutely true, two observations:

- I've often wondered about syntax highlighting in rspec to make things more readable in tests, I wish I would have known about this and seen it featured more prominently.

- RSpec have no vested interest in promoting Coderay. I do have a vested interest in making Harrow come to break-even, if we don't make it break even I may have to step away from the FOSS work that I so enjoy.

Thanks for sharing rspec+coderay, that's gonna make life in rspec projects much more bearable!

codebeaker··on Capistrano maintainers add new dependency to promote paid service
Hey kawsper, good to run into you on HN. Thanks again for reporting that last year. I was afraid people would assume we did it for maximum "reach", honest truth is that I'm just not very good at Javascript and forgot how cookies worked after years writing Rails and "magic".

I was glad to see open source working allowing someone to see the error and suggest a fix which GitHub pages deployed pretty much instantly... it's nice when a system works!

For whatever it's worth the banner is going away, part of our sponsorship/stewardship of Capistrano now that it's got a bit more manpower behind it is an overhaul of the website and docs, and more guides for getting started more easily for newbies from any tech background.

codebeaker··on Capistrano maintainers add new dependency to promote paid service
Right, we'd like to be able to fix bugs in the harrow integration without having to re-release Capistrano. The other gem dependency is a mature, well loved project in it's own right which the maintainer generously offered to maintain as a first-party plugin and we had such great feedback about how much better the output looked with the community formatter, we made it the default.
codebeaker··on Capistrano maintainers add new dependency to promote paid service
Capistrano maintainer here, I gave a more comprehensive answer in this thread [1], I hope that answers some of your questions.

Specifically to address your point about having "nothing to do with the tool for the vast majority" there may be some sense to that. We first built a pure, pure literal web front end for Capistrano, it turns out something that limited is not that useful, however when you boil the problem down in to:

- Management of secrets, variables, keys, etc

- Tasks that can be combined with sets environment specific config and re-used

It turns out to be fairly universal. https://xkcd.com/927/ springs to mind, if we'd built another custom web front end for another specific tool it would be nearly useless. As it is we've got customers who have cut their monthly spend on testing/monitoring services from 800$ to $160 and have a better, more consistent experience.

It's all relative, frankly my company invested a lot to build this and I personally truly believe it in, and after 18 months intentional slow-burn to make sure it worked well for the people who did use it, it's time to test the water and see if we can bring the product to profitability.

If we can't I'm almost certainly going to have to cease working on FOSS due to business and family commitments, given my love for FOSS that's something I'd rather not do!

[1]: https://news.ycombinator.com/item?id=11596602

codebeaker··on Capistrano maintainers add new dependency to promote paid service
Seven year Capistrano maintainer here. I'm the person who is responsible for Harrow, the gem plugin and the response to the issue linked at GitHub.

The point of separating the gem is so that we don't have to bump Capistrano's version, every time there's a change to what is effectively a first-party plugin. Sorry if the way I responded at GitHub was unclear.

It's a common theme of my maintainership of Capistrano that people have always asked for a web-based version, in the mailing lists, at user groups and meet-ups, more so since Capistrano 3 as we grow in popularity amongst teams who wouldn't normally have a Ruby toolchain installed on their machine.

That said, we have to strike a balance, Harrow was bootstrapped predominantly with money from my software development agency with some seed funding to see us through a smooth launch and get us the UX help we desperately needed to make a product we could be proud of (pro tip: don't let a bunch of ops guys write a Javascript app.), so we have to figure out if this is commercially viable, or whether it was a wasted endeavour, that puts me in the slightly uncomfortable position of what amounts to advertising baked in to open source tools.

As I wrote on my blog [1], it's a fine line to tread, but so far the response has been overwhelmingly positive.

[1]: lee.hambley.name/2016/04/24/seven-years-under-a-palm-tree.html

codebeaker··on Building a GSM BTS Using the BladeRF, RPi and YateBTS
BTS = "Base transceiver station", it's not mentioned in the article.
codebeaker··on Grunt 1.0.0 released
This must be solved with `gulp-plumber` which is actually about a 10 line hack around fixing some underlying bugs with merging streams if memory serves.
codebeaker··on Nanobox: Local development done right
Also a big dan of the design but I do find it to be much too dark, I'm in a well lit office, with a calibrated Dell UltraSharp display and the site's color scheme is really quite hard on the eyes, even if the design itself is beautiful.
codebeaker··on Show HN: Sodocan.js: Documentation Made Easy
A shame that the page has to hijack the scroll functionality, it makes for a very unpleasant "lumpy" feeling scrolling. Chrome Version 46.0.2490.80 (64-bit) on OS X Yosemite.
codebeaker··on EditorConfig
For more see the numerous older discussions of this https://news.ycombinator.com/from?site=editorconfig.org
codebeaker··on Ogo, a new take on personal transportation
Of course, there's nothing to stop the manufacturers programming in different modes, imagine speed limits, sports modes with higher torque and lower battery life, etc, etc. If some such "The operator is prone to seizures" mode were to exist, to require more prolonged sustained input from a user, or to move very slowly, after "double inputting" an intent, I can see this being quite safe, a "lean forwards twice to toggle moving forwards at 3mph" may well be a totally acceptable interface for some subset of people.
← PreviousPage 5 of 9Next →