Red Flags in Software Developer Job Descriptions - <AUTHOR> https://joecmarshall.com/posts/job-description-red-flags/ <comment><USER3> I disagree with these being red flags. In fact, for me, some of them are indicators of gold:

 _Two Month Contract_

That's music to my ears. It signals two important things: First, it's a real contract and thus going to pay really well. Fake contracts present themselves as "contract to hire" or similar so that that they can convince you to agree to a rate of "half your salary, but paid hourly without benefits". But for two months? You're going to hear about my five figure per week rate.

And it's short. Two months and I'm out of there short. So no matter how toxic the environment and how terrible the codebase is, it makes no difference. A guy can stand anything for a couple months. Especially in combination with that first point, which means that this is possibly the only gig I'll need to take _all year_.

 _Cold Fusion_

Oh yeah, bring it on. This translates as "You are possibly the only person on the planet who knows how to do this work. Charge us accordingly." If you find this in combination with one of the short gigs from above, your life is about to get really good. Your only real problem will be keeping a straight face when you quote the rate you're going to charge for this contract.

In the end, I think it comes down to what you're looking to get out of the job in question. If, like the author seems to be, you're looking for a long term career at a new company then no, you're right, run away from these places.

But if you fancy a bit of fun quick contracting, this article is mostly a list of bill rate multipliers.

<comment><USER4> > Two Month Contract

Totally agree with your points here. I think it's also great to start with a short-term contract before deciding if you want to become a full-time employee. Just like how people usually date for a while before getting married. Becoming an employee is a big commitment, especially at early-stage startups.

