Ask HN: What would be your new niche? - <AUTHOR> If you would have chance to get out of IT and start your own non-IT business. What would be your new field/niche? (ignore possible income decrease, entry difficulties and other complications)<p>What is the most exciting thing on desired area? <comment><USER2> I want to open a sexually explicit Ice Cream Parlor on the Las Vegas strip.

It would just be called "The Split Banana", and all of our ice cream would be frozen in the mold of a penis. A small mold would be 6 inch, Medium = 9 inch, and Large/Monster = a 12 inch mold.

And the ice cream flavors would also have really inappropriate but funny names. Suggestions would be appreciated as I haven't done much work there.

<comment><USER3> NYC has Big Gay Ice Cream[0]. Sort of similar to what you're describing. They seem pretty successful. I think they've expanded to a few other cities too.

[0]: [https://www.biggayicecream.com/](https://www.biggayicecream.com/)

<comment><USER2> Thank you for the reference, but we here at The Split Banana believe EVERYONE can enjoy a delicious Ice Cream penis. Not just the gay community.

</comment></comment></comment><comment><USER4> Funny this shows up today, because I have a half-written blog post about it I meant to publish this week :).

I'm actively trying to do exactly that - pivot from IT into something more meaningful.

Currently, I'm exploring two areas which were of big interest for me as a hobby: space technology and biotech. My goal is to spend this year exploring options, getting the "lay of the land" and forming a plan of learning new skills, in order to ultimately get a job in one of those industries before 2020.

Rationale: both are some of the most potentially impactful fields on the future of humanity.

Space Tech: Because I've been dreaming about space exploration since my earliest days on this planet. Because - with the recent accomplishments of the private industry - the time is ripe now to work on bootstrapping an industry in space. I mean manufacturing, asteroid mining, etc. There's lots of work to be done, the momentum is there, and frankly, we're long overdue for all of that.

Biotech: because I feel that mastery over molecular nanotechnology would solve half of the issues humanity faces, and biotech seems like the best way to incrementally get there. As I'm fond of saying, nature is advanced molecular nanotech which we didn't design and can't control _yet_.

All of that comes from the desire to work on something actually beneficial to humans (with a good effort/effect ratio), as opposed to cranking out code driving money towards marginally useful businesses.

\--

For a long time I've been reluctant to talk about it, as it is with desires for grand endeavours. But I am committed now, so if anyone can help me find my bearings around those two spaces, or have some experiences of pivoting there from pure software, I would very appreciate it.

<comment><USER5> I've been in the space industry for decades (plural) now. There is plenty of IT work to be done here, though development and test are very process intensive and constrained compared to the commercial world.

<comment><USER4> Mind if I chat you up in private about your experiences? If that's ok, please let me know - my e-mail is in the profile.

</comment></comment></comment><comment><USER6> Open a bar and/or distillery and/or winery. I'm very interested in mixology, and there is a lot of interesting stuff happening with alcohol right now at the intersection of modern science and centuries-old traditions. Some ideas:

* Open a place that's a juice bar by day, and a regular bar by night. Focus on using fresh, seasonal ingredients for all drinks.

* Experiment with using fruits other than grapes for wine-making. Some fruits, like blueberries, have many of the same properties as grapes, so it would be interesting to see what sort of beverages you could make by fermenting them.

* Same thing with distilled spirits: There is so much untapped territory here because most distilleries use ancient, traditional methods, with maybe only one or two variations from the norm. I would experiment with everything from ingredients to techniques, including using different types of wood than oak for aging, and pressurized aging to accelerate the process.

</comment><comment><USER7> I say this half seriously: start a business helping people in IT make career transitions, as a career advisor/matchmaker with opportunities.

People with IT/IS backgrounds are usually quite broadly capable people, generally speaking.

Actually, I think enabling and giving all kinds of people space, support and ability to explore pivots and opportunities sounds kind of awesome.

<comment><USER8> That is a fantastic idea. The only caveat might be you becoming a sort of startup guru full of words but lacking real experience pivoting your own career.

</comment></comment><comment><USER9> Whenever this phase of my career naturally comes to a close, I want to start a chili food truck. One of my bucket list items is to win a chili cook off, so I figured I'd connect that goal with a business itself. I don't know shit about running a food truck, but it seems that a chili truck could be simpler than other types because you don't have to make the food upon ordering, it's all cooked beforehand.

<comment><USER8> ...and because it is made beforehand it gets even tastier! I wanna be your costumer.

<comment><USER9> I wasn't planning on wearing a costume until your comment but I dig it!

In all seriousness, if I ever get to this goal, I will follow up with you.

</comment></comment></comment><comment><USER10> Stone age & early bronze age history, archeology, anthropology.

I find the genesis of storytelling, religion and how we conceptualize the world fascinating, even (especially?) where it comes in tiny fragments. Things that are so deep-rooted now that we take them for granted, like perceiving the world through discrete objects, language, social reward structures.

As the evolutionary rat-race accelerates and niches get obsoleted more and more quickly, there seems to be an increasing business opportunity in digging deeper into what makes us human, what defines our sense of "self". Facebook, Zynga & co already exploit that. Understanding these patterns has tremendous business value, even if only to better protect ourselves.

What tunes do we dance to? How were these rivers historically formed, what is their inertia, future direction? How much of ourselves is cargo-culting on by- gone fitness landscapes? Humanity is the collector's luxury item of the future.

</comment><comment><USER11> I would work with my hands.

The most exciting thing would be getting out of a chair. IT has hurt my body.

