Moving from Go to PHP Again - <AUTHOR> https://dannyvankooten.com/from-go-back-to-php-again/ <comment><USER2> Each PHP file is an endpoint. As opposed to having routers in code or client side SPA routing.

PHP files can be deployed independently, swapped out or updated live.

No building/compiling of the php files needed.

A single layer as opposed to 'modern architecture' where there's client side back/front end layers, api layer, logic, validator, data access, and ORM layers.

Can extend itself as it runs. For example Wordpress, running off of php files can download plugins to its own server (which are just more php files) to instantly extend itself. Without restarting or redeployment. (What other web platforms can do this?)

Intuitive, simple, powerful. Can be as easy as editing a php file in notepad and dropping it on a ftp server. Deployed.

Amazon lambda may have more in common with PHP in terms of discreet deployable units of functionality. What's old is new again.

Compiling/deploying an entire system to change a single endpoint feels backwards after using PHP.

<comment><USER3> > Each PHP file is an endpoint. As opposed to having routers in code or client > side SPA routing.

Which becomes a security issue due to accidental endpoints or uploads becoming endpoints. Or becomes a mess of imports. Either way, PHP frameworks often end up with a central router anyway.

> PHP files can be deployed independently, swapped out or updated live.

Which means some people try to do that the naive way and end up breaking a few requests that happen during the deployment.

> Can be as easy as editing a php file in notepad and dropping it on a ftp > server.

Which causes [https://stackoverflow.com/search?q=headers+already+sent+bom&...](https://stackoverflow.com/search?q=headers+already+sent+bom&mixed=1) because people don't realise they had an invisible character before all the code.

I really don't think any of those are a good thing.

<comment><USER2> You can create a mess of code, open security holes, and/or be hit with 'gotchas' in any web framework. PHP is much less complex than most.

<comment><USER3> These are things very specific to PHP. Yes, there are language-specific gotchas in many environments. But I'm criticising specific things that do exist and that I've seen causing issues in real deployments. Things that make PHP accessible make it also an excellent footgun.

<comment><USER4> So.. what you're trying to highlight is that a language is supposed to make up for the incompetence of the person using it?

<comment><USER5> Of course. That's the only reason to invent languages: to take care of stuff people are not good taking care of, and move the work to the computer, allowing us to work on the level that we're good at taking care of.

Else we'd all be using assembly.

There's absolutely no pride or glory in doing things nicely and securely that the computer could have automated in the first place.

Anything the language allows that it could refuse while allowing devs to express the same features, and that results in bugs is a mistake in the language (e.g. the sorry state of strings in C).

<comment><USER6> Incompetent people will create incompetent things regardless of the tool. Simpler tools lead to simpler messes while complicated tools lead to complicated messes.

I've seen an attitude that people think they can inoculate themselves from inept programming by using obtuse frameworks as if martin-fowler-speak acts as a drill sergeant making disciplined coders out of the herd.

But after 20 years of bouncing around startups I've never seen the intended results actually happen a single time. Not even close. Not once. Never.

Instead it leads to larger, less maintainable, more convoluted messes that have to be trashed quicker. Giant ceremonial cargo cult style monstrosities with huge circuitous logic - 4, 5, maybe 6 layers, a router calling a controller, calling a service, calling a provider, calling an event model, which runs a single if statement ... as if that's how we protect ourselves against incompetence.

These approaches just lead to wasteful projects where they end up rewriting the whole thing in whatever the framework/language de jour is instead of writing easily maintainable, quickly understandable code that's designed to work for the next 10 years. I've talked to many programmers who are _embarrassed_ by the language they are using ... wtf is that?! They've turned programming into fast fashion.

Then people like to ask what someone's _favorite_ language is, usually when they first meet them, as a social cue, as if we are a bunch of highschool kids following pop music. I mean what on earth... we're supposed to building the future here, not running around like a bunch of spastic fanboys from platform to platform, just to mess everything up all over again in bold new ways using slightly different syntax.

The best thing to do is give people the least _abstract_ thing with the fewest conformity requirements ... essentially make it open ended and then the messes are easier to spot and easier to fix. You won't get 4 folders with 26 files handling simple tasks like uploading images to an S3 bucket (saw this huge mess just last week and guess what?! It's broken. I know, surprising right?)

Anyway, new shiny fancy tools with GoF buzzwords won't ever fix incompetence, it'll only make it worse.

<comment><USER5> > _Incompetent people will create incompetent things regardless of the tool_

Which is neither here nor there.

For one, it ignores the pragmatic issue, that very competent people (the very people that built the foundations we all work on even) will still make lots of mistakes, even trivial ones, but with severe consequences (e.g. buffer overflows) when the languages don't prevent them.

If only it was just "incompetent people" that made mistakes...

> _But after 20 years of bouncing around startups I 've never seen the > intended results actually happen a single time. Not even close. Not once. > Never._

You weren't looking hard enough. Every day millions of programmers don't make "buffer overflow" errors for example, that otherwise they'd have made, because they work in languages that don't allow them.

And they'd have made those mistakes regardless of their programming chops. The best programmers, people that run circles around you and me, still make those mistakes.

<comment><USER6> Those mistakes aren't easy to spot or easy to fix.

It's about giving code sunlight so that action at a distance and other kinds of magic don't hide errors making them harder to find, get in your way of fixing them, making reproducibility a mess and confirmation simply guesswork.

Its the restrictive design trend of crippling languages which needlessly prevents the sunlight effect from happening along with "information hiding principle" gone completely amuck with the information successfully hidden in dozens of innocently named files with listeners, observers, watchers, triggers and who knows what else being mysteriously called based on reflective programming so not even grep will help you.

Static code analysis and seamless navigation is totally a thing of the past.

Instead, the errors will have the stack of the error handler and that's it. The debugger is useless because stepping through the code is 98% scaffolding.

All these fancy tools bludgeoning any introspection or diagnostic system so the only remaining workable debug system is printing debug variables and rerunning the code like I'm programming on a TI-81 (only that had debug and release run modes...features I can usually only dream of these days) _Progress! Welcome to 2019!_

It's crazy. This isn't how maintainable code is written

<comment><USER7> You are speaking to the inmates writing the asylum. Give it up. This is the 4chan of the enlightened.

<comment><USER6> The amateur-to-expert ratio of any topic is directly proportional to its popularity. It's why popular things are polluted with well-intentioned bogus information.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER8> For the kinds of applications people tend to build in PHP, PHP is probably a better choice than Go. I'd still do Django or Rails before PHP, but Go just isn't designed to make serverside-rendered database-backed websites especially pleasant to write.

<comment><USER9> Rest API? Sure. Building webpages? I dont think it was made for that... Although Go templates can work, its still not as flexible as you might want it to be.

<comment><USER10> It's pretty flexible in my opinion. And you can substitute go templates for another template library if you like.

Granted, we're talking about largely server side generated web pages and, haha, who does THAT still in 2019 : hangs head in shame :

<comment> 52-6F-62 It's true. I don't often do so at work anymore, either—except for utility pages.

But I _am_ rewriting my personal site/blog in Go as a trial run/learning process. I've been critical of Go in the past so I thought I'd give it a... _go_.

So far I don't mind the experience. No server framework, either. The standard library is actually pretty good, at least for something simple like that.

The only [external] dependency I'm pulling in so far is `blackfriday` for parsing Markdown files (the posts) upon request— I'm much too lazy to write a Markdown parser myself for this purpose.