(I'm currently looking for a 1-2 month contract if anyone is looking for a full-stack web/mobile developer. Experience with Rails, React, React Native, TypeScript, AWS.)

<comment><USER5> > Just like how people usually date for a while before getting married. > Becoming an employee is a big commitment, especially at early-stage > startups.

You can just quit during your trial period while on a long term contract...

<comment><USER4> That's true, but it can be a lot of work to set up a new employee with benefits, stock options. Also maybe there's a signing bonus, a new laptop and other office equipment, relocation, visa sponsorship, etc.

I think it's better to start as an independent contractor (and work remotely.) Then there is the expectation that this is a short-term contract, unless everyone is happy and wants to continue working together.

</comment></comment></comment></comment><comment><USER6> Red flag for outdated technology? That is hilarious. The IT world has already more work in maintenance than in greenfield projects and that will grow every day. When that is a red flag, good luck finding work in future.

<comment><USER7> This made me chuckle:

"Companies advertising outdated stacks open you up to the risk of building _the wrong sorts of skills_ , which can have far-reaching effects on your career." (Emphasis mine.)

The wrong sort of skills? Like adaptability, strong diagnostic skills, pragmatism, self-awareness, and not being a massive diva all the time? Although it's true that these things can have a far-reaching effect on your career.

 _Every_ company that's been around for a while has legacy code and you _need_ to lose the fear of working with it. You also need to develop enough humility to realise that the code you're writing today is tomorrow's legacy.

<comment><USER8> Honestly, I prefer maintenance.

Having code that's lasted long enough to need maintenance is a sign the company has at least some grounded-in-reality fundamentals. The projects that fell apart upon learning the business model was untenable or the technical or social problem insurmountable, generally don't need maintenance programmers.

Staying a little off the bleeding edge also lets you focus on quality execution, rather than chasing the trends. Sometimes the eventual best practices aren't even offered and understood if you're adopting a platform or framework too early. Nobody wants to hit a "drop everything and rewrite because there was a huge API shift" moment.

<comment><USER9> _Nobody wants to hit a "drop everything and rewrite because there was a huge API shift" moment._

No business owner or manager wants that. I know lots of programmers for whom any excuse to throw away everything and rewrite from scratch is basically Christmas. Some of the more unscrupulous ones might even try to engineer unnecessary excuses to do just that.

<comment><USER10> Oh, I've seen executive leadership fall for unscrupulous/ignorant consultants pitching a "burn your stack, move everything to the cloud/LCNC/SaaS, and fire your developers" approach. Invariably either the company or the CEO's tenure expires.

<comment><USER11> If you can offer your services recovering from these dumpster fires, you'll never go hungry as a consultant.

<comment><USER9> Ironically you may still end up being paid less than the person who started the dumpster fire

<comment><USER10> Yeah, it's the inherent tension between wanting a client that knows they're in a crisis, and the fact that companies in a crisis might not be able to pay you. Yes, they're ready to make the hard decisions; no, they might not have the financial and operational latitude to actually do so.

<comment><USER11> With experience, you will learn to suss out when success is possible (for both you and the client).

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER12> My favorite is always when the job description includes superfluous descriptors in front of the developer role. Like "Rock Star" Developer or "Super Star" Developer. In my experience, it's almost always code for we want to put a ton of responsibility on you, while at the same time having unreasonable expectations for both speed and quality of what you produce.

<comment><USER13> I always wonder which part of the "Rock Star" personality those companies are looking for. Shooting Heroin at work? Throwing TVs out the window? Chasing teenage groupies? Dressing outrageously?

<comment><USER14> [https://i.redd.it/s3f1ruepjhuz.jpg](https://i.redd.it/s3f1ruepjhuz.jpg)

</comment></comment></comment><comment><USER15> Might as well add my own?

Constantly recycled job openings - to spot this you need to be searching for a few months. But if you notice that the same posting is ALWAYS up for senior positions, and it's not a huge company, your resume has a huge chance of never being seen. From my experience, it's likely a company fishing for H1B applicants. Even if you're on a visa stay away.

No intern program - as a general rule, companies with best engineers scoop many straight out of school. I have never worked at a company with top notch engineering that didn't have an intern program. Sometimes this is hard to see since they focus on certain schools, you may be able to find out from recruiters or Glassdoor.

Heavy usage of third party recruiters - the best jobs are easy to advertise. Either the company is incompetent, the position is for legacy work, or the company is just unnapealing in other ways. If legacy work is your jam, go for it, otherwise be cautious. Note that this does not apply for specialized or very high level positions. Use of executive recruiters is normal since paying the cut is worthwhile.

Low or no bonus - we're in a tech boom nearing 90's levels. Your bonus should be 10-30% of your salary. If the company is public, you need stocks. This is the primary way companies keep apparent wages low. The golden eggs are hidden in bonuses, perks, generous vacation policies, and especially public company stock.

Old school practices - occasional work from home, somewhat flexible hours, casual work environment, free snacks. If they offer less than 3/4 you can find a better gig.

Non technical management - this should speak for itself. I've done it before to much regret.

Strange hiring practices - personality tests, panel interviews, minimum GPA rules, leetcode, asking about personal life (married? Kids? Political views?). If you like the idea of hanging out with people from MENSA, sitting in countless committee style meetings, or next to some frat bros or guys wearing MAGA hats maybe this is for you. But asking these things of you reflects the values of the organization. Birds of a feather flock together and humans are no different.

Find a place with engineers that seem to love what they're doing, eachother, and writing code. If they invite you to lunch and everyone is chatting like old friends you probably can't go wrong. Bonus if they're actually excited to talk to you about technology and what they work on.

There's much more but I'm sure the comment section will be flooded with it :)

<comment><USER16> > Constantly recycled job openings

If you see a small company with the same opening for a long time, it may also be that they just haven't found anyone yet. Recruiting is hard, and it may take a year to fill a position.

Of course, "small company" seems to be red flag for a lot of developers anyway...

<comment><USER17> Or they haven't realized that the salary/comp they're offering for the position isn't in line with the market.

<comment><USER18> The team I'm on has a hiring rate of less than one person per year, but I can't recall anyone ever turning down an offer because we couldn't offer enough money. We're not in Silicon Valley and finding the right talent is just that difficult.

<comment><USER19> What is your typical time between identifying a need for a new engineer and actually making the hire?

</comment></comment></comment></comment></comment><comment><USER20> 1 was always caused by the requirements being made by HR.

4 is caused by people wanting to learn things on the employer's dime.

If employers weren't so cheap with training budgets, employees wouldn't do learning projects that end up in Production... wanna see a dangerous company? Find a place that has 37 different technologies in their hiring ads.

<comment><USER21> > _Find a place that has 37 different technologies in their hiring ads._

If those 37 different technologies were all recent (or recently outdated) JS frameworks, or tools that are "hot" right now, I'd want to stay away. But if those 37 different technologies are a mix of tried-and-true pragmatic hacker's choice - say Bash, Perl, Python, R, etc. - covering a bunch of different problem domains, I'd think highly of the company that seems to be able to use the right tool for a job.

<comment><USER22> This. While not 37, the projects I work on, on any given sprint I can be doing some combination of C#, Python, C++(oooold C++), Java, JavaScript, Perl, BASH or PowerShell. I actually love it because I am not doing the same old thing day in and day out.

</comment></comment></comment><comment><USER23> > "PHP Contractor - 2 Months"

While 2 months is short, if you don't want short(ish) term contracts of six to twelve months, awesome. Leaves more for me.

I've got around 18 years experience in a variety of tech stacks, being a contractor/consultant is great. Come on board, either create a brand new piece for the client or help them with an existing problem, deliver, move on.

God save me from rotting away in a corner at some huge corporate for years, pretending to care about the company vision. I've done my time at that.

It helps me that here in the UK the market seems to be upside-down, compared to the US - Contractors are usually more highly skilled and almost always better paid than staff.

That all said, that two month estimate had better be a well understood problem domain, with well defined requirements and a realistic amount of work, because most contracts that small are not, and you'll end up two months down the line with the client wanting to extend a month at a time and all sorts of pressure.

</comment><comment><USER24> > _jQuery simply doesn't have the complexity or potential power of a full JS > MVC_

jQuery versus MVC? What is this guy blabbing about. jQuery is a little DSL for accessing the DOM using paths and patterns, instead of verbose chains of accessors. If you just want to access some element nested in the DOM, there nothing wrong with using jQuery; and how does some MVC framework help?

<comment><USER25> It definitely implies that there's something fishy going on though nowadays. In almost any JS runtime jQuery isn't necessary anymore because most of the good ideas are already added to the language.

<comment><USER24> Fishy like "OMG, I was still in high school when this five-year-old code was written"?

<comment><USER25> Fishy like you've got a 10 year old codebase that's probably not had a lot of active development over its life.

<comment><USER24> Whoa! That takes us back to the Dark Ages of 2009. Did they even have Wi-Fi? Man, there isn't going to be _any_ Angular, React or Ember in the code, let alone all three like I was hoping for.

<comment><USER25> Kindly chill with the snark, and the implicit assumption that I'm some sort of framework lackey. That was the year the iPhone 3g came out. Lots HAS changed since then, not least that Javascript through 2009 was ES3, unchanged since 1999 at that point, 2 years after the language was released.

</comment></comment></comment></comment></comment></comment><comment><USER26> Other red flags:

* t-shirts, foosball tables, etc as perks

* overly specific job description (you will be building a table widget using knockout.js)

* buzzword salad

<comment><USER27> air hockey okay?

<comment><USER21> As long as you have a separate room for that...

There's little more annoying than having a foosball table next to your desk while you have a job to do and are trying to concentrate. At one of my previous jobs, there was a foosball table that travelled between rooms - <USER2> 8-people open-plan room wanted really hard to be the ones to have it, but usually after a month or two of serving as company breakroom, they wanted really bad to get rid of it. The table kept making rounds between rooms until they finally freed a separate room to put it in.

</comment></comment></comment><comment><USER28> I feel this could go well beyond a blog post. There could be a regularly updated list somewhere on the Internet. My favourite is 'flexible on lifestyle", meaning your lifestyle better be flexible, not theirs :) Or allowing work from home, but better be 'dedicated', aka. being responsive 24/7 and never leaving 'work'.

<comment><USER29> I agree, there's more to ta job than the technologies used. I'm biased, though, and been around awhile working in most tech stacks.

Just some of the things I prioritize: 1) Engaged, smart teammates 2) Solving an interesting business problem. What's the reasoning behind the softer, I'd much rather work with some legacy technology if it means working with a company with a great mission, vs doing the latest trends for yet another ad- tech company. 3) convenient commute 4) Lifestyle (occasional work at home) 5) Corporate Culture Fit 6) Amount of unplanned work and changing directions all the time 7) Amount of Cognitive load of multiple projects at once 8) Location in town (not necessarily for commuting, but just having a nice place to walk to for coffee, out of office thinking time, etc.) 9) Co-workers passionate about their craft

<comment><USER30> Re 9: I don't care (directly) about whether my co-workers are passionate about their craft. I care because those who are passionate about their craft tend to produce a lot fewer messes and bugs - which I then have to deal with.

So it's a good sign of other things, but it's not actually the thing I care about.

</comment></comment></comment><comment><USER31> > _Competitive salary_

Which is code for:

> _We know that if we display our salary range, we won 't get any > applications_

</comment><comment><USER32> I occasionally see ads for jobs that request absurd things like having x years of experience in a technology where x is greater than the number of years the technology has been around, but I strongly suspect that these type of ads are not serious about hiring an outside candidate and are just put up for legal/compliance reasons.

<comment><USER33> It's either for legal/policy reasons or because something was lost in translation between the hiring manager and HR.

</comment></comment><comment><USER34> Reporting in from Germany where the software situation is still pretty bad in many companies. Red flags are "UML", "Enterprise Architect" (actual name of a software package), and "model-driven development". I can handle legacy code just fine - you have to when doing C++.

