Go best practices, six years in (2016) - <AUTHOR> https://peter.bourgon.org/go-best-practices-2016/ <comment><USER2> This is generally great advice, and aside from the package manager recommendations is still relevant today. I do take issue with a few things though.

1\. Don't put your internal libraries in /pkg. /pkg has special GOPATH meaning as "compilation cache". Its not an actual name conflict, but why bother risking it.

2\. This is just wrong:

> fmt.Printf is self-contained and doesn't affect or depend on global state; > in functional terms, it has something like referential transparency. So it > is not a dependency. Obviously, f.Bar is a dependency. And, interestingly, > log.Printf acts on a package-global logger object, it's just obscured behind > the free function Printf. So it, too, is a dependency.

stdout (and the buffer, and mutex on it) are exactly the same as the global log object. In fact, `log.Printf` is more or less just an alias to `fmt.Printf`[0]

3\. I wish it had mentioned the functional options pattern in the part about constructors[1]

0: [https://github.com/golang/go/blob/b77aad089176ecab971d3a72f0...](https://github.com/golang/go/blob/b77aad089176ecab971d3a72f0357ed0abc81f4a/src/log/log.go#L294)

1: [https://dave.cheney.net/2014/10/17/functional-options-for- fr...](https://dave.cheney.net/2014/10/17/functional-options-for-friendly- apis)

<comment><USER3> > the functional options pattern

Functional options are controversial in the Go community. I don't like them personally. The idea of having a bunch of functions that exist only to mutate internal state on init is... an odd choice. Google code is riddled with this sort of style.

It's annoying to write client code for another reason: It's hard to discover. For the "term" example in the article, you can't sit in your editor/IDE and type "term." and get a list of setter suggestions, since everything in a single namespace. "term.Speed()" does not _sound_ like an option to me. Function names are generally verbs, and having one called Speed() doesn't read well. And it causes issues if you want to have a _type_ called Speed. Then it has to be term.WithSpeed() or term.SetSpeed() or something. Neither of which is really self-explanatory.

The fact that options are functions has other downsides. The moment you pack a option into a function, they've lost their ability to be introspected. You can't dump the options to a debug log before you invoke the constructor function. You can never ask an option function what it contains.

I prefer representing options using actual data:

      type (
        Option interface {
          isOption()
        }

        Speed int
        RawMode bool
        SomeOtherSetting struct {
          A, B int
        }
      )

Unfortunately, due to how Go interfaces work, you'll have to provide a dummy private method to tie the types together, but it's a small loss. (Go itself uses this pattern in a bunch of places, such as the compiler's AST.)

<comment><USER4> My biggest object to the functional options argument is the step where

        NewServer(..., Config{})

is considered bad for some reason. As far as I can tell, the entire purported utility of the thing is based on avoiding this obvious approach.

<comment><USER5> A big config struct is great, but it comes with a big downside: You have to rely on Go's zero value semantics to provide defaults. It's not always clear that 0 or an empty string means "no value".

It means that sometimes you'll have to use dummy values (-1 for "no value", for example) or pointers (nil means optional). It means that any boolean has to be phrased in such a way that false is the default (so if it feels natural to call the option UseKeychain and it should default to true, you have to invert it and call it DontUseKeychain).

Config structs also means it's easier for a caller to construct invalid configs:

      type Config struct {
        // Either stream or channel can be set, but not both
        OutputStream io.Writer
        OutputChan chan Event
      }
      // ...
      pipelines.New(pipelines.Config{
        OutputStream: myFile,
        OutputChan: myChan,
      })

The semantics cannot be guaranteed by the type system, so won't be caught until runtime. Neither will this, of course:

      // ...
      pipelines.New(
        pipelines.OutputStream(myFile),
        pipelines.OutputChan(myChan))

...but in this case we can quite sensibly mandate that the following option overrides the previous one, flipping the internal switch over to the setting you specify. With the Config struct, there's no way for pipelines.New() to know which one should have precedence.

(In this particular case, you can work around it by having a single Output field that uses an interface, but there are other situations where mutually incompatible fields can occur.)

<comment><USER4> Yep! It was probably overstepping on my part to say that the _entire_ benefit depends on that argument. I should instead have said that the tradeoff does not seem good to me.

<comment><USER6> It depends on the purpose. Config structs are indeed simpler and make tons of sense for cases where you control all the related code. So yeah, for code where you can do a mostly-automated refactor if you need to change the API, I totally agree that Config structs make more sense and functional options are _huge_ overkill.

For stuff that needs finer-grained control, or long-lived API stability, functional options give you a lot more flexibility.

</comment></comment></comment></comment></comment></comment><comment><USER7> I simply love the go toolchain. The defacto standards for code formatting, linting and vetting, and the speed of builds and tests save tons of time. Both clock time and overall developer productivity.

I have a GitHub CI service that verifies the standard go tools pass on every commit.

The bot itself is naturally written in Go and executed in a Lambda function.

Everything is just so fast! You get feedback in seconds. Which keeps you in the flow of coding.

Maybe some other gophers will find it useful:

[https://www.mixable.net/products/bios/](https://www.mixable.net/products/bios/)

</comment><comment><USER8> 50 Shades of Go: Traps, Gotchas, and Common Mistakes for New Golang Devs [0] might serve as a nice supplement to this article.

[0] [http://devs.cloudimmunity.com/gotchas-and-common-mistakes- in...](http://devs.cloudimmunity.com/gotchas-and-common-mistakes-in-go- golang/)

<comment><USER9> I have another post that covers a few project structure best practices: [https://medium.com/golang-learn/go-project- layout-e5213cdcfa...](https://medium.com/golang-learn/go-project- layout-e5213cdcfaa2)

It has a little more than Peter's post, but it's still not too opinionated :)

</comment></comment><comment><USER10> At [Kolide]([https://kolide.com/](https://kolide.com/)) we're heavy users of Go Kit, and as a result have also adopted a lot of the style Peter recommends here. We've been slowly expanding on it with a style guide and company specific set of common libraries [here]([https://github.com/kolide/kit#kolide- kit](https://github.com/kolide/kit#kolide-kit)). My coworker also wrote a [blog post]([https://blog.kolide.com/using-go-for-scalable-operating- syst...](https://blog.kolide.com/using-go-for-scalable-operating-system- analytics-cb170d85b1c5)) on how Go has been fantastic for us and references the above style guide.

The code from go kit and [oklog]([https://github.com/oklog/oklog](https://github.com/oklog/oklog)) are great examples of idiomatic Go. Unfortunately the community at large doesn't really follow the "no init"/"no package global vars", which can sometimes lead to bad experiences importing opensource Go libs.

<comment><USER11> I feel like go-kit is quite antithetical to the Go mindset...it presents a lossy abstraction as a means of future-proofing against eventualities that will almost certainly never be encountered

to be honest it strikes me as the sort of library that excites intermediate developers who tend to over-architect

<comment><USER12> I vouched for this comment - why would it deserve to be flagged?

<comment><USER13> This comment in particular wasn't flagged: 'junkscience2017 is banned. Note it was marked [dead], not [flagged].

<comment><USER12> Thanks for the explanation!

</comment></comment></comment></comment></comment><comment><USER14> This is great, but I wish it would get updated for 2018 as it is now 2 years old.

<comment><USER15> Search for "update:" in the article. There are three and the most recent references a post from June of 2017. It appears the author has modified it for developments he considers important. It would be helpful if he indicated the revision date near the top of the article.

</comment></comment><comment><USER16> I love the way the headings and their 'anchors' are styled on this blog post. I don't know, it just looks so pleasing.

</comment><comment><USER17> Is anyone else using golang dep[1] as their vendor/dependency tool?

I've used it and it works great (much better than glide, gb et al) but I don't see it in the wild too often.

[1] [https://github.com/golang/dep](https://github.com/golang/dep)

<comment><USER18> Well, it is on its way out, have you missed the news regarding _vgo_?

[https://research.swtch.com/vgo](https://research.swtch.com/vgo)

<comment><USER19> Er, thanks. We've just moved to go dep :)

Go's dependency management story is starting to resemble JS's modules story :(

<comment><USER20> Yeah... In defense of the Go folks (1) they are working hard to make the transition as smooth as possible (2) dep was always just considered an experiment (though with aspirations by the author to have it become the official solution) (3) vgo almost certainly marks the end of the churn, and looks really nice.

</comment></comment></comment></comment><comment><USER21> Author of go-kit microservices framework, which has several nice examples with which to get up and running

[https://gokit.io/examples/](https://gokit.io/examples/)

Another interesting recent project is Truss which allows you to autogen go-kit handlers from protobuf definitions

[https://github.com/TuneLab/truss/blob/master/TUTORIAL.md](https://github.com/TuneLab/truss/blob/master/TUTORIAL.md)

<comment><USER22> I found Gokit's stringsvc tutorial particularly helpful: [https://gokit.io/examples/stringsvc.html](https://gokit.io/examples/stringsvc.html)

</comment></comment><comment><USER23> Pretty good advice, except the preference for interfaces to support mocking. You should avoid mocking when possible in favor of real objects or fakes. Interfaces are still cool, though.

<comment><USER24> This is straight-up bad advice.

You don't test the http.Client as part of your business logic, even (especially) if your business logic makes HTTP requests. Instead, you trust that package http is already well-tested, mock out http.Client as an abstract HTTP Request Do-er, and you downscope your tests to your business logic exclusively.

<comment><USER23> Lots of people have different opinions on this. You're entitled to yours, but I think it's hasty to call it bad advice.

I'm not so worried about http.Client behaving incorrectly, but I am worried about the server I'm targeting behaving in a way that's different than my expectations. I'm also worried about getting cookie, post-data, url, etc. formats wrong. Even if they match what I put in my mock, they won't necessarily match what's out there in production. I'm worried that I'll handle download resumption wrong, for example.

If I have the capability to bring up the target server locally, that's what I will do. If I can't, but it's straightforward to create a work-alike, I'll bring that up in process. Only in the most dire of circumstances will I use mocks to test my code.

Think about it this way. What harm is done by using the real object, under the circumstances I described? Sure, if the dependency code breaks, my tests will too. Is that bad? Is there any point in my tests passing when my code won't actually work in production? OK, so maybe the tests will run slower? This matters in the limit, but often times you can use the production dependency without materially increasing test time. OK but what about the CI system using more resources? That will only be a problem of significant economic import if you're running at a scale like Google or Facebook.

My opinion is there are a few main valid objections to my approach. One is an argument about the size of the test code. In some cases, bringing up the production dependency will require more code than a mock. Sometimes a lot more code. My response is that we should make it easier to bring up the production dependency! But if we can't, I can see the case for a mock or a fake. The other counterargument is for when we really are interested in testing the sequence of interactions the code under test has with the production system. In that event, I guess I'm ok with using a mock, but I think most of the time we're more interested in testing state. We can also use things like testvalue injection to test behavior sequences, which is normally a lighter-weight approach, and in some cases can allow you to reproduce paths that you'd otherwise have trouble hitting, even with a mock.

<comment><USER25> It seems a bad advice also in my eyes. I guess that you have never worked on big systems if for you it is normal to bring up all the production dependencies for an integration test. For small projects it may make sense, although I would still prefer to write unit tests to catch exactly were the bug happens and to be independent from breakages in the external systems. The correct approach is to rely heavily on unit tests that run continuously at every build and run the full integration testing suite at regular intervals or overnight. In a _quite big_ project on which I worked many years ago the full integration test suite took 11-12 hours to run, I would be curious how you would proceed in that case given that from what you write it seems that unit tests are pretty useless to you..

<comment><USER23> > I guess that you have never worked on big systems

I work on search and indexing systems at Google, and have done for more than a decade. I'm by no means the best, nor an authority. But I have spent some time living in this problem space, and this is my conclusion from my years of experience.

FWIW a single run of the tests for the system I work on now takes . . . I don't know. I would guess hours or maybe even a day of computer time? But, computers are cheap, and defects are expensive. So you split the test suite into bits small enough that the whole thing runs in ten minutes, and run them all in parallel. And, yes, there have been cases where I have had to debug the slow startup of a dependency so that I can make it fast enough to run in my test. But, that's what they pay me for, I enjoy that type of work, and it has ancillary benefits to the dependency when it needs to start up in production.

<comment><USER25> In the real world you don't have pretty much unlimited resources. If I remember correctly those tests I was speaking about were already running in parallel on 2 or 3 machines otherwise the total time would have been 2 or 3 times more. Obviously we couldn't use hundreds of machines to make them run in 10 minutes. In most of the places were I worked even getting a couple of new machines for _production_ use would take months, I think if I requested even a couple of machines dedicated only for the integration testing I would have been laughed in the face. So if you can run a full suite of integration tests in minutes on hundreds/thousands of machines then good for you, but don't expect that every company has the resources for doing it. And in those cases unit tests that run continuously are more useful than integration tests that run once a day.

<comment><USER23> > In most of the places were I worked even getting a couple of new machines > for production use would take months

OK, well I guess this would be another caveat for my advice. If bringing up a production simulacra would take more resources than you have, then you might have to lean more on various types of doubles. This may be more often in environments that have insane prioritization of dev time vs. machine resources.

If I may ask, what was the bottleneck in your test suite? Did it saturate the cpu, ram, disk?

<comment><USER25> I don't really remember. The software was a _kind of_ ORM but it was built to interface the java code with an object database, so it doesn't make much sense to call it ORM. Probably the main bottlenecks were cpu and disk if I have to guess. I arrived very late in the project, at the point where we were going to migrate everything to oracle and we had to add oracle support to that behemoth.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER26> [2016]

<comment><USER27> Thanks, we've updated the headline.

</comment></comment><comment><USER28> Here are also some Go proverbs. Some of them are a lot older than 6 years. [https://senseis.xmp.net/?GoProverbs](https://senseis.xmp.net/?GoProverbs)

</comment><comment><USER29> Rule of thumb: anyone using the term "best practices" doesn't understand them.

(Yes, some do. On the whole I find most don't.)

<comment><USER30> Are you saying that speaks on this article or not? I don't care about a rule of thumb if it doesn't apply here.</comment></comment>


Beagle is shutting down - <AUTHOR> Every dog has its day, and ours is over
====
Hi Beaglers,
We're sad to announce that Beagle is being discontinued. We'd like to thank all of you who have been using the service and contributing your feedback. We tried to create something truly user-centric and you guys genuinely shaped our every move.
In terms of practicalities, we'll be turning off the machines on January 20 so please download any content you'd like to keep before then.
Download instructions
Hit 'Preview and Publish' Select 'Print' Hit the 'Download draft PDF' button at the bottom of the pane. Lastly, please note that any online proposals you have out in the wild will no longer work after January 20.
Our sincere regards, Team Beagle <comment><USER2> What is it? Even following the link (provided by a commenter, not the OP!) gives me no clue. And the FAQ doesn't reveal the information either.

Suggestion for the next company: start off any communication with an explanation of what it is your company or product does. Maybe that will help give it a longer runway.

</comment><comment><USER3> I had not known about your product, but a quick look at the walkthrough video was very useful. Really sorry that it did not work out, the product did come across as being very polished from a UI/workflow perspective. I know this must be a rough time, so chin up, and all the very best for whatever you folks plan to do next.

Edit: Link to FAQ has a video that I refer to in my reply [https://beagleco.zendesk.com/hc/en-us](https://beagleco.zendesk.com/hc/en-us) It's a proposal editing/creating software that I think could have been quite useful for academics (not saying it won't be useful elsewhere).

<comment><USER4> I think it's related to this ShowHN from earlier this year, at [https://news.ycombinator.com/item?id=9394012](https://news.ycombinator.com/item?id=9394012) and shortly earlier at [https://news.ycombinator.com/item?id=8858764](https://news.ycombinator.com/item?id=8858764) ?

</comment></comment><comment><USER5> A link or something would be useful...?

edit: [http://blog.getbeagle.co/](http://blog.getbeagle.co/)

</comment><comment><USER6> I know that there's mixed feelings here for fancy scrolling intro pages, but the one for Beagle was extremely well done.</comment>


Google Just Gave Millions of Users a Reason to Keep Chrome - <AUTHOR> https://www.forbes.com/sites/gordonkelly/2020/04/12/google-chrome-81-tab-groups-tab-management-update-chrome-browser/ <comment><USER2> Just created a link: [http://archive.today/WRHTG](http://archive.today/WRHTG)

</comment><comment><USER2> Requires disabling Adblock. Is there an Adblock-blocker free link?

</comment><comment><USER2> TLDR; It's all about the new tab groups feature in the latest version of Chrome.</comment>


25 Alleged Anons Arrested in International Crackdown - <AUTHOR> http://www.wired.com/threatlevel/2012/02/anonymous-arrested-interpol/

<comment><USER2> Power corrupts, even in Anonymous. They are now at a point where anybody that pisses them off in the slightest gets digitally nuked.

Our society should be above this. It's why we put people on trial.</comment>


Apngasm Wants To Promote Animated PNGs As An Alternative To GIFs - <AUTHOR> http://techcrunch.com/2013/08/26/kickstarter-apngasm-wants-to-promote-animated-pngs-as-an-alternative-to-gifs/

<comment><USER2> Scratching an itch that doesn't exist, with a name that makes it impossible to have an intelligent conversation around.

<comment><USER3> * a name that makes it impossible to have an intelligent conversation around

why? Is the word orgasm so scary to you?

<comment><USER4> Thus proving the point.

<comment><USER5> another example: [https://news.ycombinator.com/item?id=6277114](https://news.ycombinator.com/item?id=6277114)

</comment></comment></comment></comment><comment><USER6> GIF video has "privileged" support in browsers, because it used to be the only native video format, and that level of integration has been impossible with '90s QuickTime/RealMedia/WMW plug-ins.

And decade of this situation has conditioned us to think that only shitty video formats (like GIF, APNG, WebP with animation) can be allowed to have first-class support in browsers, and any video format that is technically competent must be kept isolated in special tags, must not work well with rest of the browser and must cargo-cult limitations of plugins of the '90s.

But browsers can and do support H.264/WebM natively now. Technically (patents aside) we could have <img src="video.mp4-or-webm"> work just as well as GIF (and maybe even faster given 10th of bandwidth needed and possibility of HW acceleration).

</comment><comment><USER7> I'd like to promote _static_ PNGs as an alternative to animated GIFs. Who's with me!?

<comment><USER8> [http://img80.imageshack.us/img80/3968/tumbleweed004gi3.gif](http://img80.imageshack.us/img80/3968/tumbleweed004gi3.gif)

</comment></comment><comment><USER9> Isn't it a bit late for that? I feel the modern alternative to gifs is simply embedded video.

<comment><USER10> There's probably too many places where embedding a full blown video isn't practical - at least not in existing products. Avatars, emoticons, simple GUI elements (I'm thinking e.g. of a "copy file" dialog) and similar.

<comment><USER9> But isn't gif sufficient for that? apng is obviously technically superior, but gif is already supported everywhere. It's one of those cases where "perfect is the enemy of good" IMHO.

Don't forget that we now have javascript, CSS animations, canvas and webgl in addition to good old gifs to deal with animated features. Do we really need apng on top of that?

<comment><USER11> With GIF one have to create multiple versions of the same image for different backgrounds. APNG works nicely on any background.

</comment></comment></comment></comment><comment><USER12> Slightly related ... I'm only supporting IE8 and higher now for all new website work. Wow! I just said that out loud! I feel ... better.

</comment><comment><USER13> The name is juvenile.

<comment><USER14> The ruby interface is plain offensive [https://github.com/apngasm/rapngasm](https://github.com/apngasm/rapngasm)

</comment></comment><comment><USER14> With a higher-end stretch goal of $20,000: Python native extensions, it is apparent someone doesn't understand Python. On a humorous note, isn't _import apngasm_ part of the batteries included?

</comment><comment><USER15> animated gifs are used instead of video, because the restrictions lend it to less cruft, fast(er) downloads and widespread browser support without plugins.

Building extensions/plugins to increase quality is not only missing the point, it's directly opposed to it.

</comment><comment><USER16> Let control to keyframes via JavaScript and it could be interesting.</comment>


Salary negotiations while moving to a new country.. - <AUTHOR>

I've got a job offer at hand from a Dutch company. The problem is I have no idea how to evaluate / negotiate.
Where to find information about salaries, costs of living etc.
Thanks! <comment><USER2> Make sure the company guarantees that you qualify for the "30% rule" (for expats-only). It makes a HUGE difference. If you are married, you might want to make sure your spouse also gets a job and qualifies for 30% rule _before_ moving your spouse moves to the Netherlands.

[https://en.wikipedia.org/wiki/Income_tax_in_the_Netherlands#...](https://en.wikipedia.org/wiki/Income_tax_in_the_Netherlands#The_30_Percent_Rule)

<comment><AUTHOR> Thanks for the tip!

</comment></comment><comment><USER3> To get a salary indication for holland you can try this site. [http://www.intermediair.nl/overzicht/sollicitatie/salariskom...](http://www.intermediair.nl/overzicht/sollicitatie/salariskompas/9650/salariskompas.html)

Another option is this forum. A lot of dutch IT people post their salary and job benefits in this thread. <http://gathering.tweakers.net/forum/list_messages/1446515/0>

Here you can get some information about cost of living, this is only a indication, in my own experience you always spend more then these numbers. <http://www.nibud.nl/></comment>


Ask HN: A non-smart TV crowdfunding posted here a year ago? - <AUTHOR> The title says it all. I remember seeing a post where a company was selling (or maybe crowdfunding, can't remember) a TV with not being smart as its main selling point (it was very minimalistic with maybe only a single HDMI input)? I remember they also had a sound bar you could add as an extra.
It had multiple Apple-like colours available including a rose gold one.
If anyone can find it I would be grateful. I've tried searching using the Algolia search but most keywords for "not smart TV" find irrelevant noise.
Regards. <comment><AUTHOR> I found it, posting here if anyone else comes across this post: [https://ironcast.tv](https://ironcast.tv)

</comment><comment><USER2> I got one from Wal-Mart that has 2 hdmi in, also analog in and OTA TV. No WiFi, no ethernet, none of that.

It is thick so it has room for speakers better than some soundbars. The engineers and marketing folks gave me as much value as they could per penny so I think they are hard to beat!</comment>


MIT: Our Anonymity Network Riffle Is Better Than Tor - <AUTHOR> http://news.softpedia.com/news/riffle-our-anonymity-network-is-better-than-tor-says-mit-506231.shtml <comment><USER2> See also "How to stay anonymous online (mit.edu)"

[https://news.ycombinator.com/item?id=12077621](https://news.ycombinator.com/item?id=12077621)

Edit: I wish they also compared it with i2p.

Edit2: [https://news.ycombinator.com/item?id=12073942](https://news.ycombinator.com/item?id=12073942)

</comment><comment><USER3> I'm a little uncomfortable with using "MIT" to mean "a particular set of researchers at MIT"

</comment><comment><USER4> Related:

[https://news.ycombinator.com/item?id=12073942](https://news.ycombinator.com/item?id=12073942)

[https://news.ycombinator.com/item?id=12077621](https://news.ycombinator.com/item?id=12077621)

</comment><comment><USER5> This is a garbage, clickbait, content-free article that purposely misquotes the Riffle paper.</comment>


How to Add If-Else Logic to SQL Queries - <AUTHOR> https://dev.to/helenanders26/sql-201-how-to-add-if-else-logic-to-sql-queries-41j <comment><USER2> CASE statements work with most if not all SQL dialects, some dialects such as MySQL support on top of that IF statements directly: [https://dev.mysql.com/doc/refman/8.0/en/if.html](https://dev.mysql.com/doc/refman/8.0/en/if.html)

</comment><comment><USER3> Also see Cross Apply and Outer Apply (MSSQL), often it is faster than using many CASE statements

[https://www.mssqltips.com/sqlservertip/1958/sql-server- cross...](https://www.mssqltips.com/sqlservertip/1958/sql-server-cross-apply- and-outer-apply/)</comment>


Cellular Automata Explorer - Processing.js Interactive - <AUTHOR> http://columnfivemedia.com/processing-cellular-automata-explorer/

<comment><USER2> nice punch-up: "The first system of cellular automata was developed in the 1940s by John von Neumann as an exercise to understand the problem of building self-replicating robots. As the Terminator franchise did not exist in von Neumann's time, this was generally accepted as being a Good Idea."</comment>


Ask HN: How can I find a toy/side project that will captivate me? - <AUTHOR> I know that this sounds like one of these questions where only the one asking them knows the answer, but I'm hoping that someone else can relate to me.
I've been working in the same company for the past 8 years and I'm pretty happy with it.
However, at times I feel like I need to express my creativity and curiosity by having a side-project that I'll be passionate about. My GitHub though is full of unfinished toy projects.
I'm thinking antirez and how he had an idea that brought to life and continued working on for 11 years (Redis).
I'd love to have a project I care about and pour my passion for programming and energy into it, evolve it and make it something noteworthy.
TL;Dr How can I find the drive and motivation to create a piece of software that I will love working on for a decent amount of time?
However I can't find something that could motivate me to up to this point.
Have anyone else felt the same? If so, did you find a way? How?
Thanks in advance! <comment><USER2> Don't start with the tools for implementation of creation. Find a problem you are deeply passionate about solving or improving. Then figure out the best way to approach it based on your current understanding, and then iterate and evolve.

My history was:

\- Stock Market / tradebot (unfinished)

\- PhD work to find math formula in big data to help scientists

\- SpotJams, Hans together for music (real human contact in a digitally divided world)

\- Hofstadter, current, helping people realize their ideas through software, aka dev tools / low code

\- on/off line predators and groomers because I recently found out someone very very dear to me is one of many dozens of victims of a man still walking the streets freely. And likely by extension and generality, child abduction and human trafficking.

As you might see, the motivations and inspirations have evolved into aspirational goals to the point I don't care what it takes to fix it, it just needs to be done!

Also AR/XR because I recently picked up the Hololens 2 and it's the bee's knees</comment>


Ask HN: Thinking about changing business model - <AUTHOR>

I built a scheduling program for businesses in a niche market (~1000 potential customers) that now has 4 customers that each pay ~$300 per month. While current customers love the product (saves time/money, very simple to use, selling point to their monthly customers), attracting new clients has proven very difficult. For every prospect I have talked to, they say that price is the only obstacle. These customers are operating on a "very thin" budget and I am having tremendous difficulty convincing new clients to sign up.
So, I am looking into switching from a subscription model to an ad-supported one so more clients will sign up. I assume my per-customer revenue/profit would go down, but my increased customer base would overall make me more money. But, I have no idea how conversion rates work.
Does anyone have estimates on what the following data would be able to produce for monthly advertising income?
Monthly averages (total, not per customer):
72k pageviews
48k unique pageviews
9k visits
2k users
7.92 pages/visit
3 min average time on site <comment><USER2> Switching to ads is a very difficult way to sustain your current ~$1200/month, much less grow it.

I created a bedtime calculator called <http://sleepyti.me> that usually brings in about 10k hits per day. At that rate, I earn between $10 and $20 per day, or $300-$600 per month. Although I consider that revenue to be an astounding success, it is less than half of what you're making right now through the few customers you have.

I agree with cabinguy that a free trial system seems to be your best bet. Don't pull a bait-and-switch with the prices, but offering a 1 month trial that shows how easy and efficient your app is seems like a great way to hook potential customers. Maybe your price point _is_ a little high, and you could be willing to let customers wrestle it down to, say, $200/month. Pricing is difficult, and especially without knowing your niche it's a little hard to say, but the rule of thumb is that if people say it's too expensive, it probably is.

Alternatively, you could meet somewhere halfway and offer a six month "special price" at $100/month or something to see if you can hook people in that way. Either way, I wish you the best of luck!

</comment><comment><USER3> If you are selling ads directly (just as hard, if not harder than selling your product) - it will depend. You would have to get huge CPM's with your traffic for it to make sense.

If you are going to use an ad network (adsense, etc.) you will make almost nothing. Way, way, way less than the $1,200 you are currently bringing in.

Here is what I would recommend: Offer your potential clients a free trial. Let's say 30-90 days. If your product is valuable to them, you will be able to convert them to paying customers. (Like your neighborhood crack dealer. Give it away for free, get them addicted and see who comes back for more! Its a proven strategy.) The key is to get them using your product.

Also, there is no rule stating that you cannot show display ads/text ads AND charge for your product. The only people who complain about ads are hipster/early adopters. If your customers are not redditor types, you can most likely have your cake and eat it, too.

<comment><AUTHOR> My market is private tennis clubs.

I am currently offering a free, no obligation 1 month trial with no long-term contract. Each customer has their own domain name and I customize each site to match their existing website's look and feel.

I show them testimonials from current customers, examples of how much time can be saved by moving from old systems (usually paper or an Excel spreadsheet) as well as dollar translations from time saved.

Once a customer signs up for the trial and begins using my system, they have already made the decision to keep it for years. The hardest part is having them make the jump, and the price keeps on showing up as the only obstacle. I've tried determining if it is a "fake no" and they have other reasons, but so far that honestly seems to be the only reason.

When you say way, way less, what would you expect for CPM? From reading around, a highly targeted audience (in my case, I know exactly what sort of income bracket, age, etc.) would have higher CPMs, up to $35. If I saw $5 CPMs I would be around $350, so I would need 3.5x the number of customers. I just don't know if $5 is even a number I would be close to reaching with my audience.

$50 a month should be a non-issue for my customers, even non-profit, member- owned ones.

<comment><USER4> have you considered offering a "pay as you go" package based on the clubs membership count? they pay a flat fee of X a month (or X-5% a year) and Y per member per month. This only makes sense if your program has something to do with the club's members (booking courts, managing renewals/subscriptions etc).

btw, what sucks the most in tennis clubs is finding a court to play. it would be very cool to send a text and say "15:00 today" and receive back a text saying "Ok, booked" or "16:00 is better" or something like that; or "next free slot" and receive back "16:00, court 5. Book?".

<comment><AUTHOR> It does that and a lot more.

We do base our pricing off a few club-size factors, with ~$300 per club being the low end. If they wanted to pass the price off to members, they would see rates rise $0.50 per person per month.</comment></comment></comment></comment>


Dear Apple, Please Fix Boring Problems This Year - <AUTHOR> https://www.fastcodesign.com/3066820/dear-apple-please-focus-on-boring-problems-this-year <comment><USER2> Apple has lost it's "It just works" charm that it used to have IMHO. I had to dig through settings, remove devices from my account, and update an old iPad all so I could turn on 2-factor auth and Apple only gave me a cryptic "There was an error with the server" or some BS like that. I had to google all the steps to get it working again. Just on the Macbook itself I had to enter my Apple ID password 3 times to START the process of going to 2FA and then it got stuck throwing that error in an app with an open dropdown overlay that only had 1 button (that caused the error). I had to force-quit System Preferences from Activity Monitor to get out of it and then, magically, 2FA was on and enabled... This then kicked off all my Apple devices losing their shit and requiring me to re-login and some of them didn't even require a 2FA after I entered my password.

Apple needs to go back to making things work seamlessly instead of the jarring differences between their own apps, OS's, and that stupid cloud. I feel like I have to enter my apple password every 5 minutes and that irks me because I'd like to use some completely random password but I had to have 1Password generate a "pronounceable" one so I could remember it since I have to enter it so often.

</comment><comment><USER3> I would add "fixing the atrocity that is iTunes" to the list.

<comment><USER4> they have had years. time to give up on this dream</comment></comment>


Show HN: Primrose – a text editor that runs in a WebGL texture - <AUTHOR> https://primroseeditor.com/#instructions <comment><USER2> So here's why this is particularly awesome in my head.

I am a digital nomad, and basically travel with a backpack's worth of stuff, developing off my 13"MBA. The thing I miss the most about my old office is having a nice monitor. The thing I miss most about having a home is my 3-monitor desktop setup. Both things I had to give up because they don't fit in my backpack and because I can't easily procure them wherever I travel to.

But if I can pack an Oculus Rift headset into my pack, I dunno, a year from now. I can have all the multi-desktop computing environments I want, and they'd actually be way more awesome than just 3 flat monitors.

Beyond all that, text editors and dev environments have seen little UX improvement given the rate of evolution for everything else digital. This looks like an awesome step to trying some really radical things (I know this is a previously explored topic though, but I love being reminded of it).

OP, this is awesome. I happily leave the future of my dev environments in your hands.

<comment><USER3> What stops you from having multiple windows on your desktop?

Oculus sucks at displaying text - it's low resolution (half of 1080p), it has crazy chromatic abberations, and you have to transform "spherize" your image to correct for the lens distortion, further reducting the resolution.

Oculus is not light - it's pretty annoying to wear it for longer than 20-30 minutes.

<comment><USER4> This is all true of the hardware as it exists right now. By the same token the original iPhone was low res, slow, only 2G, and bulky. The iPhone 4 (first with retina display) came out only 3 years later. That's a huge leap in such a short period of time.

If VR catches on at all you can expect it to see the same type of acceleration.

<comment><AUTHOR> Yeah, that was kind of a motivation for me. I was sick of standing around, talking about what was or was not good for VR, with people who didn't even own a Rift, let alone program anything for it.

</comment></comment></comment></comment><comment><USER5> Just a warning, if you try this while using Safari it might crash and close all of your tabs somehow. And it might make it so that you can't reopen those tabs despite the fact that you have tabs set to be restored each session. And you may in fact experience the acute pain of losing a year's worth of painstakingly accumulated tabs. Not that this has happened to me.

<comment><AUTHOR> I'm really sorry about that. I didn't know it was going to do that. I had seen that it was doing that in browsers on Android and specifically disabled it for mobile users to avoid such an awful experience. I had just assumed that Safari, being WebKit, would work just as well as the least common denominator of Chrome and Opera. Again, very sorry.

I guess that will teach me to start sneaking into my wife's computer bag and borrowing her Macbook to test these things.

<comment><USER5> No apologies are needed, nothing critical was lost :). Cool project BTW.

</comment></comment></comment><comment><USER6> Wow, this is AWESOME.

Imagine playing around in a Voxel.js Minecraft world, walking up to an NPC, and lifting the hood to reveal its live-editable source code.

Looking forward to see hacks using this.

<comment><AUTHOR> That's pretty much why I made this! I've been wanting to build live-editable objects in VR, but I was severely dissatisfied with the options available.

<comment><USER7> Yes, this. I want to be able to map the amazing flexibility I had in SecondLife over either physical. I want to see programmable objects or virtual objects in a "layer" over the physical world and be able to open them up and edit the code, just as I was able to do in SecondLife. The creative possibilities are vast.

<comment><AUTHOR> I actually have a project in the works for something like that. I took a break from it to make this.

</comment></comment></comment></comment><comment><USER8> Failing with the following error in Chrome:

        GET https://primroseeditor.com:8082/javascripts/ga.js net::ERR_BLOCKED_BY_CLIENT

And in Firefox it's not even loading the home page, with an error of "too many open files".

<comment><USER9> You have μBlock installed in Chrome by any chance?

ga.js is "classic" Google Analytics, generally considered a privacy concern worth blocking.

Blocked by client means blocked by _you_.

</comment></comment><comment><USER10> Just from the description, this nails something I've been wanting to see for awhile. Having text editor "primitives" (panes, windows, tabs) be actual geometric primitives is a fantastic start to next-gen editors. More power to you!

<comment><AUTHOR> Thanks. I definitely want to implement more of those parts as I go. I just got a bug in me about making this one earlier this month and started pushing it through. Now that I have this, my next project will probably be a small, AI- programming game, ala CRobots or something.

</comment></comment><comment><USER11> This reminds me of RiftSketch[1]! Maybe you should get in touch with brian_peiris :)

[1] [https://news.ycombinator.com/item?id=8411638](https://news.ycombinator.com/item?id=8411638)

<comment><AUTHOR> Actually, that's where this project came from. Several months ago, we had had a conversation about the difficulties of integrating text input in WebVR. [https://github.com/brianpeiris/RiftSketch/issues/13](https://github.com/brianpeiris/RiftSketch/issues/13)

After New Years, I got the bug in me to work on this and just knuckled down on it. Though, Brian appears to be happy with where he is, now.

<comment><USER12> Author of CodeChisel3D here: I integrated the ace editor for the purpose of being used in webVR environments: [http://kra.hn/projects/live-programming- with-three-and-webvr](http://kra.hn/projects/live-programming-with-three-and- webvr)

<comment><AUTHOR> I'm sorry I didn't know about your project a month ago. I'd be very curios to hear how you render the text. Are you still using Ace for the rendering, or is it just for the editing and tokenizing?

In my very first proof-of-concept, I used hidden DOM elements to do the layout and styling of the text, and then queried the element properties to figure out the draw operations I needed to do. It was very slow and really unreliable, though, and I had a lot of cross-browser issues. Ultimately, redoing everything from scratch was actually _easier_ than trying to hack around DOM.

I've been seriously considering implementing a soft keyboard for mobile devices as well. It's just so hard to get the ones in the wild to interact with text in any common way, and on iOS it's nearly impossible to get everything resized correctly to use the most of the screen real estate.

<comment><USER12> The motivation behind CodeChisel3D is to reuse everything that ace provides, text modes, syntax highlighting, completion and so on. So, yes, my approach is to create a hidden ace editor in the DOM and then hook into the rendering mechanism of ace to render it to a texture that can be mapped into webGl and threejs scenes. The main reason for that is to support live webVR coding. I'm currently working on another project but I will get back to CodeChisel3D and improve it. You seem to have come quite far with primrose and might not be interested but the actual editor integration is here: [https://github.com/rksm/three-codeeditor](https://github.com/rksm/three- codeeditor). Feel free to use it.

</comment></comment></comment></comment></comment><comment><USER13> This would be cool to code a game from within a game. A game mechanic where you have to "hack" a computer system to gain rewards or advance levels.

A few notes, using FF35 on OSX 10.10:

1) Can't use without first going full-screen.

2) Red dot follows the mouse, but with a large offset.

3) Cursor doesn't focus where mouse click occurs. Doesn't focus where red dot is either.

4) No visual indicator when a window has focus. So keyboard navigation often results in accidentally typing a/w/s/d in a code window.

5) Would be nice to use click/drag to pan up/down/left/right.

<comment><AUTHOR> Thanks for the issue reports.

#1 is interesting, I've actually had the opposite problems: not being able to get things to work in fullscreen on OS X. My wife has a Macbook, so I will try to test there (if she will let me).

#2 and #3 are probably the same issue, expressed in two different ways because the red dot is placed completely independently from the caret drawn in the texture. Do you think you'd be able to figure out if its OS or display related? I.e. do you have a retina display? I should be collecting analytics on screen and pixel ratio metrics, sigh.

#4 was a punt, I just wanted to get the job out the door. I did want to dim the editor when it wasn't selected, and provide a key combo to deselect, but I ran out of time on my self-inflicted deadline. It is definitely in the pipeline, however.

#5: did you notice that SHIFT+mouse movement panned the view? Or are you not satisfied with that system? I admit, I'm not wild about it myself, but it seemed like the least evil of all of the options, considering the interactions that I also had to do with the editor.

</comment></comment><comment><USER14> I wonder how doable it would be to make most of the software we use, or even the system (but not the kernel), run on a GPU.

Any windowing system or GUI is already mostly a graphics application.

<comment><AUTHOR> This is actually how Desktop Window Manager (aka "Aero") on Windows and Quartz Compositor on OS X actually work. They're just setup with an orthographic projection and they don't rotate the windows at all.

That was actually a bit of a surprise (though I admit it shouldn't have been) with Primrose. If I pick dimensions for the editor that fit the window's aspect ratio, and don't rotate the view at all, then the editor pane can fill the browser window and it looks very natural.

I am not positive, as I don't have the spec laying in front of me and it's been a long time since I looked, but I'm pretty sure the HTML5 Canvas API is not hardware accelerated at this time. That is how I do the actual rendering of the text, using Text API.

There is another project called fontpath[1] that can read TTF and OTF font files, and another project from the same developer called gl-sprite-text[2] that can render them as bitmaps to textures. I've been considering converting my rendering over to using it. The process would at least be good practice in decoupling the code a bit more, as I think the tokenizer and keyboard system would be useful in other projects as well.

The keyboard code pages aren't yet complete for everyone in the world right now, but I think they go a long way towards making it possible to once and for all make good keyboard interactions in JS. And by completely implementing my own end-around of the browser's own handling, sticking to more of the older primitives, I am actually able to make for more cross browser compatible. I don't know if anyone noticed, but this runs in IE perfectly fine, and I didn't really do anything special to make it so. And if you just run the Canvas on its own, without the WebGL part, it actually runs on some relatively old browsers without any trouble.

[1] [https://github.com/mattdesl/fontpath](https://github.com/mattdesl/fontpath)

[2] [https://github.com/mattdesl/gl-sprite- text](https://github.com/mattdesl/gl-sprite-text)

</comment></comment><comment><USER15> This is super super cool. Feedback: I keep loosing the mouse pointer. The red dot seems to sometimes show up but it's pretty hard to track. Chrome latest on Ubuntu 14

<comment><AUTHOR> Yes, it's in the TODO list. But I was very urgently wanting to release this month. Thanks.

</comment></comment><comment><USER16> Looking at this 'virtual' text editor the text looks pretty smooth, until you get really close. Would it be possible to import typefaces as paths, and antialias them?

How do native apps do this, while also using hardware acceleration? Also, native apps can access sub-pixels for antialiasing, which I don't think is possible in a WebGL context.

I've seen OpenGL GUIs before, but I wonder what limits them compared to native apps, particularly when it comes to text and sub-pixel antialiasing.

<comment><AUTHOR> Actually, there is another open source project in the world that does that. It's called fontpath, I believe, and it reads OTF files directly. I'm considering switching to it, as the HTML5 Text API isn't hardware accelerated and a huge amount of the processing time is being spent in the fillText method.

[https://github.com/mattdesl/fontpath](https://github.com/mattdesl/fontpath)

</comment></comment><comment><USER17> This is so cool. Very interesting as an idea, hard to explain without seeing it I almost didn't click.

Side note: I tried to load this on Chrome for Android and it went very badly. I got redirected through two of those bright red "UNSAFE YOU SHALL NOT PASS" https pages and then finally got to a page that didn't do much at all. No idea why, worked fine in Chrome on OS X.

<comment><AUTHOR> There are no overt technical reasons it won't run on Android. At one point, I did have it running in Chrome and Firefox on Android, but I had a lot of difficulty getting it to run without regularly crashing the browser and bombing out to the home screen. I don't know if that is an Android issue or a Galaxy Note 3 issue, but it was pretty reliably reproduceable in both browsers with just a "load this page, now refresh the page".

I also somehow broke the touch screen controls at the last minute. But I was really keen to get this project out by the end of this month. So I cut features to get in on my self-imposed deadline. I just shut it off to avoid procrastinating release, focusing on too many UI issues or trying to avoid crashing people's browsers when I haven't the slightest clue if there is anything I can do about it.

Most of my career has been working in consulting, mostly for the type of consultoware companies that make all the boring, MS-tech, CRUD projects. I've been freelancing for the last three years, but even that isn't ideal. I've always wanted to have my own projects, building the type of products I've always wanted.

Over the years, I've had a lot of personal trouble with procrastination of completing projects. 10 years of starting and stopping the same ideas, becoming dissatisfied with my work, and eventually growing bored of it and letting it rot on a forgotten hard drive somewhere. I've always known it was an avoidance tactic. By focusing only on the core technical issues, I'd never have to address the tertiary tech and management issues common to releasing any project. So that was another motivation behind this project: just get something together and get it done, out, and in front of people.

I couldn't be happier with the results. Yes, it's missing features. Yes, the server is kind of janky, being that I'm not a sysadmin and only even learned how to turn SSL on a few months ago (though I think it's actually my host's fault for not configuring some of my certificates properly). But I think it's pretty good for a month's worth of work.

<comment><USER17> Thanks for the very detailed response, I hope you didn't take my comment to be negative! This is an awesome project, it's just kind of a tradition on Hacker News to point out bugs (even small ones on great things) because this is a technical audience.

<comment><AUTHOR> No, no. Just thought it was a good opportunity to explain.

</comment></comment></comment></comment><comment><USER18> Is it safe to assume that the $10 closed-source license includes all updates through a 1.x release?

<comment><AUTHOR> Yes, one time, forever perpetual. I should write that down. Thanks for the reminder.

</comment></comment><comment><USER19> And then I hit Backspace while not inside the editor pane I moved the camera in front of and was transferred back to HN through the browser's back feature. Not sure if that was meant as a 'enough played, back to reality' nudge from mr. Firefox...

</comment><comment><USER20> This is really cool, and it's the direction my project (with a large scope) will eventually go in. I already have a text editing component and highlighting working using OpenGL, but it needs updating to not use immediate mode so it can run in WebGL too.

<comment><AUTHOR> Would love to hear more about your project.

<comment><USER20> Thanks. You can see it at [https://github.com/shurcooL/Conception- go#screenshot](https://github.com/shurcooL/Conception-go#screenshot), but it's less than 10% finished at this point. Everything you see is rendered in OpenGL. The text editing component has syntax and diff highlighting support.

It's written in Go, but I'm planning to have it running in the browser by compiling Go to JS and using OpenGL bindings with two backends: WebGL and OpenGL.

In terms of usability, it's nothing more than a complicated tech demo atm; I need to figure out its future direction.

<comment><AUTHOR> I thought I recognized your user name. I had looked at Conception a little while ago. It's a neat project and I'm looking forward to seeing more of what you do with it.

Yeah, I have written everything so far in plain JavaScript. I've been considering something else, but all of the available options seem a tad... monolithic.

If I'm going to not-javascript, then I think the answer is to go to something that is completely type safe and static, instead. I'd really like to be able to write-once-and-run-desktop-and-browser. I used to do C++, and now there is Emscripten, but I'd really rather not get back into C++ again. Go looked interesting, and there seems to already be a fair amount of work towards transpiling to JS. Rust looks particularly interesting, especially with the lack of implicit garbage collector, but from the little I've read, it seems Emscripten doesn't work that well with it.

<comment><USER20> > If I'm going to not-javascript, then I think the answer is to go to > something that is completely type safe and static, instead. I'd really like > to be able to write-once-and-run-desktop-and-browser. I used to do C++, and > now there is Emscripten, but I'd really rather not get back into C++ again.

I agree completely, about type safe, static types, and not wanting to get back to the mess of C++ (header files, makefiles, ifdefs, complexity, etc.).

Which is why I think Go fits the bill so well.

> Go looked interesting, and there seems to already be a fair amount of work > towards transpiling to JS.

There is indeed. I've already done quite a lot with it, but with smaller side projects for now. That's where I gained the confidence and I will work towards applying it to my main projects now.

I can link you to [https://github.com/shurcooL/play/commit/e53557dd9c070ce0ec52...](https://github.com/shurcooL/play/commit/e53557dd9c070ce0ec5251108249e5fa85333ae0#commitcomment-9101168). You can look at the latest code, it's all in a single main.go file, and it runs great in the browser.

<comment><AUTHOR> Awesome, I'll check it out. You may have just convinced me to pick up Go.

<comment><USER20> Glad to hear it! :)

Feel free to ping me with any questions you may run into (like what are best packages to use, or anything else) and I'll happily help out!

</comment></comment></comment></comment></comment></comment></comment><comment><USER21> I have been looking for a text editor implementation in webgl or canvas, and this is cool. but still, this editor can't accept asian languages which require an input method program.

<comment><AUTHOR> Hi, thanks. Yes, I know it's not nice to people who need such things, and I really would like to support them soon, but I was only able to get just so much done in a month.

</comment></comment><comment><USER22> Sadly no umlauts, but the other alphanumeric keys are mapped correctly. Any chance for non-English keyboard support?

<comment><AUTHOR> Which keyboard are you using? It's impossible to accurately detect keyboard layout in javascript, but I do provide a option to select keyboards. Unfortunately, the only ones I've had time to implement so far are US QWERTY, UK Extended QWERTY, FR AZERTY, and DEU QWERTZ.

There is a small bug that I haven't fixed yet that requires you to look away from the editor to make the drop down lists on the instructions page work.

As for other languages, I have a tool at [https://primroseeditor.com/keyboard_test.html](https://primroseeditor.com/keyboard_test.html) that can put together the code pages that I use for this. It supports dead keys for typing umlauts, but it can be a little fiddly to use. I've been using the Windows on screen keyboard to make them, so I don't know how well it maps to reality.

Unless you mean using alt codes to your Unicode characters directly, no, don't have that feature yet. To the list!

<comment><USER22> It's a CodePages.DE_QWERTZ.

</comment></comment></comment><comment><USER23> Every time I hit CMD+OPT+SPACE on my MBP a system finder window keeps popping up. Did I miss something?

<comment><AUTHOR> No, you didn't, I missed that CMD+OPT+SPACE is already used on OS X. I've changed it to CMD+OPT+E now.

Between the OS and the browser, there aren't many friendly keyboard shortcuts left.

</comment></comment><comment><USER24> Man, if I ever make a WebGL MMO, I'd use this for the script editor.

<comment><AUTHOR> Do it! Now is the time to get started. The WebVR community is very exciting.

</comment></comment><comment><USER25> Seems to not work in FF?

<comment><AUTHOR> Hi, sorry I missed you earlier. Would you be able to provide more details as to the nature of your difficulties? Does the JavaScript console show any errors? What are your browser version and OS? Thanks.

</comment></comment><comment><USER26> Site down for me

<comment><AUTHOR> I haven't yet figured out how to get a Node.js process to start back up after the server has rebooted, and it looks like the traffic has been killed me a couple of times.

<comment><USER27> We use forever for this: [https://github.com/foreverjs/forever](https://github.com/foreverjs/forever)

forever -w start yourFile.js

That'll keep it up and going as a daemon and reboot it when files change :)

<comment><AUTHOR> No, that's not the issue. I actually _am_ using forever. I'm not entirely sure what the problem was, but I think the entire VPS was falling over, so when it comes back there is nothing to kick off forever. It is fixed, now, though, by letting Apache serve the static files. I'm not a sysadmin and I've never had anywhere near this much traffic before.

<comment><USER27> Ah, perhaps setting up an @reboot cron job to kick off the forever process would do the trick.

Also, setting up a CDN in front of your static files is actually much easier than it sounds at first. You can just setup a Cloudfront distribution that uses your domain as its source; that should take off a lot of the load.</comment></comment></comment></comment></comment>


Steve Jobs's Law: Why Founders Make the Best Leaders - <AUTHOR> http://www.theatlantic.com/business/archive/2011/09/steve-jobss-law-why-founders-make-better-leaders/244439/

<comment><AUTHOR> Scott Adams could have written this line (and probably has):

" _Outsider, non-founder CEOs are often overvalued because many corporate boards think the answer to their problems is a superstar CEO with an outsized reputation. This leads them to overpay for people who are good at creating outsized reputations through networking, interviewing, and taking credit for other peoples' achievements--all bad indicators of future success._ "

Lots more that's good, most especially pointing out that the outsider CEO's loyalty is to the board that placed him there and in startups the majority investors' interests aren't necessarily aligned with the company's.</comment>


Open Source Database Conference CFP Deadline Sunday January 27 - <AUTHOR> https://www.percona.com/blog/2019/01/25/open-source-database-conference-cfp-deadline-sun-jan-27/ <comment><AUTHOR> All and any open source database topics are invited for this conference which is at the end of May in Austin, Texas</comment>


Awesome python 3 features you are missing in python 2.X - <AUTHOR> http://www.asmeurer.com/python3-presentation/slides.html#1 <comment><USER2> One awesome feature of html: not really necessary to make the reader hit return over and over again to read content.</comment>


Five Choices: Or, Why I Won't Give Dave Pell Twelve Dollars (2002) - <AUTHOR> http://www.downes.ca/post/78

<comment><USER2> I ended up skimming a lot of this, because the author got a bit long winded. I got down to the five choices and had to wonder to myself which of them Dave Pell made, because he still publishes NextDraft today:

[http://nextdraft.com](http://nextdraft.com)

It has not, however, been in continuous publication. At any rate, Mr. Pell seems to have kept the lights on producing online content.</comment>


Ask HN: Best online courses for machine learning? - <AUTHOR> Ask HN: What are some of the best online resources to jump into practical machine learning <comment><USER2> Contrary to popular opinion, I find that Andrew Ng's Intro to ML (on Coursera/Stanford) focuses too much on basic math and theory - which doesn't detract from the course's quality, but makes the course a drudgery to go through.

Programming exercises involve a single line or two, and that too in Octave - which was all the rage back when the course was launched, but it's not so useful now.

Instead, start with this - [https://www.fast.ai](https://www.fast.ai)

It emphasizes practicality to the extreme - you are only taught theory/domain knowledge when needed. The instructor's amazing, the massive scale of knowledge imparted boggles the mind, and you feel like you've accomplished something when you're finished with it.

Best of all, it's free. And you can start Deep Learning there too when you're done with ML, if you feel the need (or interest).

<comment><USER3> I'd second this class. I have done both and if you're brand new to machine learning I'd do fast.ai first. You gain a greater understanding from Andrew's course, but if you're not going to become a practitioner fast.ai is better.

</comment></comment><comment><USER4> To learn a solid theoretical foundation: Caltech's "Learning from data" [1]. It is one of those rare courses where the professor is so good that he manages to make tricky concepts seem almost trivial (like Paar's "Understanding cryptography").

Look elsewhere if all you want is to learn tools and start practical projects ASAP without really understanding what you are doing. Tools come and go and will serve you for a while, concepts are timeless and will serve you for life. You need both, of course, but I wouldn't skip the theory, specially when such an amazing course is on tap.

[1] [https://work.caltech.edu/telecourse.html](https://work.caltech.edu/telecourse.html)

<comment><USER5> Agreed! 100%. What level of math is required for the LFD course?

<comment><USER4> Don't worry about the math, one of the great things about this course is that the professor is a magician when it comes to explaining and defanging scary looking math, you'll be fine. Having said that, it's mostly basic matrix and vector algebra, basic probability and basic calculus (all high school level).

<comment><USER5> Thanks for the words of encouragement! With that said I will watch the lectures, read the book and do the assignments.

</comment></comment></comment></comment><comment><USER6> I would recommend this course: [https://mlcourse.ai/](https://mlcourse.ai/). It starts on February 11.

PROS

\- It has a good balance between theory and practice.

\- There are lectures covering the theory and practice.

\- There are practical assignments you need to code with Python.

\- It includes in-class Kaggle competitions.

\- It includes a rating system so you can compare your progress with other students.

CONS

\- It has some prerequisites. You need to know Python(at a basic level) and some basic knowledge of math(calculus, linear algebra, etc).

\- It is a difficult course. You will need between 5 to 10 hours each week for assignments. Each week is usually harder than the previous one.

You can find more details in this post: [https://www.kaggle.com/general/77771](https://www.kaggle.com/general/77771)

</comment><comment><USER7> Google ML crash course: [https://developers.google.com/machine-learning/crash- course/](https://developers.google.com/machine-learning/crash-course/)

Facebook field guide to machine learning: [https://research.fb.com/the- facebook-field-guide-to-machine-...](https://research.fb.com/the-facebook- field-guide-to-machine-learning-video-series/)

Training on Machine Learning with AWS: [https://aws.amazon.com/training/learning-paths/machine- learn...](https://aws.amazon.com/training/learning-paths/machine-learning/)

<comment><USER8> Can anyone comment on whether these are worth the time investment versus more traditional courses?

<comment><USER5> I haven't taken any of these courses. There were these courses from Amazon [https://aws.amazon.com/training/learning-paths/machine- learn...](https://aws.amazon.com/training/learning-paths/machine- learning/data-scientist/) that were highly recommended. But it all comes down to what you really want. If you just want to get a bird's eye view of the ML algorithms buffet for you to implement one of their Black box models then they are a good place to start. But for anything deeper, I would go with Charlysl's recommendation.

</comment></comment></comment><comment><USER9> Udemy's Machine Learning A-Z course: [https://www.udemy.com/machinelearning/](https://www.udemy.com/machinelearning/)

All lessons in R and Python. Wide range of content.

</comment><comment><USER10> This'd be a safe bet [https://www.coursera.org/learn/machine- learning](https://www.coursera.org/learn/machine-learning)

</comment><comment><USER11> The online Stanford courses--CS224, CS229, CS231--are an excellent introduction into modern AI. CS231 with Andrej Karpathy in particular was a game-changer for me. It has three very thorough and well-designed assignments that will have you implement many of the basic algorithms discussed in the course.

The pre-requisite linear algebra for these subjects can be learned through Gilbert Strang's MIT course. A basic grounding in statistics and probability theory, along with calculus will also help.

</comment><comment><USER12> This one: [https://see.stanford.edu/course/cs229](https://see.stanford.edu/course/cs229)

It's a recording of CS229 at Stanford. This course is much harder and more thorough than the one on coursera.

</comment><comment><USER13> There's a free intro course here: [https://www.udemy.com/machine-learning- intro-for-python-deve...](https://www.udemy.com/machine-learning-intro-for- python-developers/)

</comment><comment><USER14> This depends upon you first telling us at what level you are? beg, int, ad.

<comment><USER15> Not OP but I'm a beginner. Any recommendations different than what was already said?

</comment></comment><comment><USER16> fast.ai is great.</comment>


What happens to our food supply if American farmers can't farm? - <AUTHOR> https://www.cnn.com/2020/03/31/business/food-supply-disruption-coronavirus-us/index.html <comment><AUTHOR> Demand has changed (restaurant and food service closures, etc.) so how much to supply? Labor availability has changed, so how much to sow?

Plant less, prices go up. Plant more, but not enough labor for harvest, fruit/veg rots in the field. Plant more, but distribution fails, it rots in storage or in the truck.

More freezing and canning could buffer supply/demand and transport somewhat.</comment>


How To Run Almost Any Android App On the Kindle Fire - <AUTHOR> http://www.pcmag.com/article2/0,2817,2396276,00.asp

<comment><USER2> Dropbox works.</comment>


Russia warns it will see any incoming missile as nuclear - <AUTHOR> https://apnews.com/888e0816c6fa7f58b9ad4f1e97993643 <comment><USER2> It's not possible to know if it's a nuke until it hits so it's just obvious that they would treat incoming ballistic missiles with unknown warheads as a nuclear threat and retaliate appropriately.</comment>


Nokia revenue falls 29 percent - <AUTHOR> http://news.cnet.com/8301-1035_3-57416269-94/nokia-revenue-falls-29-percent/ <comment><USER2> Who would say, Nokia were the ones to beat just 7,8 years ago?</comment>


New England sees a return of forests, wildlife - <AUTHOR> http://www.bostonglobe.com/metro/2013/08/31/new-england-sees-return-forests-and-wildlife/lJRxacvGcHeQDmtZt09WvN/story.html

<comment><USER2> This article barely mentions the incredible efforts of conservationists to maintain the forests. We don't have a lot of people up here who think the best thing for the environment is to leave it alone. We cringe every time we hear of people who call themselves "environmentalists" protest against much-needed preventative fires in California.</comment>


German Addresses are Blocked: www.gutenberg.org - <AUTHOR> http://block.pglaf.org/germany.shtml <comment><USER2> previous discussion: [https://news.ycombinator.com/item?id=16511038](https://news.ycombinator.com/item?id=16511038)

</comment><comment><USER3> Maybe somebody can explain why this US-based project has to respond to German court rulings in any way. Is there any reason not to just toss any scare letters in the trash can or say "Jump off a bridge, we're not in Germany"?

<comment><USER4> [https://cand.pglaf.org/germany/index.html](https://cand.pglaf.org/germany/index.html)

Q: So the court thinks that the presence of content in German means that courts in Germany have jurisdiction, regardless of the fact that PGLAF is entirely in the US?

A: Yes, that was the original basis of the claim for jurisdiction, which the Court accepted in their judgement. Since then, there some more recent decisions in the European Court of Justice, and other German courts, that support this theory based on a Web site being accessible from a country. I.e., if a Web site is accessible from Germany, there are some cases where German courts claimed jurisdiction over that site, even though it was operated, and based, outside of Germany. These cases involve companies that actually operate (for-profit) in Europe, and the cases were between two European countries (i.e. part of the EU). They are not consistent with prior laws and cases, even in Europe, and also not consistent with provisions of the Berne Convention and other international law.

In addition, PGLAF has pointed out that German is widely spoken in the US (the third-most common second language), and also is widely taught in schools and colleges. PGLAF has no actual presence or activity in Germany, and never did.

____

Essentially, this is similar to taxation, once you have certain business related activities in a country / region you become liable for taxes. In this case German copyright for these books is relevant 70 years after the death of the author, one may not like it, but it's the local law

<comment><USER5> But what businesses does Project Gutenberg have in Germany? _Not_ actively barring German visitors counts as doing business?

If I spin up a random web server in the United States which so happens to be connectable from German IP addresses, but I don't do any actual business in Germany and I've never been to Germany, shouldn't Germany have zero jurisdiction over me?

What if it was China or North Korea instead of Germany? I _definitely_ don't want to follow their laws!

<comment><USER4> [https://arstechnica.com/tech-policy/2018/07/nz-court- rules-k...](https://arstechnica.com/tech-policy/2018/07/nz-court-rules-kim- dotcom-can-be-extradited-to-us-on-copyright-charges/)

again, one can like it or not, but the US practices similar court orders, even with magnitudes more impact on the responsible persons claimed to infringe the copyright

</comment></comment></comment></comment><comment><USER6> Wow, this is weird. I'm from Switzerland and I'm getting blocked since "I'm from Germany". They say to check Maxmind's DB and it clearly says Switzerland too.

This reminds me of services blocking Switzerland because of EU regulations, even though it's not part of the EU. But country-specific blocking and misreading Switzerland for Germany, that's a new level.

* it says they update the DB every month, so that could be an issue. It just seems a bit too wrong for me.

<comment><USER6> Edit: sent a feedback email, didn't see the address before.

</comment></comment><comment><USER7> Not gutenough for Germany ironically

</comment><comment><AUTHOR> More details are available on their operation website: [https://cand.pglaf.org/germany/index.html](https://cand.pglaf.org/germany/index.html)

It's a bit of a pity, especially when the law firm, Waldorf Frommer, doesn't seem to respect GDPR on their staff listing page: [https://www.waldorf- frommer.de/team/](https://www.waldorf-frommer.de/team/)

<comment><USER8> In what sense aren't they respecting GDPR? Most likely the staff authorized publication of photos and names on the website.

</comment></comment><comment><USER9> Only certain publications are blocked, e.g.: [http://www.gutenberg.org/ebooks/31218](http://www.gutenberg.org/ebooks/31218)

<comment><USER10> No, I can't access any books from my German IP address.

<comment><USER11> I can access from my VPN hosted at hetzner

<comment><USER9> via their dutch servers than I guess

</comment></comment></comment></comment><comment><USER12> (2018)

</comment><comment><USER13> This is about just a few publications from just three authors. The irony ist that it should be easy to get at least some of the books get blocked in the US as well. Not for copyright reasons, but because of the content. I think it's getting harder and harder for organizations like Project Gutenberg to do this kind of work - it's just too easy to get into trouble.

<comment><USER14> > The irony ist that it should be easy to get at least some of the books get > blocked in the US as well. Not for copyright reasons, but because of the > content.

Can you elaborate? Because as far as I'm aware, thanks to the 1st amendment, not a single book is banned in the US. At most they're removed from public or school libraries.

<comment><USER15> Correct, it looks like censorship, rather than out-right banning.

[https://en.wikipedia.org/wiki/Book_censorship_in_the_United_...](https://en.wikipedia.org/wiki/Book_censorship_in_the_United_States)

...but it's not like the United States has _never_ tried to ban books in the recent past.

[https://en.wikipedia.org/wiki/The_Anarchist_Cookbook#Legalit...](https://en.wikipedia.org/wiki/The_Anarchist_Cookbook#Legality)

<comment><USER16> That article lists four incidents that took place outside the U.S., plus one instance of what turns out to be the book's author arguing that its publisher should voluntarily stop printing it. No U.S. government censorship.

Obviously there've been cases in the U.S. that came closer to government censorship of literature than this, but in general it remains the case that it's nearly impossible to get a book banned in the U.S.</comment></comment></comment></comment>


James Earl Jones Saves the Play - <AUTHOR> http://www.charlespetzold.com/blog/2019/02/James-Earl-Jones-Saves-the-Play.html <comment><USER2> Sometimes people giggle when they feel emotionally overwhelmed. It is often taken as an inappropriate response, which an experienced actor has probably encountered. A number of times, in a rehearsal of an intense scene, we would all lose it like that. You learn to work through it as you develop a sense of your character's role in the whole process of storytelling.

(Some HN readers may not recognize the name of the author, Charles Petzold. He wrote many crucial Windows programming books, most notably the first standard tome of Win32 development. Our instructor referred to Windows UI programming as "the Petzoldy stuff".

</comment><comment><USER3> So he "saves the play" by threatening physical violence against girls in the audience who laughed at the wrong time. I'm having a hard time interpreting this as a fine moment for this fine actor.

<comment><USER4> He's an actor on stage, and saying a line in character. It may have shocked them for a moment, but nobody who's been in a theatre before should believe that he's _actually_ threatening violence.

When a character holding a rifle prop points the barrel out into the house, do you think the audience believes their lives are actually being threatened?

<comment><USER5> There's a qualitative difference between a general threat that's part of the play and singling someone out for a threat based on their behavior.

If he had, say, climbed off stage and walked towards them menacingly, that too would be acceptable as part of the scripted play yet more disturbing if done impromptu as a response to the audience members' behavior.

I think what he did is fine, but I don't think your analogy is a strong one.

Edit: minor wording

<comment><USER6> > _There's a qualitative difference between a general threat that's part of > the play and singling someone out for a threat based on their behavior._

And both are OK if that someone is behaving like a jerk.

Beyond some point even actual violence is OK.

<comment><USER7> > Beyond some point even actual violence is OK.

For behaving like a jerk? That's bonkers.

<comment><USER6> Really? I'm pretty sure most resort to actual violence after the jerkish behavior extends a threshold.

Where do you cut the "jerk behavior" threshold? Someone skipping a queue? Smoking in a closed office?

It could get way worse... How about someone hitting badly on your wife with you and your kids present and no taking no for an answer (and them knowing it you're married?)

<comment><USER7> No you can only use physical violence in defence of yourself or others against imminent physical harm. I think in the US you can also use it against someone in your home (presumably because by the time in your home you are otherwise defenceless.) Anything else is you just assaulting someone and puts you in the wrong. The law doesn't allow for 'they were winding me up' as a reason to assault someone. I can't believe anyone would think violence was warranted for skipping a queue or speaking to someone in a way you didn't like.

<comment><USER6> > _No you can only use physical violence in defence of yourself or others > against imminent physical harm._

That's legally. I wasn't talking about legally -- but about what people will actually do beyond some point, legal implications or not.

<comment><USER5> And "OK" is how you described violence in the absence of a genuine threat, which is not an objective statement of "what people will actually do" but a subjective endorsement.</comment></comment></comment></comment></comment></comment></comment></comment></comment>


How to Protect Your Legal Practice from Payment Redirection Fraud - <AUTHOR> https://blog.cryptoaustralia.org.au/2018/07/19/how-to-protect-your-legal-practice-from-payment-redirection-fraud/ <comment><USER2> This is likely written in response to the recent high-profile Australian case where hackers stole AU$250,000 from a couples housing settlement, through their conveyancers email:

[https://www.computerworld.com.au/article/642883/pexa-says- it...](https://www.computerworld.com.au/article/642883/pexa-says-its-platform- remains-secure-following-property-fraud/)</comment>


Google Maps will now let users share the locations of police speed traps - <AUTHOR> https://www.businessinsider.com/google-maps-lets-users-share-police-locations-waze-2019-10 <comment><USER2> hmm… I wonder if they plan to slowly merge Waze functionalities into Maps.</comment>


Explaining SQL and NoSQL, to Grandma - <AUTHOR> https://medium.com/swlh/explaining-sql-and-nosql-to-grandma-9d7a69378be8 <comment><USER2> My stepkids' grandma designed databases until she retired.

</comment><comment><USER3> The grandma stereotype is discriminatory towards both age and gender.

<comment><USER4> Also, the entire article would be much clearer with plain language. Analogies are overrated and ELI5 method actually hurts in grasping complex abstract topics.

<comment><AUTHOR> I have a really hard time swallowing the idea of analogies being over-rated. There is so much literature behind the effectiveness of analogies in learning, particularly in sciences: [https://pdfs.semanticscholar.org/8518/367cc1ef090ea263c39e91...](https://pdfs.semanticscholar.org/8518/367cc1ef090ea263c39e912a4acaf59dd3d5.pdf)

Why do you feel this way?

<comment><USER4> I should correct myself and say that Analogies are "Overused". Feynman's teaching style had frequent use of Analogies but as a way to clarify the concept, not manifest the concept using an analogy in a didactic manner to students. He explained things in plain english first.

Analogies definitely have a place in learning but it should be carefully prefaced with a warning that analogies can only go so far. You can't explain Quantum Electrodynamics using analogies or you're misleading the students.

<comment><AUTHOR> Challenge accepted.</comment></comment></comment></comment></comment>


Ask HN: Common interview questions for a student programmer? - <AUTHOR>

I'm a junior in college applying to my first CS-related internship. I haven't taken any upper divs yet; I only some basic Java and C experience. I'm trying to prepare for an interview I have tomorrow, so I've googled some common questions, but I'm not sure which questions should actually be at my skill level. What are some common interview questions for a student in CS? <comment><USER2> From my (relatively little) experience interviewing, there were some questions that came up frequently:

        -fibonacci (iterative and recursive versions)
        -linked lists (singly or doubly linked):reverse it, cycle checking
        -difference between a language like C and a language like Python
        -time complexity of whatever they have you code

These are the ones that came in every interview I've had. You might also want to know some OO concepts and other data structures like binary trees and hash tables. If you've listed any projects on your resume, they'll probably ask you questions about those too.</comment>


Laws of Tech: Commoditize Your Complement (2018) - <AUTHOR> https://www.gwern.net/Complement <comment><USER2> I've seen descriptions of this strategy before, but this particular article lists _way more_ concrete examples than I've seen before, which makes me wonder if it is now the default across the entire tech industry at all times.

Also: the strategy seems to depend upon a "greater fool," or just high risk- takers to fill in the complement with what is ultimately low or zero profit product. How can we guard against being that high-risk fool?

I mean, from the article, IBM tried to commoditize all of the peripheral makers by publishing standard interface documents. But then they ultimately lost out when Microsoft commoditized _the entire PC_ by licensing their OS to other PC manufacturers. IBM didn't quite see this coming. They were out commoditized.

OTOH, you look at the way Microsoft was paying app developers cold hard cash out of pocket for listing apps in the MS mobile app store (which ultimately failed) and you see that MS was out-commoditized by Google/Android/Play Store.

So how can _anyone_ be smart enough to spot the loser(s) in advance?

<comment><USER3> > I've seen descriptions of this strategy before, but this particular article > lists way more concrete examples than I've seen before, which makes me > wonder if it is now the default across the entire tech industry at all > times.

If I missed any, I'm always happy to add more. (Sometimes the only way to really nail down an abstract pattern for people is to provide an enormous list of examples.)

<comment><USER2> well done. thank you. after i read it, i started to wonder if there are an equal or greater number of examples where companies tried this strategy but completely failed.

</comment></comment></comment><comment><USER4> _Another way that I like to express that is "create a desert of profitability around you". I once had a strategy professor define the Google business model somewhat like that, where "Google tries to make every other business around it free or irrelevant"…A desert of profitability shifts consumers to you, and keeps competitors away._

Google seems to be doing this with YouTube and 10 minute online video commentary.

</comment><comment><USER5> It should be called Spolsky's law :)

<comment><USER6> Yeah, he deserves this one.

</comment></comment><comment><USER7> Somewhat unrelated, but doesn't this principle apply very often in agriculture? I can see this as one of the reasons why only 12 plant species provide 75% of world food. [0] I should say I take it as evident that raw food is only a fungible commodity insofar as it adapts to market needs (which are not necessarily immediate consumer needs).

[0] [http://www.fao.org/docrep/007/y5609e/y5609e02.htm](http://www.fao.org/docrep/007/y5609e/y5609e02.htm)

</comment><comment><USER8> Another angle: [https://stratechery.com/2015/aggregation- theory/](https://stratechery.com/2015/aggregation-theory/) The aggregated side is the commodity.

</comment><comment><USER9> See also: Google's support for Go, a language optimized for bus factors

<comment><USER10> > _Go, a language optimized for bus factors_

Can you say more about that? (I'm not much of a programmer and am not that familiar with Go.)

<comment><USER9> _Bus factor: number of people with essential knowledge of the project such that things would grind to a halt if they were hit by a bus._

[I'm by no means a Go expert, but languages are my thing and I have been following Go's development.]

Go has an extreme focus on simplicity, to the extent that most of its virtues and basically all of its faults can be attributed to this.

This includes simplicity of the language itself: I learned Go incidentally, by referring to a program written in it when I was implementing an undocumented protocol. You don't need to hire people who already know the language, because it hardly matters; Go basically exists within whatever language they already know.

It also includes a homogenizing effect. Different projects written in C++ can use completely different corners of the language. Someone joining a Go project has very little "how is this project written" to deal with--in fact, the only advantages of Go I can think of that aren't rooted in simplicity are: _gofmt_ , a tool (and more importantly, a convention) for standardizing code style; and goroutines, a standardized (and easy-to-learn) approach to the inherently difficult problem of concurrency (that otherwise has a great diversity of approaches).

So Go expands hiring pools by being so simple it's not important that candidates have experience with it, and reduces onboarding time by making projects as homogeneous as possible.

</comment></comment></comment><comment><USER11> I think the key is to commoditize the complement when the complement is embedded deeper in the value chain than your product.

<comment><USER4> IBM originally thought that software was the complement to hardware. Nowadays, we think of hardware as the complement to software.

What does, "embedded deeper in the value chain than your product" mean in layman's terms? Does it mean something which causally precedes the product?

<comment><USER12> > Nowadays, we think of hardware as the complement to software.

We used to think that.

Apple has been very successful in reversing that again on mobile, so software is once again the complement.

"$1 for an app. Ripoff!!!"</comment></comment></comment>


I Love My Chicken Wire Mommy (2007) - <AUTHOR> https://web.archive.org/web/20071102022046/http://benbrown.com/says/2007/10/29/i-love-my-chicken-wire-mommy <comment><USER2> Important thing when you allow people to give negative marks to others is that they should also get some negative value for thumbing someone down.

That's how society works. Punishing bad actors is left to people who agree to suffer the cost of dealing punishment.

There are such people. Punishing is to pleasent for them to have bo cost.

</comment><comment><USER3> I'm curious as to why points didn't work for their site, but they seem to have worked at least ok for this site, where they get you the ability to downvote, and great for Reddit, where they're completely worthless.</comment>


Porting Chromium to FreeBSD - <AUTHOR> http://www.links.org/?p=724

<comment><USER2> I've always thought it was a shame that FreeBSD doesn't get more play on the desktop Linux market -- It's such a reliable, well-engineered piece of software.

<comment><USER3> "I am informed that the right thing to use [for audio] on FreeBSD is OSS" doesn't exactly inspire confidence, though.

<comment><USER2> Why's that? FreeBSD's OSS support is perfectly reasonable in my experience (software mixing, et al).</comment></comment></comment>