It's not finished yet, but it's on its way— [https://github.com/robertfairley/rf-19-go](https://github.com/robertfairley/rf-19-go)

</comment></comment></comment></comment><comment><USER11> I love Go, for many situations, but definitely not for a typical user facing website.

The community seems bent on the whole "all you need is net/http", but that just isn't practical in modern web development. People like ORMs, easy to handle html forms, security as a default, easy session/cookie handling etc. In the end, web developers want ease of life.

Go is a great language for many things, but if it's going to take on the web at large (outside of HTTP APIs), the community needs to grow out of this "net/http or nothing" approach.

There is some hope, some frameworks like [https://gobuffalo.io/en](https://gobuffalo.io/en) are showing up, but the Go ecosystem is dying for a Rails/Django solution.

<comment><USER12> > but that just isn't practical in modern web development

People always use this modern term as if it implies something significantly different or more "advanced". The web hasn't changed much. It's still data over tcp sockets to a contained runtime -- a web browser.

> People like ORMs

People in my experience are starting to dislike ORMs. If you have done this for long enough, you realize they are great for getting off the ground, but they inevitably get in your way, and start generating some really bad queries which you have to start one by one replacing with raw SQL statements, at which point you might have well started with raw SQL.

Having come from Rails, and PHP frameworks like Symphony and Laravel at my company, using Go I feel almost like I am more intimate with my code. I understand it better, the dependency chain only ever goes one or at most two levels deep. I will admit the the templating and routing is more "batteries included" in these frameworks, but the other parts that I have control of that I consider much more important (such as how my data actually gets stored and other network calls I have to make), I would much rather do those in Go than in PHP

<comment><USER13> Speaking as someone who moved from a company that heavily leaned on an ORM to a company that is using jOOQ (a thin Java wrapper around SQL) for everything, not being able to use an ORM is pretty painful.

I greatly miss the nice, clean ORM experience. It's so much better for developer efficiency.

</comment></comment></comment><comment><USER14> I agree with the author. Symfony 4 is the best PHP framework at the moment.

Trying both Laravel and Symfony I think there is no need for Laravel (anymore). Laravel just has too much magic that will bite you later on.

The only thing you should skip in both frameworks are 'annotations'. But this is easy to do.

<comment><USER15> > Laravel just has too much magic that will bite you later on.

Especially when that is not explained in the docs or just in a very vague way...

I tried improving the docs by pointing out where magic (e.g. fix naming conventions) is needed and where not, but the mantainer just turned that into vague mush again (after he had even agreed to the changes).

Also if you need any more details that are not in the docs, everyone points you to _paid_ video courses that assume you have a Mac...

That honestly leaves me with a bad taste im my mouth after trying laravel :/

<comment><USER16> > Also if you need any more details that are not in the docs, everyone points > you to paid video courses that assume you have a Mac...

I assume you're referring to laracasts.com... what does having a mac have to do with the videos there?

<comment><USER15> When I watched it 2-3 years ago most of the tooling that they set up was OSX specific. Nothing tragic, but still.

</comment></comment></comment></comment><comment><USER17> Wait what, two complete rewrites of their complete website in 2 or 3 years?

If you have that much time to spend on rewrites, I really envy you :-)

</comment><comment><USER18> Go really just isn't designed for the same kind of service that PHP is normally used for. Its best at small API services (and, tangentially, its also pretty great at CLI tools).

> They were a little surprised to hear our stack involved Golang and some flat > out told us they'd prefer PHP, because that's what most of our products rely > upon.

I believe this is the real reason why, and everything else above it is pointless technical justification for a sound business decision. I also believe there's an unvoiced, even more powerful reason, in "I already know PHP and don't want to learn a whole new thing."

These are both sound reasons. The technical justifications are not.

Choosing Go for something like this was a bad decision. But choosing PHP is only slightly better. Opting for Django, Rails, or Phoenix would have better technical justification, but technical justification is rarely the real reason why we make decisions like these.

<comment><USER19> You are comparing frameworks with a language here.

I think that if they choose to use a high-quality, modern php framework like Symfony, the technical decision would still make sense in the context of the alternatives you mentioned.

<comment><USER18> That comparison is intentional, for one reason: Go doesn't have any "frameworks", let alone frameworks that are remotely comparable to the productivity offered by Symfony, Django, or Phoenix. The language actively opposes the development of tools like these. At best, we've got libraries that wrap net/http, io/ioutil, etc and moderately increase developer productivity, but there's nothing holistic and opinionated. The closest you can get is something like gRPC, but its not even the whole story, and it also relies on codegen so that's a disqualification in my book.

This isn't just technical; its baked deep into the culture of Go. And that's fine. Its designed for something different.

</comment></comment></comment><comment><USER20> Oh man, yes! Doctrine and especially Symfony's Form component absolutely spoiled me.

Check out Sylius for a really solid Symfony based application: [https://sylius.com/](https://sylius.com/)

</comment><comment><USER21> Why do so many companies keep moving to go? I tried to like it, but it was just so painful to write.

<comment><USER22> I'm curious, what is painful about it?

I came to Go from mainly C++, Java, and Python background, and I feel like it's the best of all 3 (to me). It's compiled and really fast (like C++), it has a great set of libraries and community interaction/support (like Java), and it has simple syntax that is clear and quick to understand (like Python).

It's not a perfect language (nothing can ever be), but it's become my favorite to use for back-end web services and even taken over some of my scripting workflow.

I can see it being painful if you're trying to render websites server-side though. That's a bit outside of what it's made for

<comment><USER23> Personally, I find the concurrency support quite lacking. Compared to Java/Javascript/Python/etc, it's great, but nothing compared to languages like Ada or Elixir.

I wish we could use more than channels - for me, I often feel like I'm shoehorning them in because there's no support for protected objects (native queues, conditional variables etc).

Perhaps I'm just using them wrong. Sometimes I have to use locks, and I don't think we should be forced to use locks in 2019. We've had better solutions since the 80s.

<comment><USER24> > Sometimes I have to use locks, and I don't think we should be forced to use > locks in 2019. We've had better solutions since the 80s.

Absolutely not. Locks/spinlocks are found in pretty much every significantly parallel software project. It is pretty arrogant to criticize almost all software architectures on earth.

<comment><USER23> > It is pretty arrogant to criticize almost all software architectures on > earth.

Almost all software is programmed with modern languages, which all (imo) have extremely lackluster support for concurrency. It's not a symptom of the programmers, but the tools they work with. Who uses Ada these days?

Locks should only be used when other protection mechanisms are too slow.

Semantically, the critical region protected by a lock is _not_ connected to the lock in any way. This can make debugging races super difficult, and you have to rely on everyone to lock everything at the right point.

Juggling multiple locks in complex concurrent processes is difficult, and prone to bugs.

I struggle to think of where a lock is required, barring the extremely hyperoptimised hot paths within operating systems, or similar applications.

</comment></comment></comment></comment></comment><comment><USER25> Symfony 4 is much more lightweight than previous versions. If you create a new symfony 4 project with composer you just get an empty project with just a hand full of dependencies. First time I tried out the v4 (coming from 2.x & 3.x) I thought that the installation did not work properly because stuff like twig (for templating) and other things were missing.

The whole integration in composer with the symfony flex component makes developing even easier than before: [https://symfony.com/doc/current/setup/flex.html](https://symfony.com/doc/current/setup/flex.html)

</comment><comment><USER26> Um...

"Just for fun, I compared apples and oranges again by benchmarking the login page (which doesn't hit any database) for both application versions using Siege.

The Symfony application (PHP 7.3, OPcache enabled, optimized autoloader) handles about 1470 req/s. The Go application (compiled using Go v1.11) averages about 18600 req/s."

<comment><USER26> I'd say that's apples v apples.

<comment><USER27> Yes, but you're more interested in fruit salad vs. fruit salad. Maybe they actually never have to handle more than a dozen logins. But they have to change the templates relatively frequently:

> it's more maintainable for us to do it in PHP right now

</comment></comment></comment><comment><USER28> Can relate, after 7+ years I am again using WordPress and PHP again. I am impressed by PHP 7.

<comment><USER29> Hm, I hate to be on the bandwagon, but why WordPress? One of the things that has made PHP become what it is today is a focus on good software engineering and the introduction of language features that are required by that. WordPress did not keep up on the engineering front and there are so many amazing options out there now for well written, well engineered platforms. Even in pre-built blog platforms.

You're not alone mind you, most of the new platforms are not very popular just because of how embedded WordPress is in its ecosystem. It just surprises me that both WordPress never moved on and that the PHP developer community never chose something different when it was clear WordPress had no intention of moving to more modern practices.

<comment><USER30> I am completely out of the loop here. All I know is that I really disliked Wordpress and really-really disliked Drupal back in the day. Can you mention some of the better alternatives? Once in a while a PHP CMS is what I gotta deal with and I dread it, because of the said systems.

<comment><USER14> As a developer use ProcessWire instead of all the others.

Imho the best CMS for PHP.

<comment><USER31> Thats the problem when you view with the eyes of a developer and not with the eyes of a user.

<comment><USER14> I don't understand. My customers are super happy with ProcessWire.

Have you ever tried it?

</comment></comment></comment></comment></comment></comment><comment><USER32> He's comparing a language (w/ extensive standard library) with a web application framework.

<comment><USER33> It's hard not to.

Comparing Go ans PHP a few years ago would mean to compare Go and PHP/Apache or PHP/Nginx, because PHP could not run its own server.

It's like comparing Git and Subversion, where you have to explain concepts like staging.

Or IntelliJ and Eclipse, where you have to explain workspaces.

</comment></comment><comment><USER34> PHP is the same but with speed improvements in 7. But even without that the sheer number of high traffic sites built on PHP and proven scalability cannot be ignored or its ease of use and setup.

All talk of accessibility and ease for new users often comes off as posturing by some tech folks who then proceed to rubbish any efforts at achieving it and the compromises involved. It fits in nicely with the 'contempt culture' recently covered here.

The growing problem for the technical community and new users is the marketing by other languages, frameworks and those vested in these ecosystems which means using forums like this to belittle, rubbish and exaggerate any perceived fault in everything else. PHP's contemporaries like Python, Ruby, Javascript have their many downsides too but these efforts create false binary narratives. This is not a good basis for technical decisions or informed discussion.

</comment><comment><USER35> An entire business that resolves around a nag box? Wow!

</comment><comment><USER36> It's interesting that he names Symfony 4 as one of the main reasons he uses PHP again after he already used PHP with Laravel.

I have a lot of discussions with friends in the startup scene about the topic of Laravel vs Symfony. So far it's a head to head race.

I have yet to find a good 'Laravel vs Symfony' comparison page. Yes, there are tons of 'SEO optimized articles' with this title. But I find them all rather uninformative and often even totally wrong and unfair.

The page I would love to see would have the same project coded twice. Once with each framework. And then display each file on the left for Laravel and the corresponding file on the right for Symfony.

<comment><USER14> Those SEO pages are horrible. I had the same problem.

But there are multiple reasons I choose Symfony 4 over Laravel.

And if you want a code comparison then this small example:

Laravel:

      class User
      {
      }

Symfony:

      class User
      {
        private $id;
        private $name;

        public function getId():?int
        {
           return $this->id;
        }

        public function setName(string $name): self
        {
          $this->name = $name;

          return $this;
        }

        public function getName():?string
        {
           return $this->name;
        }
      }

Laravel looks a lot easier and quicker. And it is. But good luck next month when you can't remember what properties User has. Your IDE can't autocomplete it. And also good luck working with a team. Your team members have to look up the database model for the User to see what properties are available.

And this is happening in Laravel all the time. Very quick, very easy, a lot of magic but it will bite you in the end.

<comment><USER37> I don't use laravel anymore, but I had a live template that would generate getters and setters that wrote to set_attribute. As long as you maintained the convention of doing this, you could use autocomplete with getters and setters to accomplish this.

You could also hint these with / __@var * / there are ways around it but yes it isn't ideal. I really liked doctrine, perhaps I was using it wrong, but having everything in annotations was pretty nice since migrations etc could run off of it.

With doctrine I ran into issues with performance, which you can alleviate with extra lazy etc, it also hydrated what appeared to be massive objects, which you had to use a custom debugger because print_r'ing one with the recursive references etc caused some crazy issues. I have since moved on from PHP, but if the project calls for it, I have no problem using laravel. While not ideal, it sure is productive to build an API in. I wrote a project in lumen, which is/was a subset of laravel built for APIs, and that was okay to work in. No clue if it still exists.

</comment></comment></comment><comment><USER38> Golang is not a silver bullet. No programming language is.

</comment><comment><USER39> Any idea why PHP has such a bad reputation compared to other interpreted and dynamically-typed languages such as Python?

<comment><USER40> Its a quirky little language and the early versions weren't great. The language can be inconsistent in places, and embedding php in the html made for a rapid though sometimes trying experience. Its keeps backward compatibility which keeps those quirks in there. (though with new 7 series php versions older stuff is starting to break.)

Someone wrote an article with a title like "php a language with terrible design" that got traction.

I like the language and with the right framework and templating engine its a pleasure. (I'm moving code from silex to symfony).

I've been to a fair number php meetups and frankly people there seem to be end result focused not so concerned with the language. Frankly I think PHP doesn't have as strong a fan club as ruby/python, which are decent languages but they too come with their own quirks.

<comment><USER41> "and embedding php in the html made for a rapid though sometimes trying experience."

Funny, that is React/JSX's biggest sell

<comment><USER42> React can't execute arbitrary database queries.

<comment><USER43> I'm sure you can use the all JS mysql client to connect directly from your client app to your database.

<comment><USER42> Well yes if you're stupid enough to directly expose your DB to the world then it's technically possible, but barring such idiocy there's arguably more risk of a DB hack through PHP than client side JS in most architectures.

<comment><USER44> React can do SSR. You can use JSX on the backend for rendering pages just like on PHP.

</comment></comment></comment></comment></comment></comment></comment><comment><USER45> > Honestly, Go is great. Its simplicity is refreshing and its performance > unmatched. I would still pick it if we need a small API or something that > requires high throughput.

I wonder which part is performance unmatched?

My opinion would be Crystal language for its simplicity and higher throughput but unmatched performance is behind Rust and C.

<comment><USER46> Not sure about the OP, but for many Go is the only compiled language they ever used, so they get to attribute features to Go that aren't that unique of it.

<comment><USER47> > for many Go is the only compiled language they ever used

That, or it can be read as "in the family of web-friendly languages". The only other "fast" language widely used for the web is Java.

<comment><USER24> And java is a memory hog quite painful to deploy and tune.

<comment><USER47> Yes, launching a new server/executable in java is a PITA dur to the JVM warmup (at least it was a few years ago, don't know whether they improved that point or not).

<comment><USER24> Don't forget that you also have to install and update the JVM. We admins don't like that.

<comment><USER46> Only those that don't know how to bundle the JVM with the application or make use of a commercial AOT compiler to native code.

<comment><USER24> You prove my point, it requires specific knowledge full of gotchas.

<comment><USER46> As team lead I consider having the interest to master the tooling part of the job requirements and respective evaluation, not specific knowledge full of gothas.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER48> I'm finding that although golang offers type safety it introduces a new kind of error class to applications typically not encountered in web apps of the python/php/ruby/node class.

Deadlocks and race conditions.

For node, the entire app is a single thread so this just doesn't happen. For python/php/ruby concurrency is abstracted away and handled above the framework layer so the programmer never has to deal with it. You can launch threads in a route handler for these languages but it's not often done and you have nothing like a context object that is basically this abstraction leak that explicitly forces the programmer to constantly be aware of concurrency issues.

</comment><comment><USER49> What IDE do people use for PHP these days? Editing PHP in a standard text editor is a pain because most don't supporet "Go to definition", or "Find all refernences" (Two killer features of Visual Studio)

<comment><USER50> Most of my work on a daily basis is PHP (Laravel) and I use Visual Studio Code as my main driver.

It's pretty good with Python too, which we have a little bit of (mostly Flask apps).

<comment><USER13> Do you have any good extension recommendations for VS Cocde as it relates to PHP development?

<comment><USER51> For code copletion I use PHP Intellisense but it still doesn't support multiple root folders in the same workspace. For debugging PHP Debug. vscode- php-cs-fixer and vscode-phpstan have helped a lot. In addition I use PHP Namespace Resolver and PHP DocBlocker. Lastly, PHP Getters & Setters may be useful.

</comment></comment></comment></comment><comment> EZ-E Question : modern PHP is great for websites, but what are the solutions when you need to make some async work ? For example if I need to make few third party API calls in parallel ? With Laravel I resorted to using queues which feels like more complicated than it had to be (each worker takes up quite a bit of memory). Eventually I switched to SQS + Lambda + node.js. Is there any mature way to do async work in PHP ? In Node.js for example, it's quite trivial and powerful with promises and async/await

<comment><USER36> One easy way to do multiple http requests in parallel are the curl_muli functions:

[http://php.net/manual/en/function.curl-multi- init.php](http://php.net/manual/en/function.curl-multi-init.php)

<comment> EZ-E Thanks, that's one solution if making multiple calls is needed. That was mostly an example though, for example if I wanted to run 3 functions in parallel, I don't find any "easy" and elegant way. Some libraries exist like amp, but it seems a bit heavy handed as the language itself doesn't have great tools for it [https://github.com/amphp/amp](https://github.com/amphp/amp)

<comment><USER36> Why do you want to run 3 functions in parallel?

<comment> EZ-E It's an example. For example if each of these functions takes about 0.2 seconds to finish, it might make sense to run them in parallel

</comment></comment></comment></comment></comment><comment><USER52> Internally, I think PHP is great for prototyping. I have written systems in Go and PHP, and I think each has their strengths.

I like the batteries included standard library and single binary deployment of Go.

PHP, like others have said, gives you a single endpoint and you can make rapid changes. Its ideal for internal web apps that do not require insane performance.

</comment><comment><USER53> In all seriousness... doees PHP have C# envy? With all of the stuff that has been put into PHP7 (like typed returns and typed arguments) and stuff being proposed (like annotations), PHP isn't that far off from being a interpreted brother of C#.

<comment><USER54> All OOP languages have C# envy, they just don't want to admit it.

</comment></comment><comment><USER55> Now that's pragmatism that's rare to see, specially here in HN.

</comment><comment><USER56> Honest question : is there any technical reason that prevents a go web framework to replicate the functionalities of symfony / doctrine ?

<comment><USER57> No.

And there alternatives. The best known is probably Revel: [https://revel.github.io](https://revel.github.io)

For a doctrine (ORM) alternative you have for example [https://github.com/jinzhu/gorm](https://github.com/jinzhu/gorm)

The point about Go; using those types of tools is generally frowned upon in the community. It's overkill for most (micro)services.

But few gophers build a full-stack website in a single application.

I'm a gopher; I wouldn't want to use Revel or Gorm. I feel I'd be using the wrong tool for the job. I'd more likely use Django or Symfony when I'd need to build a full-stack SSR.

If a backend API is used by different clients (mobile apps, SPA, servers, ...) using a full-stack SSR framework like Symfony or Django doesn't make much sense anymore. You wouldn't use 90% of the framework's features. It feels like bloat.

But many websites don't need to serve different clients.

The author's decision to go from Golang to PHP makes perfect sense if he's building SSR websites.

<comment><USER58> Gorm is not bad but I don't think it is an alternative. To start with, the association requires some extra work to save/update which you have to do manually. In doctrine, this is done already. Documentation, maturity, and community behind doctrine are a lot better.

<comment><USER57> Funny this, +/\- 6 years ago when I last worked with Doctrine I had the same feeling about Doctrine itself. I thought it was a poor replacement compared to Hibernate / JPA.

I'm getting old ;)

Obviously things will have matured since then.

Doctrine implements the Unit of Work pattern. From what you're saying GORM is more like an Active Record ORM.

You're right, that wouldn't make it a good direct alternative.

</comment></comment></comment></comment><comment><USER59> Is there any way to test php code the same way a compile phase does in other languages to catch obvious mistakes from hitting your users?

<comment><USER60> It's obviously not as comprehensive as compiled or strictly-typed languages, but you can use "php -l" as a linter to catch obvious parsing/syntax bugs. I use this script to check our whole codebase before deployment:

> find . -name "*.php" -print0 | xargs -0 -n1 -P8 php -l | grep -v "No syntax > errors detected"

</comment></comment><comment><USER61> Why not try out Hack? It's kind of a cross between PHP and Go. Hack has a real type system, and HHVM is incredibly fast.

<comment><USER62> Perhaps because they don't want to incur technical debt to a language/runtime that could change at the whim of one company that probably doesn't have other companies' best interests in mind?

The speed advantage of HHVM has also been largely erased. Some high-profile PHP sites migrated to HHVM before and up to ~2015, but I haven't heard of a single site doing that since PHP 7.0 came out.

<comment><USER61> > Perhaps because they don't want to incur technical debt to a > language/runtime that could change at the whim of one company that probably > doesn't have other companies' best interests in mind?

How is Go any different?

<comment><USER62> Go has been well received outside of Google. Wikipedia even has a list of companies known to use Go. I'm not sure how up to date it is, but the list includes Cloudflare and Netflix. At least some of them might have the oomph to fork, take over, or otherwise influence Go if Google ever dropped the ball.

Meanwhile, I can't think of any major online service that relies on Hack apart from Facebook and its subsidiaries.

<comment><USER63> Slack does.

But I agree with the original point about not fully relying on the whims of a major corporate promoter. Priorities can change within, without clear visibility on the outside.

</comment></comment></comment></comment></comment><comment><USER64> I stopped working with PHP about 4 years ago and I can't say I miss it. I moved to Python and never looked back.

</comment><comment><USER65> Seems like he didn't go from Go to PHP but from Go to a PHP framework that does a lot of things for him.

</comment><comment><USER66> Would you choose golang if we have a framework like symfony in Go?

</comment><comment><USER67> Seems like he should try Rails (from which Symfony was inspired) and that is much better suited for building web apps that Go

<comment><USER68> What are the differences between the both of them?

<comment><USER67> I only tried Symfony 1.4 and 2.0. And I'm doing Rails from 2.3 to 5.2.

I could go on a very long discussion about why I prefer Rails but at the end of day it's just up to you to compare.

When I started Rails I was building an app with Symfony, took me a week to get it to a good state and it was extra frustrating (I had been doing PHP for 5 years).

I started Rails, learned Ruby on Wikipedia and just general googling and got the same app in a few hours.

</comment></comment></comment><comment><USER69> [deleted]

<comment><USER70> To be clear, this just means that PHP has libsodium as an official language extension. Most modern languages have better package management than PHP and make pulling it in as a library trivial.

This has nothing to do with homomorphic encryption, unless I'm missing something.

<comment><USER71>
      composer require some/library

That's PHP's package management. What's so non-trivial about that?

<comment><USER72> And, as a bonus feature, composer install won't automatically update your lock file!!

Unlike some other package managers...

</comment></comment></comment></comment><comment><USER73> Golang is awesome once you submit and accept its intentionally mediocre design as a work of mysteriously genius simplicity. I did that myself and now I love it.

</comment><comment><USER74> Well comparing Go and PHP is kind of difficult, because they are targeting completely different goals.

After some years of development, both languages have evolved a lot and they both can be used for many other things, that they haven't been designed for.

PHP was a dynamically typed scripting language to build personal homepages (Personal Home Page Tools). Today it is an object oriented, type hinted language that supports functional and object oriented programming, many database management systems and has a package manager (composer). I really like PHP (see [https://github.com/sandreas/m4b-tool](https://github.com/sandreas/m4b-tool) for a proof), but some concerns about PHP have always been (and still are):

\- backwards compatibility reaching too far

\- way too big standard library (see levenshtein function)

\- the "callable" concept - call_user_func_array([$obj, "method"])

\- mixing up too many concepts (OOP, Traits, Functional style)

\- the type system (which is getting better with php 7)

\- unpredictable statements - empty($x), comparisons (== vs ===) and the "mixed" type

\- the "array" type being array and dictionary and...

\- the $ used for variable declaration

\- $this-> is still needed for calling object methods

\- "." for concatenation and "\" for namespace separation

Another bad thing about PHP is, that on most web servers it is meant to be stateless, which means that you are in trouble using technologies like websockets.

Some of these things unfortunately mean that PHP often is much slower than it could be - and this is where "go" can be a successor. Performance. If you really need FAST web apps and performance is the goal, go can be a nice choice. But for getting things done in a not too complex web page, i would always choose php.

<comment><USER75> > \- the "callable" concept - call_user_func_array(["object", "method"])

For at nearly 10 years now PHP has had support for lambdas, meaning for most uses `$foo()` can be used instead and with the inclusion of the spread operator it's seldom used.

<comment><USER74> With the "callable" concept i meant, that many things are seen as callable:

[$obj, "methodName"] => callable for $obj->methodName()

"str_replace" => callable for function "str_replace"

["ClassName", "staticMethod"] => callable for ClassName::staticMethod()

"ClassName::staticMethod" => callable for ClassName::staticMethod()

function() {} => callable for a lambda

I would prefer a "ClassMethod" and a "Function" type, instead of using strings.

$x = phpinfo; $x();

$y = $obj->method; $y();

But i don't think, this is possible, because PHP supports global constants and function names cannot be distinguished from constants, especially because PHP is not case sensitive regarding functions and classnames.

But I see, that my karma has decreased with this post, so it seems, that not many are in my opinion...</comment></comment></comment>


Road to the Nut House - <AUTHOR> http://www.peggynoonan.com/

<comment><USER2> You'd be amazed how similar a new political campaign is to a tech start-up.

You're creating an entire organization from scratch. Hiring and training employees on the fly, getting expanded offices,

You have to fund-raise, only instead of VC you have to raise it individually from thousands of donors. Most people don't realize that successful candidates spend several hours a day just calling supporters and asking for money. It's worse than sales calls, because you're asking them to give you money, and they're getting nothing tangible in return. (as a side note, this is a big part of why so many politicians seem like snake oil salesmen. They're the ones who are good and willing to do sufficient call time)

The schedule is insane. You spend the whole day on the road, shaking hands and giving speeches, while at the same time keeping informed on local and national issues and forming coherent opinions about them. You're also expected to provide leadership for your campaign staff, and occasionally spend some time with your family.

In the end you either win big or get nothing.

</comment><comment><USER3> I've always had the suspicion that anyone who would actually be an excellent president would have too much integrity to do that which it takes to get elected as president.

<comment><USER4> I have a sneaking suspicion that integrity is not a functional or desirable trait in a politician. What we really want in our political leaders is someone who will be sneaky, underhanded, ruthless and downright duplicitous; on our behalf. Integrity is nice to have and desirable in your neighbors and friends, but politics is about survival, ethics is secondary (or rather personal and societal survival _is_ the greater good).

</comment></comment><comment><USER5> If cameras were on you, and people were writing down your every utterance essentially 24/7, wouldn't they be able to get at least a few pages of idiotic or 'mentally unstable' comments over the course of a few years?

Every candidate enters into that world by choice, but we have to remember that these are people, not just political philosophies (or lack thereof) made manifest.

</comment><comment><USER6> That book sounds fascinating. Politicians have such a manicured image that it can be hard to tell what they're really like. Even things that seem normal (going bowling, ordering food, having a beer) are designed to appeal to voters. Anyone that has such a level of cynicism is at least a little bit crazy.

<comment><USER7> The book is full of great anecdotes and makes for really entertaining reading if you followed the 2008 election with any interest.

</comment></comment><comment><USER8> Is the fact that McCain is an empty suit and a handshake news to anyone? Or that Clinton is a moody castrating bitch? Or that Obama is kind of arrogant? Or that Palin is vapid?

</comment><comment><USER9> _The shallowness, the lack of seriousness of modern presidential candidates is almost unbelievable._

No, it's totally believable. And perfectly predictable.

Why? Because these are people who, for the most part, are totally out of touch with reality. Why? Because they've never actually had to work for a living.

The classic case was an adult Ted Kennedy not able to figure out how to pull shopping carts apart because he had never seen them before. Sometimes I wonder how many D.C. office holders, if left alone in the woods without a cell phone, would actually live.

We have this community here at hn where we beat technical and business issues to death as we strive to improve ourselves and that which we produce. Most of those running for office are 180 degrees away from that. Most political office seekers commenting on this board would be laughed off as "posers" in nanoseconds.

Political candidates, like startup founders, would do everyone a big favor if they first joined the real world and produced something of value for someone else. Until then, "unbelievable" will remain the norm.

<comment><USER7> "they've never actually had to work for a living."

So let's see... of the main contenders in 2008, John McCain served in the military and worked in public relations for a beer distributor, Obama was a community organizer and lawyer, Edwards was a lawyer, Clinton was a law professor and administrator, and Palin was a sports reporter.

Those all sound like jobs to me. And I'll go even further and say senator and governor sound like perfectly valid full-time jobs.

I'm also willing to bet politicians who stump have contact with a far wider range of people than almost anyone else. How many Iowa steak frys and ag fairs have you attended lately?

<comment><USER10> McCain earned the monicker "Ace" in the Navy for losing 5 aircraft. The only reason they kept giving him new ones was he was a 4 star admiral's son. His PR job was glad-handing, not usually what one means by "working for a living". (I dont' mean to denigrate his service, just reporting.)

"Community organizer"...I'd get downvoted if I commented on this one.

"Lawyer"...

Clinton was a law professor for a very short time. Pure politics after that. I don't think he ever held a job in high school or college other than chauffeuring Sen. Fullbright.

<comment><USER7> Clinton worked in a fish cannery and as a dishwasher, among other things. McCain's cushy PR job came after a prolonged period of rotting in a Vietnamese prison. I don't really follow your insinuation about community organizing, but where I live (SF) it tends to take the form of working long hours for minimal pay in some dire neighborhoods.

So I fail to see the point you're trying to make. What is the threshold of 'real work' career politicians have to cross before they are legitimate in your eyes?

In the book this post references, everyone except Palin is shown to have an enormous capacity for sustained hard work.

</comment></comment></comment></comment><comment><USER11> 'He presides looking "vaguely bored," his detachment "striking but not entirely unusual." '

Is it ad feminam to remark the Ms. Noonan came to public notice writing speeches for Ronald Reagan who was noted for "detachment"?</comment>


Mixins Considered Harmful - <AUTHOR> http://www.artima.com/weblogs/viewpost.jsp?thread=246341

<comment><USER2> Haskell can solve the same problem that mixins solve, with typeclasses, much more elegantly. Because Haskell isn't object orientated, it is possible to simply not import functions which are not desired, rather than running into namespace pollution problems.

For example, suppose that RoundThings have a diameter, and it MovedThings have an offset from the original position.

      class RoundThing a
        where
        diameter :: a -> Double
        radius :: a -> Double
        radius a = diameter a / 2
        circumference :: a -> Double
        circumference a = 2 * pi * (radius a)

      class MovedThing a
        where
        offset :: a -> Double

      class MovedRoundThing a
        where
        rotationsMoved :: (MovedThing a, RoundThing a) => a -> Double
        rotationsMoved a = offset a / circumference a

      data MovedBall = MovedBall Double Double
      instance RoundThing MovedBall
        where
        diameter (MovedBall dia _) = dia
      instance MovedThing MovedBall
        where
        offset (MovedBall _ offs) = offs
      instance MovedRoundThing MovedBall

      main = do
        let myBall = MovedBall 10 20
        print (rotationsMoved myBall)

I don't have to worry about, say, rotationsMoved polluting my namespaces, because if I don't want to import it, I don't have to.

</comment><comment><USER3> Yes, a design _based_ on mixins is harmful, for the exact same reasons why designs based on multiple inheritance in C++ were often awkward. (Our industry does have a problem with ignoring its own history.) These mechanisms should be used sparingly to resolve conflicts and sticky design problems. They should not be used as a substitute for composition.</comment>


Ask HN: Including logos of Fortune 500 clients on your website? - <AUTHOR>

what happens when you put the image of Google and IBM on your website? Does it increase conversions? What are the risks? <comment><USER2> Get permission, or get it worked into the contract with them.

Stay safe: Large corporations, such as Fortune 500 companies, often have subsidiaries, branches, or otherwise incorporated offices all over the world, and also in their home country. Ensure that the legal entity you work with has sufficient wording in the contract that you can claim to work with the parent entity too (the Fortune 500 recognised name).

But in the end, surely it is about your relationship with someone you're claiming a client (and I'm assuming this is the case, having their logo on your website, and that you're including the logo to convert other largish clients). If basic due diligence if performed by a prospective client and you don't receive a favourable reference (or worse, a denial of relationship), it will kill a conversion either at the outset of later (and later could be worse - legal charges of misrepresentation or worse).

Stick with names that you have an auditable relationship with, that include positive anecdotes, and can be relied upon to confirm a working relationship.

</comment><comment><USER3> Two things: please don't do this without explicit permission from an appropriately authorized employee (probably different from your contact). Also, personally, every time I see this my main reaction is "OK, one small team used a credit card to buy this service, its not as if all xx,xxx employees of $bigcorp are relying on the platform for daily LOB activity"

</comment><comment><USER4> What are the terms of your contract with them? Is it allowed? When I built stuff for BigCos I was under NDA so will have to go back and ask permission to post the work.</comment>


Taiwan Tech Homeward Bound from China - <AUTHOR> https://www.eetimes.com/document.asp?doc_id=1334623 <comment><USER2> Considering the proximity, it would seem hedging your bets and having a footprint in both at least would be advisable.</comment>


Installing WordPress on Windows - <AUTHOR> http://www.firstamong.com/installing-wordpress-on-windows-using-wamp/

<comment><USER2> I might be missing something, but... what's the point of this entry?

<comment><AUTHOR> its useful for developer who want create plugin, themes for wp. Localhost is very fast for end user than web server. so having wp installed in local machine has a gr8 advantage thnk u :)

<comment><USER2> I know what WAMP is good for, thank you very much.

I was referring to the fact that this is nothing new at all.

<comment><AUTHOR> Yup nt a new concept, bt dnt u think its a evergreen topic????

</comment></comment></comment></comment><comment><USER3> It's one click install with the Web Platform Installer thing.

<comment><AUTHOR> U mean microsoft web platform??? but wamp is even more flexible to tweak :)</comment></comment>


Word Problem - <AUTHOR>

<comment><AUTHOR> A recent college graduate named David decides to pursue entrepreneurship instead of employment, so he moves to the Silicon Valley. He has a big idea for a web application, $50,000, and the application designed in adobe illustrator. He does not have a technical background or a co-founder[s]. WHAT SHOULD HE DO?

<comment><USER2> David seems to have put the cart in front of the horse and needs to very quickly find some top-notch programming talent. David should email me, and I can put him in touch with some excellent developers in the SF bay area. The guys I will recommend to you are Real Programmers (Hackers) [1] [2] each of whom has a wide background, from systems software to web apps. (As opposed to people who have not written much real software and who have only picked up the art from a "Teach Yourself Web Development in 24 Picoseconds!" book. [3])

You can also try attending local events and trying to meet people, e.g. at Lunch 2.0s and Super Happy Dev House (shdh.org). The problem with this approach is that since you do not have a technical background, you'll have a hard time distinguishing competent people from people who are able to just talk well and promote themselves. You want to work with someone who can communicate well, but you don't want to get stuck with someone who can only communicate well but can't code worth crap.

N.B. If your idea sucks, you're not going to get good people to work with you.

Also... why is there no contact info in your profile? If someone here wanted to get in touch with you to work with you, they'd look in your profile for an email address.

1\. <http://www.cs.berkeley.edu/~bh/hacker.html>

2\. <http://www.catb.org/~esr/faqs/hacker-howto.html#what_is>

3\. <http://norvig.com/21-days.html>

<comment><AUTHOR> "David seems to have put the cart in front of the horse and needs to very quickly find some top-notch programming talent."

It would be nice to find top notch programming talent quickly, but I am not going to rush this decision. I need to make sure this person[s] has integrity, good energy, is in a position both mentally and financially to do a startup, and above all if we enjoy each other.

I will email you to get in touch with the developers you know My email is firstname.lastname@example.com if anyone else want to get together.

</comment></comment></comment><comment><USER3> If David is Jewish programmer and not Roman Catholic programmer ... he should visit Mr. Zuckerberg and work for him one year for free then buy facebook for those 50kilos and hang his illustration up on the wall in his new "The Architect" room.

<comment><AUTHOR> I allready made an offer for facebook but I think Yahoo out bid me.

</comment></comment><comment><USER4> If he has $50,000 it shouldn't be to hard to find developers/co-founders. I really wanted to type - call me :)

<comment><AUTHOR> It might not be that hard to find any old developer, but if he is getting ready to invest his life savings and is living out of his car because he wants it so bad – he is not going to want any old developer – he wants the right developer. You got to get the right people on the bus before you start driving. So how should he go about finding the right developer/co-founder?

<comment><USER4> In my opinion it is going to be very hard for a non-developer (non-geek) to judge ~ whether or not a developer knows his or her stuff. Does he know any developers?

<comment><AUTHOR> I don't know any developers and I agree with your opinion! I thought about explaining my situation to Stanford CS professors and asking for recommendations. I still might do this, but I wanted to get the opinions of the YC community first.</comment></comment></comment></comment>


Understanding Convolutional Neural Networks - <AUTHOR> https://poloclub.github.io/cnn-explainer/ <comment><USER2> Just a shout-out to Professor Polo (the Professor who is the leader of the Polo Club of Data Science who wrote the tutorial on CNN's), 3 years ago, as a CRUD code monkey, I found out about Georgia Tech's launching of Online Masters in Data Science on Hacker News and then entered into the program and took Dr.Polo's class on Data Visualization and Analysis (for that semester I lit. spent more time on the class than on my day-job)... now for going full circle 3 years later, I see Dr.Polo's tutorial on CNN on Hacker News again and am working on CNN/RNN's for my last class/capstone project lol. The circle of life or the circle of HN I suppose!

Anyone here in the OMSA/OMSCS program?

<comment><USER3> 3 years is a long time for a degree. Should have done Udacity.

<comment><USER4> 3 years isn't a long time to obtain a master's degree while working. This program, and many others, actually give you 5 years so you can take roughly one class per semester, 2 per year, and not destroy yourself. GT is also a top-tier school. Not a knock on Udacity.

</comment></comment></comment><comment><USER5> I know very little about CNNs. But, I noticed the ReLu Activation step is Max(0,x) where x is the sum of the pixel intensities from each channel. In this example, it appears x > 0 (for all x) and so the activation step isn't really doing much?

EDIT: I'm wrong. x < 0 for some of the pixels. Specifically for the more red- ish channels.

<comment><USER6> No, relu is applied after convolution, so x is the result of applying the kernel at a particular location of the input, so it depends on the color as well as on the kernel.

</comment></comment><comment><USER7> I wrote a nn a while back and made some interesting projects with it. two things I wanted to do: transfer the matrix multiplications to the GPU and also implement convolution layers. if I ever got free time again I'll maybe do it.

thanks for sharing this, great content. made me think about old projects I have laying around.

</comment><comment><USER8> The interactive inspection of each layer is beautifully implemented. I hope that one day we'll be able to make even more sense of the consequence of each individual weight, ie. know more than -0.52 for a given pixel.

</comment><comment><USER9> Why doesn't it explain what the "bias" is?

<comment><USER10> Neurons have weight and bias. Weight is multiplied, bias is added. Really that simple.

Here are examples of equivalent notations that may make it more familiar:

      y = 2⋅x + b or
      y = a⋅x + b

\- x would be the input to the neuron, often named 'x'.

\- a/2 would be the weight, often named 'w'.

\- b would be the bias, often named 'b'.

\- y is the output.

In neural network documentation this is often written as (often case sensitive, which may be confusing): output = w⋅x + b (output = weight * input + bias).

I hope that explains it.

</comment></comment><comment><USER11> Very nice interactive tutorial tool. I wish some of the terms were defined. Hyperparameter? Convolution? Kernel?

<comment><USER12> Model: the learnt relationship (eg., f(x; a,b) = ax + b)

Parameter: an aspect of the model, a dial which is fixed by data (eg., a)

Kernel (as used here): a subset of such parameters

Algorithm: procedure which accepts data and produces a model

Hyperparameter: an aspect of the algorithm, a dial which changes model production

Convolution: A convolution of image A and Filter B describes to what degree A is "like" B. Here "Filter B" is a kernel, ie., a parameter set learnt by the network.

The goal of a CNN is to produce a model whose parameters are image filters that describe the degree to which an images expresses various shapes. By learning the filters from an image set, the network is specialized to distinguish images in that set.

<comment><USER11> These definitions are too vague by half. In a word, useless. "An aspect of the algorithm, a dial" so the same as a parameter then, according to your definition... the only distinction is it changes model production, but in my experience data does that too, so... no clarity here. You make them sound the same to the naive reader.

And you misunderstood my suggestion for the article as a request for your help. But thanks. I don't doubt what you wrote is accurate and helpful in the same way that saying "a transom is a part of a building" is accurate and helpful.

<comment><USER13> I agree with your overall sentiment on the "definitions" offered but just fyi your tone is probably considered to be unnecessarily harsh by many.

<comment><USER11> Thanks for the call out, I'll reflect on that.</comment></comment></comment></comment></comment>


"Linus is just an engineer" - <AUTHOR> https://git.kernel.org/cgit/devel/sparse/chrisl/sparse.git/tree/FAQ#n30 <comment><USER2> Does the 2001 documentary film "Revolution OS" represent the source of this claimed Richard Stallman quote? [https://en.wikipedia.org/wiki/Revolution_OS#Quotes](https://en.wikipedia.org/wiki/Revolution_OS#Quotes)

If so, it seems the film has Torvalds making the quote and claim, not Stallman (?) From Wikipedia:

"Think of Richard Stallman as the great philosopher and think of me as the engineer."\--Linus Torvalds</comment>


Ask HN: Advice on balancing family life at a startup - <AUTHOR> I am a technical cofounder at a startup. We are a small company (team of ~5) around a year old, with 1-2 years of funding left before we will need to raise again at our current spend levels. I think we have a good chance of getting to a successful place with our company and doing that round successfully, which could be life-changing financially for me and my family (I come from a middle class background). The technology is also exciting to work on.
Recently, my young daughter started going through a few health difficulties. Our startup works a little harder than an average engineering job (maybe typical for a seed stage silicon valley startup). Unfortunately I am not really able to balance my family life commitments (the number of appointments that I need to attend, along with the extra support my wife needs), with the demands of the startup. I feel like I am doing a bad job at both.
I have been think returning to a regular software engineering job at a big tech company, perhaps the same one I worked at before this startup. I should be able to balance much better (more cash, more time, and less psychological involvement with the job). However, I feel guilty leaving the company and the team, and worried it could really set the company back at this crucial stage. It also feels like the current situation of me trying to balance both isn't sustainable either.
Sorry for the ramble. Anyone have any advice here on how to think about such a decision? <comment><USER2> You should sit with your other co-founder(s) and present your current predicament just as you've done here. Your subsequent conversation should be weighing the cost (to the startup) of you leaving to go back to back to big tech vs. you staying and cutting back on your time commitment/responsibilities to where you find some balance. Hopefully, you all have a good enough relationship where you can be open, direct and honest with each other on how palatable a compromise is to all parties.

You should consider and be ready to address questions like how long is the cut back on commitment going to last, how will it affect whatever targets/milestones you guys have on the drawing board, will it impact your equity in the startup?

The guilt is a natural feeling, but you shouldn't let that stop you from ultimately doing what is right. If there is no balance to be found and you have to choose between your family and your startup, leave...just don't do it without giving your co-founder(s) an opportunity to chime in. I would encourage any valuable team member (or co-founder) in your position to take whatever time they needed, and even consider a temporary hire to offload work in the interim.

<comment><USER3> This seems like a textbook "good answer" from the book "Difficult Conversations".

Don't try and figure out how people will think in the isolation of your own mind. To quote Wittgenstein: look and see! Or in this case, ask and see!

<comment><USER2> Just looked up the book (which i hadn't heard of), and it looks like its worth reading. Thanks for mentioning it!

<comment><USER4> One of their other books, "Thanks for the Feedback", is also reading I regularly recommend as a part of my mentoring program.

</comment></comment></comment></comment><comment><USER5> Do a good job as a parent, and ignore any demand on you that threatens to compromise that. If switching jobs makes you a better parent, switch. You _will_ get other opportunities to lead startups, and you will _never_ get this time with your children back.

<comment><USER6> In addition, the presence and close involvement of a loved one can have dramatic effects on medical outcomes. Here, the tradeoff may be choosing between saving a startup and saving a child. Seems a no-brainer when weighed this way.

</comment></comment><comment><USER7> Aggressive prioritization. The hours you work don't matter. What matters is if you get the job done. Be effective. Thankfully (i think) you're in a position to be judged on your effectiveness and not other criteria. As you only have to convince yourself, you co-founder and the rest of the team. It might be a chance to change the culture too. It's not about hours worked. It's about whether the work helps the company. Lots of effective hours pays off. But some effective hours are worth more than many many wasted hours. This is something that often gets lost.

Delegate to others the stuff they could do. Do only what is important. Be flexible with yourself and others.

Family matters and so does what you do with your life. Remember, life is a marathon, not a sprint. There are no prizes for getting to the end first. Look after yourself and make the best decision you can. Best of luck

*Edit. Predictive text fail

</comment><comment><USER8> I had to face something similar. I certainly didn't consider leaving to go back to something less intense, I just ramped up cutting out everything that wasn't family and startup. Not for everyone but eventually I made it sustainable. I would surface the concerns to your co founders. If they don't have kids, it's harder to understand, but this is the kind of thing where they will generally have already noticed so a conversation will be welcome.

</comment><comment><USER9> > I feel guilty leaving the company and the team, and worried it could really > set the company back at this crucial stage.

You shouldn't feel guilty of that. You get one chance at life, a job is a job, it's here to bring money to take care of yourself / your loved ones. What's the point of working if you don't even get time to take care of your family ?

Try to project yourself in 20 years, what will you think looking back at this decision ? "I'm sad I let down my company" or "I'm sad I let down my family" ? Especially as engineer, it's not like it's your only career possibility. You can fuck up professionally 10 times in a row without a major impact on your life, you don't get to fuck up your family life.

Also, what @ossie said, if you can find a balance without leaving the startup, go for it.

</comment><comment><USER10> I don't know your situation, but all I'd say is being okay keeping a flexible schedule that fits your life and family needs is the most important thing. The 9-5 in the office normal job is actually _worse_ for situations like these than what you could have in a startup.

If you aren't able to keep consistent hours then putting in a Saturday morning or Sunday night to make up for it is totally fine in my book, assuming you are a truly irreplaceable asset to the company.

It's hard work to get to a place where you're confident in your flexible schedule and still get great work done when measured in terms of results not consistent time spent in the office. That feeling won't go away either when the startup matures. If anything it will get worse, especially when you start delegating!

</comment><comment><USER11> I went through something similar. I'm a cofounder at a small startup and had a difficult health scare with myself, my wife and both kids, all around the same time.

Ceritnaly no right answer, and it was hell at the time, but looking back, here's a few things:

My cofounder took care of my many shortcomings during that time, no questions asked. He also has a family (which may help in that mutual understanding) but he'd get tasks with no context and say "don't worry, I'm on it" and it just got done. I hope you can get to this point with your other founders.

Your startup is more resilient than you think. I missed many things during that time, respond badly to emails, missed calls and we came out the other end alive. I realized we weren't as fragile as I thought. Ironically some of those missed calls and poor emails still turned into customers. Your startup will be able to handle you making mistakes and being less involved when needed.

I took me a long time to get back to "normal". It felt like chaos for almost 9 months and at some point, it may feel like the chaos will never end. You need to know that it will get better and you will begin to feel sane, even though it may take a while.

This may controversial, but the family and startup are not mutually exclusive, so I never think of it in terms of balance. The fact that you started a company means you're probably happier there than at a large company, being happier makes you a better husband and father and family unit, and that family unit will be your support through the ups and downs of building a company.

Good luck, you can do it.

</comment><comment><USER12> I completely relate to your situation and am living it myself- I am also the technical cofounder at a promising seed stage company. While the magnitude of my commitments was far less than yours (girlfriend vs wife+kid), it was only when I failed at one (girlfriend broke up/moved out) that I really got perspective on the other one. I had an honest conversation with my cofounders about my work-life balance last month and am already seeing the positive benefits. I made a renewed commitment to myself, and my strictly limited 8 hours of work have started feeling much more productive.

I hope this helped and wish all the best to you and your daughter.

</comment><comment><USER13> It sounds like your family comes first to you. If you were to explain your situation and decision to your team the same way you've done here, I'm sure they would understand. My advice would be to plan your exit with this in mind, and try to make decisions that are best for your family, ignoring the impact on your company. Once you have your plan, do right by your company by communicating it as clearly as possible. They'll adapt to your absence, and perhaps even find a way to become stronger in the face of losing you.

</comment><comment><USER14> Your question is « how to think about it », not about receiving a pre-cooked answer.

My suggestion is to think about it strategically. Make a diagnostic (what is wrong and why), derive principles (what are the truly important rules to observe if you want to fix things), finally build a corresponding action plan (what you need to do, and in what order). Rewalk these steps regularly. Talk with your family and partners. Guilt will go away if you stand on principles you believe in. Good luck!

</comment><comment><USER15> You should talk to your wife and come up with a plan with her.

Give 100% priority to your daughter and wife, and see where that is going to lead you.

</comment><comment><USER16> Family much more important if it's not possible to handle both responsibilities at the appropriate levels of attention needed.

</comment><comment><USER17> As others have said, put family always first. Still talk to your co-founders, there is a high chance they'll be understanding, if not, you're better off knowing that early. I'd never personally stick with anyone who doesn't put a child with health difficulties before job.

I wish your girl all the best!

</comment><comment><USER18> Could you delegate? I was a founding CTO and had a shift to prioritize family also about two years in. Hand off what you can, more Manager than Maker.

Ultimately I left but to do another startup - with more flexible time.

</comment><comment><AUTHOR> Thanks all for your thoughtful suggestions and advice - they are really helpful in thinking through this situation

</comment><comment><USER19> Family should come first. Sit down with your team and have an honest conversation.

<comment><USER20> yes Family first

</comment></comment><comment><USER21> Talk to the team. Consider going part-time and bring someone else in.

</comment><comment><USER22> pretty easy actually. get a normal job. your startup isn't headed for success if you think you can do it with 5 people for 2 years.</comment>


Guide to Speech Recognition with Python - <AUTHOR> https://realpython.com/python-speech-recognition/ <comment><USER2> For people who want simple, out of the box stuff (not necessarily in Python) for just getting phonemes I can also recommend [0]. Not amazing recognition quality, but dead simple setup, and it is possible to integrate a language model as well (I never needed one for my task). The author showed it as well in [1], but kind of skimmed right by - but to me if you want to know speech recognition in detail, pocketsphinx-python is one of the best ways. Customizing the language model is a _huge_ boost in domain specific recognition.

Large company APIs will usually be better at generic speaker, generic language recognition - but if you can do speaker adaptation and customize the language model, there are some insane gains possible since you prune out a lot of uncertainty and complexity.

If you are more interested in recognition and alignment to a script, "gentle" is great [2][3]. The guts also have raw Kaldi recognition, which is pretty good for a generic speech recognizer but you would need to do some coding to pull out that part on its own.

For a decent performing deep model, check into Mozilla's version of Baidu's DeepSpeech [4].

If doing full-on development, my colleague has been using a bridge between PyTorch (for training) and Kaldi (to use their decoders) to good success [5].

[0] how I use pocketsphinx to get phonemes, [https://github.com/kastnerkyle/ez-phones](https://github.com/kastnerkyle/ez- phones)

[1] [https://github.com/cmusphinx/pocketsphinx- python](https://github.com/cmusphinx/pocketsphinx-python)

[2] [https://github.com/lowerquality/gentle](https://github.com/lowerquality/gentle)

[3] how I use gentle for foreced alignment, [https://github.com/kastnerkyle/raw_voice_cleanup/tree/master...](https://github.com/kastnerkyle/raw_voice_cleanup/tree/master/alignment)

[4] [https://github.com/mozilla/DeepSpeech](https://github.com/mozilla/DeepSpeech)

[5] [https://github.com/mravanelli/pytorch- kaldi](https://github.com/mravanelli/pytorch-kaldi)

</comment><comment><USER3> No mention of DNN based ASR like DeepSpeech? There's even open source python implementations available from Mozilla and Paddle.

These models are way easier to train, have surprisingly good accuracy, and are robust to noise.

<comment><USER4> afaik, pure DNN models still lag seriously behind 'traditional' HMM-based frameworks augmented by neural networks (using DNNs for specific parts of the pipeline). Last I checked a couple months ago, state of the art for HNN+DNN was something like 6% word error rate (WER). The best Seq2Seq DNN I know of hit 18% WER, dropping to 10% when a secondary language model was integrated in. (my guess is that part of the problem is leaning too heavily on the attention mechanism... a more 'streaming friendly' framework should help reduce the load on the attention mechanism.)

[https://arxiv.org/pdf/1610.03022.pdf](https://arxiv.org/pdf/1610.03022.pdf)

<comment><USER2> This has changed recently, full seq2seq is now matching hybrid models [0].

[0] [https://arxiv.org/abs/1712.01769](https://arxiv.org/abs/1712.01769)

<comment><USER4> Oh, thanks! Now I know what I'm reading on the commute tomorrow.

</comment></comment></comment></comment><comment><USER5> The SpeechRecognition module is pretty popular but it has some important API design flows. The thing is that speech is always continuous stream of data and you need a streaming-like API for proper user experience - you need to respond on events as soon as they appear. You need to filter silence and wait for actual words. You need to delay input reaction until the user clearly expressed the goal. Such streaming API is provided by major engines like Google and CMUSphinx and enables natural and responsive experience. Unfortunately SpeechRecognition module does not support streaming so developers often restrict themselves. A proper guide should better cover Google's streaming API.

<comment><USER6> That's a really good point. I am the author of the article, and this is something I debated during writing. In the end the goal was to provide an "in- depth enough" tutorial on adding speech recognition to an app for people who were new to it and possibly intimidated by the topic. For that, I think SpeechRecognition is a fantastic module.

I had to leave a lot out of this that I wish could have gone in, simply due to length constraints. In that regard, perhaps "The Ultimate Guide to Speech Recognition" wasn't be best choice of title. I'm sure that we'll be updating this article as time goes on, and Google's streaming API is something I want to make sure goes in it.

Also, something that was left out of the article was SpeechRecognition's listen_in_background method, which does solve this problem somewhat. My issue with it is that SpeechRecognition uses a somewhat crude RMS energy based VAD for detecting speech.

Thanks for your feedback!

<comment><USER2> It may be possible to do this with an LSTD VAD, I always had really good luck with that. I tried a few random ones in here for silence removal - no quality guarantee [0]

I found LTSD pretty robust compared to simpler energy based things as long as you have a small chunk of background sound at the start. The LTSD implementation is largely from my friend Joao, so I can't take credit for the cool part, only the bugs

[0] [https://gist.github.com/kastnerkyle/a3661d6be10a0ae9e01fd429...](https://gist.github.com/kastnerkyle/a3661d6be10a0ae9e01fd4299f0a38af)

<comment><USER6> Cheers! I'll definitely check this out.

</comment></comment></comment></comment><comment><USER7> I had experimented with Python libraries for both speech recognition and speech synthesis a while ago. It was very basic stuff, but fun:

Speech recognition with the Python "speech" module:

[https://jugad2.blogspot.in/2014/03/speech-recognition- with-p...](https://jugad2.blogspot.in/2014/03/speech-recognition-with-python- speech.html)

Speech synthesis in Python with pyttsx:

[https://jugad2.blogspot.in/2014/03/speech-synthesis-in- pytho...](https://jugad2.blogspot.in/2014/03/speech-synthesis-in-python-with- pyttsx.html)

Check out the synthetic voice announcing an arriving train in Sweden (near top of 2nd post above).

</comment><comment><USER8> > Most modern speech recognition systems rely on what is known as a Hidden > Markov Model (HMM).

This not correct. Most modern speech recognition systems are based on deep neural nets (DNN).

<comment><USER9> It depends on what you mean by "most". While it is true that Google, Amazon, Baidu, et al. have a DNN-based implementation, most open source ASR systems (eg. CMU Sphinx, HTK, Julius) are still HMM-based. There are still very few DNN based modern speech recognition systems available to developers. Most are behind a cloud API. Mozilla runs one: [https://github.com/mozilla/DeepSpeech/](https://github.com/mozilla/DeepSpeech/)

<comment><USER10> I think the discrepancy lies between "open source" and "modern" in this case. It is true that DNNs outperform traditional HMM models, but speech recognition systems are complex. It's not trivial to simply "port" an existing open source system to switch to DNNs if you don't have the manpower and training data that Google and the like possess.</comment></comment></comment>


Minimalist Living: When a Lot Less Is More - <AUTHOR> http://time.com/3738202/minimalism-clutter-too-much-stuff/ <comment> chestnut-tree There is something very appealing about owning a small number of material possessions and living a "minimalist" lifestyle. But I'm well aware of the messy contradictions surrounding such an issue. Living minimally is a choice you can make when you live in relatively rich country. It's not a choice for many millions of others around the world who make do with little because of their circumstances. What's more, our economies (certainly "Western" economies) are geared to the production and consumption of goods, if not for our own populations then for export to other countries for them to consume. So can only a small number of us choose to live minimally as long as everyone else decides not to? How else are we going to buy the expensive laptop essential to our minimalist life? (Am I being too cynical?)

And does minimal living always equate to sustainable living? If you're jetting all over the world in a plane, is that environmentally friendly? Wouldn't the locals prefer you spend some of your tourist money on their goods and services so they too can live a comfortable life? Many environmentalists believe the huge amount of resources needed to rear and feed animals is unsustainable. Giving up meat or reducing our consumption could be considered sustainable, but it's not what people would consider as part of a minimal lifestyle.

And finally, is it really a choice between a consumer/material lifestyle and a minimal lifestyle? Or more realistically, a choice between excessive material consumption (e.g. 70 shirts as stated in the article) or just a more modest material lifestyle?

<comment><USER4> I don't really get the idea of "sustainable living"

as in, I'm not supposed to eat beef or fly on a plane, because there are not enough of those things to support everyone on the planet doing at US rates

Like, I get that if everyone started eating beef that would take an oversized share of arriable land, but wouldn't that then be reflected in the price for beef?

I like hamburger, but if I had to pay fois gras prices for it because everyone in China liked it too, driving up the price for beef, I'd probably switch to eating something different

if we're still at cheap beef prices, seems like a pretty strong signal to me, that current beef consumption is in fact sustainable

<comment><USER5> You're taking it on faith that the price of beef in the store currently reflects the actual costs of producing that beef. And that it would continue to do so if the beef industry became even larger and more powerful.

But it isn't true, current "cheap beef prices" (they are actually up a lot just now [1]) are a reflection, in part, of the public funds and public property use that are routinely donated to agribusiness.

You can't tell what the cost of beef is by looking at the pricetag, and that's true about a lot of real-world products and services. You can't rely on the market to give you a signal in such cases. And you can't tell which cases are which without digging in to every one.

I don't mean to pick on you, exactly, but your attitude is one I see online frequently. "I took Econ 101 and therefore I can tell which global industrial supply chains are or are not sustainable just by looking at price-tags in the grocery store." When even real economists get things wrong _all the time_.

[1] [http://www.indexmundi.com/commodities/?commodity=beef&months...](http://www.indexmundi.com/commodities/?commodity=beef&months=240)

<comment><USER4> how long can a government distort prices?

even a distorted price gives information, no?

</comment></comment></comment></comment><comment><USER6> I started to live minimal two years ago. I noticed I wasn't happy at all with my life and decided to go travelling the world, something that I always wanted to do, but somehow never did. I gave away almost all my stuff, what I have left is what fits in my backpack.

I have no job, no house and barely any money. I met my girlfriend during my travels and together we've been travelling for 10 months, of which the last 4 we've spent living in a cave on Tenerife and now we're staying for a short while at a friend in The Netherlands to replenish our funds for further travelling.

I own a laptop, 4 pairs of pants (2 long, 2 short), 6 shirts, some underwear, 2 mobile phones, an external hard drive, a dj controller, an e-reader, some cutlery and a bowl, a tent, a sleeping bag and mat, personal hygiene items, one pair of shoes, two warm sweaters, and a guitar.

I never buy things like clothes, as I can find those almost everywhere for free, i.e. free shops or so called freeboxes at (hippie/nomad) communities all over the world. On Tenerife we did a lot of dumpster diving, something that at first required me to overcome some shame, but now I'm amazed to see for example how much perfectly good food supermarkets throw away, just because the date expired, or because there are spots on the banana's, or a whole bag of apples is thrown away because one got crushed during transportation. Two to three times a week we left with a backpack full of tomatoes, sweet pepper, onions, bananas, avocado's, cookies, milk, cheese, etcetera and cooked meals to share with others. In bins around second hand stores or appartment buildings there are often bags full of clothes, and most of the time (in our case) they even smell fresh/washed. For me, going on a 'recycling mission' feels a bit like a lottery :) General tip: don't go through the bags of household garbage, those are disgusting. (Interested? See [http://trashwiki.org](http://trashwiki.org))

Anyway, this life makes me really happy, as my life is full with experience, adventure, nice people and no worries. My goal for the next years is to become fully self-sustainable, to live without money and to not be dependent on dumpster diving either, as I am aware this would not work if everybody starts doing it. My plan for now is to find a proper place to start an ecovillage, to put my experiences into practice and be completely self-sustainable, not dependent on any other system than the ecosystem.

<comment><USER7> So for example what would you do if you decided you want to go for a hike one day? You don't own any hiking boots, only a pair of shoes. Does that mean lot of activities aren't possible for you because you want to own as little as possible?

<comment><USER8> If I only owned one pair of shoes I'd choose a pair I could comfortably walk ten miles in.

<comment><USER7> Great - but then those boots are too heavy for walking around in a city - <USER2> are those boots suitable for wet or dry conditions?

I'd love to have less stuff, but I don't know how that doesn't turn into simply having the wrong stuff.

<comment><USER9> I love my Waldviertler boots:

[http://w4tler.at/schuhe/jaga-schwarz-herren](http://w4tler.at/schuhe/jaga- schwarz-herren)

Perfect for almost everything all year. This guy [1] walked 15.000 km with them. He needed just 3 pairs of them.

[1] [http://www.globalchange.at/home/willkommen.php?main=home&sub...](http://www.globalchange.at/home/willkommen.php?main=home&sub=willkommen&lang=eng)

</comment></comment></comment></comment></comment><comment><USER10> This comes up every now and again. Some people seem to like living this way. They're usually young men, although this article mentions a family (but gives no details). It certainly requires shearing off all commitments that might require you to have stuff.

While being very far from "minimalist", I've moved house and helped a few people move over the past year, and every time there is a large chunk of stuff which has to be thrown away. Sometimes it's old tat, sometimes it's genuinely useful and once valuable but consumes too much space (sofas are a particular problem, but furniture and kitchen goods are often victims of this). I don't like throwing things away which have pleasant associations or are still useful, and this leads me to avoid acquiring them in the first place.

(That reminds me, must finish buying a shed for my outdoor junk...)

There's an entire infrastructure of capitalism set up for us to buy things. There isn't really a comparable one for taking them away and getting money back. Partly because owning a thing de-standardises it; it acquires a history and potentially hidden problems.

<comment><USER11> Another part is that most stuff people own is effectively worthless. I think a lot of people don't really take into account the full cost of stuff including time and cognitive overhead.

<comment><USER10> "If it's worthless, why did I pay money for it?"

It doesn't start off worthless. That's why I singled out furniture, it has a huge gap between cost and resale value despite being "durable".

Then there is sentimental value. Not everything is pure economics. We need some things to satisfy the part of us that isn't utility maximising robot.

<comment><USER12> America does not have a good used market mentality, so after someone gains their utility from a purchase they feel that the trash is the only option.

<comment><USER11> It would be nice if the secondhand market was better for sure. Right now for almost all goods under a few hundred dollars it's cheaper for me to buy a new one on Amazon vs the full cost of finding purchasing and transporting a second hand version.

Moveloot is trying to do this with furniture, which I think is a good starting point.

</comment></comment></comment></comment></comment><comment><USER13> >To invent, you need a good imagination and a pile of junk. Thomas A. Edison

I fear that all of this minimalism will lead to people being unable to fix things, or to imagine new usages of things; the only reason my cables on my computer desk are cleanly attached and not on the floor is that I had a powertool and some wire attachers and the knowhow to use them. I don't own a dryer but I do remember my dad fixing the family drier several times - <USER3> suppose if you lived a minimal lifestyle you would go without a drier, but what about a vacum?

Heck where would we be if we didn't have a bunch of junk computers to play around with when we were kids?

<comment><USER14> I've never thought about this but I agree to an extent. Keeping things around for your children to hack on would very useful for their development. Books and kitchen equipment could also be very important.

I think those that wanted to adopt this lifestyle while raising family would have to look at keeping things that are actually hackable and look to renting the rest. But it may not be cheap compared to just owning said stuff for children to hack on.

</comment></comment><comment><USER15> Although we own a fair amount of real estate, my wife and I live in a small house, and we periodically do the de-cluttering thing. My wife and I have been talking about going further and perhaps living in an RV and constantly travel.

One thing that facilitates this is having stuff online, and not in physical form: eBooks, audio books, and watch streaming entertainment. I have my library reduced now to only about 200 books, and de-cluttering these would be difficult because I do like physical books.

Edit: also, I have (mostly) worked remotely since 1998 so continuing to do some work while traveling would be possible.

</comment><comment><USER16> "Some of them have received criticism for getting rid of their things when many families are barely getting by, that their behavior is only for people of a certain income level."

Dammit, I laughed very loudly at this and might have woken people up.

Thats the most American thing I've ever heard.

</comment><comment><USER17> As human species we need to focus on two activities: experiencing meaningful things and creating them. Giving up meaningless materialism junk is a great practice that helps you to focus on real experiencing, but we need to be careful not stopping creating truly meaningful things.

</comment><comment><USER18> I think this is going to get important economically.

There's only limited amount of resources a person can consume for consuming sake.

The rest is conspicuous consumption (buying a Ferrari to improve your social status) or its watered down versions brought to the ordinary folks via media brainwashing.

However, once over-consumption becomes a sign of low status (consider that being fat was once a sign of being well-off) it will become hard to keep consumption at current levels, not even mentioning growing it further.

Which in turn means that economies will start to shrink. Which, from a current economic viewpoint, sounds pretty scary.

</comment><comment><USER19> Interesting story except it's far from novel; Zen Habits has been all about this for a long time. On a side note, why are many mainstream news site so difficult to read on mobile? Time ought to be minimizing their use of glitchy mobile JavaScript. Scrolling was painfully glitchy.

<comment><USER20> Might have something to do with the scrolling: the video at the top autoplays if it's visible and pauses if you scroll past it. If you've already paused it and you scroll past it makes the audio cut in and cut out for a second (at least on my machine). Scrolling back up causes it to autoplay again _even though I already paused it_.

</comment></comment><comment><USER21> Translated: I only travel with MacBook Air and credit card.

<comment><USER22> Give me a T series Thinkpad, or a Panasonic Toughbook and maybe i'll give it a shot.

</comment></comment><comment><USER23> I always find this curious... In order to live minimally, your interests need to be minimal as well.

I'm a musician and woodworker that also enjoys electronics. It's very difficult to engage in these hobbies without having 'things' unless I'm lucky enough to pass along the burden of having these things to someone else who will let me have unrestricted access to them.

So this popular idea of 'living minimal' is unaccessible to me unless I wish to burden someone else with my hobbies, or to simply ignore my interests.

I still operate minimally in the constraints of that which I enjoy. Despite that, it requires a minimum of ~1200 sq/ft of space and 'things'. So it makes me wonder how minimally you need to live to be minimal enough to be considered minimal?

</comment><comment><USER24> We don't need practice minimalism to extremities. Personally, minimalism to me is like having as few as possible in third and fourth buckets If I have things bucketed like compulsory , necessary, good to have and luxury.

</comment><comment><USER25> My problem with minimalist living is that, quite often, adopters reduce any possession.

Although my physical items would fit in a small suitcase, I have several investments and properties to increase my personal wealth. It's not as superfluous as 50 pairs of shoes, as money itself can be used for valuable social change.

</comment><comment><USER26> Any time I move, I try to divest myself of at least half of everything I own. I've moved with only what I could fit into luggage. The take on it that I'm more comfortable with now is--if I want it, I want something really nice. I work for a site that specializes in antiques and collectibles and such. If I want something, I go searching for a special example of that thing. It sheds at least part of the disposable nature of things.

</comment><comment><USER27> If I could get my household to a point where we could look around and not wish the house had more storage, I'd be as happy as ... well, I'd just be happy. There's a great amount of stress that comes from having too much "stuff".

</comment><comment><USER28> This reminds me of pg's lesser-known article "Stuff": [http://www.paulgraham.com/stuff.html](http://www.paulgraham.com/stuff.html)</comment>


Show HN: GIFTCARDzilla.com - The discount gift card exchange marketplace - <AUTHOR>

My recently launched discount gift cards exchange marketplace http://www.giftcardzilla.com, aggregating discount gift cards from more than 6 shops currently (more to be added soon).
I started working on this project last year. When I was working on my site last year, Cardnap.com launched  with a good write-up at Techcrunch.com. But they folded soon and I got more encouragement to launch my site after re-writing the entire code.
After overcoming my fear, at last I launched the site this month after doing a UI makeover. I am improving it day by day, adding more functionality and more stores. Appreciate fellow hackers's feedback and encouragement.
This site may not become a big hit, but I learned a lot from launching this site. Including project management, User Design, PHP & web crawling, hosting on VPS (Linode - Best VPS hosting) and more. <comment><AUTHOR> clickable link <http://www.giftcardzilla.com></comment>


Showing Growl Notifications for New Web Visitors - <AUTHOR> http://chicocharlesworth.wordpress.com/2011/07/31/showing-growl-notifications-for-new-web-visitors

<comment><USER2> Stop alienating users. This is the kind of thing that makes me leave a website, or use the google cache.</comment>


Ask HN: Hiring tools/applications for small companies - <AUTHOR>

I am trying to figure out how the small companies go about doing their hiring. What are the popular tools/applications they use to find, sort and manage applicants? <comment><USER2> Check out The Resumator for an elegant way of managing hiring from posting to organizing to filtering and beyond. The founder Don Charlton is a great guy who provides great service and just "gets it"

<http://TheResumator.com></comment>


IEEE bans Huawei staff from peer review of research papers - <AUTHOR> https://www.scmp.com/tech/big-tech/article/3012336/worlds-largest-technical-professional-society-bans-huawei-staff-peer <comment><AUTHOR> My faith in the "free world" dwindles day by day. Seems like "academic freedom", "free speech" and the like are only catchphrases for a higher purpose.

The white man does indeed speak with forked tongue.[1]

[1][https://www.counterpunch.org/2015/07/07/beware-those-who- spe...](https://www.counterpunch.org/2015/07/07/beware-those-who-speak-with- forked-tongues/)

<comment><USER2> It's "free" as long as it meets capitalistic and imperial goals.

<comment><AUTHOR> That's correct. Also my feeling at this point.</comment></comment></comment>