</comment><comment><USER35> > "Early Stage Emmployee / Technical Co-founder / Person to Make My Thing"

A typo in the word "Employee" is another red flag. Attention to quality extends to all things around the office including proof reading job descriptions.

<comment><USER36> My mom when she was working for the IRS saw an internal job ad where one of the job requirements was 'experience in pubic speaking'

<comment><USER37> I bet /that/ candidate had some stories to tell!

</comment></comment></comment><comment><USER38> A true red flag I ignored when I was a _very_ young developer was > 'Write code that does not need to be tested.'. being a requirement for a junior position. I came from a freelance background where tests were not a requirement or even unwelcome due to the work overhead and cost. Suffice to say I did not stay at this company for long.

</comment><comment><USER39> "We want to make the world a better place"...(sensor for parked cars with office in a basement)

</comment><comment><USER40> Some job descriptions include meaningless benefits. For example, in my country, the law enforces employers to contribute to pension. Some job descriptions include "Pension contribution" in benefit section. What????

<comment><USER41> I'd guess that means that there is a market of unofficial jobs in your country and the description says that they either contribute to your pension at full scale or at some degree by reporting your salary for tax services lower than it is. In my country half the companies do either of these cause all the taxes on the behalf of the workers and pension contributions are done by them, not the workers.

<comment><USER40> Not the same for my country. It's simply those companies cannot think of any benefit they can provide, so they just put the obvious one.

</comment></comment></comment><comment><USER42> #1 Red flag discoverable during your interview.

Ask if this is a new position or refilling and existing position. With some discovery, you'll find if the churn rate on the job offered is high. If so, run. Something is very wrong.

<comment><USER43> This is a very good question, saying this as some one who just took a job with a high churn rate

</comment></comment><comment><USER44> I'd forgotten about Coldfusion. Is anyone still using that technology?

<comment><USER45> As a former CF dev I laughed out loud when I saw that part - CF+JQuery. But yeah, it's amazingly resilient. The Java bytecode was quite fast and stable.

However there are certainly better tech stacks available. For one, the variable scoping was nightmare-inducing stuff.

<comment><USER46> I thought CF had a reputation of being insecure though?

<comment><USER47> Linode had an exploit awhile back, from their CF admin interface.

Lucee and CF runtimes are still activily maintained.

</comment></comment></comment></comment><comment><USER48> let's add the obvious one

a long list of tech, skills, requirements, "must have", etc. with a low salary

</comment><comment><USER49> I saw a hilarious job posting last year: "5+ years experience with React".

Come on, React wasn't even released 5 years ago from that moment.

<comment><USER50> To me, this is the worst out of all the habits listed here, because it's clearly factually wrong.

Either they're so clueless they can't do math, or they're actively trying to hire liars and only liars.

I don't want to apply for a job that forces me to ignore the truth before I even get in the door. What else are they going to expect me to look the other way about?

<comment><USER29> You all are overthinking it. To me it's just a sign of a larger company where there's an HR recruiting/hiring department that fronts the hiring manager.

</comment></comment></comment><comment><USER51> "Looking for Ruby/Elixir developers" -> They just want Elixir developers but put Ruby to have more applicants.

And in general there is a lot of keyword stuffing in job descriptions.

<comment><USER29> I don't think this is an example of keyword stuffing. I hire a lot on complimentary skills. I bet there's a lot of Ruby Devs out there who'd like to learn and work on an Elixir project.

I've even interviewed at some shops that were Rails-based, but since I had a lot of good OO programming experience, designed and built large-scale systems, had skills with other parts of their stack, I had a better overall skill set than some of their existing Ruby devs. And they accounted for this with part of their onboarding process to get me up to speed in their Ruby codebase....

</comment></comment><comment><USER52> Comparing jQuery to a "JS MVC" is a bit odd.

<comment><USER53> Yeah and I think there is definitely still a solid use case for jQuery. No need to buy a yacht if all you need is a canoe.

</comment></comment><comment><USER54> "X+Y years of experience with THING that has only existed X years" is my favorite red flag.

</comment><comment><USER55> At this point seeing "cs fundamentals" looks like an age discrimination red flag to me.

<comment><USER30> In which direction? It could be saying "High-school super-hacker who knows Python? Don't bother."

</comment></comment><comment><USER56> How about fullstack developer using entirely different technologies on the server and client side. Just be an expert in everything and do it all.

<comment><USER33> I know lots of devs who make clean, efficient, and readable javascript and also make excellent Python code.

It's not that odd to be good at two languages.

<comment><USER57> To be even more explicit, I can't actually see any benefit of trying to keep the technologies the same on both sides of a TCP/IP border. Use the tool that's best for the job, whatever it is.

I think a lot of the worry comes from developers that are relatively inexperienced. We put "senior" tags on positions filled with people with only a few years of experience. Sometimes I think it's hard for newer developers to imagine what it's going to be like 10 or 20 years down the line. Being good at 2 language (or frameworks or whatever) is almost laughable. If you don't have half a dozen hanging from your belt once you've got a quarter or a third the way through your career, I think it's a big problem that you should aim to fix. Picking up something new and being effective and efficient with it very quickly is an incredibly important skill -- one which no programmer that wants to work in the field long term should avoid.

Now, if you happen to have a very young team that realistically can't handle the challenge, then that's a completely different story. It's also very important to understand what your team is capable of.

<comment><USER58> One scenario that might become more common is a C++ front and backend using web assembly at the frontend.

<comment><USER57> At the moment I think that's unlikely because as far as I know web assembly can't access the DOM. Once that's fixed, C++ and Rust and a few other platforms will be a lot more viable. I'm not sure how popular it will get, though. For example, GWT gives you a pretty complete Java implementation that compiles to JS (I even use it on a project!). Even as popular as Java is, GWT is not so popular. My experience with GWT has been that it's pretty awkward to use. I can't think of a single thing that's easier to do than in native JS. Personally, I think Typescript is probably a better fit for frontend work for people who want types. Disclaimer: I'm an old school C++ programmer that actually _likes_ writing JS ;-) Where I see web assembly being more compelling is where you want to write native apps and port them to a web or mobile platform. JS applications on the desktop require a pretty massive runtime system and if that's your main goal, JS is not really a great option (IMHO).

<comment><USER58> I'm right with you in terms of being an old school c++ programmer. I'm really fond of the QT framework and they have been doing a lot of work to port their widgets for WebAsm use. This made taking our existing Desktop GUI application and embedding it straight into a webpage super easy. Our backend servers are C++ based and speak JSON via WebSockets so reusing the same objects on the front and backend was also convenient. Also, I would imaging web assembly could open the doors for much more advanced game engines since a lot of them are written in C++.

</comment></comment></comment></comment></comment></comment><comment><USER59> C++ expert

<comment><USER60> You wont believe how many C++ experts apply for our developer roles (rolls eyes).