I do love creating things, though, so I would ideally be building original creations (I don't want to be a framer or service mechanic). So some kind of craftsman.

More realistically, I would create a business that could create value on-site, but dealt with customers on the internet. So ebay, etsy, etc. I understand building customer bases on the internet far better than I understand it in real life, and I also live in a low population area.

Most specifically, and ignoring income decreases, I would like to do some kind of old-timey craft. Woodwork, leatherwork, blacksmithing. Leatherwork in particular is quiet, relaxing, and doesn't need a particularly large area or set of tools, and I'm totally fascinated with handmade leather products. I would need a standing workbench, though!

<comment><USER12> Go, Do anything, it's great.

I've done painting woodworking, soldering circuits , and 'hacking' some furniture, it feels great.

<comment><USER11> Yep, I have a shop and I get a fair amount of stuff done (when it's warm in there!), but not professionally at all. Still spend my days in this chair.

</comment></comment></comment><comment><USER13> I'm still early in my IT/programming career (working my first job after graduating college in 2017), so it might be a little early to start seriously thinking about pivoting just yet, but I'm really interested in the intersection of technology and urban planning/city administration. I'm an urbanist, fascinated and enchanted by the concept of cities in the abstract, and I want to see the rise of more great American cities in the 21st century. I want to see current great cities become more accessible, and all cities become more attractive to not only other urbanites, but suburbanites and rural people also.

I'm not really sure what the best way to follow this dream is, but I'd definitely appreciate any input or advice from anyone out there :)

<comment><USER3> The Power Broker is a great book about Robert Moses, a very influential city planner in NYC. The book shows how much of planning is politics. Just look at how much trouble San Francisco has and you'll see that the problem isn't lack of ideas or lack of money.

This is also a great blog that frequently discusses urban planning themes: [https://granolashotgun.com/](https://granolashotgun.com/)

<comment><USER13> Funny you should mention The Power Broker, I got the audiobook through Audible in December, and I'm about 16 hours in (only about a quarter of the way through!). I think it's interesting how the book wants to portray him as a power-hungry evil emperor type. He was definitely power-hungry, but I don't know if I agree on the evil characterization. It seems like he did a lot of good for the city, and it's tough to imagine what NYC would be like if someone like Robert Moses hadn't been able to relentlessly modernize the way he did.

Thanks for the blog recommendation!

</comment></comment></comment><comment><USER14> I would think of opening a 6 seat (for 3 couples) BBQ place in Europe (Portugal).

I would slow cook and smoke the finest meats and allow for Europeans to taste the amazingness that is US southern comfort food.

I would make it so delicious that together with low supply of seats I would be able to charge significantly.

<comment><USER8> A random guy just opened a place like that one year ago a few blocks from my house (southern Brazil, where a good barbecue/churrasco/assado is always looked for). The place seems a big success, go for it.

</comment></comment><comment><USER8> Tried to bootstrap a few travel-related ideas since I do have plenty of traveling experience but it seemed the local market wasn't ripe (macro- economically), then I decided to leave IT after 15 years to professionalize the dogs and dog training knowledge my family and I already had since ever and the niche is here and all that, I have a great doggy daycare to run and local buzz etc, but man it's tough. The real world is definitely another beast than IT. I now believe and understand that IT has always been a fantasy land where we all pretend we are awesome but we are just spoiled. The non-IT reality is fucking hard, but it is amazingly rewarding in its own way. I only hope I don't ever need to go back to IT, we'll see...

<comment><USER15> How about combining both? Maybe if you think long enough or work long enough in this kind of dog businesses, you'll see opportunities to apply tech to solve some problems. Easier said than done, though...

</comment></comment><comment><USER16> If money weren't a concern, I'd definitely want to work on improving science, particularly social science. Right now, there seems to be a lot of medium- hanging fruit for systematic improvements that don't get built, because there's not much incentive to do so within academia. OSF has done some great work here, and I'd want to start something similar .

<comment><USER3> Over the holidays I met my brother's GF's granddad, who is an economist. He said one of the biggest problems he sees in the social sciences is that the tools they have for data analysis (he specifically mentioned Stata, SAS, and SPSS) make it hard to keep track of what transforms you've made to the data, so people get results and then can't reproduce them because they don't remember what sequence of operations they've performed. Related to this, he said most social science people aren't good programmers which hurts their ability to understand their data.

So I think you're right, although I suspect it'll be hard to get people to switch to anything new since they already know how to use tools that let them get their work done.

<comment><USER17> This sounds like a generational thing. I suspect there are up-and-comers who are hungry to be better programmers, and are interested in the abundant better tools. So maybe the problem to solve isn't so much getting people to switch tools as aiding education and discovery for people who don't yet know what tools to use.

Edit to add: I know a couple folks with backgrounds in statistics. One of them taught a data visualization class using R during his postdoc and is now teaching data science in Python for a code school. The other works for a big established company that does lots of data analysis, and still uses one of the old-school tools you listed, but is always very interested when we chat about the newer tools that are out there. So I think it's a mistake to think most folks are stuck in their ways.

</comment></comment></comment><comment><USER18> Mycology, more specifically work on strains of edible mushrooms to clean up the environment. Paul Stamets has shown that certain variations of P. Ostreatus can be used for cleaning up oil spills and that certain fungi concentrates heavy metals, indicating it could be used to clean up said metals.

Unfortunately he's patented a lot of his research[1] and I don't really know my way around patent law enough to risk finding out if a company dedicated to applying these technologies could get me sued.

[1] [https://patents.justia.com/inventor/paul- stamets](https://patents.justia.com/inventor/paul-stamets)

<comment><USER19> What would you do with the mushrooms, though? Presumably one wouldn't want to eat them once they'd absorbed a bunch of heavy metals, right?

<comment><USER18> Safely dispose of them. Neither would be safe to consume, but would help clean up the environment a great deal. The (not-thoroughly considered) business model would be to restore land enough to make it usable again for crops or livestock. This might be more difficult to do for heavy metals than petroleum.

<comment><USER19> What methods exist for safe disposal of heavy metals?

<comment><USER18> No clue mate. I haven't given this business idea enough thought to be honest.

<comment><USER19> Fair enough. I'm just curious.

</comment></comment></comment></comment></comment></comment><comment><USER20> Two years ago, I began a transition to a more hybrid niche. Food/Cocktail promotion, which involves my photography, and web development skillsets. Spent the first 1.5 years, working on all of the relationships with bartenders/restaurateurs/chefs, promoting their work through instagram and the web. Becoming the largest promoter in the area. Now I'm ready to start rolling out the second phase, involving web software.

So while not totally out of IT, I've definitely branched into something much more enjoyable. Eating delicious, meeting tons of new people, has been rewarding.

</comment><comment> dh-g Automated, locally sourced, compact restaurant to provide low cost meals.

<comment><USER21> I would be interested to hear about your plans for this. I have been thinking about starting small hydroponic farms to provide local food to restaurants.

Email is in my profile if you are interested in trading notes.

<comment> dh-g I'm not far enough along to have much interesting to say yet.

Your idea reminds me of a company I like in Montreal: [https://www.youtube.com/watch?v=Trl2eE- kVGM](https://www.youtube.com/watch?v=Trl2eE-kVGM)

</comment></comment></comment><comment><USER22> CRISPR (cas9, cpf1 et al), hands down.

What it can do, what it's likely to do, and we're only in the first inning of understanding how to utilize it and manipulate it. I believe vaccines are the only medical discovery/creation that will end up being comparable in impact on humanity. CRISPR will enable us to directly, fully seize control over our evolution (we've obviously been subtly affecting that for thousands of years).

It'll take a process spanning decades for the most remarkable applications to be discovered and commercialized (or otherwise made available for the general population), and it'll be worth the wait. We'll gradually strip countless inherited diseases from the entire human race in the span of a few generations. Breast cancer? 99.7% wiped out. Parkinson's inheritance? Gone. Cystic fibrosis? Gone. The age of antibiotic resistant infections? CRISPR will solve that soon as well. And so on. As with vaccinations, there will be numerous CRISPR therapies/cures/applications that will be extraordinarily cheap, pennies per person, and deployed to all persons on earth (as with vaccines, it'll take decades of gradual generic'ization, initially all therapies will be expensive, then many will become common, and then they'll be globally deployed for pennies per person).

<comment><USER23> I've always found biology and medicine research to be a great pivot for people in technology and programming because of the similarities in the mindset used when approaching a problem. For example, alot of bio and med research is looking at complex pathways and interconnected systems and seeing how we can go into different points and add, remove, or change things and how we can interfere with these systems in a controlled way. Software engineers have to similar tasks because they work on large interconnected systems as well and understand different protocols. Penetration testers and security experts also fit this comparison well because they have to try different approaches at different points in a system to gain access or control of a system the same way biology and medicine researchers have to find different ways to interfere with a system to develop a new drug to inhibit a pathway or change the expression of certain proteins. I feel as if crisper / cas9 is a great example for this comparison because researchers are still exploring the many different possible things can do with the same way people in technology explore new tech and apply it to new problems.

</comment></comment><comment><USER24> I just want to write music. Here is my stuff but I do it 100% for fun only. [https://soundcloud.com/decklyn/tracks](https://soundcloud.com/decklyn/tracks)

</comment><comment><USER25> Archaeology. Technological advances in mapmaking, map-parsing and surveying (drones) are leading to a golden age in excavation, on a level unseen since the XIX century. They now have software that can literally just sit there spouting suggestions all day: "hey, this pattern around fields in Nolandia- sur-nothing looks a bit too regular, wanna investigate?"

And there is still so much that can be done, as digitalization is solving the "dusty archives" problem and neural networks might soon be able to suggest links between material ("this parchment fragment here might be related to that fragment in a museum on the other side of he world, which they've even forgot they had").

Unfortunately the obstacle is always the same: money. There is little or no money to be made digging up old vases, and often plenty to actually forget about the vases altogether and let this or that new building be constructed on top of them (or destroying them).

</comment><comment><USER26> I'd like to start a nonprofit that takes donated/damaged camping equipment and refit it for homeless and others in need of just keeping the elements at bay.

</comment><comment><USER27> Since I can think I've always loved the idea of changing the source code of life, I also never understood why we don't regrow body parts once we have lost them.

From a nature standpoint of view, nature does not care about the single individual as long as the species survives. I don't like that behaviour.

Imagine a caveman who lost his arm in a fight with some animal. It just takes more energy to regrow parts and the caveman would be vulnerable all the time so nature decided to take that awesome feature away.

What nature does not realise is, that we now have the time to regrow body parts, there is no danger anymore, somebody who lost a leg can recover in a hospital.

And I'm 99% certain that we will regrow body parts in the next 15-20 years and I'd love to be a part of that revolution.

CRISP is another big thing that has the potential to cure diseases, those we call incurable.

All those facts and the possibilities of extending the human race makes me very excited.

So my niche would be Biochemistry, I choose that field because I think Biochemistry is the C and Assembly language of the human body.

</comment><comment><USER28> Open a store selling beekeeping equipment. I live in an area where that's somewhat under served and I have a lot of experience with online sales so I could broaden my number of potential customers a bit.

My wife keeps telling me that the stores we've visited are extremely poor at selling to the extend that they are missing obvious upsells.

</comment><comment><USER29> Start a Science Fiction bookstore.

[... _completely_ ignoring the "possible income decrease" here... :-/]

</comment><comment><USER30> Outside of tech--I'd like to create a travel-related business to help people travel more often on a budget, or a high-quality coffee box subscription where I send out hand-selected coffee every few weeks (likely from small shops, local roasters, etc.), or start my own micro-brewery.

<comment><USER31> Do it

<comment><USER30> Working on the travel business with my wife, actually. And then getting into homebrewing more and more lately. We'll see where it all goes. :)

<comment><USER31> That's great! I wish you success!

</comment></comment></comment></comment><comment><USER32> I'd move into politics or teaching. Something that would improve my country (the USA). Maybe lobby for increased education standards, more pay for teachers, that kind of thing.

</comment><comment><USER33> Live sound production, either touring with a band or at a theater.

</comment><comment><USER34> Wooden boat building. I love to work with my hands, wood is pleasant to work with, and wooden yachts are a beauty to behold.

That being said, I realize the above has 0% of being a commercial success. The market is flooded with affordable plastic-fantastics churned out in factories in nearby lower income countries.

Also, I suppose it's one thing to enjoy working with my hands when I do it for my own enjoyment in my spare time vs. doing it for real work on a deadline.

Sigh.

</comment><comment><USER35> If there are literally no restrictions - robotics, space, or biotech.

If I wouldn't care about the meaning and amount of value I produce - screenwriter or standup comedian.

If I would optimize for pure fun - computer graphics and digital art.

Although to be honest, I think being a startup founder is the coolest thing I can imagine being, so I would keep working on startups, except I'd build a startup in a more advanced, hard tech field, instead of SaaS.

</comment><comment><USER36> Cardistry! What some of these guys can do is incredible

</comment><comment><USER37> I'd be a comedic actor and try to get on Broadway. I did improv and sketch for years and had some of the happiest times of my life.

</comment><comment><USER38> Open a restaurant. If tech didn't take over, I would have gone to school to be a chef instead of a becoming a developer.

</comment><comment><USER39> Perhaps dive back into VFX, although that's still IT.

My next one would be Watch/Clock making.

failing that, farming/game keeping.

<comment><USER39> Or, as money is no object, camp counsellor

</comment></comment><comment><USER40> Thought about his a while back going back to my original college course (Themofluids) and did a spec application to a small mech engineering firm near me RBR Racing and Hybrid Air Vehicles out at Cardington.

Oh BTW the first one is the F1 team and the second is a firm specializing in Airships

</comment><comment><USER41> Pinball. I love pinball. I'd modernize the machines. Even brand new titles the technology is very old school. I have some ideas to reduce / eliminate most of the wiring in the system and thus the cost / complexity.

Also, I'd finish my f __king novel.

</comment><comment><USER42> Mass production of lab-grown meat.

</comment><comment><USER43> I think if I were born in a different era I'd end up as an architect. I see it as much of a science as I do a creative endeavor, and it feels like the closest parallel the web development work I do.

</comment><comment><USER44> Either something regarding commodities trading or aviation/aerospace

</comment><comment><USER45> Making movies, books, comics, or any other form of story telling.

</comment><comment><USER46> I have always like the idea of making wooden furniture. Different tables, chairs, cabinets, etc. Having a small custom furniture shop would be cool.

</comment><comment><USER47> I would go for real estate :) (I had some experience in it before founding my current company and there is a lot of innovation to be made)

</comment><comment><USER48> * Snow plowing op * Bus driver * Pilot * Brunch resto owner * Teacher * Public speaker * Politician

</comment><comment><USER49> I'd spend the extra time and go through Med school.

</comment><comment><USER50> A yoga studio/dance music lounge.

</comment><comment><USER51> Rescue or med evac helicopter pilot</comment>


To See and Not See by Oliver Sacks (1993) [pdf] - <AUTHOR> http://www.willamette.edu/~mstewart/whatdoesitmean2see.pdf

<comment><USER2> This is a personal favorite of mine.

For me there are a lot parallels between this and how older people see technology. Its a great read and even if you have read it, its worth going through again with the above context in mind!

<comment><AUTHOR> So true, it's amazing what effect the mind has on how you see!</comment></comment>


Show HN: I just released Requests for PHP 1.6 - <AUTHOR> http://journal.ryanmccue.info/269/requests-for-php-version-1-6/

<comment><USER2> I really appreciate that the documentation includes a comparison to other libraries in this space, like Guzzle.

Is there anything special to consider when using it with the Laravel framework?

<comment><AUTHOR> > Is there anything special to consider when using it with the Laravel > framework?

Not that I'm aware of, you should be able to simply use it as a normal library.

</comment></comment><comment><USER3> Would love to see an example of Requests and the JSON api in WordPress, i.e. how would on go about making secure authenticated connections with a WordPress install through the JSON api. Is that in the works?

<comment><AUTHOR> I see you've been following my projects. :)

[https://github.com/rmccue/WP-API-Client](https://github.com/rmccue/WP-API- Client) is an example of using Requests with the API (and the reference client fir the API), but it's not secure authentication, it's just a secure connection. The way to do that is to a) enable SSL on your site, and b) point the client to the HTTPS version of your site. That's all you need to use the security features in Requests.

<comment><USER3> awesome, thank you!

</comment></comment></comment><comment><USER4> You're truly a life-saver! I ended up using Python today due to the lack of session handling in Requests-php. Thank you so much <3

<comment><AUTHOR> No worries, hope it works well for you! :)

</comment></comment><comment><USER5> Love this library, been using it a lot lately.

Expect a PR from me in the near future :D

</comment><comment><USER6> I read the HN title as "(Requests) for (PHP 1.6)", and wondered why someone would still be using PHP 1.6.

<comment><AUTHOR> Heh, thankfully I don't have to support PHP versions that old (although PHP 5.2 might as well be). It's called Requests for PHP to disambiguate it from Kenneth Reitz's fantastic Requests library in Python, which also serves to inspire my library.

<comment><USER6> Consider yourself lucky, A year and a half ago I was supporting PHP 5.1.

I _wasn 't_ confused by the title on the linked-to page, separating the version number from the name helped.

</comment></comment></comment><comment><USER7> PHP coded this way seems as sexy than java or c# without still the consistency of those languages. What is the advantage of using PHP now?

The code is overbloated with complexity thus close to unmaintanable (evolution and correction) and there are stuff that feels wrong in my guts: [https://github.com/rmccue/Requests/blob/master/library/Reque...](https://github.com/rmccue/Requests/blob/master/library/Requests.php#L682) the naming is WRONG: flattening a list is not what he is doing: it is transforming a nested data structure in a level 1 associative array. Each wrong naming is a landmine waiting to explode at your face.

This language now strikes me as an odd frankenstein that has no advantages anymore for coding.

And this code is hiding its weakness in ridiculously complex OOP: every single methods are _static_ for me it is the sign it should have been a namespace exporting functions.

<comment><USER8> Not disputing or supporting your particular point about the style here, but problems with PHP as a language and problems with PHP as coded by a particular developer are two different things.

Weirdly, people seem to ascribe the latter to the former rather often around here.

<comment><USER7> hum, the language as a 3rd important value that is undervaluated: culture!

The language brings a culture and the efficiency of a language is indissociable from its average programming culture.

The rant of torvalds against C++ for coding is not about the language but the culture of the developers. [http://article.gmane.org/gmane.comp.version- control.git/5791...](http://article.gmane.org/gmane.comp.version- control.git/57918)

The same rant can be made on PHP and this code is just a very vivid example of this point.

PHP is not a fractal of bad design, a language is primarily a media to convey ideas and concept from human to humans and actually if the culture of the users is sub level, whatever the quality of the language is the code will be shitty.

PHP has attained a critical mass of ignorant developers that are dragging not only their whole language down but also of the whole eco system (managers, sysadmins...), so PHP is not only a bad language it is also a bad culture we should try to eradicate :)

<comment><USER8> Is someone forcing you to use PHP? If you don't like it, don't use it. If you don't like the culture, then by all means, either try to improve it or don't participate in it. Luckily, the universe of software is large enough that you need never touch PHP if you don't want to. PHP is just a tool, one which many developers find useful, and which yes supports a lot of shitty code. Go make an app in Django or Rails or... whatever. The world is your oyster.

But the idea that it should be 'eradicated' is just plain silly. If we eradicated every language some random purist found offensive we'd be left coding in raw binary.

<comment><USER7> PHP, django, rails you really like bloated software that have conceptual flaws and constant security advisories? [http://cve.mitre.org/data/refs/refmap/source- MLIST.html](http://cve.mitre.org/data/refs/refmap/source-MLIST.html)

And yes I am forced to use PHP or any cited bullshitware because all these coders are intoxicating my customers with false hope, and false expectations that after close lookups (especially the Total Cost of Ownership including maintaining) systematically fail to deliver what was promised.

Would you listen to someone who says coding correctly takes time but maintaining will be easy or the enthusiasts that are saying I have a framework that "works" (but is not) and I can deliver in no time? (disregarding the actual quality of the code they are using, or the operational complexity (thus additional recurring costs), or ignoring the big O notations). Advocates of BSware don't care about the details. But the devil lies in the details.

There is no shortcut for being a decent programmer; you have to have the control over everything.

I say it loud and clear: because of their culture some language and tools turn decent smart people into incompetent frauds that contaminate the work of every developers. Incompetency is a cancer that contaminates the economy and costs an awful lots of bucks.

<comment><USER8> By all means then... because we are all thoroughly tired of bloat, conceptual flaws and security issues in our code... enlighten we simple peons as to the language we should rather be writing our web apps in.

And you can't say C, because PHP is already a wrapper for C, and of course PHP is terrible.</comment></comment></comment></comment></comment></comment>


Ask HN: What do you use to create mockups? - <AUTHOR>

Right, there're dozens and dozens software to create mockups. Honestly, do you use one of them? Do you really pay for this? Or do you still use the powerful pen and paper?<p>I wonder if a free, powerful, productive tool to make mockups exist. What's your opinion? <comment><USER2> Yes it does and it's called <https://moqups.com/>

</comment><comment><USER3> Pencil is a free, open source and good prototyping tool. <http://pencil.evolus.vn/> It works perfectly on Linux, Mac, and Windows. It allows you to prototype web apps, iphone apps, and Android apps.

</comment><comment><USER4> balsamiq, worth the $79 HANDS DOWN. www.balsamiq.com</comment>


PostgreSQL vs. MS SQL Server - <AUTHOR> http://pg-versus-ms.com/

<comment><USER2> > they even invented a whole ecosystem, .NET, designed to draw a hard line > between Microsoft users and non-Microsoft users

I guess this wasn't written last week; the author gets to update that part with the recent developments with regards to the .NET foundation[1].

[1] [http://www.dotnetfoundation.org/projects](http://www.dotnetfoundation.org/projects)

</comment><comment><USER3> > 1.3. You can run PostgreSQL in Linux, BSD etc. (and, of course, Windows)

Of course don't expect locale to work correctly.</comment>


The jQuery Divide:Understand where jQuery ends and JavaScript begins - <AUTHOR> http://www.slideshare.net/rmurphey/the-jquery-divide-5287573

<comment><USER2> I'm not so sure I buy the premise that jquery is unsuitable for large scale applications. I think it is based on an assumption that jquery should provide a framework for these things, but really - what jquery is, is a framework for the controller layer of an application. If you want to use it, you have to provide the model level framework your self. I don't think this is the fault of jquery anymore than it would be the fault of Sinatra.rb to not provide the functionality of Rails.

<comment><USER3> jQuery as commonly used leads, in my personal experience, to hard-to-maintain programs. Just like Ruby on Rails, or Perl.

There is also anecdotal evidence that jQuery qua jQuery has some fundamental limits. I worked on a largish jQuery application, written by ninja badasses, and it creaked a lot more than it should have for its size.

Comparable systems built on YUI seemed to have more structure. I actually went through the exercise of converting a prototype from jQuery to YUI3, and spent a lot of time working out their respective "philosophies". (see <http://jsrosettastone.com>)

There are newer frameworks (eg JavelinJS) that aim to be to jQuery what jQuery was to other frameworks.

<comment><USER4>
        I worked on a largish jQuery application,
        written by ninja badasses

I don't think those " _ninja badasses_ " were as good as you're describing them.

If they were, they would realize that jQuery is not a framework that structures your application, but just a neat and light library that provides syntactic sugar for DOM-manipulation + dealing with cross-browser issues.

        jQuery as commonly used leads, in my personal
        experience, to hard-to-maintain programs. Just
        like Ruby on Rails, or Perl.

Well, I could say the same thing about Java/C# or PHP ... in fact, the shit I had to put up with in those (more structured) platforms is far worse than anything I have seen thus far that was done on top of jQuery / Rails and Perl. And I thought Python/Django had immunity from such problems, until a month ago.

Newsflash: bad developers write bad code.

And yes, I've worked with Perl -- Catalyst and DBIx::Class are pretty good, you should check them out ;-)

<comment><USER3> Well, you may have a different experience.

I've also noticed a new trend in complex applications, eg JavelinJS and Yahoo's "Minty" mail app, that moves away from jQuery's or YUI's model. They feature a centralized controller/arbiter and a separation of CSS classes and event markup. Instead of jQuery + MVC it's a little of both.

See also <http://news.ycombinator.com/item?id=2430271>

</comment></comment></comment></comment><comment><USER5> IMHO the most important "clean code" boundary for web apps is a non-enhanced interface (plain old forms). From there, pages can progressively enhance until the cows come home with jquery plugins and complicated interface code, but as long as you know it boils down to a form submission, it's easy to understand what is going on in the application. The form is the model into your web app, and everything else is just sugar.

And whether working on an android app, a QT application in C++ or a jquery based rich client interface, rich client functionality is always somewhat messy in my experience by nature of having many complex interactions in a stateful environment. I certainly don't see using YUI as a silver bullet to alleviate the complexity. As long as it is always clear where the boundaries between the communication between the client code and the server / and its model, you will maintain a clean and maintainable core.

If you want to ditch the idea of progressive enhancement and work directly with a web api to your server, then similar rules apply; as long as it is clear that "this page / widget presents a snazzy interface to update this model" you can remain sane in the organization of your app.

Finally, if you have a super rich interface like Asana, pivotal tracker or google wave where the entire page is presenting many models at once in many forms, then a functional reactive approach may help, using something like backbone or what luna script promises to be. But using a framework like that has its own cost and complexity and IMO is overkill for many of the web apps out there.

</comment><comment><USER6> I don't see it mentioned very often, but google's closure-library has some really phenomenal patterns for building maintainable javascript. Its worth checking out Michael Bolin's book, Closure: The Definitive Guide, which goes in depth of the Component and Control frameworks.

I've been using the library for 2 or 3 years now, and I am always surprised to see it has such a small community.

<comment><USER7> Exactly. I see closure as an ambitious effort to make JavaScript a better language for real complicate applications.

</comment></comment><comment><USER8> Here is a video of the talk you refer to: <http://jsconfeu.blip.tv/file/4308069/>

</comment><comment><USER9> So, how does one become a good, non-spaghetti-code javascript developer for the web?

I don't really like js so far, but there are just no alternatives in some cases. And my code ends up like those counter examples. Where can learn how to organize it properly?

<comment><USER10> No alternatives? Coffeescript is always an alternative to js: <http://jashkenas.github.com/coffee-script/>

<comment><USER11> Coffeescript "compiles" to JS--so it's not an alternative to using Javascript; just an alternative syntax for writing javascript.

<comment><USER10> Coffeescript is a different language though. It has different grammar, different keywords and so on. It shares the same object model, and it is usually used on compile form.

There are other alternatives as well[1], such as:

\- LLVM languages: <http://syntensity.blogspot.com/2011/04/emscripten-10.html>

\- HotRuby: <http://hotruby.yukoba.jp/>

\- Smalltalk: <http://clamato.net/>

\- Haxe: <http://haxe.org/>

\- Mascara: <http://www.mascaraengine.com/>

And so on. Coffeescript is just closer to javascript than most alternatives. But it is a different language, and a nicer one in my humble opinion.

[1] [https://github.com/jashkenas/coffee-script/wiki/List-of- lang...](https://github.com/jashkenas/coffee-script/wiki/List-of-languages- that-compile-to-JS)

<comment><USER11> I disagree that any language that "compiles" into another language can be considered an "alternative." I'm not bashing CoffeeScript; I haven't played with it much and don't know enough about it say anything one way or the other; but at the end of the day, the result is still Javascript.

</comment></comment></comment></comment></comment><comment><USER12> Hey! That's exactly how my jQuery code looks! I think I just got seduced by all the closurey goodness that comes with Javascript (my day-job languages don't let me do that.)

I'm not going to ask how to write good code, but I think this is a fair question: can someone point to a coding standard / style guideline for Javascript + jQuery?

E.g., when to choose a single-use named function over an anonymous function? When to bind jQuery results to variables vs. go crazy with chaining? Any advice on good selector practices? Good html naming conventions?

I'd love to see all that stuff documented in one place. It must be out there somewhere.

<comment><USER13> > can someone point to a coding standard / style guideline for Javascript + > jQuery?

backbone.js is good. That gives you a fair idea about structuring your application. If you webapp is designed in a RESTful manner, backbone.js maps quite nicely to your backend.

</comment></comment><comment><USER14> People at my job call all JavaScript jQuery, it is so annoying. Even more annoying is that their code (jQuery or not) plain sucks

<comment><USER14> When I use jQuery (MooTools is my lib of choice) I find myself using it in ways that is very unlike the majority of jQuery that is seen around the web.

I absolutely hate the plugin system simply because you cannot easily get the instance of the plugin an refer to it later. To answer this I use function constructors with the module pattern (its easy and doesnt require an extra lib to get going) to create my plugins. Another thing that I do is when I query for a collection of objects, create an array that represents every item in that collection already wrapped with the jQuery object. This may not seem like a big deal, but there is a difference between

        var collection = jQuery('a');
        collection.each(function(i, l){
            var link = jQuery(l);
            link.bind('click', function(){//do suff});
        });

and

        var collection = jQuery('a'),
            collected = (function(){
                var c = [];
                $.each(collection, function(i, item){
                    c.push(jQuery(item));
                });
                return c;
            })();

this second way allows you to select an item from collected without having to rewrap it with the jquery object. I dont have any data on it, but it seems like rerunning jQuery() with every mouseover/mouseleave/event etc seems like a waste of processing.

Anyway, that is just a few ways that I use jQuery to make javascript a bit easier. These little tricks have the people that I work with thinking that I'm some sort of genius.

<comment><USER15> Isn't that second code snippet actually creating a jQuery object for each "a" - even if it is never clicked on? Isn't that rather more of a "waste of processing" than the first, where a jQuery object is created in the event handler?

Why wouldn't you write the first one as:

       $("a").click(function() { // do stuff });

<comment><USER14> if you need to do stuff with a inside of the function, then you have to do $(this), so every time an a in that collection is clicked $() is run.

In my first example I actually took that problem out of the equation by looping through the collection and storing the jQuery'd a as a var accessible via the event closure. However, if you want to reference an element in that collection later in your code, you have to jump though the jQuery selection hoops.

But you are right, sometimes you may not need to have every element in your selection wrapped in the jQuery object and it is up to you to determine which solution to use in a given case. But I do feel that most cases I see devs constantly wrapping $(this) inside of event handlers when they could have made an external reference/collection before hand and used that.

        $('a').hover(
            function(e){
               $(this).doSomething();
            },
            function(e){
               $(this).doSomething();
            }
        );

vs

        var as = $('a'),
            collected //using the same method as above;

        as.each(function(i, e){
           collected[i].hover(
                function(e){
                    collected[i].doSomething();
                },
                function(e){
                   collected[i].doSomething();
                }
          );
        );

This is a very rudimentary example and I know that there is a simpler way to accomplish this, but imagine code with multiple collected items who all match up on a 1 to 1 basis collecting the pre-wrapped objects has its advantages.

<comment><USER16> But wouldn't multiple potentially long loops on initial load have a greater possible impact on user experience than one extra call to $() per event?

<comment><USER14> Great point. I think that my simplistic example is just that, simplistic. A better solution for huge collections would be to memoize the retrieval of the $() obj with something like

        var memd = {},
            getMem = function(obj){
               var o;
               if(memd[obj]){
                  o = memd[obj];
               }else{
                  o = memd[obj] = $(obj);
                }
               return o;
             };

and call that function instead of calling $() while inside of an event handler (I havent tested this code, but the concept is straight forward)

<comment><USER15> I don't want to appear snarky, but as you admit yourself ("I dont have any data on it") you don't know if creating a jQuery object is expensive or not (to be fair, I don't know either) - so why all the extra complexity if you don't know whether the thing you are trying to avoid (creating instance of jQuery during event handlers) actually causes problems or not?

<comment><USER14> Well given that a lot of the "pro" jQuery tips say that one should avoid rerunning the selector in favor of some sort of memoization:

        $('.class').doSomehting();
        $('.class').doSomethingElse();
        $('.class').thirdThing();

in favor of

        var ele = $('.class');
        ele.doSomething();
        ele.doSomethingElse();
        ele.thirdThing();

I would only assume that re-querying with the jQuery object inside of event handlers has the same adverse effects.

Lets say you have a very simple tabbed thing

        //this is code that i've seen around
        var tabs = $('a.tab'),
            containers = $('div.container');

        tabs.click(function(e){
            var index = tabs.indexOf($(this));
            tabs.removeClass('active');
            $(this).addClass('active');
            containers.css('display', 'none');
            $(containers[index]).css('display', 'block');
        });

vs //this is how id handle a simple tabber var tabs = $('a.tab'), containers = $('div.container'), all_containers = $.map(containers, function(i, c){ return $(c); });

        $.each(all_tabs, function(i, tab){
            var t = $(tab);

            t.bind('click', function(e){
                tabs.removeClass('active');
                t.addClass('active');
                containers.css('display', 'none');
                all_containers[i].css('display', 'block');
            });
        });

I just feel that the first one, while more concise (has it obvious areas of improvement, but general idea) would wind up being more expensive than the second.

If running the jQuery object isnt too expensive, why is the practice of rerunning the same selector frowned upon?

<comment><USER16> Interacting with the DOM is what's slow. It's especially slow if the native querySelectorAll method isn't available because any non-trivial selections necessitate iterating over the DOM tree. That's why you don't want to re-query a selection multiple times.

That's also why it's recommended that all selections start with an id. The size of the tree to iterate over can be quickly reduced using the native getElementByID method.

In the case of $(this), the DOM node is already passed to the event handler, so wrapping it in a jQuery object doesn't touch the DOM tree at all. Furthermore, I always cache it (var $this = $(this);) if I'm going to use it more than once.

Also, in your first example, you don't have to rewrap containers[index] in a jQuery object. All the elements in the selection are already wrapped.

<comment><USER14> > Also, in your first example, you don't have to rewrap containers[index] in a > jQuery object. All the elements in the selection are already wrapped.

Really? I think that is the whole point of this long comment thread -- that the elements in a collection arent already wrapped.

<http://jsfiddle.net/8nqtA/>

This doesnt work unless i wrap a[i] in $()

But like you're saying, it may be fruitless since the dom is the bottleneck and we're bypassing it by already having the element.

<comment><USER17> Well there's a few problems with that example:

1) You've got a "global" named a and then a local variable (via the argument) inside the each function called "a"...so that really confuses things.

2) a[i] where a is a jQuery object returns an unwrapped DOM element...what you want is .index().

3) What you're doing is sort of roundabout...

Why not:

        var d = $('div'),
            a = $('a');

        a.each(function(i, el){
             d.text(d.text() +' '+ $(this).text() );
        });

Or if you really want to do it your way:

        var d = $('div'),
            a = $('a');

        a.each(function(i, el){
             d.text(d.text() +' '+ a.index(i).text() );
        });

<comment><USER15> Shouldn't the second one be:

        var d = $('div'),
            a = $('a');

        a.each(function(i, el){
             d.text(d.text() +' '+ a.eq(i).text() );
        });

Using eq(i) rather than index(i)?

<comment><USER14> I feel like this should have been the first replay to my rant. The nodes are already wrapped in the jQuery object, just need to use eq to access them by index. I've never seen that before, thanks

<comment><USER16> They actually aren't already wrapped. The .eq() method pulls an element out of the collection and wraps it in a new jQuery object.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER18> I was hoping for a Backbone.js mention. A tool like that will get you a long way in structuring your frontend code.

<comment><USER19> Backbone.js came out just a couple of weeks before I gave this talk in October 2010, and I just hadn't had time to look at it enough to feel comfortable mentioning it. It is definitely a powerful tool for bringing structure to an application, and I'd certainly mention it if I were to give the talk today.

</comment></comment><comment><USER20> I don't like presentations like this. What suggestions or solutions were offered? Perhaps the audio mentioned some good resources to use to learn how to properly architect a complex, Javascript/JQuery heavy application, or perhaps I just missed it in the slides, but to me it just seemed like a rant. Sure it's identifying an issue but it would be a whole lot more useful if it gave some links to books/articles/etc with details on how to layout your code in a maintainable manner.

<comment><USER19> I'd encourage you to bear in mind the original audience of the presentation: the very small number of experienced JavaScript developers who managed to obtain a ticket to the 2010 JSConf.eu in Berlin.

The goal of this presentation wasn't to teach people how to write good JavaScript -- many of the people in the room that day can and do write circles around me. Rather, the goal was to urge them, the experienced JS devs who are inventing the answers to these questions, to take seriously the need for creating exactly the information you point out to be lacking, and to be intellectually rigorous and honest in discussions of various solutions.

I'd suggest that you pay extra attention to the presentation starting at slide 40, and especially to what I said on slide 60: "Sharing what we know is as important as making new things." That, in a nutshell, was the message I sought to convey to the audience in October.

</comment></comment><comment><USER21> jQuery is popular because you don't need _any_ programming experience to be productive. I was introduced to jQuery by our in-house web _designer_ like 3 years ago because he used it and really liked it. He spoke HTML, the DOM and CSS and so does jQuery. And there are far more HTML/CSS literate people doing Javascript than there are CS-educated software engineers doing Javascript. In fact most software engineers I know don't know crap about Javascript. Thankfully I read "Javascript: The Good Parts" and have a much better appreciation for the language.

I also like jQuery as well. If you're doing simple DOM manipulation, AJAX and light javascript work it's hard to do any better. But I think there are superior choices for some more heavy lifting JS projects.

</comment><comment><USER22> Nice presentation, I am not sure about most people here but I started using jQuery because the documentation was excellent, easy to navigate, with lots of examples. Hence trying it out was simple and I got hooked.

At that time IMO the other libraries apart from YUI, did not seem to have everything in place to learn how to use them quickly. I was put off YUI at the time because it seemed incredibly verbose, this has since been improved.

Also I think a distinction can be made between using jQuery and using the widget factory which does allow for more modular maintainable code.

</comment><comment><USER23> Maybe the MVC design pattern doesn't work so well with jQuery in the view, acting as a controller and also for display logic.

Surely there is a design pattern that does not try to shoehorn AJAX via jQuery into what was once an MVC pattern?

MVC for webapps was around long before AJAX, yet the design pattern remained the same, after the widespread introduction of AJAX in webapps. Until very recently, there has been little traction in an 'evolved' design pattern, incorporating what the js is doing.

</comment><comment><USER24> Since no particular solutions were offered in the talk...

HN: What are the best technologies for writing large JS apps?

I have experience writing Closure (<http://code.google.com/closure/>) and its structure is pretty scalable, but it feels like so much effort to do simple things. Styling the widgets is a pain. Making a custom widget (extending goog.ui.Component) is surprisingly difficult to get right for even simple extensions.

After all that, I still think it's probably better to develop in that over jQuery -- at least you end up with a straightforward, modular, testable structure at the end of the day.

Is there something better? backbone?

</comment><comment><USER25> About time someone came out and said this, good job.

<comment><USER26> Said what? Did I miss it? He seemed to just stop midway.

He implied there was a problem, showed some code, but never showed where the problem lies or what it was, and certainly never mentioned any solution.

All I got was some vague "this isn't pretty" vibes.

<comment><USER19> I can't speak to what else you missed or didn't miss, but you do seem to have missed that he is a she, so ...

<comment><USER20> doesn't change the original point</comment></comment></comment></comment>


Comment Thread for "ZeroCater is hiring a developer" - <AUTHOR>

Post any experiences you've had interacting with the guys at ZeroCater or with the company as a customer. Ideally, so that a prospective employee would better know whom they'd be working with. <comment><USER2> A company I worked with in SF used ZeroCater, so I was a customer.

As a service, they are awesome. I have food allergies and they were on the ball, making sure i always had options. They've got a great feedback loop and it's obvious how it informed future decisions. Honestly, if they had a Palo Alto branch, we'd be all over it.

As people, they seemed equally as awesome. I enjoyed our communication. Every time I left specific feedback on something (such as "these sandwiches weren't really as good as the ones from that other vietnamese place you also cater" they'd respond with text indicating action or appreciation.

tl;dr AAAA+++ SELLER WOULD HIGHLY RECOMMEND

<comment><USER3> I concur. We are currently a customer of ZC, and compared to what happened before we were, it's an immense improvement. And they really care about the feedback we provide, too. Great idea, great execution.</comment></comment>


Grsecurity: Important Notice Regarding Public Availability of Stable Patches - <AUTHOR> http://grsecurity.net/announce.php

<comment><USER2> Any idea of the company that should not be named ? I was thinking about Google but in this case they might have used "mobile" instead of "embedded" Linux.

<comment><USER3> One of the companies might be Wind River (Intel). The description in the announcement fits that forum post quite accurately: [https://forums.grsecurity.net/viewtopic.php?f=3&t=3713](https://forums.grsecurity.net/viewtopic.php?f=3&t=3713)</comment></comment>


Monster Math – Grade 3 game - <AUTHOR> https://itunes.apple.com/in/app/monster-math-grade-3-game/id924441242

<comment><AUTHOR> Hi - I am one of the developers of Monster Math.

We've worked hard to craft this app; it combines beautiful artwork, hilarious animations, an engaging story line, and a pretty unique game play. We've play- tested it with kids from different countries, ruthlessly removing all frustrations and building an experience that makes kids smile. While doing Math!

The app is $2.99.

This is currently available in India and Canada - if you are not in these countries, please visit [http://www.makkajai.com](http://www.makkajai.com) and register so we can notify you once it is available in your country.

Feedback is welcome. Thanks.

Be Awesome,

Roopesh

<comment><USER2> Just a general question from someone who never worked with the app store: What's the reasoning for not making an app available in all countries?

<comment><AUTHOR> Great question. Some of our reasons -

1\. Doing some experiments on the marketing side, especially keywords, before launching everywhere. The first week/month on the app store gives a boost to keyword rankings that can be leveraged to build good traction. Unfortunately it also requires some experimenting to get them right, so this initial launch in 1-2 countries can provide that data.

2\. Building some traction and credibility so that when we launch on the other app stores, we can build on that (for e.g. #1 on the Canadian App store would have a nice charm to it, if we achieve it!). This again helps with point 1 (better traction in launch week/month).

3\. Ensuring Support is not overwhelmed by unforeseen issues. We have tested a lot, but never know what kind of crashes or even minor bugs might be seen in the wild. We want to be awesome at customer experience.

4\. Gathering feedback in general.

<comment><USER2> Thanks for replying, I was always wondering if marketing/shipping reasons or other reasons (tax, bureaucracy) keep developers from just checking all country boxes when they submit it to the store.

Another mystery resolved!

<comment><AUTHOR> :) Glad to be of help.

</comment></comment></comment></comment></comment><comment><USER3> I suppose drill-and-practice is adequate for young learners, but boy are mathematical DaP games thick on the ground. This looks like a good implementation of one, but it's hard for me to get excited about it. Still, I'll be interested in hearing how you're testing whether it has an impact on what students know.

<comment><AUTHOR> Hi,

Thanks for the question.

We realised that getting kids excited about the game is the first step to getting them to play it. Especially when they have blockbuster options like Subway Surfer, Plants vs. Zombies, Temple run or even 100s of well-crafted indie games, it's hard to get them to play math games if they are not fun. A lot of math games are also just flash cards or questions retrofitted into normal games.

Our main aim was to bridge this gap - we wanted to build something that is just as engaging, just as fun as a real game - but also something that helps kids practice arithmetic and actually enjoy it.

The game also (non-intrusively) tracks kids' progress so parents and teachers can know exactly what skills they are struggling with.

Monster Math also includes Scaffolding - it guides kids to the right answers when they struggle, or tells them what they got wrong.

We've seen kids getting a lot faster at mentally calculating basic arithmetic problems with just a week of game play. We have not done a formal benchmarking on this yet (so I can't prove it in numbers yet), but we plan to do one soon.

And yes, this is just the beginning - we want to add lots of learning content too; something that will help us take corrective action from right within the game with explanatory animations. We've already started chalking out some of those features, and there's just so much work to be done!

</comment></comment><comment><USER4> My kids have to do math drills every night. Every week they need to study +4s then the next week +5s. I don't see an option for making everything the same addin. If so I would definitely buy it. A hard thing to do is get your kid interested in studying math facts. If they had this, they would think it's a game. It looks good.

<comment><AUTHOR> Thanks for the encouraging words.

</comment></comment><comment><USER5> Why did you make the name of the game "Monster Math - Grade 3 game for kids to learn Addition, Subtraction, Division, Multiplication mapped to Core Curriculum"

Why not save that for the description and just keep the name as Monster Math?

<comment><AUTHOR> The name of the app are like extra keywords (outside of what is already defined in keywords). They help with search discovery.

To be honest, we are still not sure we want to keep it this way - I know the name sounds a bit spammy, but then it helps us rank better on those search- keywords (and also have more keywords outside of the name).

Do you have any experience on this trade off? I'd love to hear others' view on this.</comment></comment>


DRYing Elixir Tests with Macros - <AUTHOR> http://hugoribeira.com/DRYing-Elixir-Tests-With-Macros/ <comment><USER2> This observation is orthogonal to the original article but: often DRYing tests is a bad idea. Two principal reasons: 1) if you need a lot of boilerplate, you might need to look at refactoring your classes to reduce dependencies 2) non- DRY tests are often easier to read due to increased indirection.

None of which means that I don't reserve the right to DRY tests out when I think it's contextually appropriate.

<comment><AUTHOR> I agree, you should be very careful about DRYing tests. Making sure and endpoint touches the authentication layer seems like a very good case to break that rule of thumb.

I've been writing Web Applications for a while now. There was only a handful of cases where I needed to repeat the same test case over and over again (authentication being one of them).

If it happens too often, it's a good tell that you're missing a responsability delegation into a concrete module/class somewhere.

</comment></comment><comment><USER3> This is a very cool demo of use of macros.

On testing, I think DRY principles are a good thing in your production code but I don't believe there is anything wrong with having lots of repetition in your test code. Each test can be read from front to back by the reader. If you have to wander around trying to understand the design of the test then that may not be ideal. Shouldn't need unit testing for your unit tests :P

</comment><comment> luiz-pv9 I'm always very careful when placing code supporting the test outside of the test itself. Setup and teardown functions are fine, but I prefer to be safe because, well, you can't test the test.

\-- I'm not saying this is the case in the blog post. Just some thoughts.

<comment><USER4> If a macro used for a test suite is substantial enough and used often I'd say it's worth testing

</comment></comment><comment><USER5> I think this would be done better as a private function that takes a conn, a method, an action and an expected response code.

No need to complexify things unless you absolutely must.

<comment><USER6> Agreed. Elixir's first rule of macros is to not use macros. Generally idiomatic elixir is to try to encapsulate your problem in (ordered by priority) a 1) data structure 2) function 3) macro. So if you can express your problem in something other than a macro, do so.

</comment></comment><comment><USER7> Erlang/elixir is getting some awesome love from hacker news. <3

This is pretty sweet for testing repetitive tasks and also to get starting with macros on elixir.

<comment><USER8> Erlang has always done well on HN. One time the whole front page was Erlang submissions after pg asked for more Erlang.

</comment></comment><comment><USER9> Was it not possible to simply write a function to achieve the same result?

<comment><AUTHOR> I don't think so, I believe the function calls need to be there at compile time so that the test actually gets run.

But I'll give it a try tonight though :)

<comment><USER9> I don't think you can get the exact same syntax without using a macro. But couldn't you have just your entire assertion in a function and pass in the conn, method, route name, and expected json status?

Then you just wrap that in your test "..." form.

I don't see much gains from writing a macro, I see more drawbacks.

Pros of just using function and wrapping it in test form:

* It's just a function, easier maintenance. If you write a macro, you have to debug not only the macro but the code your macro writes.

* You gain more clarity into what each test is testing when there are failures. You hard code the "requires authentication" part as your test string. To write a macro that is flexible enough to also allow the user to specify the string here would end up defeating all purpose of it.

* You unquote the three arguments you pass in to the macro immediately. That's a red flag to me that this shouldn't need to be a macro. It's just to avoid the test boilerplate.

Cons:

* It's syntactically longer

I'm coming from a Clojure perspective, I've dabbled briefly with Elixir so let me know if I'm wrong. I wanted to get into Elixir more but the community's pervasive use of macros is keeping me from embracing it. They say Elixir is less magical and more explicit than Ruby and while that's not an untrue statement, I'm seeing too much metaprogramming already with macros. I'm not saying all macros are bad, it's just the vast majority of them are unneeded.

<comment><USER10> If you look at the code, that's actually what the author has done.

They've made a `make_unauthenticated_request` function that does the work, and the macro just calls it.

But, I agree, I'd probably have skipped the macro. And DRYed it up with just the function.

<comment><USER9> Right. That's exactly what I'm trying to point out. The point of the macro is to get the test form stuff.

</comment></comment></comment></comment></comment><comment><USER11> I've been thinking of exactly the same thing over the last couple of days and controller tests are prime candidates for this kind of DRY-ing, e.g. one would want to make sure resources owned by a user are actually scoped to that user and unaccessible to others. That is something that needs to be done on every action. Perfect case for DRY-ing up.

</comment><comment><USER12> I like tests to be as unclever as possible, I want to know my tests are actually testing the code and not passing incorrectly.</comment>


Introducing Rekit Studio: A Real IDE for React and Redux Development - <AUTHOR> https://medium.com/@nate_wang/introducing-rekit-studio-a-real-ide-for-react-and-redux-development-baf0c99cb542 <comment><USER2> Nice, the live demo contains the Monaco-Webpack integration code that I once posted on Github :-)

Never expected that workaround to get that much use.</comment>


VMware joins Linux Foundation: what about the GPL? - <AUTHOR> http://laforge.gnumonks.org/blog/20170308-vmware-linuxfoundation/ <comment><USER2> I understand the consternation -- I have very mixed feelings about the Linux Foundation (I am on the TOC of the CNCF, an LF project), but the reality is that as a 501(c)(6) they are much better resourced than the 501(c)(3)s dedicated to open source. In my opinion, the LF therefore represents our (current) best shot to achieve some common good, and (speaking personally), I have resolved to work from within the LF to make it more useful to the broader constituency of open source communities. (As a concrete example, I championed the LF/CNCF acquiring and relicensing RethinkDB[1].)

Similarly, I think applying a purity test to the LF would be counterproductive: it would end up refusing essentially everyone's money and becoming the FSF or Apache Foundation -- two flat-broke 501(c)(3)s. (Aside, individuals should never ever donate to the LF; donate to a 501(c)(3) instead.)

To sum: I would rather have VMware in than out, and then influence the LF to abide by its broader open source constituency, funding projects at the grass roots that are the lifeblood of open source -- but I also understand those that would view taking VMware's money as selling out that constituency!

[1] [https://www.joyent.com/blog/the-liberation-of- rethinkdb](https://www.joyent.com/blog/the-liberation-of-rethinkdb)

<comment><USER3> Good for you that you're TOC of CNCF an LF project, but I didn't understand a single sentence you wrote. Maybe try using actual words and explaining what may seem obvious to you because it's probably not to others reading you.

<comment><USER4> Approximate η-expansion:

"I understand your outrage, and I also have mixed feelings about the role of the Linux Foundation in open-source. I am on the Technical Oversight Committee of the Cloud Native Computing Foundation which is a Linux Foundation project. However I do want to say that the Linux Foundation is a not-for-profit 'business league' under US law, rather than a not-for-profit 'charitable organization.' The fact that they have these partner companies which make them up, gives them a lot more money than the open-source charitable organizations can provide. Because they have more money, in my opinion the Linux Foundation has the potential to do a lot more good for open source, and so my personal goal is to work from within the Linux Foundation to help it do that. For example, I was very vocal about us buying and open-sourcing RethinkDB. What you're asking for is for us to test the 'purity' of businesses before we let them join the league that is the Linux Foundation. That is a bad idea. It just means fewer businesses will join the league and less of their money will be available for open-source. The Free Software Foundation and Apache Foundation are good examples of similar things: charitable organizations which now do not have very much money because they are not willing to be 'tainted' by big business. On the flip side, please do not donate to the business league as a private individual; give your resources to these charitable organizations who need it instead. But I would rather have VMWare be one of the league contributors than not have their money. We can always work from within the Linux Foundation to say 'you have to listen to these people who want Linux to remain committed to open-source,' so that they keep funding these projects that keep our open-source movement going. On the other hand I understand why you think that taking VMWare's money is essentially 'selling out,' saying that we care more about the money than about our principles."

<comment><USER2> That was absolutely awesome -- thank you! (And apologies to those for whom I was being too cryptic!)

<comment><USER4> Consider it me paying forward the joy I got from Fork Yeah!, which is still somewhere in my top 10 tech-talks of all time. :)

</comment></comment></comment></comment></comment><comment><USER5> While I respect the angst the author feels, this snippet ... _"... allowing an entity like VMware to join, despite their many years long disrespect for the most basic principles of the FOSS Community (such as: Following the GPL and its copyleft principle), really is hard to understand and accept."_

I think this presumes a different rationale on the part of the Linux foundation. The answer to the question "Here is some money, can I join?" is always yes. And with enough money it is "heck yes!"

And that leads to _" I guess I was being overly naive :("_

Which is yes, you were.

Why do politicians, managers, and ex-lovers all have to just "put their differences aside and move on." ? Because if you don't you can't make any progress even if the penultimate step here was one that hurt you badly.

The best way to score this is that VMWare is going to participate in a forum with others who can help guide them to a better compliance record. Both to understand why compliance is good, and to alleviate fears that VMWare might have that complying would leave them vulnerable. What they were before is in the past, now you have a way to work with them to move forward. Consider the alternative that they don't join, they continue to be huge FOSS scofflaws and continue to provide some sort of 'you don't really have to comply' example to others who might be uncomfortable with the GPL. When you look at it this way, it really is a good thing.

<comment><USER6> > alleviate fears that VMWare might have that complying would leave them > vulnerable

I don't think this is the case. VMware (and their lawyers) have studied the GPL and genuinely do not believe they are not complying with its requirements.

This isn't the typical "shady hardware vendor embeds modified busybox" situation where the (in this case alleged) lack of compliance is out of laziness, fear or ignorance.

[Disclaimer: as per my other comment, I used to work at VMware, and am inherently biased in that sense, although I also happen to agree with VMware on the whole ESXi/vmklinux situation.]

<comment><USER7> I didn't study the busybox connection, but why would anyone think vmkernel and vmklinux could be "reasonably considered independent and separate works in themselves" especially considering the source from the sfconservancy site linked to in the article?

<comment><USER6> I don't think anyone considers vmklinux independent, and indeed vmklinux is itself open-sourced (in a kludgey but compliant way): [https://my.vmware.com/group/vmware/details?downloadGroup=ESX...](https://my.vmware.com/group/vmware/details?downloadGroup=ESXI650-OSS&productId=614)

The debate has always been about whether the vmkernel is itself a derived work of vmklinux or Linux.

<comment><USER8> Can vmware replace the linux kernel and vmklinux, and still have a functioning vmkernel?

Ie, for some definition of independence and separation, how independent are vmklinux and vmkernel, and how separated are they in function and use? Could one simply remove the linux parts and plug in a different unix like kernel?

With two independent work I should be able to put them each on a different computer and have a meaningful result from doing so. Two work can have a cumulative effect when brought together, but independent they need to still be meaningful and working on their own. If I arbitrary separate a program, I can obviously not do so since they will not start, function proper or produce a meaningful effect on their own.

</comment></comment></comment></comment></comment><comment><USER9> A lot of the Linux bodies with community sounding names like Linux foundation are actually groups of corporate interests. I had looked up some of the people behind these foundations a couple of years ago and they came across as careerists with little connection to Linux, open source or Linux advocacy.

There is nothing wrong with this, but the names of these bodies should reflect their interests. A name like 'Linux Foundation' should be the flagship organization promoting Linux and open source globally as well as user and developer interests. Some thing like 'Linux Industry Group' is a better reflection of the work Linux foundation does.

Ultimately its high time end-users organize some kind of funded entity to support open source projects and protect user interests. Not just one but multiple such bodies. Without that the interests of those funding projects, developers and industry bodies will triumph and you will just have to accept what ever is 'decided' for you.

I think forums like this should also gently encourage all the thousands of startups who dip into the Linux ecosystem pool but do not contribute anything back even after they are successful, sometimes wildly. Github and Redis comes to mind. That doesn't feel right.

Hiring people working on specific open source projects is good, but its not support, its protecting your own interests. Non-conditional funding so they can continue to do their work that you have benefited from is better.

Its like a river, if you keep on taking from it eventually there will be nothing left.

<comment><USER10> Who will fund it? And if you have startups like Github and Redis funding it, how is that free from the accusations you level at the Linux Foundation?

<comment><USER9> I am not leveling accusations at Linux foundation, I am just saying the name is not reflective of its interests and to clarify there is nothing wrong with its interests.

Its just end users also need to organize to fund and promote open source. There is a perception these things are taken care of but they are not, most Linux groups are industry bodies.

If Github benefits from Redis and its just one of hundreds of examples then there is a moral case to be made to support it and give back to open source in someway so the stream continues to flow. In this case Github had not even bothered to reach out to the Redis author, so there is something wrong here in how successful startups are engaging and using open source.

</comment></comment></comment><comment><USER11> Well, it's sort of well-known that key Linux Foundation figures are openly against GPL enforcement, even in its most harmless forms such as those SFC does.

</comment><comment><USER12> GPLv3 is the fix, but Torvalds refuses to apply it to linux... root of the problem imho. When I can have a gplv2 linux on my samsung TV that gets rooted by the CIA but I can't root it without bricking it, you know it's time to switch to gplv3.

<comment><USER13> Setting aside the political issue (eg. Torvalds says he prefers GPLv2 for the kernel), is it even _possible_ to change to GPLv3 at this point. Linux doesn't do copyright assignment, which means that they would need to track down and get permission from everyone who has contributed (or remove their contributions) in order to re-license.

<comment><USER14> Pretty sure you can't "remove someone's contribution", because derivative works preserve copyright.

<comment><USER15> Idk if lawyers have weighed in, but many open source contributors are definitely under the impression that if you rewrite/remove all contributions of a contributor you are then free to relicense the resulting work without their permission.

</comment></comment></comment></comment><comment><USER16> A 501c6 like the LF has to accept any member at a membership level so long as they comply with the Bylaws and policies. There are antitrust issues if they selectively blocked someone.

Also, consider that the LF may now be helping VMware with their compliance issues. They have many programs to help companies build compliance processes and tooling - is the author suggesting VMware can never right its wrongs? Would we say the same thing about Intel who wasn't that great in its initial Linux journey? Just turn them away for trying to get better?

</comment><comment><USER17> The GPL is just incidental to Linux at this point. Linux is a collaboration between dozens of giant corporations many of which actually hate the GPL. The success of the Linux Foundation is in convincing all those companies that the viral nature of the GPL has been neutralized and it is safe to use it in their proprietary products. There is no idealism remaining but Linux is still an amazing achievement that benefits us all.

<comment><USER18> What benefits? Only "benefits" that I can see are distributed very unevenly - strong entities like Microsoft can extract patent fees from Linux users, despite they contributed almost nothing. On the other end users like you and me are blocked from fixing the software built on GPL components on the devices they own. Which was the very situation GPL was intended to prevent.

<comment><USER19> Pretty much, why can't I run a modern kernel on the average device running Linux, whether that be an IP Camera, or a smartphone? Why are we forced to run ancient, unpatched & insecure software by Qualcomm, LG, Samsung & Google?

<comment><USER20> Technically, you can run new also insecure software by yourself on most Samsung Exynos devices at the very least, including the bootloader. Includes new kernel versions. See: [http://linux- exynos.org/wiki/Main_Page](http://linux-exynos.org/wiki/Main_Page)

Qualcomm is much more iffy, there is some work on integrating support to mainline but it's only beginning.

You lose the warranty bit and still cannot replace FCC-approved modem firmware, because certification reasons.

</comment></comment></comment></comment><comment><USER21> I almost didn't read to the end (got annoyed). Isn't it wonderful that 'Linux' is able to be friends with companies and welcome them?

So many slanderous remarks, 'you can abuse Linux', 'the Linux Foundations has no ethical concerns', 'work with the community, and not against it'. And shouldn't there have been mentioned that VMware afaiu won a (first?) court case?

The questions are important of course. Here a imo much more fruitful reading, likely well-known: [https://lists.linuxfoundation.org/pipermail/ksummit- discuss/...](https://lists.linuxfoundation.org/pipermail/ksummit- discuss/2016-August/003580.html)

<comment><USER21> why downvote?

</comment></comment><comment><USER22> _> It sends the following messages:

\- you can abuse Linux, the GPL and copyleft while still being accepted amidst the Linux Foundation Members

\- it means the Linux Foundations has no ethical concerns whatsoever about accepting such entities without previously asking them to become clean

\- it also means that VMware has still not understood that Linux and FOSS is about your actions, particularly the kind of choices you make how to technically work with the community, and not against it._

I think all of those apply to Microsoft, too. The Linux Foundation tainted its image when it accepted Microsoft without even demanding that it "becomes clean," as the author says, in regards to its exploitative use of patents against OEMs that dare to use Linux-based operating systems.

<comment><USER23> Microsoft provides a lot of open source software with open source licenses, usually MIT.

<comment><USER24> Microsoft also threatens lawsuits to Android companies if I'm not mistaken.

<comment><USER25> And?

<comment><USER24> And I find it interesting that people suddenly claim MS is now the "good guy" and is friendly to OS community.

<comment><USER26> It's not the "good guy" just a lot different than the Balmer era M$. At least now they embraced open source instead of fighting against it and they do give back to the community as opposed to VMWare.

<comment><USER24> [http://techrights.org/2017/02/20/article-about-microsoft- cul...](http://techrights.org/2017/02/20/article-about-microsoft-cult- tactics/) \- Really?

</comment></comment></comment></comment></comment></comment></comment><comment><USER27> I gotta say that I think this is just not a big deal for most people. I understand that FOSS ideals have appeal, I understand why people would like them to be protected -- but at the end of the day, I do feel like FOSS advocates, as well-meaning as they are, are perhaps investing their concern in the wrong place. FOSS rhetoric is nice, but it just doesn't seem that important.

<comment><USER6> I'm very biased, since I worked at VMware for nine years.

Nonetheless I disagree with you. I think it's worth actually pursuing this and settling the VMware situation clearly. Uncertainty is rarely a good thing for anyone in these kind of situations, and so I'm disappointed that there still hasn't been a real ruling on the merits of the case.

Personally I remain convinced that the vmklinux/shim usage pattern is ok by the letter of the license, but I can understand Harald Welte and Christopher Hellwig's viewpoint.

<comment><USER28> As much as I agree with you, I think it is unlikely to be cleared up to any great extent. In my mind, the main question of whether or not VMware is in violation of the GPL rests pretty squarely on whether or not it is a derived work. That definition, in a legal sense (AFAICT -- I'm not a lawyer) is intentionally vague. Potential violations in this sense will almost certainly have to be tested on a case by case basis. Which is frustrating for everyone.

Like you, I hope for a speedy resolution of the VMware situation, but I'm not so confident that such a resolution will shine much light on similar issues in the future.</comment></comment></comment>