IBM Chip Processes Data Similar to the Way Your Brain Does - <AUTHOR> http://www.technologyreview.com/news/529691/ibm-chip-processes-data-similar-to-the-way-your-brain-does/ <comment><USER2> Yann LeCun (neural net pioneer and Facebook AI head) has a somewhat-skeptical post about this chip: [https://www.facebook.com/yann.lecun/posts/10152184295832143](https://www.facebook.com/yann.lecun/posts/10152184295832143). His essential points:

1\. Building special-purpose hardware for neural nets is a good idea and potentially very useful.

2\. The architecture implement by this IBM chip, spike-and-fire, is _not_ the architecture used by the state-of-the-art convolutional networks, engineered by Alex Krizhevsky and others, that have recently been smashing computer vision benchmarks. Those networks allow for neuron outputs to assume continuous values, not just binary on-or-off.

3\. It would be possible, though more expensive, to implement a state-of-the- art convnet in hardware similar to what IBM has done here.

Of course, just because no one has shown state-of-the-art results with spike- and-fire neurons doesn't mean that it's impossible! Real biological neurons are spike-and-fire, though this doesn't mean the behavior of a computational spike-and-fire 'neuron' is a reasonable approximation to that of a biological neuron. And even if spike-and-fire networks are definitely worse, maybe there are applications in which the power/budget/required accuracy tradeoffs favor a hardware spike-and-fire network over a continuous convnet. But it would be nice for IBM to provide benchmarks of their system on standard vision tasks, e.g., ImageNet, to clarify what those tradeoffs are.