</comment></comment><comment><USER61> A non technical manager of mine once posted a job calling for a "COBALT developer".</comment>


App Engine datastore tip: monotonically increasing values are bad - <AUTHOR> http://ikaisays.com/2011/01/25/app-engine-datastore-tip-monotonically-increasing-values-are-bad/

<comment><USER2> I thought what was bad was monotonically increasing keys, not values.

The solution, assuming for instance that you are indexing by timestamp, and your timestamp is a string: index by timestamp[::-1] (reverse the string).

Solved, next problem?

<comment><USER3> Yeah, now try to fetch records from a particular hour.

Seriously, it is better to get rid of timestamp indexing altogether instead of having an index that is basically useless for anything but fetching an _exact_ timestamp.

<comment><USER2> The same problem exists for any monotonically increasing key, and the same solution can be used. Sequential ids for events, whatever. The timestamp was just an admittedly not very wise reuse of a not very good example.</comment></comment></comment>


Ways in which the WannaCry ransomware could have been much worse - <AUTHOR> https://ma.ttias.be/ways-wannacry-ransomware-much-worse/ <comment><USER2> Wow the second point, encrypting the files but providing transparent access for a while thereby corrupting even the backups is really scary.

Although maybe this would be detected when your incremental backups start saying that all the files have just changed. Some softwares will require manual action if more than x percent of the corpus needs to be resynched.

</comment><comment><USER3> One option I don't see in the list, is just basic, file wiping, instead of encrypting. People are lucky there's even an option to unencrypt.

<comment><USER4> But why would you pay if there's no "hostage"?

<comment><USER3> I'm saying that a virus that wants only to destroy, instead of get paid, is more dangerous than a virus that wants paid. It's the difference between a kidnapping and a murder.

<comment><USER5> What's the incentive for such a virus ?

<comment><USER6> Do you not remember viruses in the 90s like the ILOVEYOU virus? Plenty of hackers wrote viruses that maliciously destroyed data just because they could.</comment></comment></comment></comment></comment>


What to Make of Reported Declines in How Much College Students Study - <AUTHOR> https://www.aacu.org/publications-research/periodicals/its-about-time-what-make-reported-declines-how-much-college <comment><USER2> I feel this isnt a concern as much as it seems but is apart of a paradigm shift of information digestion and attention. I would be concerned if curiosity declined too, but given popularity of khans academy amd alternative sources of information I'm not sure if this reflects a crisis</comment>


Starterpad.com - It is a great place to find co-founder for your startup - <AUTHOR> http://starterpad.com/ With this site I was able to find my technical co-founder! :) <comment><USER2> I've found a co-founder I wanted to find just searching the list and sending a message!

</comment><comment><USER3> Definitely a great initiative</comment>


BotLogic.us: A Game That Gets Kids Excited to Program - <AUTHOR> http://www.kickstarter.com/projects/bradwedell/botlogicus-a-game-that-gets-kids-excited-to-progra

<comment><USER2> My 4 year old just played on it up to level 9, took about 30 mins or so IIRC (did take some video if you're interested).

Two points of frustration that stand out both related to editing.

1) the delete move icon is very small (the little red cross against commands); even I had to take a lot of care to click on it properly.

2) theirs no [apparent] way to move the insertion point for commands.

I could just use the text entry to alter commands (he'd go "down" but forget to put the multiplier in, for example). So then as the mistake was at the start, eg on level 8 the only option appears to be to delete the full list of commands and then start again - which is what he was going to do before I suggested I could alter the numbers.

Suggestions:

I think the command symbols could perhaps default to having a number "1" adjacent them, this number being editable by clicking it and typing a new number in.

It might also help for the very young to have a "ghost" to show where the bot will go (or is this "cheating" too much, not sure). That way they don't have to stick their fingers on the screen (his arms aren't really long enough anyway!) to mark where they've got to.

Presumably you get to have loops and subroutines later on but it didn't really feel like it quite made it as a _programming_ game so far. Will see.

FWIW I've used Turtle from SugarLabs and Scratch with his older brother along with playing games like LightBot [II]. BotLogic feels a lot like a slower progressing LightBot, which is good really as he's only 4 and can't even read yet.

<comment><USER3> Great feedback! I love to hear it anytime a young kid was able to enjoy the game, even in the rough form it's in.

The ghost option is something I've seriously considered, although frankly it is closer to the bottom of my list at this point as there are a few other things I think are more important to get in first like loops/user defined functions/etc..

The delete X is a good point and insertion point comments are great, and are issues I've struggled with how to deal with it properly. I have "drag and drop" reordering on the roadmap, and so I forsee deleting/insert point becoming something more natural like simply dragging the command out of the timeline to delete it and dragging a command to a specific point in the timeline to add it vs. simply tapping to queue it at the end.

I like your comment about progression too, as I've really tried my best to make the game be something that's more relaxed in the way that concepts are learned and lets the user get comfortable with the idea of simply separating logic from actions and building simple "programs".

I would agree wholeheartedly too that the game most certainly doesn't teach programming at this point as much as it gets kids excited about the idea of programming. I think once we have some more functionality around loops/functions/etc.. than it will be a little more feature complete in that aspect, but no matter what my ultimate goal is to demystify the idea of technology and programming and let players feel the power of building programs, making mistakes, and ultimately successfully completing levels while using logic, reasoning, and basic "programming" skills.

</comment></comment><comment><USER4> Neat. I'd like to see as many games and tools like this to exist as possible.

An alternative is to also turn your kids loose on Spacechem:

[http://www.spacechemthegame.com/](http://www.spacechemthegame.com/)

Though Spacechem isn't for really young kids, and isn't "cute". However, you'll learn some basic concepts of programming, including basic sequencing of actions, resource management (time and space), and even thread coordination.

</comment><comment><USER5> Looks like a similar concept to robozzle: [http://robozzle.com](http://robozzle.com).

<comment><USER3> There are actually even surprisingly more than one would initially think. In addition to Robozzle and BotLogic, there's LightBot(actually 2 versions), Lego Mindstorms, Daisy the Dinosaur, CargoBot, Move the Turtle, Robot Turtles (board game), and RoboMind (just found this one, looks fascinating) to name just a select few of an ever growing number of similar games. Personally, I hope one day there are more "programming" games with an educational spin than there are first person shooters, but that's just because I'm hooked.

</comment></comment><comment><USER6> You know what got me excited about programming? LOGO [1]

Still does...

Links to downloads in wikipedia page.

[1] - [http://en.wikipedia.org/wiki/Logo_(programming_language)](http://en.wikipedia.org/wiki/Logo_\(programming_language\))

<comment><USER7> You know what got me excited about programming? QBASIC!

And its mode 13h.

<comment><USER6> careful, lest we get lost down memory lane. Turbo Pascal.

</comment></comment></comment><comment><USER8> Is it just me or does this sound pretty much like Robot Turtles on a computer? Personally, I prefer the offline (human to human) approach of teaching/learning, but this might be a good complement.

<comment><USER3> This makes me giggle a bit, because for me, when I saw Robot Turtles launch their campaign on Sept. 3rd (1 month after we released the BotLogic prototype on August 1st), I said "hey, this sounds pretty much like BotLogic!" :) I had hoped we would see the quick success they did as well considering the similarities, but I guess that's what you get when you aren't a fancy big name Google employee. I certainly have my work cut out for me.

For what it's worth, I ended up backing Robot Turtles too because I think the idea is cool! I think it's also cool to be able to use "pseudo-code" to build your programs and watch the program execute on your computer, and I think each has it's benefits and drawbacks.

</comment></comment><comment><USER9> Great this looks fun. Two issues:

Control icons (arrows, fingers, etc.) look indistinct. They could made larger to take up more of the icon space, or outlined, or colored.

Can you move the email-wall to after I have played one game? I don't want to give it out without trying it. Do you have any data that shows the percent of people who quit after the email wall?

== Edit == You can play w/o email if you indicate that you are 0-13

</comment><comment><USER10> They were inspired by [http://armorgames.com/play/2205](http://armorgames.com/play/2205)

<comment><USER3> Technically, I was inspired by Rails for Zombies ([http://railsforzombies.org](http://railsforzombies.org)) as I had been learning Rails for my new job, and had that fresh in my mind when my bosses said "come up with a new idea". For me, the inspiration was "how COOL would it have been if the interactive console in Rails for Zombies actually made the zombies do stuff and it was more like a game than learning to code!!" After some discussion, the choice was made to switch from zombies to robots because a) "programming" a robot made more sense than programming a zombie and b) robots seemed more "gender/age neutral" than zombies that have a more limited appeal. It wasn't until much later on that we started doing market analysis that we found LightBot. To me, LightBot was a confirmation that there was a market for "games that use programming as a tool", but not something that we were necessarily going to mirror. LightBot is fun, but ramps up quickly and gets pretty in depth into programming concepts pretty quickly. I wanted BotLogic to be a more subtle introduction where the user didn't even realize they were learning how to program along the way. I also wanted players to get comfortable with the idea of "syntax" and "typing code", and I feel the terminal is an important part of the game that LightBot doesn't have (not that it's a bad thing for their game, just that it's definitely something vastly different than going with a purely visual UI).

</comment></comment><comment><USER11> This should be released as free software. It's a mistake to teach children about Computer Science using proprietary software. It's anti-educational.

<comment><USER12> "It's anti-educational."

What a rubbish, blanket statement. Something you hadn't thought about until 5 minutes ago _should_ now be created for free.

Get off your high horse, if you want this to be free, by all means go and make it. Some great math books are free too, and some great ones you have to buy. To claim either is anti-educational is nonsense.

<comment><USER11> You misunderstand: Free as in speech.</comment></comment></comment>


The Computer Programmer's Fat Loss Toolkit - <AUTHOR> http://adamnuttall.co.uk/index.php/the-computer-programmers-fat-loss-toolkit/

<comment><USER3> This site is little beyond a bunch of affiliate links. How does it have 4 upvotes?

<comment><AUTHOR> There are no affiliate links on this site.

</comment></comment><comment><USER4> Getting lean is not that hard, but it needs discipline: 3 Workouts a week - <USER2> needed that the body can't shif down on calory usage. Restrict to 1000 calories a day. Eat 5 meales. Try to get 100 grams of protein a day and carbs should only come from veggies. No wheat, potato, corn or fruits.

And most important: count calories and prepare maeles a day before.

This way you can loose about 2-4 kg a week.

<comment><AUTHOR> "prepare meals a day before"

This is a big one. I didn't do this and needed to grab anything close for my meals in the office and it was usually not great things to eat like chips, crisps, sandwiches etc.</comment></comment>


Show HN: Peoplelogic.ai – team mission control for managers - <AUTHOR> https://peoplelogic.ai <comment><USER2> A few problems:

(1) for Show HN there needs to be a way to try out the product. Requesting a demo by email doesn't count ([https://news.ycombinator.com/showhn.html](https://news.ycombinator.com/showhn.html))

(2) please don't delete and repost. A small number of reposts is ok, but deletion is for things that shouldn't have been submitted in the first place ([https://news.ycombinator.com/newsguidelines.html](https://news.ycombinator.com/newsguidelines.html), [https://news.ycombinator.com/newsfaq.html](https://news.ycombinator.com/newsfaq.html))

(3) it's not in your interest to use a corporate username - see more on this, and other tips, at [https://news.ycombinator.com/item?id=22336638](https://news.ycombinator.com/item?id=22336638).

<comment><AUTHOR> Thank you for the feedback and tips! I apologize for the deletions, completely my fault!

To touch on the the product, users can try out the product without requesting a demo — we're allowing team leaders to get started for with a team, free forever.</comment></comment>


My Amazon EBS volumes are stuck and the root device name smells like Windows. - <AUTHOR>

Ever since the recent Amazon EBS outage I've been unable to use my Amazon EBS volumes. They are all marked as "attached" on the web console, but they don't exist from the perspective of the operating system when I try to mount them:
mount: special device /dev/sdf does not exist
If I use the web console to unattach them, they successfully unattach, and then if I attempt to attach them, it says "Attaching..." and then stays in that state. I've left it in that state for 24 hours twice now and it shows no change.
Just now I noticed that the root device on that instance is:
/dev/xvda1 on / type ext4 (rw)
Aha! This is a clue! But it is not a clue that gives me an idea of how to fix it. "xvd*" is the name that EBS uses for devices that are attached to Windows instances. This is a linux instance.
Apparently there is no way to ask a question or request support for a thing like this unless you pay for a support contract. If you haven't paid for a support contract, then you are supposed to ask Hacker News. :-)
Just kidding, you are actually supposed to ask on the AWS forums, but I hate forums.
I'm glad that this incident has occurred and reminded me to migrate my personal-use Tahoe-LAFS grid off of Amazon EBS onto something cheaper and with decorrelated failures, such as a friend-grid. Just as soon as I can download the data (about 200 GB worth), then I'll do that!
Hm, I wonder if it would work to snapshot all these EBS volumes to S3 and then download all the data from S3...
Any other ideas for me?
Thanks! <comment><USER2> xvd* naming scheme is pretty standard for xen volumes (even for linux)

But I don't know any other things for AWS, forums will probably have the best knowledge base that is easily available.</comment>


Automatic C library binding generator for Golang - <AUTHOR> https://cgogen.com <comment><USER2> Really suggest wrapping the good content in a more 2016ish visual wrapping

<comment><AUTHOR> You mean the wiki?</comment></comment>


How to perform excel Vlookup in python - <AUTHOR> https://kanoki.org/2018/12/22/pandas-trick-for-the-day/ <comment><USER2> That's amazing, just started using pandas and never knew that you have excel functions in it too..Voila!!

<comment><USER3> Nothing new..it's a simple feature of pandas.i think author is just re- iterating the same old stuff</comment></comment>


Ask HN: Any Hacker News Android apps with intent filter to open HN urls? - <AUTHOR>

Similar to many reddit apps, I'm looking for a Hacker News reader app for Android that supports deep-linking URL functionality (click on a http://news.ycombinator.com link and it opens in the app).  None of the top apps on Google Play seem to have it.  Might just have to write my own :) <comment><USER2> There is at least one Android client that is open source: [https://github.com/rickylaishram/Hacker-News- Android](https://github.com/rickylaishram/Hacker-News-Android)

If that doesn't do it, you can very easily modify it to work.

However, unless you are encountering a lot of HN questions or polls or other material that is original to HN on other aggregation sites, you really don't need a client that matches HN urls in an intent filter.

<comment><AUTHOR> I follow Twitter and Facebook accounts that usually link to a story posted on HN as well as the link to the discussion page on news.ycombinator.com. Ideally I want to be able to open that directly in the app.

The HN site is unfortunately not readable on mobile devices.</comment></comment>


How the Z80's registers are implemented - <AUTHOR> http://www.righto.com/2014/10/how-z80s-registers-are-implemented-down.html <comment><USER2> If you think swapping via register renaming is creative, you'd really like barrel shifters.

[http://en.wikipedia.org/wiki/Barrel_shifter](http://en.wikipedia.org/wiki/Barrel_shifter)

The easiest way to shift bits isn't "adder like" with carry propagation across data lines (sorta), although that could be done. The easiest way is just to phase distort the bus (sorta) so what you called bit X is now bit X-4 for all bits on the bus, and use a 2x1 mux to select which, and cascade rollers in binary (you don't need a roller for all integer numbers if you can cascade them 16, 8, 2, 1 position only activating some rolls). If you can rotate, you can shift by adding one more stage at the end that does bit oriented ops to clear MSBs or LSBs. Also if your roller is capable of rolling all bits on the bus, you don't need two rollers one in each direction. Latency does add up of course, all those cascaded ops.

Also I saw in the notes the Rodney Zaks z80 book being referenced. I learned assembly from that book, back when it was new. I enjoyed that book. I also looked at the PDF scan of someone's beat up copy... remember when textbooks were only $10.95 each?

<comment><USER3> I still have my original copy of Zaks' book in my collection. I obtained it in 1981 from a friend. I did so much z80 assembly on the TRS-80 that I could "see" instructions in a hex dump before asking zbug to disassemble them.

The z80 was quite the chip for its time and I enjoy reading these articles has they look back into the deeper inner workings of the chip.

One could master the z80, I'm not sure many modern processors could be mastered at that level by a single programmer. They seem to have gotten so complicated that they're beyond comprehension in a single person's mind. I could be wrong but that's the general feeling I get. Sure you can be really good at them and maybe an expert in many applications of a modern complex processor but I doubt many people have a singular understanding of everything each chip has to offer.

Or maybe I'm just getting old.. :-)

<comment><USER4> The 8086, which is based on the Z80, is not that much more complicated (even the opcode structure is similar, being an octal format), and same goes for the 80186. Things started becoming a bit more complex with the '286 and its protected mode, and then the '386+ with 32-bit and its various protected-mode enhancements really made it harder for a single person to master fully, but I think it was still mostly possible; the really hairy stuff started with 64-bit mode and all the extensions (e.g. virtualisation) that have been made to that since.

On the non-x86 side, modern ARM SoCs like the ones used in smartphones are not all that much simpler despite a less complex CPU core - they're still thousands of pages of documentation in total.

</comment></comment></comment><comment><USER5> A little comment regarding the Z80 vs 6502 register count: I always consider the 6502 to have 256 registers (zero page) and an accumulator and two index registers. Never a shortage if you use it like that...

<comment><USER6> I would think of the zero page as a rudimentary L1 cache, because the access times to the zero page requires a lookup cycle, whereas registers do not.

<comment><USER7> On a related note: I wish that more CPUs had an explicit cache. So data has to be explicitly loaded into cache, etc.

Modern CPUs are NUMA. Don't treat memory as RAM any more, because that's not true.

Biggest problem with this is that not all CPUs have the same amount of cache. But you can get around this by treating the cache as the low area of RAM, with instructions to get the amount of cache available. Especially if cache is also paged.

Other issue with this is context switches, but this is conceptually no different than paging RAM to disk when required.

<comment><USER6> I'm not too familiar with many other architectures, but MIPS has dcache "fill", "flush", and "lock" operations, so the user can both do a premature fill operation, or even lock data in the cache so it won't be evicted.

I haven't seen many people actually use these ops, because it's actually pretty hard to do better than the built-in cache allocation policies for most applications, especially if you take into account that your app is going to get swapped out consistently by the operating system task switches.

<comment><USER7> There is a distinction between _allowing_ said operations and being _designed_ for such operations. It is possible even in x86, although difficult, and requires privileged operations. (A user-mode program can request that something be prefetched or flushed, and can do non-temporal loads (and stores?), but in order to get "true" scratchpad memory you have to play with the MTRR, and even then the processor doesn't support hardware paging of cache, like it does with, for example, RAM)

> I haven't seen many people actually use these ops, because it's actually > pretty hard to do better than the built-in cache allocation policies for > most applications, especially if you take into account that your app is > going to get swapped out consistently by the operating system task switches.

And again, this is largely because the cache is implicit to the OS. There's no way to go "this is the stuff that was cached last time this process has control, when you can, reload it back in" to the processor, because you can't tell what in cache is "owned" by what in anything like an efficient manner - and even if you could, the moment you start executing a context switch you've overwritten random bits of cache.

It's like if the processor was set up to directly talk to the hard drive to do paging on demand, to the point that the OS wasn't even aware of it. In theory it's a good idea, but the more you look at it the more flaws emerge.

<comment><USER8> For anyone interested in experimenting along these lines, the Intel Quark (486-based SoC) has on-die plain SRAM instead of L2 cache.

</comment></comment></comment></comment></comment></comment><comment><USER9> Interesting that the flags are stored like the other registers. I had always assumed that the flag bits would be "spread out" across parts of the ALU, and only combined with the accumulator into a virtual register when you read the AF register. In fact they are stored in the register file and copied to and from the ALU on every(?) operation.

</comment><comment><USER10> It's cool seeing register renaming in an early microprocessor. Doubling up all the registers takes a lot of silicon, and is unusual for that era.

<comment><USER4> I don't know if the term "register renaming" was even around at the time since the other instructions (e.g. MOVs) don't "rename" registers, but they certainly had the right idea - "why move the data around when you can just change the register selection bits?" It's also how I expected the exchange instructions to work when I first saw the instruction set and the timings, so it's probably a rather natural and obvious way of doing it.

I did it the same way when I designed a Z80-compatible CPU in a (graphical) logic simulator, although I used a dual-ported register file.

<comment><USER11> Register renaming has been around since the 60's in the form of Tomasulo's Algorithm.

</comment></comment></comment><comment><USER12> The renaming trick makes me feel a cpu is just a fixed size activation frame/scope under reduce/fold.</comment>


Google Adds "Prices From The Page" Search Option - <AUTHOR> http://searchengineland.com/google-adds-prices-from-the-page-search-option-23772

<comment><AUTHOR> Google had tried this previously in Froogle, and failed. Now they have done it pretty nicely. I had been expecting this since they introduced Google Squared, which solves a much more general problem than this.

Would this wipe out number of players in "price comparison" space ?</comment>


The weirdest languages - <AUTHOR> http://idibon.com/the-weirdest-languages/

<comment><USER2> Seems like OP should have considered a popularity weighting. Among the 25 weirdest we see Mandarin and Spanish, the world's two most popular languages by native speaker count. That's a hint that what you're measuring isn't exactly weirdness.

Meanwhile I see Hungarian, famous for being the hardest language to learn, is fifth least weird. Even stranger, Cantonese, which is almost exactly the same in writing as 'weird' Mandarin, is sixth least weird. How can two languages that you write the same be so very far apart in feature set?

<comment><USER3> I think 'weirdness' in this context should not be conflated with 'norm'. Instead, as I read it, I think about it the same way you would think about the regularity of a language (to put it into compsci terms)

I speak both mandarin and cantonese. I think a lot of the 'weirdness' factor comes from actually saying the words. Also there are some words in cantonese that are not in mandarin. For example, in Cantonese, there is 'mou' (the negation of having), while in Mandarin, it'd be pronounced as two words ('mei2 you3). Spoken cantonese in some regards, is easier to pick up than spoken mandarin (definitely easier to cuss in)

<comment><USER4> If Mandarin-speakers say "meiyou" quickly, it sounds like "mou". If English- speakers say "going to" quickly, it sounds like "gonna".

<comment><USER5> I wouldn't say all English speakers - someone saying "gonna" sounds distinctly American to me. Around here, something like "gonnae" (which sounds more different than the small difference in spelling would suggest), common usage:

"Gonnae no' dae that?"

</comment></comment></comment></comment><comment><USER6> It would be cool if the author made the dataset available it would be fun to try other things with it - population weighing (as WildUtah mentions), grouping them by language families and calculating intra and inter-group weirdness (and distances), clustering the languages into new groups, calculating weirdness as mean distance in the 21 dimensional space to all other languages, projecting the space itself on a plane so that we can see it better,...

<comment><USER3> You can download it yourself at [http://wals.info/export](http://wals.info/export) . And given enough effort, you can quite quickly reverse engineer which 21 features were used.

<comment><USER6> That's the thing, he reduced the dataset from 2677 languages with 192 features to 239 languages with 21 features. That's usually the hardest part of any analysis, so it would be nice if he shared the results of his hard work with us...

<comment><USER7> (Now added to the bottom of the post.)

</comment></comment></comment></comment><comment><USER8> I don't know where to start on this page's absurd notion that Cantonese is a non-"weird" language, but that Mandarin is weird. This must be some academic nonsense based on sounds and disregarding other critical language features.

Let's put aside the fact that Cantonese has among the most complex pronunciation systems in the world, with seven tones and both long and short versions of a number of sounds. This is a language which has four different communication modes. Here's how weird Cantonese is.

1\. Cantonese speakers _speak_ in Cantonese.

2\. Cantonese speakers _read and write_ in a totally different language, namely Modern Chinese, which for all intents and purposes is Mandarin.

3\. Cantonese speakers _read out loud_ in Modern Chinese (Mandarin), but _pronounce_ each of the characters with radically different Cantonese sounds.

4\. For purposes of comic book dialogue, etc., it is possible to read and write _some Cantonese_ using various co-opted Chinese characters. But you can't pronounce _all_ of Cantonese this way: many words have no written form whatsoever. This has resulted in a bizarre pidgin written form. For example, one very common word ("di1" \-- "a few") is actually usually written as "D" rather than as a character. Other characters are impossible to write in current fonts, or are also used in Modern Chinese but for different words than in Cantonese, and so you see Latin letters like "o" and "a" next to them to suggest a different meaning.

Mandarin weird my foot.

</comment><comment><USER9> I think we should have expected that Mandarin is weird but Cantonese is very normal - in the same way that Japan has a weird primary writing system, but its secondary writing system (Hiragana) is one of the most regular in the world. In fact the same reasoning could apply to Hindi - it's (or was until recently) a secondary language in India, with English as the language of government. Do other countries with two languages follow the same pattern? E.g. I would predict from this that Afrikaans would be a very non-weird language.

<comment><USER10> If Afrikaans is a non-weird language that would be because it's a creole (indiginous African and Dutch).

Don't know about Hindi, but since it's used as a lingua franca of sorts that might also be the reason behind its normalness.

</comment></comment><comment><USER11> It'd be cool if they could include artificial languages like Esperanto and lojban. Given that one goal of both languages is to appeal to speakers of any language, it would be interesting to see if they achieved their goal (i.e. produced a very "non-weird" language).

</comment><comment><USER12> Definitive comments about Esperanto:

[http://www.xibalba.demon.co.uk/jbr/ranto/](http://www.xibalba.demon.co.uk/jbr/ranto/)

I see this was posted overnight in my time zone. Several of the earlier comments correctly point out that empirically, a language that has been acquired by many second-language speakers (for example, English) must not strike too many people as unlearnably "weird." Many widely spoken languages have undergone a process that linguists call "koineization" (after the spread of Koine Greek as a common language of the ancient eastern Mediterranean and Near East)

[http://www.jstor.org/discover/10.2307/4167665?uid=3739736&ui...](http://www.jstor.org/discover/10.2307/4167665?uid=3739736&uid=371672041&uid=2&uid=3&uid=3739256&uid=60&sid=21102412849151)

[http://www.lancs.ac.uk/fss/linguistics/staff/kerswill/pkpubs...](http://www.lancs.ac.uk/fss/linguistics/staff/kerswill/pkpubs/Kerswill2002KoineAcc.pdf)

[http://en.wikipedia.org/wiki/Koin%C3%A9_language](http://en.wikipedia.org/wiki/Koin%C3%A9_language)

in which the language simplifies some grammatical (and possibly phonological) features as it is spoken by more second-language speakers for trade or for use as a language of national administration in a multilingual region.

The United States is largely an English-speaking country, but only about one- fourth of Americans have ancestors who spoke English before arrival in North America. (Indeed, only one of my four grandparents, all of whom were born in the United States, grew up in an English-speaking household.) In other words, General American English is a koine language of second-language learners of English, so it is not surprising that it is spreading all over the world.

P.S. Feel free to visit my user profile here on HN to see more about my background in linguistics and language learning and teaching.

AFTER EDIT: Cantonese versus Mandarin as "dialects" or "languages" were mentioned in other comments. Cantonese is at least as different from Modern Standard Chinese (Mandarin) as German is from English. How you might write the conversation

"Does he know how to speak Mandarin?

"No, he doesn't."

他會說普通話嗎?

他不會。

in Modern Standard Chinese characters contrasts with how you would write

"Does he know how to speak Cantonese?

"No, he doesn't."

佢識唔識講廣東話?

佢唔識。

in the Chinese characters used to write Cantonese. As will readily appear even to readers who don't know Chinese characters, many more words than "Mandarin" and "Cantonese" differ between those sentences in Chinese characters.

<comment><USER13> I read something about how English was simplified as a result of the Viking invasion of England in the middle ages. It sounds like koineization. English might be weird, but it seems to be weird in a way that makes it highly exportable, like a successful product.

<comment><USER14> That's right. Old English has grammatical gender and noun cases (like modern German). Modern English retains case only for pronouns.

They were lost when the Danes invaded. The language was simplified to a mutually-understandable subset.

</comment></comment></comment><comment><USER15> There are a few potential problems which limit the significance of this:

1\. There is not a universal definition of what defines a language and what is simply a dialect or a regional variation; this applies especially on large continents where there can be greater variation in language features between geographically remote locations, but no clean boundary at which you can say people speak one or the other language.

2\. Languages evolve, diverge and sometimes borrow, and so a group of related languages can share the same potentially idiosyncratic feature because of common evolutionary roots rather than because the feature makes sense. This could explain the result for Hindi - it is a standard language that 'averages' a large number of other Indian languages.

<comment><USER16> I would call these more "caveats" than "problems" \-- anything with a title like "weirdest languages" is going to be incredibly subjective, and there will be no doubt no shortage of people who disagree with specific choices, but as long as the reasoning is clear it can still be interesting/useful.

> This could explain the result for Hindi - it is a standard language that > 'averages' a large number of other Indian languages.

I think this is a little misleading; a lot of Indian languages come from a completely different language family to Hindi (Hindi is Indo-European, but a lot of Indian languages are Dravidian, e.g. Tamil and Urdu), though I'm not qualified to speak about this.

<comment><USER10> Urdu, I'm told by someone who speaks the language, is Hindi written in Arabic script.

<comment><USER16> Could well be true! I'm not qualified to speak about that. Looking it up, seems like I mis-spoke when I said Urdu was Dravidian. But there are a lot of Indian languages that are (e.g. Kannada), so the overall point stands that the "averaging" comment is a bit misleading.

Incidentally, your comment led me to this [http://en.wikipedia.org/wiki/Hindi–Urdu_controversy](http://en.wikipedia.org/wiki/Hindi–Urdu_controversy) which you may find interesting.

</comment></comment></comment></comment><comment><USER17> This is great. I'm really happy to learn about WALS. I've been interested in constructing a practical standard language for humans for a long time. This kind of survey of what works seems essential.

<comment><USER10> Just use Indonesian. It's very non-weird, both according to the article and according to my own experience.

</comment></comment><comment><USER18> To what degree do spoken languages influence our programming languages?

If programming would have been developed in asia, what would be the paradigm for programming be?

Lines of code? Pictures? Left to right? Top to bottom? Objects and methods?

Any steampunk fantasies available reg. programming languages? How weird would those be?

</comment><comment><USER19> Hindi is the least weird language but still it is a secondary language in India! Now thats weird!!

<comment><USER20> Perhaps its historical: many languages have Hindi roots, so are similar. That makes it more central in the statistics.

</comment></comment><comment><USER21> It's interesting to me how Norwegian is one of the top 25 strangest languages in the world on that list, but Danish and Swedish isn't. Maybe it was on the lower end of the top 25.

<comment><USER22> One possible theory is that it could be related how the data set deals with (or fails to deal with) Book-Norwegian vs New-Norwegian. Also modern Swedish and Danish grammar only uses two genders while Norwegian still has three, so that could weight in.</comment></comment>


Improve your team's productivity by 10x with Helpie: - <AUTHOR> https://wpaisle.com/articles/helpie-advanced-knowledge-base-plugin <comment><USER2> Helpie looks awesome! Really cool. Loving the analytics feature page. We designed our "Knowledge Base" page similarly at Zenkit. Check it out here: [https://zenkit.com/documentation](https://zenkit.com/documentation)</comment>


Bats: TAP-compatible testing for Bash - <AUTHOR> https://github.com/sstephenson/bats

<comment><USER2> Hi there,

Perhaps you could add this to the list of TAP Producers in testanything.org. Here's the link for the Shell producers entry.

[http://testanything.org/wiki/index.php/TAP_Producers#SH_.2F_...](http://testanything.org/wiki/index.php/TAP_Producers#SH_.2F_Shell_Script)

There are two other tools that produce TAP in Shell there, but I haven't used any of them. Before going to sleep I decided give it a try to use Bats in Jenkins. Here's the result:

[http://www.kinoshita.eti.br/2011/12/30/testing-shell-code- an...](http://www.kinoshita.eti.br/2011/12/30/testing-shell-code-and- producing-tap-using-jenkins/)

Thanks for sharing.

Cheers, Bruno P. Kinoshita

<comment><USER3> Thanks for pointing me to the TAP Producers list; added Sharness too (<http://git.io/sharness>). I'm sure it can be used with Jenkins as well.

</comment></comment><comment><USER4> You could also try wvtest, which is a bit lighter weight and works with any shell, not just bash: <https://github.com/apenwarr/wvtest>

</comment><comment><USER5> Why, for the love of Notch, do people keep porting everything that you're supposed to be doing in a real programming language to Bash? Yes, it's Turing complete, but the syntax is ugly and inconsistent, there is just about no support for data structures, and you have to fork a process to do practically anything!

<comment><AUTHOR> Bats isn't a port of anything, and sometimes Bash is the right tool for the job.

I maintain two other projects written in Bash (rbenv and ruby-build). I looked, and couldn't find any suitable testing tools for Bash, so I created Bats.

My criteria for deciding what to work on in the open-source world is: do I need something that doesn't yet exist, or something whose existing implementations are unsuitable? If yes, I try to fill the void as best I can, and package it up nicely so others can use it too.

<comment><USER6> FWIW here's a vaguely doctest-like tool I wrote: <https://github.com/darius/tush>

May be unsuitable for you, as you say -- it looks like it takes less typing/punctuation to write the example tests, though.

<comment><AUTHOR> Wow, I really like the literate style. Great stuff.

<comment><USER6> Thanks!</comment></comment></comment></comment></comment>