<comment><USER3> I find it interesting that no group (to my knowledge) has tried something similar to [Do Deep Networks Need to Be Deep?]([http://arxiv.org/abs/1312.6184](http://arxiv.org/abs/1312.6184)) for ImageNet scale networks. There have been several results which show that the knowledge learned in larger networks can be compressed and approximated using small or even single layer nets. Extreme learning machines (ELM) can be seen as another aspect of this. There have also been interesting results in the "kernelization" of convnets [from Julian Mairal and co.]([http://arxiv.org/abs/1406.3332](http://arxiv.org/abs/1406.3332)) that, accompanied by the stong crossover between Gaussian processes and neural networks from back in late 90s, point to the possibility of needing different "representation power" for learning vs. predicting which may lead to the ability to kernelize the knowledge of a trained net, ideally in closed form.

I am doing some experiments in this area, and would encourage anyone thinking of doing hardware to look at this aspect before investing the R&D to do hardware! If this knowledge can really be compressed it could be a massive reduction in complexity to implement in hardware...

I am a bit biased on this topic (finishing a talk about this exact topic for EuroScipy now) but I find the connections interesting at least.

</comment></comment><comment><USER4> For a technical article about the architecture , see :

[http://www.research.ibm.com/software/IBMResearch/multimedia/...](http://www.research.ibm.com/software/IBMResearch/multimedia/IJCNN2013.algorithms- applications.pdf)

</comment><comment><USER5> I'm very excited about this, as it's at least 2 decades overdue. When Pentiums were getting popular in the mid 90s, I remember thinking that their deep pipelines for branch prediction and large on-chip caches meant that fabs were encountering difficulties with Moore's law and it was time to move to multicore.

At the time, functional programming was not exactly mainstream and many of the concurrency concepts we take for granted today from web programming were just research. So of course nobody listened to ranters like me and the world plowed its resources into GPUs and other limited use cases.

My take is that artificial general intelligence (AGI) has always been a hardware problem (which really means a cost problem) because the enormous wastefulness of chips today can't be overcome with more-of-the-same thinking. Somewhere we forgot that, no, it doesn't take a billion transistors to make an ALU, and no matter how many billion more you add, it's just not going to go any faster. Why are we doing this to ourselves when we have SO much chip area available now and could scale performance linearly with cost? A picture is worth a thousand words:

[http://www.extremetech.com/wp- content/uploads/2014/08/IBM_Sy...](http://www.extremetech.com/wp- content/uploads/2014/08/IBM_SyNAPSE_20140807_005.jpg)

I can understand how skeptics might think this will be difficult to program etc, but what these new designs are really offering is reprogrammable hardware. Sure, we only have ideas now about what network topologies could saturate a chip like this, but just watch, very soon we'll see some wizbang stuff that throws the network out altogether and uses content addressable storage or some other hash-based scheme so we can get back to thinking about data, relationships and transformations.

What's really exciting to me is that this chip will eventually become a coprocessor and networks of these will be connected very cheaply, each specializing in what are often thought of as difficult tasks. Computers are about to become orders of magnitude smarter because we can begin throwing big dumb programs at them like genetic algorithms and study the way that solutions evolve. Whole swaths of computer science have been ignored simply due to their inefficiencies, but soon that just won't matter anymore.

<comment><USER6> _I remember thinking that their deep pipelines for branch prediction and large on-chip caches meant that fabs were encountering difficulties with Moore 's law_

It's really a combination of memory latency and pipelining.

Memory latency is absolutely terrible compared to processor speed, and that has nothing to do with Moore's law. It's 60ns to access main memory, which is ballpark 150 cycles. If you have no caches, your 2.5Ghz processor is basically throttled to 16Mhz. You can buy some back with high memory bandwidth and a buffer (read many instructions at a time). But if you have no predictor, every taken branch flushes the buffer and costs an extra 150 cycles- in heavily branched code your performance approaches 8Mhz.

Then think about pipelining. We don't pipeline because Moore's law has ended. We pipeline because a two-stage pipeline is 200% as fast as an otherwise identical unpipleined chip. A sixteen-stage pipeline is 1600% as fast. Why the hell _wouldn 't_ you pipeline? Now, of course in the real world branched code can tank a deep pipeline. Which is where the branch predictor comes in, buying back performance.

[http://stackoverflow.com/questions/4087280/approximate- cost-...](http://stackoverflow.com/questions/4087280/approximate-cost-to- access-various-caches-and-main-memory)

<comment><USER7> >>> If you have no caches, your 2.5Ghz processor is basically throttled to 16Mhz.

No. This is only true if every instruction tries to access memory.

>>> We pipeline because a two-stage pipeline is 200% as fast as an otherwise identical unpipleined chip. A sixteen-stage pipeline is 1600% as fast.

No. First of all, each stage in the pipeline will be equal to the slowest stage. Second, there will be significant overhead of passing data through pipeline registers, and of control logic for those registers.

The reason we saw 32 stage pipelines in P4 was mostly marketing: "megaherz race" between AMD and Intel.

<comment><USER8> >>> No. This is only true if every instruction tries to access memory.

Every instruction must be loaded from memory in order to execute it. Hence instruction caches.

<comment><USER7> Yes, you're right, I missed that.

</comment></comment></comment></comment></comment><comment><USER9> While the efficiency gains are nice and definitely welcome, it would be interesting to see what the performance gains are over a GPU. The article makes the chip sound somehow superior to existing implementations but really this is just running the same neural network algorithms we know and love on top of a more optimized hardware architecture.

Meaning I have no idea how this signals the beginning of a new era of more intelligent computers as the chip provides nothing to advance the state of the art on this front. Unless I am missing something?

<comment><USER10> A difference is that a GPU uses a lot of power and takes up a lot of space. I can imagine an optimized, energy-efficient chip would be useful in embedded systems. Something like a Raspberry Pi for image processing maybe?

<comment><USER11> Like Tegra K1? GPUs are more energy efficient than normal CPUs for some tasks, so getting lower absolute power consumption is just a matter of using fewer cores.

</comment></comment></comment><comment><USER12> I wonder what the possibilities are for adding a neuromorphic chip to a normal stack for specialized tasks such as the image/video recognition (cpu, gpu, npu). GPUs are very similar in their need for specialized code vs cpus.

Just an uneducated wild-thought.

<comment><USER13> This is something I'm interested in discovering as well. I view most of these developments as modular components that could be used in conjunction with existing processor pipelines. For instance, with these 'neural' chips, I could imagine an existing processor querying the neural chip to look for particular activation patterns. Though I'm not too sure on the language one would use to specify which patterns to look for... Perhaps you could extract the parameters from the neural chip itself through a learning process, which you'd then use to bootstrap the process a bit and know what to look for? I'd imagine a lot of formal research is still needed here.

Neat developments, excited to see how they shake out.

<comment><USER14> One possibility is to use the neuromorphic chips as souped-up branch predictors -- instead of predicting one bit, as in a branch predictor, predict all bits relevant for speculative execution. This can effect large-scale automatic parallelization.

See this paper at ASPLOS '14 for details:

[http://hips.seas.harvard.edu/content/asc-automatically- scala...](http://hips.seas.harvard.edu/content/asc-automatically-scalable- computation)

</comment></comment></comment><comment><USER15> The interesting thing about this project is that they're using transistors to physically simulate synapses and neurons, which is quite an inefficient method. Transistors are expensive, and your brain has about 100 billion neurons, and trillions of synapses.

A recent discovery by Leon Chua has shown that synapses and neurons can be directly replicated using Memristors [1]. Memristors are passive devices which may be much simpler to build in the scale of neurons compared to transistors.

1\. [http://iopscience.iop.org/0022-3727/46/9/093001/](http://iopscience.iop.org/0022-3727/46/9/093001/)

<comment><USER16> Actually this chip is not _that_ far off. It has 5 billion transistors so with a process shrink and a board with 10-20 of these chips it should be roughly equivalent to the number of neurons in a human brain. Now think of your home with about 100 of things connected to your network and your house will be pretty darn smart!

<comment> alok-g You are quite off here. A transistor is simply not as powerful as a neuron. The article itself notes that the chip is capable of simulating "just over one million \"neurons,\"".

</comment></comment></comment><comment><USER17> Lots of problems with the way this is presented in the article. Though the chip is patterned after a naive model of the human brain, the headline assertion is far too bold. Additionally, while the Von Neumann architecture can be characterized as bottlenecked and inefficient, it has also allowed for extremely cheap computing. A processor with all of its memory on the chip would not be inexpensive. Note this article never mentions the cost of the chip nor its memory capacity.

The comparison of this chip's performance with that of a nearby traditionally- chipped laptop is questionable. A couple of paragraphs later it says that the chip is programmed using a simulator that runs on a traditional PC. So I'm guessing the 100x slowdown is because the traditional PC is simulating the neural-net hardware, rather than using optimized software of its own.

Yes, this is important research, but engineer-speak piped through hype journalists will always paint an entirely unrealistic and overoptimistic picture of what's really going on.

</comment><comment><USER18> What percentage of readers know you could fill a football stadium with these chips and for many tasks it wouldn't come close to a human brain with today's knowledge of software? I love news like this just feels like analogies using brains are easy to overhype.

<comment><USER19> I think work like this is very important. In the 1940s you could fill a football stadium with about 50 ENIAC computers and you wouldn't have 1/1000th the processing power of an Iphone. Your statement gives useful perspective in one direction, but exponential improvement cannot be ignored. There can't be any doubt that neuromorphic chips have a lot of wiggle room to explode in capability in the coming decades.

<comment><USER20> > have a lot of wiggle room to explode in capability in the coming decades.

Are you sure about that? CPU speeds have not improved in years. We appear to have hit a maximum, at least for now. (Of course I can't predict the future, but it's been years now and no change.)

<comment><USER21> Clock Frequency != Speed.

Otherwise we would still be using (very cheap) Pentiums IV.

In a way, it's a testament to human ingenuity that CPUs have kept improving they way they have when the brute force way of increasing performance was not as viable as before.

</comment></comment></comment></comment><comment><USER22> Although IBM's hardware implementation does not support the current hotness in neural models, I still think that this is a big deal, both for applications with the current chip and also future improvements in even less required energy and smaller and more dense chips.

I was on a DARPA neural network tools advisory panel for a year in the 1980s, developed two commercial neural network products, and used them in several interesting applications. I more or less left the field in the 1990s but I did take Hinton's Coursera class two years ago and it is fun to keep up.

</comment><comment><USER23> Anyone got something more technical? I googled a bit and I can't seem to find anything beyond marketoid handwaving

<comment><USER24> Look for papers by Carver Mead from Caltech in the '80s, these are all based off of those concepts I think.

</comment></comment><comment><USER24> Wonder if they are then going into direct competition with Qualcomm and Samsung; all these companies have quite active neuromorphic chip research groups going.

<comment><USER25> They did it using a Samsung die manufacturing process if I'm not mistaken.

</comment></comment><comment><USER26> NY Times article, by John Markoff: [http://www.nytimes.com/2014/08/08/science/new-computer- chip-...](http://www.nytimes.com/2014/08/08/science/new-computer-chip-is- designed-to-work-like-the-brain.html)

</comment><comment><USER27> If you are a scientist, here is the Epistemio page for rating and reviewing the scientific publication discussed here: [http://www.epistemio.com/p/AJ09k7Yx](http://www.epistemio.com/p/AJ09k7Yx)

</comment><comment><USER28> Is it a sort of general purpose neural-network hardware ?

</comment><comment><USER29> 'IBM Chip Processes Data Similar to the Way Your Brain Does'

Interesting, I did not know that we already know how the brain 'processes data'.

<comment><USER30> They are referring to the fact it uses a connectionist architecture rather than a von Neumann one.

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

<comment><USER29> That says most nothing. The brain uses various forms of neural networks of whose data processing we know relatively little. The IBM chip is at best somehow 'inspired' by the brain. It's far from working like it.

<comment><USER30> More specifically it's also a spiking neural network. You could probably program it to efficiently run very similar algorithms to human neurons.

</comment></comment></comment></comment><comment><USER31> vonsydov's link is not dead and I don't know why his comment was downvoted or why I can't reply to it. There's nothing wrong with his link, though this one may have been slightly better

[http://dx.doi.org/10.1126/science.1254642](http://dx.doi.org/10.1126/science.1254642)

More broadly, I don't understand why HN seems to prefer press pieces (so often containing more inaccuracies than useful information) to the papers on which they're based.

In this case, even if you can't access the full text, the single-paragraph abstract contains all of the new information in the 12-paragraph Tech Review story.

<comment><USER32> vonsydov's account has been hellbanned for 52 days.</comment></comment>


Pillow and iOS 8: HealthKit - <AUTHOR> http://neybox.com/pillow-and-ios8-healthkit/

<comment><USER2> I'll talk to something that Pillow did for me that I couldn't easily find in other sleep tracking apps: audio recording. For the past couple of months in my new place, I couldn't figure out why that no matter how much sleep I got, I still woke up absolutely drained and tired. Other sleep tracking apps showed nothing out of the ordinary in my sleeping patterns and they even matched previous sleep cycles.

After the first night of using Pillow, I immediately found the problem. I learned that throughout almost the entire night I would go into these throat- scratching fits. The reason the other apps didn't show anything is because my movement didn't change, I would just lay there and scratch my throat. On a recording it sounds like a frog croaking. Except this would go on for 15-20 minute intervals nearly 8 times throughout the night. This was a clear sign of my allergies; whenever I'm awake and up and I knowingly make that sound, it's because something is irritating my allergies to such a degree that "throat- scratching" helps soothe it. Now I take a generic Zyrtec before bed, and I sleep like a baby again.

Now this wasn't a very scientific test (I didn't use Pillow or attempted audio-recording before I moved into the new place), but it showed me how easily this information could help me and my doctors. Now connecting this app, with other health apps I use on a whim (weight-tracking, food-tracking, etc). I could make correlations (but not causations) into what could be making me "sick".

To the poster who said "your body knows how to take care of itself", in relation to sleep, that really isn't true for me. From someone who suffers from multiple things that directly affect my sleep, I can tell you my body does not know how to take care of itself. Apps integerating with each other will help find more data relevant to one other than most of us realize. Trying new things, and see how we are affected by them, with data to back it up, will be greatly helpful.

</comment><comment><USER3> I recently gave up on sleep tracking after doing it for over 2 years( neo, up band ect). It became one more thing to worry about. Just exercise, don't worry too much, read/learn, try to eat healthy and go to bed and don't worry too much about sleep quality/length etc, your body knows how to take care of itself.

</comment><comment><USER4> I'd love to hear from some iOS developers who have played around with HealthKit, and get their take its strengths and weaknesses

<comment><USER5> I got to look at the API docs during the first beta. I'm sure things have changed and more features have been added so take my analysis with a grain of salt.

The HealthKit API is basically just a shared database with specific functions and structures used for measuring fitness units (e.g. time, distance, steps, heart rate, blood pressures, etc). There's a permissions model for granting read/write access to the various counters. It can also track some vitals (height, weight) and emergency contact information. And that's pretty much it.

I don't think HealthKit is really designed to do more than facilitate the storage and sharing of personal fitness data. It should have been named FitnessKit.

</comment></comment><comment><USER6> How does Pillow compare to Sleep Cycle?

<comment><USER7> I tried to make the move from Sleep Cycle to Pillow and found myself going back to SC. Pillow may be prettier but it doesn't seem as usable as SC.

<comment><USER8> How so? Less effective or just bad UI?

</comment></comment></comment><comment><USER9> The excitement I feel every time HeathKit is mentioned dies away when I realize it's not about HeathKit but about HealthKit.</comment>


Jumpsuit – React/Redux made simple - <AUTHOR> https://medium.com/@tannerlinsley/jumpsuit-react-redux-made-simple-e3186ba1b077#.ccuhohh9b <comment><USER2> Of course I find out about this right after deciding on MobX for our latest project since my coworker was having trouble with Redux. I think this would have saved it, looks great.

<comment><AUTHOR> MobX is pretty amazing too. Faster, less boilerplate and much easier to understand for people who come from OOP. Also much better if you like Typescript (and you should like Typescript).

</comment></comment><comment><USER3> Jumpsuit is a powerful and extremely efficient Front-end framework & CLI. It is the fastest way to write scalable react/redux apps with the least overhead.

No boilerplate Dedicated build system Scaffolding tools Minimal API Simple and scalable state management based on redux

You can have it installed and be writing actual code (not setup or boilerplate) in less than 5 minutes.

Already have your own build system? Just use the module and ditch you react/redux boilerplate!

</comment><comment><USER4> Looks rad. Good work.</comment>


Ask HN:  I program in pure PHP - Should I be doing something different? - <AUTHOR>

I graduated from a state university with a degree in Marketing, but I started programming as a junior in high school.  Besides a few high school courses, I have no formal training and program for the web in php with no frameworks (except jquery for javscript/ajax functions).
I see a lot of rapid development discussion and I like cranking out relatively simple websites quickly, but I think I am limited by the programming techniques I am using.  For example, I programmed (isWearing.com and SmarterFootball.com), and I used a lot of the similar features into a prototype I made this past week (foodmarkit.com).  All three sites are relatively uncomplicated (mostly database driven), but it took a long time to recreate the same basic processes.  I'm assuming "there's gotta be a better way".  So... what is out there?
I've heard a lot about django, ruby on rails, pythong etc...  What do you think is the best option for me and rapid development? <comment><USER2> The best option would be to pick _a_ framework and learn to use it. I may get flamed for this view, but I don't really think it matters as much _which_ framework you choose, just choose one and learn to use it well. Invest time in to learning with it on a throwaway project.

You will not be as productive end-to-end on day 1 as you are with your current tools - that's OK, because after learning _a_ framework, you _will_ be more productive than pure hand-coding for any web-app of any complexity. You'll likely be safer, because there's been more effort put in to most frameworks to help protect against web attacks (SQL injection in most cases).

Learning a framework will teach you to think differently about your development process, as well as introduce you to a community of like-minded developers all using the same tool. It will help you _develop_ a development process.

You'll get to the point where you're comfortable and productive, and then you'll start noticing limitations in whatever framework you're using. That's the time to start looking for another one, and either jumping over to using that, or more ideally, looking at what ideas and components you can reincorporate in to your current tech stack.

I love Grails (Java) because, while it's niche, it makes model-drive development a snap. I create classes, identify relationships, and the system can generate the db layer (tables, etc) for me automatically. There are ways to do some of this in PHP, but the language itself makes this extremely verbose. However... I still use PHP (now using zfkit as a basis) for some projects, and have done some .Net work where it made sense (on an MS-only project, to be precise).

It's easier to jump around now because I've spent time understanding not just the particular languages involved, but thinking about how web apps are commonly abstracted (MVC, service layers, db layers, etc). Understanding those common patterns makes it easier to swap between frameworks and platforms as needed.

Gentle plug - I'm working on a starter kit for zend framework - zfkit.com - which aims to bring a somewhat better 'out of the box' experience to ZF (at least from my perspective). You can download and it's bundled and preconfigured to use the Doctrine ORM tool. That said, if ZF and Doctrine rather make you say "huh?" it may not be for you just yet. :)

</comment><comment><USER3> If you are new to MVC frameworks, you can get started very quickly with Codeigniter or Kohona. Otherwise, it's really worth investing some time learning Symfony or cakephp.

Another way to go would be to learn a ORM (doctrine) and a templating engine (tinybutstrong or smarty). I have never done any big php project without the help of frameworks, but some of my work friends find this approach (templating engine + ORM) more easier and better. I can't agree with them, though.

Frameworks are not all about rapid development. If used properly, they structure your application and make it easier for maintain.

</comment><comment><USER4> Since you are already comfortable somewhat with PHP, I suggest you take it in and work on it for a while till you understand the life cycle of a web application. I highly recommend Codeigniter framework - it does a lot of heavy lifting for you.

Taking this route will also help you realise what you like and don't like about PHP. THEN, you will be in a better position to judge if something like django or ruby on rails would suite you better.

</comment><comment><USER5> You should take a look at the Yii framework.

<http://www.yiiframework.com/>

</comment><comment><USER6> The problems I have with frameworks are bloat and that they force you to work in the way that the creator of the framework has visioned, if you find a framework that fits you than you should consider yourself lucky and in that case you'd better use it to your advantage. I advice you to stick with PHP for web development opposed to other languages, in itself it would not matter which language you use, but PHP has always been focused on web programming and has resolved most underlying problems dealing with that web programming, I personally also find it one of the most productive languages not much different from C in the compiled world. I think the best option is to slowly create your own framework (PHP Classes) so it fits your way of thinking and problem solving best.

</comment><comment><USER7> Welcome to the world of web development! You are going to be recreating a lot of stuff (especially if you are going to be working for a corporation). I have a little experience with using djano but, I do most of my work in PHP. I have started to like Zend Framework(ZF) and I would recommend that to you as you already know PHP (instead of learning django, ror, etc.). ZF should speed up your development a bit. These days, I mostly prefer doing Sys Admin stuff and playing with Javascript and I shudder at creating a web app from scratch. When I am not working for money, I do not force myself to create a web app. But, when I do start working on something I tend to work extremely hard.

</comment><comment><USER8> There are a lot of PHP based frameworks along you want to deal with the verbosity of the PHP language.

Two types of frameworks : "Full stack" and "glue" "Full Stack" are more automated and 'easy' to start and create CRUD. "Glue" are more powerful, full of libraries but less automated and a learning curve more demanding.

Full Stack \- Cakephp \- Symfony \- Kohana \- CodeIgniter

Glue \- Pear \- Zend Framework

The two extremes are Cake and Zend Framework

If you want to stay with PHP try Kohana. If not, Rails (Ruby) or Django (Python) are the best out there.

I recommend you to stop deciding and start doing something with one of these.

</comment><comment><USER9> My first post here. I am not a full-time-webdeveloper.

Catalyst framework, Mason and TT templating works quiet well for me even with existing static site rewrites. The templating also helps me manage many other text files,like invoices. For a CRUD the external database can reuse the nicely generated Schema and Model classes.

catalyst is written in perl and parts of it in c.

I also used php4, django, pylons, and zope and find catalyst the lesser problem when moving from webservers to webservers, version to version, config to config etc.

</comment><comment><USER10> Try web.py [1]. It's a lightweight python framework for developing web apps. I personally like the Jinja templating engine [2] in conjunction.

You will love it, and I bet you'll enjoy python! :)

[1] <http://webpy.org/>

[2] <http://pypi.python.org/pypi/Jinja2>

</comment><comment><USER11> _but it took a long time to recreate the same basic processes._

Are you using Drupal? if you are doing a lot of the same boiler plate it may be because you are not using a CMS that will allow you to reuse components across sites. Something like Drupal may help you to make your UI components more reusable while still allowing you to use PHP.

</comment><comment><USER12> Django. It'll change your life.

<comment><USER13> I think Django is extremely powerful, the way it lets you cleanly integrate entire pre-built features adding two or three lines is amazing, but understanding this is my own experience and doesn't reflect the general case, I found it daunting at first. My perception is that it is aimed at the large, full-featured, content-rich website, not the over-the-weekend one-trick-pony project you are more likely to start when you are still learning.

</comment></comment><comment><USER14> If you want to stay with PHP (which is not a bad choice, contrary to what you might hear from the hip crowd) you might want to try symfony. It's just one of many PHP MVC Frameworks, but I think its one of the better ones.

</comment><comment><USER15> You might try CakePHP (<http://cakephp.org/>), the rails inspired framework.

</comment><comment><USER16> CODEIGNITER

I use a variety of languages and frameworks, and CodeIgniter is the closest to what you described you're used to with some great boiler plate code. I've done everything from simple one off CMS apps to very robust multi site automated apps, all in Codeigniter.

Check it out, it's easy to get started with, you don't need the command line, there's no magic. Just helpful code.

<comment><USER4> I really recommend Codeigniter also. It's awesome and will be right within your comfort zone. The documentation is also really good.

</comment></comment><comment><USER17> Learn CodeIgniter or CakePHP, you'll be amazed at how quickly the sites come together after a couple months of learning, esp. when you're building from scratch. A site that took me two months in vanilla php can take 2 weeks in codeigniter. However, retrofitting a site that someone else made with those frameworks can be a frustrating experience, as everyone has their own quirks when learning frameworks. Retrofitting vanilla php couldn't be easier if it tried.</comment>


Cool stuff with CSS3 vw and vh units - <AUTHOR> http://www.tipue.com/blog/css3-vw-vh/

<comment><USER2> "Given how powerful they are, they seem to be surprisingly underused."

"At present, vw doesn't scale dynamically in Chrome and Safari, you have to refresh the browser."

Seems pretty obvious why they're (currently) underused.</comment>


Ask HN: Is this a scalable idea? - <AUTHOR>

I'm just trying to continue a conversation I had with a colleague..
Imagine putting together a team of designers and developers, engineers and an overall team of technical gurus. This team is pretty much capable of building anything in a decent amount of time. (for conversation sake, only web/mobile apps)
Now imagine this team puts up a website asking the people of the world to submit ideas, or things they want built. A Request for Product, if we have to give it a name.
For example; I'm frustrated with all the accounting software thats available to me. I want simple and easy way of tracking expenses.. and I want my app to process my taxes on a day-by-day basis. I don't want to build it. I don't care for that. I just have a need for such an app as a user.
I would goto this site and say this is my frustration and put the idea up for vote. If it hits a certain threshold in votes and interests, the team (company) takes over and dedicates labour and money to build the product.
When the product is built A) it can be open-sourced and released for anyone to use
B) spin into a company of its own with for-profit focus
All the while you are achieving market fit through the feedback, free marketing, and a high-conversion on everything you build. Only the most popular ideas get built minimizing the failure rate.
Does this seam feasible? Is it a small business or can it scale? Ideas to make this better?
I'm not taking ownership of anything discussed here, so you're welcome to chime in freely and put it to good use.
Cheers <comment><USER2> I've had similar conversations with colleagues. I love the idea and hope to someday try it.

One method I like is to use a simple agile/scrum type project where the product backlog is crowdsourced.

</comment><comment><USER3> What you are describing is not too different from micropledge, a company that was one of the first to be funded by YC. The largest differences I see is that you want to have your group of technical people defined a priori, while micropledge was more of a buyer/seller market.

Finding out what happened to them is left as an exercise to the reader.

<comment><AUTHOR> Yea.. it's too bad they could have done a lot more with at the time. Looks like all the projects are abandoned.. the earliest activity I can find is from 23 months ago.

</comment></comment><comment><USER4> You don't need to assemble the team.

You can build a web site as a one or two person company, and the idea with enough traction you out source each part to oDesk or similar (as your team of technical people).

</comment><comment><USER5> Your model makes the assumption that "people of the world submit ideas" and "vote". Gaining a userbase, even nonpaying, is at minimum - half the battle.

</comment><comment><USER6> Here is an example of an attempt. <http://www.cambrianhouse.com/>

<comment><AUTHOR> It looks like they surveyed the crowd, got acquired and the ideas are all on the back burner.

I'm picturing a more robust system where all the process is transparent and inclusive for the same people who voted/requested them.

Thanks for the link, worth the look!

</comment></comment><comment><USER7> elance.com? After you assemble your star team, why not carefully select profitable projects instead? The team probably costs you $50K-$100K per month. It seems that a more typical consulting or product business would be more profitable.</comment>


Australia passes social media law penalising platforms for violent content - <AUTHOR> https://www.theguardian.com/media/2019/apr/04/australia-passes-social-media-law-penalising-platforms-for-violent-content <comment><USER2> Australia: slowly moving closer and closer to nanny state fascism.

</comment><comment><USER3> the bill that passed today:

[https://www.aph.gov.au/Parliamentary_Business/Bills_Legislat...](https://www.aph.gov.au/Parliamentary_Business/Bills_Legislation/Bills_Search_Results/Result?bId=s1201)

continuing trend of Australia passing anti-tech bills with almost no opposition</comment>


Show HN: Replays of technical interviews with engineers from Google, FB and more - <AUTHOR> https://interviewing.io/recordings <comment><USER2> "...if you're trying to get better at technical interviews, the best way to do that is to actually do it."

No dammit, I don't want to get better at technical interviews - I want to live in a world where we don't need them. Why not fix the root problem instead of amplifying it?

<comment><USER3> I agree completely. But for now, that's a pipe dream. If you want to be in this world, resources like this do help. "Cracking the coding interview" is a great study resource, but how do you actually get feedback and practice? This could be useful.

I wouldn't discourage someone from becoming a software developer, since there are good careers to be had here. But in general, I think it's probably a good decision to go into a different field, if you have the skill and talent to do so, and you aren't bound by visa restrictions that limit what jobs you're allowed to work,

</comment></comment><comment><USER3> This is valuable. Thank you for creating and posting it.

First, it's an excellent reference for people who don't really understand technical "interviews" and their exam-like nature. Most interviews in other fields do probe knowledge, but interviews in our fields really are exams.

Another factor is that there's very little knowledge of information out there. We take these exams under conditions of secrecy, with very little feedback. For example, there are scores for my performance on interview exams in a database somewhere at google, but I'm not allowed to know how they were judged, who scored them, or what the scores are. I actually don't know what would be considered a good or bad performance. This site helps me get a better sense of how these are conducted and evaluated.

From a business point of view, it's also clever. People really do want to get feedback, the kind they can't get from Google or other interviewers, in part because of liability issues. So by providing an area to practice, the placement site can identify people who are most likely to get through the technical interview - which means they are most likely to place candidates. Not bad.

That said... I'm still not surprised that people who have the skill and focus to become software developers take a look at how tech interviews work and decide that they would much rather work in a different field.

</comment><comment><USER4> The complexity of the forwarded message problem is wrong. Any algorithm solving this can be used to answer whether a graph of order n is Hamiltonian by simply asking if the longest forwarding path is of length n-1. Thus, either the complexity is nonpolynomial or the interviewee has just won the million dollar prize for solving an NP-complete problem in polynomial time.

<comment><USER5> A linear solution for this problem is possible under the assumptions that the graph is directed and acyclic. The directed nature of the graph in this particular example is very clear, and because an individual doesn't forward a message more than once, there are "basically" no cycles.

Had to Google what a Hamiltonian graph was though. I've been listening to the musical too much.

<comment><USER4> The stated problem does not produce an acyclic graph. For instance, if A has B in their contacts, then B is not forbidden from having A in their contacts. In fact, by ensuring that for all A, if A has B as a contact, then B has A as a contact, we can eliminate directedness from the graph and, via isomorphism, pretend we are operating on an undirected graph.

The requirement that no actor forward a message twice is merely equivalent to finding a simple path through the graph. It does not "basically" mean there are no cycles.

<comment><USER5> I see what you mean, but it just boils down to how you interpret the problem. Specifically, if you focus on the actual forwarding paths instead of the contact lists, the tree structure that enables the linear solution becomes more clear.

As I'm guessing was intended, this problem is particularly well-suited for engineering interviews because you can start with an easy example (the DAG one could derive in this specific interview) then ask the applicant how the solution would change given the additional constraints you've described.

<comment><USER4> That's simply not correct. Do an example. What graph do you draw? That's the underlying graph that has to be acyclic. Where is this supposed tree structure coming from? Try a dense graph, like with n=5, and every actor having at least 3 contacts.

</comment></comment></comment></comment></comment><comment><USER6> These recordings are really useful. Does anyone know how representative these are from actual interviews? For example, for the interview question on finding pairs in array that sum to k, the case where duplicate numbers in input array sum up to k is missed, and the interviewer didn't bring it up. Also, the space complexity of in-place quick sort is log(n), since the indices need to be kept in each call to sort subpartitions.

</comment><comment><USER7> The audio quality of these interviews made me grimace. Audio quality aside, this looks like it would be a great resource for anyone trying to go through a "FAANG-style" multi-round interview process.

<comment><USER8> '"FAANG-style" multi-round interview process.'

Small nitpick: in most cases, these companies make a hiring decision with just _one_ round of interviews (if you exclude the technical phone screen, which is a way to reduce wasting everyone's time when it's obvious it's a poor fit).

As both a candidate and as a hiring manager, I much prefer to have a single round of on-site interviews, vs. having the candidate come on site more than once. Good candidates probably have a good job already, and asking them to take multiple half days off to interview is an unnecessary burden.

<comment><USER9> I think you are in the minority, but I agree

<comment><USER10> Software companies actually do this? That is the least efficient way for the company and the candidate to go through the interview process...

</comment></comment></comment></comment><comment><USER11> this is a brilliant concept, seems really useful for anyone prepping for a technical interview.</comment>


Newsonomics: With new roadblocks for digital news sites, what happens next? - <AUTHOR> http://www.niemanlab.org/2016/04/newsonomics-with-new-roadblocks-for-digital-news-sites-what-happens-next/ <comment><USER2> An interesting tidbit:

 _While the size of the U.S. digital audience is essentially static (up two points year over year) the amount of time spent on political news has ballooned.

Three years ago, political news accounted for 816 million monthly minutes of usage, according to Comscore. In February, it accounted for_ 2.36 billion _minutes — almost a tripling. February was a high-water mark, but political news hit one billion minutes in June 2015 and has grown steadily since._</comment>


Cornify (which launched on HN) won the People's Choice Awards at SXSW - <AUTHOR> http://scitech.blogs.cnn.com/2010/03/14/answers-unicorns-win-big-at-south-by-southwest-web-awards/

<comment><AUTHOR> It all started here 408 days ago:

<http://news.ycombinator.com/item?id=459861>

Rainbows and happiness to all.</comment>


Exchange 2010 beta: Screenshots  - <AUTHOR> http://www.zdnet.com.au/insight/software/soa/Exchange-2010-beta-Screenshots/0,139023769,339296014,00.htm

<comment><USER2> I like how ZDNet decided to combine the worst parts of a lightbox and a gallery to make this a torturous exercise in page loading and mouse dodging.

What a half-assed fail.

</comment><comment><USER3> same old windows ugly and outdated UI it depresses me to see those boring windows gray buttons

<comment><USER4> What you're looking at is the "Classic" UI theme. Windows has supported themes since XP (released in 2001), and as of Vista there is also an optional desktop compositor that uses GPU texturing and shaders for transparency and blur effects.

But this is a preview of Exchange Server 2010. Why exactly would you want GPU compositing or gradient buttons on a server?

</comment></comment><comment><USER5> 404</comment>


Everyme (YC S11) Launching Private Beta of New Address Book - <AUTHOR> http://everyme.com

<comment><USER2> I have over 600 contacts on my iPhone and it is a complete nightmare.

The fact that smart phones do not intelligently dial numbers based on where you are in the world is absurd (eg: prepend dialing code!!)

The fact I have numerous contacts of the same people, each with different details (eg: two direct contacts named Oliver Cameron, one with an email, one with a mobile phone number) and then the iPhone never telling you which is which when you need to sms/email.

I would also love smart contact groups, like extract all the contacts with _only_ email addresses, so that every time I wish to dial or sms a contact, I can only select actually useful ones. And so on.

<comment><USER3> > _... intelligently dial numbers based on where you are in the world ..._

I lived abroad for a year. The pain of manually adding '+44' to every contact in my addressbook (directly on my non-smartphone) meant that I've only used international numbers ever since.

<comment><USER4> Indeed, I've been travelling so much this year that every number now has +44 in it

</comment></comment></comment><comment><AUTHOR> Hey guys, founder of Everyme here. As for why this is different than a contact list, imagine if your address book was kept accurate and up-to-date magically. If a friend changes their phone number, why should your address book get out of date?

Couple that with having everything about your contacts at your fingertips (posts, messages, profiles), awesome automatic grouping, syncing to everywhere, and you have a completely new address book.

<comment><USER3> This sounds really interesting and I'm looking forward to seeing what you've got. Had several conversations with people about contact management and address books in the past and I expect you've had similar discussions. I'm curious to know your opinions.

One of the discussions I had revolved around ownership of data and there were basically two points of view, both perfectly valid.

The first PoV was that an owner/curator sees the address book as _theirs_ and if they add someone's details to it, those details should remain until the owner/curator decides to remove them. The second PoV was that someone should be able to 'grant access' to their contact info and if either party decides to break the connection, the contact info should disappear from both address books.

I'm firmly in the former camp since I don't like the idea of my address book becoming a volatile place (esp. since I have over 2k+ people in there). However, I can see the argument for having more control over who has my contact info.

I'm curious to know what approach you (and Everyme) has taken and what you think of the points above. Am I off the mark?

<comment><AUTHOR> I'm leaning very much towards everyone owning their own data. If someone doesn't want you to have their phone number, but you already know it, I don't think it's fair that the number should be deleted.

As Everyme syncs everywhere, deleting any type of info would be very, very bad.

</comment></comment></comment><comment><USER5> Thanks for bringing this up. Felt exactly the same pain, worked on it and _launched_ a solution. No private beta or invitations required - 100% public and free !

The result: A dead simple "remote control" which allows your contacts to update their information directly in your phone book.

All you need to do is:

\- setup trusted connections with friends by email address (invitations possible as well) \- enable sync via Google Sync (OAuth)

What you get: automatic and immediate contact updates straight into your phone when your contacts change their info.

Try it here: <https://addresspush.com>

Feedback seriously appreciated as well (here or on the site).

</comment><comment><USER6> It's great that Everyme is trying to address a very common contacts problem. I always use Google services to keep contacts up-to-date but when people change their contact details, I tend to confuse the old details with the new once after some time. And it's great Everyme is addressing this very same issue.

There are other problems related to contact management which some people usually get into too. I don't know if Everyme supports these, but here I go just in case.

1\. Not every mobile network allows calling when you are using the international extension for a local number. For example I have a mobile number which I use in Singapore which doesn't allow me to use have the singapore's international calling code in the number to call from singapore to singapore. So having the international code added to the phone number doesn't make sense all the time. When switching to such a network, we have to change all the numbers to comply with these conditions.

2\. Some mobile networks allows bypassing regular IDD and instead call through a VOIP service of their own. This is different from network operator to operator and operators require you to have a number prefix specific to the network if you want to make an international call through that service. But when you have more than 200-300 contacts in your phone, out of which at least 50 are contacts you regularly use, this becomes a headache to change these prefixes when you transfer from one network to other. I personally experience this trouble a lot as I am traveling between 4 countries regularly.

If Everyme can address these solutions, I'm sure this services will be a great win for lot of travelers.

Cheers!

<comment><AUTHOR> We're working on it, great to hear what people's specific problems are! Thanks.

</comment></comment><comment><USER7> I'm really glad to see a site, in YC, trying to tackle the problem of contacts. A particular problem I always see is that when people lose their phone, or lose all their numbers, they create groups or events on Facebook and spam their whole friend's list for numbers. Also, if people on my contact list change their number then all of a sudden I no longer have it. (emails, twitter accounts, etc too)

I'm happy for Everyme, but this really serves as more of a reminder to myself to follow my gut instinct. I had been working on my own version of a service that aimed to solve these exact problems that I felt like I had, myself. I had worked on it for about a month and had it working with full-text search on various info fields for each contact. I kind of wanted it to be a Quora (the find/ask a person feature) meets a cloud sync'd contacts service. Time to apply for YC S11 rolled around and I had planned on applying with this site, but at the last minute I switched to a location-based chat website, Geohello, which I posted on here. I spent a brief week or two on Geohello before switching to yet another site, which was a dumb location-based Groupon clone, for your iPhone, called Ayowe. I ended up applying to YC with both Geohello and Ayowe, instead of my contact info website, called Tactifo. Neither of the two sites I applied with got in. (I applied with two because I had a co- founder)

Just goes to show that I should have stuck with my gut and focused on the original site. Anyways, best of luck to Everyme! :)

</comment><comment><USER8> Hi. Please check out atomiccontacts.com. I've also tackled this problem and FWIW applied to YC S2011. My name's Neil Rahilly and I'd love to hear feedback from HN readers. Comment here or email directly me at firstname.lastname@example.com. Thanks!

</comment><comment><USER9> Oh boy, this is sorely needed on the iPhone. My address book is in pretty crappy condition and I've been setting up all of these facebook sync options that haven't panned out very well. Hopefully is aggregates contact information nicely.

</comment><comment><USER10> Interesting that Plaxo can be reinvented years later and get funded. And I don't mean that in a snarky way.

<comment><USER11> I, too, also immediately thought, 'So . . . Plaxo for your phone?' I notice that they have avoided any mention of Plaxo, so hopefully their service will not be a spammy waste.

<comment><AUTHOR> We've definitely learnt from Plaxo's mistakes. Our invite system is incredibly polite, for example if 10 people invite you, you'll only ever get one email.

</comment></comment></comment><comment><USER12> Cool idea. Time to guess on how the app will work:

-> Download the app.

-> Log in to one or more social networks, or create a contact-profile. Allow anyone who is your friend on a social network or already has your contact to stay up-to-date on changes to your contact information.

-> Check to see if existing contacts also have the app, and if so, then the two can now stay in sync forever! =)

-> Added bonus feature - all phone numbers will be stored with correct international extensions for easy international dialing.

</comment><comment><USER13> If this is executed properly it will be huge. A very big problem to tackle, but a sorely needed one as well.

</comment><comment><USER14> Is there an android client? Why is this better than any other contact list?

I know there was a post about how products don't need a homepage, just give an email form, but realistically I'm not likely to ever give my email out if I have that little information about a product.

</comment><comment><USER15> How will it "magically" update a contacts information if that contact is not also a user of the service? Also, will you be able to change a contact's name or will it only be what their "profile" is? (ie. changing "John Smith" to "John Smith YC09") Otherwise sounds amazing.

</comment><comment><USER16> Not sure about the other features (could not find it actually) but if only it lets me set a list of contacts for which it reminds me the birthdays and also tells me that I haven't talked to them in a long time. Sigh.

</comment><comment><USER17> How is it different from the Friends app on iPhone by Taptivate? <http://www.wired.com/gadgetlab/2010/11/friends-iphone-app/>

<comment><AUTHOR> We actually made that app, we've taken a lot of the tech from there and used it in Everyme.

</comment></comment><comment><USER18> By the graphic, I assume it's iPhone only? It's not clear otherwise.

<comment><AUTHOR> iOS and web at first, then followed shortly by Android.

</comment></comment><comment><USER19> What a fantastic splash page.

</comment><comment><USER20> Is this a big enough problem for average people? I know people create a "lost phone, need your number" Facebook group or event but is that enough of a pain? I've never seen more than one from the same person. So what exactly are you offering the average person with a messy, incomplete, and unsynced address book and why would they pay?

</comment><comment><USER21> I really need an app like this, can't wait to try out the beta!

</comment><comment><USER22> How is this different from HTC sync? Right now I have my Facebook contacts linked to contacts in my phone, and it pulls in information from their Facebook accounts?

<comment><USER23> Without ever getting into specifics, I use Google Voice integration (on my Sprint phone), and of course Gmail and Facebook, and HTC Sync linked them all and manages numbers/etc fantastically with just a few manual merges when I first got the phone.

It's really a wonderful feature.

</comment></comment><comment><USER24> What does it do?

</comment><comment><USER25> Love what you have so far on the website, can't wait to download the app. The design aesthetic is great.

</comment><comment><USER26> Where you inspired by Push Pop Press' old teaser page?

</comment><comment><USER27> How will it be different from Plaxo?

<comment><USER28> I worked on Plaxo (or as the kids call it today... 'some electronic rolodex company' :-) )

This idea sounds exactly like Plaxo.

That being said, I'll sign up and see what they are up to. I believe there is a lot of innovation that can still happen here. Just recently, a few companies trying to attack this space again.

Also, what I would really like to know is if they have something here or if this is just another YC email signup test.

We shall see.

<comment><AUTHOR> This isn't a test, we definitely have something here.

<comment><USER28> cool, looking forward to seeing it.

</comment></comment></comment></comment><comment><USER29> congrats oliver

<comment><AUTHOR> Thanks!

</comment></comment><comment><USER30> "every me"? how many of you are there?

</comment><comment><USER31> How is this gonna make you a million dollars? You're applying to YC, this ain't a hobby project, so that's why this is a legit question.

For the record, it doesn't really solve a pain for me. Just a minor annoyance, and it's not something I'm willing to spend money on. If you're making this to an app, remember that app sales are just 1 time profits. And the profit gradually goes down as your app lifetime goes up. Is earning $300K once (this is optimistic) really a serious business model?

<comment><USER32> Really?

If a million dollars is the target, just going through YC should do it for them. An acqui-hire deal generally nets more than $1M per founder.

If you'd like an example of how this can be at least a $150M business, check <http://www.crunchbase.com/company/plaxo>

<comment><USER31> So they're just betting on an acquisition? How about explaining how they're gonna make money w/o resorting to that?</comment></comment></comment>


Twilio Adds Low-Cost, Two-Way MMS Picture Messaging to Its API Cloud - <AUTHOR> http://techcrunch.com/2014/09/18/twilio-adds-low-cost-two-way-mms-picture-messaging-to-its-api-cloud/

<comment><USER3> This isn't related to the MMS announcement, but I'd like to give Twilio big, big props for being one of the most developer and technology-friendly companies out there.

Not only is their API easy to use, constantly improved, and impeccably supported, but over the course of the last year, they've donated thousands of dollars worth of free credit to technology activists including the EFF, Taskforce.is, and Fight for the Future. They've even modified their privacy policy to make it possible for my team at EFF to use Twilio on campaigns we run.

Rob Spectre, who's replying to comments in this thread, has been amazing too - offering hands-on support when we run big campaigns like The Day We Fight Back and last week's Battle for the Net.

Thanks to all the Twilio team. You rock.

</comment><comment><USER4> This is an amazing biz dev achievement. Twilio seems to be getting closer to aggregating all of the hard stuff in telco land every day.

It's hard to overstate just how hard this is to do. This isn't as simple as going to an aggregator and getting SMS done, MMS has been one of the last bastions of exerted carrier influence and it's slowly being democratized. This is the first time I can recall someone getting this level of access to MMS services within operators (please correct me if I'm wrong).

<comment><USER5> Much obliged Josh. Took a while, but we're having a lot of fun with it.

Text a pic of yourself to (646) 846-8238 - you should get a sweet mustache back.

<comment><USER6> Old unit testing habits compelled me to txt a photo that already has a mustache. Result? Better mustache. Test passed.

</comment></comment></comment><comment><USER7> Looking on the site, I see SMS/MMS support on all LOCAL US/Canadian numbers, but TFNs remain SMS-only. Just curious, any plans to add MMS to toll free numbers?

PS: still amazed that you got SMS working on TFNs, though I guess that's more of the SMS/800 (the organization charged with managing TFNs in North America, not to be confused with SMS messaging...)

<comment><USER8> SMS works on toll-free numbers now?! That just made my day.

</comment></comment><comment><USER9> Well, all the kudos should go to Bandwidth.com the primary carrier of of Twilio, Plivo, Google Voice, etc ...

<comment><USER10> Can you elaborate on the relationship between Twilio and Bandwidth.com? I actually have very little understanding of what happens once Twilio receives an API request.

<comment><USER9> Bandwidth.com being a wholesale carrier of VoIP services is the primary carrier for Twilio, Plivo, Google Voice, etc...

Bandwidth delivers SMS over SMPP. Initially the MMS launch was due for mid October, seems they launched it ahead of time.

In the following weeks you'll see lots of different providers announcing their MMS capability.

Bandwidth should get the credit for their brilliant work.

<comment><USER5> Bandwidth are indeed a bunch of bright folks that do good work and we work with them on a number of products, but to be clear we are not reselling their messaging.

Lot of effort by a large crew of committed developers and the helpful participation of our carrier partners are what brought Twilio MMS to market on US phone numbers. Were MMS as easy as wrapping another product in a HTTP request, I imagine it would be a more common offering.

Want to make sure the effort of the Twilio engineering crew is given its due.

</comment></comment></comment></comment><comment><USER11> Man, if they'd just add fax they'd have basically every possible telephonic service there is.

<comment><USER12> Just FYI, there's a fax API service similar to Twilio already named Phaxio[1]. Not affiliated, just a fan[2].

[1]: [https://www.phaxio.com](https://www.phaxio.com)

[2]: [https://www.petekeen.net/command-line- faxing](https://www.petekeen.net/command-line-faxing)

<comment><USER11> Hey - thanks! I've been using faxaway for years with their email interface, but this is handier. But I'd still like to be able to handle voicemail and incoming fax on the same number and _nobody_ can give me that yet. (As far as I know.)

</comment></comment></comment><comment><USER13> Now if we could just get Google Voice to support it, that would be awesome.

<comment><USER14> It seems like with the hangouts/google voice merger on android that it does now support it, but I haven't tested myself personally to see.

</comment></comment><comment><USER15> I've played wit Twilio and have used it to extend some of the hooks I previously had in IFTTT. Additionally I've been toying with porting my number out of Google Voice for compatibility (ie. no MMS) and privacy reasons. My question is, how hard would it be to build your own personal Google Voice like service around the twilio API, or has anyone done this?

<comment><USER12> I set up a quick and dirty version of GV with one of their provided Twimlets[1]. All it does is record a message, transcribe it, then send the results to my email address. My wife and I used this, for example, when looking for a mortgage loan (they never. stop. calling.)

I've thought long and hard about building something more complicated but I was always sort of stopped by the lack of MMS and my (apparently faulty) understanding of how their Caller ID works[2]. Not anymore!

[1]: [https://www.twilio.com/labs/twimlets/voicemail](https://www.twilio.com/labs/twimlets/voicemail)

[2]: Previously I had thought you could only set registered numbers as caller ID, but turns out if you dial out while processing an incoming call you can set the caller ID as the incoming number. See here: [https://www.twilio.com/docs/api/twiml/dial#attributes- caller...](https://www.twilio.com/docs/api/twiml/dial#attributes-caller-id)

<comment><USER16> I did the same thing: I wanted something like Google Voice, but it was impossible to make it work here in Canada. I also have a tiny little HTML page you can use to retrieve your voicemail and transcriptions:

[https://github.com/mmastrac/snippets/tree/gh- pages/voicemail](https://github.com/mmastrac/snippets/tree/gh-pages/voicemail)

Obviously you'd want to host that yourself somewhere private and possibly hard-code the keys.

</comment></comment></comment><comment><USER17> Twilio's test MMS (or any Twilio SMS) messages have never worked for me on the AT&T and Tmobile MVNO Straight Talk which uses Tracfone's MMS servers. I'd be curious what other MVNOs lurking about in the US are not handled by this. Does Cricket work?

<comment><USER5> Would love to learn more about why these messages are failing for you. Reckon you could shoot us some of the failed SmsSids to email@example.com? I'd be much obliged.

<comment><USER17> I'm not using the API only the "see for yourself" link on the MMS page at [https://www.twilio.com/mms](https://www.twilio.com/mms).

Webpage says it's sent but nothing ever arrives to the phone. I'll send an email to firstname.lastname@example.com with my phone number if someone over there wants to try a few test sends for debug info.

As a side note I just tested using the SMS page and it seems to work now. When I last tried it a couple months ago when swapping SIMs and trying to test SMS it silently failed with both sets of phone numbers and SIM Cards while every other SMS source I could try worked fine. That appears to not be an issue anymore so it's just MMS.

MMS to and from the phone works fine with Verizon and AT&T cellphones so I'd imagine there is some plumbing somewhere going wrong in my case.

Thanks.

<comment><USER18> I just tried this as well using my AT&T Straight Talk phone number, and the result was the same (message reports being sent, but never shows up on my end).

I'll also fire off an email so that you can have at least two numbers to test with.

<comment><USER5> Thank you!

</comment></comment></comment></comment></comment><comment><USER19> Can someone explain a little bit more? I think I've been spoilt rotten by the web API world.

Don't telcos provide MMS gateway like how they provide SMS gateways? What is actually happening under the hood here?

<comment><USER20> Lots actually. MMS is hard - multiple devices with no consistency, different interconnect gateways that can mangle messages along the way. An easy to use, reliable and pervasive MMS gateway isn't as easy to implement as some might think and the carriers haven't made it a priority. In fact the US carriers completely messed up their early MMS implementations with Washington-style regulation that made the user experience beyond horrible. Here's hoping Twilio makes some progress with this and I wish them much success.

EDIT: I realized that I didn't actually answer your question. MMS can be supported by carriers in different ways but the most typical interface is MM7 which is SOAP over HTTP. There are many MM7 gateway vendors and they all handle MIME boundaries, payloads, transcoding, etc different - <USER2> differences, but enough to make testing against a large matrix of devices very, very hard.

<comment><USER21> Interesting, I had no idea it was so complex. What could have been done differently way back when to avoid such a mess?

</comment></comment></comment><comment><USER22> Does this apply to all Twilio numbers, or just short codes?

<comment><USER23> All US Twilio numbers.

<comment><USER24> Someone knows, when it would be available in Europe? Is there any information available?</comment></comment></comment>


The Problem with Happiness - <AUTHOR> http://www.huffingtonpost.com/todd-kashdan/whats-wrong-with-happines_b_740518.html

<comment><USER3> I see no problem with happiness. However, happiness will always remain fleeting - a momentary feeling of contentment and fulfillment where you convince yourself that you have achieved your goals.

A dedicated, mindful person can achieve many of the benefits of happiness - the stronger relationships, the untroubled and healthy sleep patterns - <USER2> focusing on maintaining those benefits directly. Do you want to sleep like a baby? Get to bed and rise regularly, 22:00 - 06:00, and declutter your bedroom to dedicate that room entirely towards the function of sleep.

Do you want to maintain healthy relationships? Work on them. Build and maintain trust. Act without expectation of reward, and feel delight when your puzzled friends respond to your new found generosity of spirit.

You'll quickly discover the inadequacy of money alone in providing happiness. True, too little and you will find paying the bills a struggle and life somewhat problematic. Join the club. However, too much money attracts entirely the wrong people, drawn by the prospect of loosening the money from your grip and nothing else.

Myself, I strive not for happiness, but for mindfulness: for the awareness of the fact that I exist; that I live; and that, at any time, I have ownership of _this precise moment_ on this marvellous world, this incredible universe.

Quiet focus and calm, mindful determination. That works for me.</comment>


Ask HN: Has anyone got any offers via "Who wants to be hired" thread? - <AUTHOR> <comment><USER2> I've gotten about two years worth of contracting work from posting on one of these threads. A lot of tire kickers, and a lot of "take this test and then we'll talk" offers as well. I just ignore those, but I think, in general, it's not a bad network facilitator.

<comment><AUTHOR> I am facing a bit of dilemma over here. I also have tried to ignore "take this test and then we'll talk" approach but turns out I have missed quite a few good opportunities. Need to change my strategy a bit? I think yes

</comment></comment><comment><USER3> I had a company reach out but they were east coast and remote wasn't an option for them, and relocating not an option for me. Ces la vie.

</comment><comment><USER4> I have. I've also met several long term clients with interesting projects via the "Seeking freelancer?" thread as well.

</comment><comment><USER5> I got an interview last year. It was a very good match, but bad timing for them and me and we didn't move forward with it.</comment>


What's the most we can remember? - <AUTHOR> http://www.bbc.com/future/story/20150401-whats-the-most-we-can-remember

<comment><USER2> "The maximum lifetime capacity of the human brain to acquire new knowledge by means of learning procedures based on the discussed model can be estimated as no more than several million items." ([http://www.supermemo.com/articles/theory.htm](http://www.supermemo.com/articles/theory.htm)) It's about 5-15 digits per item, depending on how you count it: [http://www.tofugu.com/2014/03/14/akira-haraguchi-and-his- met...](http://www.tofugu.com/2014/03/14/akira-haraguchi-and-his-method-for- memorizing-100000-digits-of-pi/). So as an upper estimate, nobody could remember more than 500,000 digits of pi.

Dates are just math, you need around 20 items to do our current calendar ([http://www.timeanddate.com/date/doomsday- weekday.html](http://www.timeanddate.com/date/doomsday-weekday.html)). Adding in the historical calendars is a little more work, not much; then it's just a matter of practicing and getting fast.

The other phenomena are interesting but not related to memory.

</comment><comment><USER3> At one point I tried to think of every musician that I could. I listed 923 musicians. I gave up, but I realized I had not scratched the surface: rock music, pop songs, American songs, African songs, French songs, classical music, etc. I'd guess if I tried for a few days I'd come up with 3,000 names.

Then I started thinking of all the people I knew who had something to do with computer programming. I allowed myself nicknames like "Matz" because I can not remember Yukihiro Matsumoto. I know a lot of the famous ones: Guy Steele, McCarthy, Edsger Dijkstra, Rich Hickey, Paul Graham, etc. I also thought about all the tech bloggers I read, which is a huge number. I've got over 300 tech blogs in my RSS feed reader.

Again, I got to almost 1,000 and quit, but I realized I knew a lot more, easily 2,000, maybe even 3,000.

Then I did the same with favorite writers, and I got 540 names without trying too hard.

Then I started with actors and actresses and directors. I got over 400 without too much effort. I think if I devoted a few hours to it, I would get more than 1,000, maybe 1,500, or even 2,000.

Then I started listing people I've known during my life. I allowed myself to describe people who I knew 20 years ago, who I remember clearly though I don't always remember their names. I got over 2,000 during about 90 minutes of trying. I think if I devoted a whole day to it, I might be able to double that number.

Then I allowed myself to write down every fictional character I knew, from Hamlet to Bilbo Baggins to Wolverine. I got well over 2,000 names with maybe an hour's effort.

What I learned from this experiment is that I must know of well over 20,000 people. I might know 50,000 people, counting both fictional and non-fictional people.

That, to me, says a lot about what humans do with the extra brain matter they have, relative to apes.

<comment><USER4> Jeez, I sometimes forgot what I had for dinner the day before.

</comment></comment><comment><USER5> A shame the article didn't bring up synesthesia. People who have this ability can draw different associations than what normal people do. Meaning they have different / more ways to remember things.

</comment><comment><USER6> I don't think that information bites is a good analogy for what brains do.

</comment><comment><USER7> The most we can remember is some fraction of the linux kernel.</comment>


Market takes knife to Apple, determined to find worm - <AUTHOR> http://svextra.com/blogs/gmsv/2008/01/market_takes_knife_to_apple_determined_to_find_worm.html <comment><USER2> I love the title</comment>


Every Place Is the Same Now – The Smartphone Has Ruined Space - <AUTHOR> https://www.theatlantic.com/technology/archive/2020/01/smartphone-has-ruined-space/605077/ <comment><USER2> Something that brought home to me the dubious benefits of the smartphone and social media was noticing how many young women - even teenagers - are now getting lip fillers, resulting in a ludicrous trout pout. Do they honestly think this looks good? I must be getting old.</comment>


Ask HN: Lawyers who left to 'hack', what has your career trajectory been like? - <AUTHOR>

Were you eventually pulled into a more business role in a company? Do you keep your license active?<p>I read about this transition from time to time, but I don't think I've met someone else in real life who's done this to ask. <comment><USER2> A bit of background. I come from a technical and business family. My father has flipped between owning businesses and being a software engineer since the 60's. So I grew up with coding in my life. I started to hack on things in elementary school and I had a number of professional jobs coding in high school and college.

I didn't want to be like my father, he was boring, or so my teenage brain thought. I can do so much better! I am the man. I will become a lawyer! I was accepted almost instantly and went to law school. Very quickly I realized something: I hated it.

I learned a lot, I did very well, but ultimately I decided that I actually like coding and my dad wasn't as boring as I thought. I never took the bar exam and now I joke in interviews about it.

Since that point I have started or have been involved in a number of technical businesses. I am known for my technical prowess and I am often the highest or one of the highest code contributors to projects I start or am working on. However, I also get pulled into business discussions. I have no problems reading over contracts and giving them a first pass. I am smart enough to know when to call in an actual law firm (which is generally early and often), and I believe this gives me a distinct advantage over other technical founders and workers. A lot of technical people believe that they know everything and can quickly learn whatever they need to succeed. Thus, they read over contracts and fall prey to successful lawyers who are very good at writing rock solid contracts and agreements. I know when to call for help, and my partners, employers, and investors appreciate that.

If you are a lawyer now, then I would imagine your experience will be different. But I do believe a legal background (not to mention the logic and rational reasoning portions of a law degree) will serve you well. The only person who will pull you into a business role will be you. Good luck!

</comment><comment><USER3> There are more than you might expect. (It also depends on what you mean by "hack.")

Take a look at [http://lawyersongithub.com](http://lawyersongithub.com). This is a list of lawyers with github accounts. Now, having a GH account doesn't make you "hacker" or professional programmer, but a couple of people on it have left law to focus on programming. I know several other lawyers not listed there who left firms to focus on software development.

You'll find a range of experience. There are lawyers who were programmers first, went to law school, and then went back to programming. Others had skills before law school or learned while practicing law and have incorporated into their practices, to varying degrees.

</comment><comment><USER4> This is a very interesting question. The only person I know of who has done this is David Pollak of Scala Lift fame [http://blog.goodstuff.im/about](http://blog.goodstuff.im/about)

</comment><comment><USER5> Not sure what the U.S. situation is like but in the UK my transition was pretty perfect in terms of my professional happiness. That said, it was pretty weird for a barrister to be working cases during the day and then coding at night so I'm not sure I'm a good example - coding was something I'd just always 'done' since I was a kid.

</comment><comment><USER6> The girls from priorilegal.com are lawyers and they're pretty regulars at HN.</comment>


Why Most Business Books Suck - The Author's Dilemma - <AUTHOR> http://www.infochachkie.com/whybusinessbookssuck/ So this is why I despise most business books...<p>I like the list of 'typical' business books and the not so subtle reference to "The Innovator's Dilemma". <comment><USER2> Funny, as I just read the MouseDriver posting and it is one business book that does not suck!</comment>


Ask HN: How do you deal with software licensing? - <AUTHOR> This is sort of related to DRM. Basically, an application I'm working on needs to have a licensing scheme. Generate keys for users, validate keys client side, revoke keys if needed (so obviously it would need a server component, the generation can't be done client side). I can't seem to find any product that already accomplishes this that isn't also trying to be a SaaS. For reasons I won't go into it needs to be self hosted. I'm trying to avoid handrolling a licensing scheme at all costs. Anyone aware of a "standard" product or open source project that could fulfill these requirements? What tools do you lean on to deal with software licensing? <comment><USER2> I made a software that has been in prod for more than a year now (handling licenses for more than 400 customers monthly). The software is self-hosted by the users, and they need a valid license from my website to run it.

I made all the tools to generate and manage licenses for this app.

I wanted to extract the license management part out of this project, and create a new separate product out of it.

My goal was to create exactly what you are looking for: a self-hosting license management tool for personal projects...

I would be willing to talk more about it with you if you are interested.

Feel free to email me, (my email is in my profile)

<comment><AUTHOR> Thanks but since it isn't already a product, I doubt management would want to touch it unless it was also open source. Otherwise future maintainability is essentially nil. Chances are high that whatever is chosen now will be used for at least 5-10 years, which is part of why I was trying to avoid handrolling something. I likely won't be around by the time an issue comes up and I'd rather not consult on something I slapped together 5-10 years ago.

<comment><AUTHOR> On a side note if you are looking to open source it I might contribute to it in my free time. I've found a few possible products^ since I made this post and they seem to be actively maintained so I hope that I can avoid spending much billable time on this. But the barren landscape makes me feel like there have to be other devs/companies struggling with this problem so I think as an open source project it could gather steam.

^The most promising ones I've seen are pelock and intellilock (not endorsements, haven't evaluated either one yet).

<comment><USER2> Got it. I though it was for a personal project. I understand a company might feel uncomfortable.

Anyway, I found: [https://cryptlex.com](https://cryptlex.com) yesterday while searching for other options. That looks interesting.</comment></comment></comment></comment>


The Rustonomicon: The Dark Arts of Advanced and Unsafe Rust - <AUTHOR> https://doc.rust-lang.org/nightly/nomicon/ <comment><USER2> Interesting. Other than interfaces to non-Rust code, the big safety issues revolve around partial allocation of arrays. That's the machinery underneath the ability to grow a vector, and comes up with some other data structures.

It's not that hard to formalize safety in that area. You need some way to talk about an array being partially initialized. This requires some simple design- by-contract machinery - object invariants, basically. With some proof machinery, it should be possible to determine at compile time that a data manipulation is safe.

Rust already has the concept of raw memory space, which is treated as write- only. That takes care of initialization for non-array types. Partially initialized arrays require some additional annotation.

Suppose we have a primitive for talking about initialization:

        isvalid(T, arr, lo, hi)

This means that array _arr_ consists of valid values of type _T_ is initialized and valid for subscripts in the range _lo_ to _hi_ inclusive.

Now there's a way to talk about partially initialized arrays:

        pub struct Vec<T> {
            ptr: *mut T,   // oversimplifying here
            cap: usize,
            len: usize,
            invariant isvalid(T, *ptr, 0, len-1)
        }

This says that the array is only initialized up to len-1. The current requirement for "unsafe" comes from the lack of any way to talk about partial initialization. It's an expressive problem. Much of Rust's success comes from finding ways to talk about safety issues such as ownership within the language. This is an extension to that.

Then, a minimal theorem prover is needed, one which at least knows these theorems:

        j < i ==> isvalid(T, a, i, j) // the null case
        isvalid(T, a, i, j) and k >= i and k <= j ==> isvalid(T, a[k]) // element valid in range
        isvalid(T, a, i, j) and isvalid(T, a[j+1]) ==> isvalid(T, a, i, j+1) // extend by adding new valid element

With that info, it's possible to check operations such as push, pop, and array growth, where an array is partially initialized in a controlled way. Array references can also be checked; this implies that access to an element index >= len is an error, and the compiler now knows this.

When the compiler knows something like that, it can optimize. If you're iterating a vec, from 0 to len-1, the subscript check required is

       i < len

Within a FOR statement, the compiler already knows the range of i is within 0..len-1, so the subscript check becomes

       len-1 < len

which simplifies to True, eliminating the subscript check. That gets rid of the need for most unchecked subscripting.

This sort of proof machinery used to be exotic technology. (I was doing this kind of thing 35 years ago.[1]) Now it's well understood. It's quite possible to do this in a compiler today.

[1] [http://www.animats.com/papers/verifier/verifiermanual.pdf](http://www.animats.com/papers/verifier/verifiermanual.pdf)

</comment><comment><USER3> This book is the final product (and (not) master's thesis) of Alexis Beingessner (Gankro)'s internship at Mozilla this summer. He's gone a long way towards helping to define the guarantees that `unsafe` code must uphold and thereby auditing the soundness of the various `unsafe` bits in the stdlib.

<comment><USER4> Not my thesis by verdict of my supervisors -- I am now on my third attempt at a thesis.

(attempt 2 was [http://cglab.ca/~abeinges/blah/too-many- lists/book/](http://cglab.ca/~abeinges/blah/too-many-lists/book/))

<comment><USER5> I think the claims about linked lists there are rather oversold, especially the parts about functional languages. First, linked lists are common, useful, and efficient in languages such as Racket or Ocaml. I'd really want to see performance results before accepting your claims. Second, Haskell is really not limited in the way you say. You can write all the programs you'd write in an imperative language if you're willing to have IO in your type.

<comment><USER6> Regarding performance, one thing to keep in mind is that all of the languages you mention use GC, which can help with cache locality issues. In Rust, of course, the situation is different. Gankro also addresses the common and useful idioms you see in most functional languages through corresponding vector-centric functions on the Rust side. (Scala is perhaps a reasonable midpoint.)

That all said, I too would love to see some substantiation of the performance intuitions here.

<comment><USER5> I think one of the problems here is that the discussion of how bad linked lists are switches back and forth between taking about Rust specifically and linked lists generally.

Also, I think performance claims, especially ones as strong as the ones in that document, should be avoided without substantiation.

</comment></comment></comment></comment></comment><comment><USER7> Am I right in assuming, that the name is a reference to the Normanomicon from Fable II and Fable III? It's just priceless.

Thanks to all involved with Rust (also in light of the 1.3 release). From what I can tell (passively reading about language decisions and seeing the responsiveness of all involved on various communication channels), it's a great lesson in building a community while simultaneously creating a fun programming language.

I hope, I'll come to use it at work at some point.

P.S. First comment ever on the internet anywhere, hope I didn't violate any guidelines.

<comment><USER3> The name is actually an alteration of "The Necronomicon", which is from the works of H.P. Lovecraft (the C'thulhu guy). The quote at the beginning of the book is also an altered Lovecraft quote (which, historically, are quite popular as easter eggs in the Rust community). In the literature, it is an evil and otherworldly book which eventually drives its reader insane, which should give you some idea as to the content of the OP. :)

Also, welcome to the internet!

<comment><USER7> Ah, obviously I have some reading up to do, thanks. :)

The one from Fable actually seems to be an alteration as well, giving me about the same idea about the content as knowing the actual reference would have. Fun stuff.

</comment></comment></comment><comment><USER4> Primary author here. AMA how Rust is unsound.

<comment><USER8> I really like your writing style, I wish more people did this. It makes it fun to read, almost like a story. :)

</comment></comment><comment><AUTHOR> A really interesting read. Its worth mentioning how little unsafe code you need in Rust. Even implementing strange data structures normally only requires 5-10 lines just to handle the manual memory management.</comment>


Fdupes: A tool to de-duplicate files - <AUTHOR> https://github.com/adrianlopezroche/fdupes

<comment><USER2> I personnally use fdupes.pl:

[http://www.perlmonks.org/?node_id=85202](http://www.perlmonks.org/?node_id=85202)

Tested on many millions of files, works like a charm (though it can run out of memory on a 32 bits machine). I'm using the enhanced version here: [http://www.perlmonks.org/?node_id=1099194](http://www.perlmonks.org/?node_id=1099194) which has an autodelete flag and prudently ignore symlinks.

</comment><comment><USER3> I personally found fdupes to be slower and more limited than dupfiles [0].

I switched to dupfiles about a year ago and haven't had any problems yet.

[0]: [http://liw.fi/dupfiles/](http://liw.fi/dupfiles/)

</comment><comment><USER4> I used this when I was working on a product that used automated tests to upload files repeatedly during the day. The volume of test files was so great that it continually put pressure on the storage -- more pressure than the uploads from the actual users.

Fortunately the uploads were from a set of a few dozen static files, and de- duplicating the data via fdupes was able to drop disk usage by a factor of 20-50x.

</comment><comment><USER5> I did something similar to this a while back, called qdupe[0], written in Python. It doesn't do the deleting for you, but is very fast at identifying duplicates if you have a lot to compare. Based on the fastdup algorithm.

[0] [https://github.com/cwilper/qdupe](https://github.com/cwilper/qdupe)

</comment><comment><USER6> Is this multiplatform? I think it's interesting how many projects forget to mention what operating system they target.

<comment><USER7> I found myself asking the same thing, and ended up finding a Python program:

[http://www.pythoncentral.io/finding-duplicate-files-with- pyt...](http://www.pythoncentral.io/finding-duplicate-files-with-python/)

I plan on giving it a whirl, to help me clean up my backup drive.

</comment></comment><comment><USER8> Yeah, I wrote something similar a long time ago in Python: [https://bitbucket.org/panzi/finddup/src](https://bitbucket.org/panzi/finddup/src)

</comment><comment><USER9> It's not exactly clear, but I'm assuming this is some kind of automated hard- linking utility? Or does it use its own special magic? (filesystem type restrictions?)

<comment><USER10> It just finds (and optionally deletes) duplicate files. For hardlinking the duplicates, there's freedup.

</comment></comment><comment><USER11> not nearly as fancy, but it gets the job done for me: [http://www.commandlinefu.com/commands/view/3555/find- duplica...](http://www.commandlinefu.com/commands/view/3555/find-duplicate- files-based-on-size-first-then-md5-hash)

</comment><comment><USER12> a similar tool is [https://code.google.com/p/hardlinkpy/](https://code.google.com/p/hardlinkpy/)</comment>


OpenBSD anti-ROP mechanism in libc - <AUTHOR> https://marc.info/?l=openbsd-tech&m=146159002802803&w=2 <comment><USER2> >For now, this is only done for libc

So it's useless at this point.</comment>


Embark's self-driving truck completes 2,400 mile cross-U.S. trip - <AUTHOR> http://www.ttnews.com/articles/embark-self-driving-truck-completes-coast-coast-test-run <comment><USER2> this is one of those stories that reminds us that the companies making the most noise in this space are not the only ones which are making progress and in this case really good progress.

This is the first time I even heard of Embark, does anyone know of a site tracking all the self driving efforts?</comment>


Has the internet run out of ideas? - <AUTHOR> http://www.guardian.co.uk/technology/2012/apr/29/internet-innovation-failure-patent-control

<comment><USER2> No; we have run out of the type of companies that can both encourage innovation AND provide the resources (money and time) to get good ideas transformed into great products to put on the market.

Modern software is built in two week sprints and emotionally abandoned as soon as it barely works.</comment>


Two Go Developers Who Switched from JavaScript and Ruby - <AUTHOR> http://thenewstack.io/two-go-developers-switched-javascript-ruby/

<comment><USER2> "Switched"? Everytime I see the word, it screams "novice." A programmer should know when to use a language. Every problem is not a nail, so to speak. A more interesting article would be about JS/Ruby developers who learned to use Go. And putting Go and "front end development" in the same paragraph currently makes little sense.</comment>


Y Combinator App Video - <AUTHOR>

If your video is no longer embedded within your application - is that a sign of anything? <comment><USER2> No. We don't remove nor can we edit your apps. If you don't see a url by that video question, it means we didn't get the link.</comment>


Recap of PyCon 2017 - <AUTHOR> https://www.promptworks.com/blog/pycon-2017-highlights <comment><USER2> This is an updated submission with the corrected link.</comment>


Dealing with stress, anxiety and grief during Covid-19 - <AUTHOR> https://directorsblog.nih.gov/2020/04/07/dealing-with-stress-anxiety-and-grief-during-covid-19/ <comment><USER2> as the crisis increses, the stress and grief increase daily. so I decide to search about how I can use preventive measure to avoid pain and stress during this period. then I saw thi article on Coronavirus [https://schoolinginfo.com/how-to-prevent-coronavirus-as-a- st...](https://schoolinginfo.com/how-to-prevent-coronavirus-as-a-student/) and reading it made me stress free, that I can live without contacting the disease. there for am not too stress up about the COVID-19 issues that much.</comment>


British government approves the first spaceport in Europe - <AUTHOR> http://www.theverge.com/2015/3/4/8146729/british-government-approves-the-first-spaceport-in-europe

<comment><AUTHOR> I'm not sure a densely populated (relatively) small island that far from the equator is such a choice for a space port.

Also ultra-fast international flights aren't quite as appealing when you've had to travel for 6 hours by train to reach your departure point.</comment>


Ethics of storing incorrect login attempt credentials? - <AUTHOR> http://refucktoring.com/?p=207

<comment><USER2> Most failed login attempts are probably the user's correct password with a letter or two transposed or missing. And a competent, ethical developer wouldn't store the user's correct password except salted and hashed using an appropriate algorithm (like bcrypt).

Why would you store the one-character-off password with any less protection?

Given that one would only store incorrect login attempts in hashed form, I'm having trouble thinking of any useful analytics you could perform on them.

<comment><AUTHOR> Of course ethical devs would store like that. Ethics kinda goes out the window when, as a company, you get two choices: play ball with the local law or take your business out of the country.

My point was that, due to human error, sometimes account credentials from one network end up in another network's login prompt.

I do not find it improbable that a network like Facebook could br ordered to capture all invalid login attempts on certain "red-flagged" accounts, that would be pretty bad. A bit like subconsciously-volunteered phishing, but as the user you wouldn't think twice about it (and "burn" that other password from everywhere else you used it), no matter how paranoid you are.

</comment></comment><comment><USER3> > *How do I know? Try a slight misspelling of your password and see what > happens. Not a hash, unless they're precomputing the hashes of all possible > misspellings you'd do…

Facebook doesn't store passwords in plaintext. See this Quora response from an engineer: [http://www.quora.com/Facebook-1/Is-Facebooks-slight- mispelli...](http://www.quora.com/Facebook-1/Is-Facebooks-slight-mispelling- password-feature-secure/answer/Cullen-Walsh)

<comment><AUTHOR> I stand corrected, I updated the post.

</comment></comment><comment><USER4> I tried entering mis-spellings of my current facebook password, and facebook gave me nothing other than telling me that it was incorrect. I'm pretty sure that something as huge as FB wouldn't be storing passwords in plain-text. They definitely keep a hash of your previous (n=?) passwords, though.

<comment><USER5> As far as I am aware if you have the caps lock on, it doesn't care, so caps inverted passwords still work. I'm not sure about other variations.

<comment><USER6> That's a lot easier than telling you about minor typos in your password. You just store two hashes: one of the password and one of its inverted case.

<comment><USER7> Why would you store two versions? Just hash the password you were given twice.

<comment><USER6> That's what I said: hash both the password and it's case-inversion. Did you mean something else?

<comment><AUTHOR> I think: hash the original version only, then when trying to log in, try both case-as-is and then flipped case

<comment><USER6> Ah. Duh.

</comment></comment></comment></comment></comment></comment></comment><comment><USER8> I would be less worried about the ethics of a company stealing your login credentials (which, really, if they wanted to they could do anyway) as of the control they attempt to execute over your account and any social media or real world identifying data they require from you.

</comment><comment><USER9> Yes - it would be reckless to store users' login attempts (correct or incorrect) in the clear, no matter the purpose. And I've never heard of anyone doing that - it's pretty self-evident.</comment>


Google's Internal Quality Rating Guide Leaked (v.5 – March 2014) - <AUTHOR> http://www.scribd.com/doc/217994742/General-Guidelines-1

<comment><USER2> WHY?????????????? :(

<comment><AUTHOR> here is a direct download link: [https://pdf.yt/d/sNzrFSvFUyjGJbob](https://pdf.yt/d/sNzrFSvFUyjGJbob)

<comment><USER3> thanks!

</comment></comment></comment><comment><USER4> post it somewhere else

<comment><AUTHOR> please check the link below.

</comment></comment><comment><USER5> why scribd?

<comment><AUTHOR> check the link below please.</comment></comment>


Ask HN: Best resources to learn Java - <AUTHOR>

I was wondering if anyone had any recommendations on the best resources to learn modern Java?
I am a juniorish Ruby and JS developer (mostly) and have a massive (web) project upcoming that will feature a fair bit of Java and so need to get learning it. I don't really have any other developers to help teach me that I know.
So, what resources would HN recommend? Help much appreciated! <comment><USER2> Java, how to program by Deitel & Deitel. Or the Java Programming Black book by Steven Holzner. Nothing beats a good book.</comment>