Android Trojan records phone calls - <AUTHOR> http://www.networkworld.com/news/2011/080111-android-trojan.html

<comment><USER2> > users can protect themselves by installing antivirus software

McAfee Premium plus. Coming soon to your Microwave.

This really saddens me. No matter how much user education has already been done, people still get tricked into installing this crap.

</comment><comment><USER3> Developer: News Corp... ;)

</comment><comment><AUTHOR> I remember Microsoft's arguments for adding unfettered VB support from within Word, Excel and even Outlook email, and web pages in IE that could also access anything on your system (including your entire address book): flexibility and freedom for the programmer to do anything.

</comment><comment><USER4> It's not a Trojan if you have to install it, specially as one has to enable side-loading to install it. FUD.

<comment><AUTHOR> No, a Trojan is something you are tricked into installing that opens the door of your computer to the attacker, much as the Greeks used the Trojan Horse to trick the Trojans.

<comment><USER4> Not much of a trick if you had to allow alternative markets and still get presented with its permissions before installing it.

<comment><AUTHOR> First you get the definition of "Trojan" wrong, and now you make a new, extremely naive claim. Based on your logic, for example, phishing would never work.</comment></comment></comment></comment>


Ask HN: Good iOS Tutorials? - <AUTHOR>

I have started learning iOS app development from Apple's developer resources but those look like to be designed for a bit more smart audience. I googled for good iOS tutorials but most of them seem outdated and in no way match the current XCode UI.
How do you learn iOS application development?
What tutorials did you use? <comment><USER2> I personally had tremendous fun following Matthijs Hollemans' tutorials (<http://www.raywenderlich.com/store/ios-apprentice>).

You can get the first tutorial for free if you sign up for the raywenderlich.com newsletter. It assumes no prior knowledge of iOS or Objective-C and runs you through building a simple game. Then for 54$ you can get the three other tutorials.

The second tutorial shows you step by step how to build a checklist app (using Storyboards).

The third tutorial is about doing a simpler version of Foursquare (using Core Location, Map Kit, the camera and photo library, Core Data and Core Animation).

And in the fourth tutorial you'll learn how to make a clone of the default iTunes app by using the iTunes Store Search API ([http://www.apple.com/itunes/affiliates/resources/documentati...](http://www.apple.com/itunes/affiliates/resources/documentation/itunes- store-web-service-search-api.html)) as well as AFNetworking.

</comment><comment><USER3> Stanford has a free series of iOS lectures that you can get on iTunesU: [http://itunes.apple.com/itunes-u/ipad-iphone-application- dev...](http://itunes.apple.com/itunes-u/ipad-iphone-application- development/id473757255?mt=10)

I highly recommend them.

<comment><USER4> This is my recommendation as well. From the basics of Objective-C (for people already familliar with object oriented programming) to best practices, design patterns and individual components. No other single resource has given me a stronger grasp of all the important concepts of the platform, and I'm still amazed that it's available for free.

<comment><USER5> Starting Tuesday, (when my first Macbook arrives!) I will be going through this course and posting my daily results and thoughts on my blog, which I will also set up on Tuesday.

I currently am slightly comfortable with Python, I have gone through some C tutorials, and I will keep going through OOP tutorials until Tuesday.

I plan on spending 10+ hours a day on this until I finish the course and feel comfortable enough to create my first app, which will be the next step.

<comment><USER6> Post a link when you get it all set up!

</comment></comment></comment></comment><comment><USER7> The best tutorials I've come across: <http://www.raywenderlich.com/tutorials>

Open source iOS apps: [http://maniacdev.com/2010/06/35-open-source-iphone-app- store...](http://maniacdev.com/2010/06/35-open-source-iphone-app-store-apps- updated-with-10-new-apps/)

[http://developer.apple.com/library/ios/navigation/#section=R...](http://developer.apple.com/library/ios/navigation/#section=Resource%20Types&topic=Sample%20Code)

<http://www.appsamuck.com>

</comment><comment><USER8> I have a super-simple tutorial on UITableViews here: [http://www.cocoacontrols.com/posts/2012/08/01/ios-basics- uit...](http://www.cocoacontrols.com/posts/2012/08/01/ios-basics- uitableviewcontroller), and I'm planning on spending a good amount of the next couple weeks developing similar content. What are you looking to learn, exactly, and how familiar are you with software development in general?

<comment><AUTHOR> I am good with software development. I know java, C and python. I am not looking for way simple tutorials. I fall in the audience where people know how to program but need a good tutorial to show where things are and how they are connected.

<comment><USER8> Ah, got it. You're probably better off looking at <http://www.raywenderlich.com> for now. Or, just downloading the source for Cheddar and running the app through a debugger.

</comment></comment></comment><comment><USER9> I'm a big fan of books.

I found this one very useful to get started: [http://www.amazon.com/Beginning- iOS-Development-Exploring-SD...](http://www.amazon.com/Beginning-iOS- Development-Exploring-SDK/dp/1430236051/)

</comment><comment><USER10> Sounds like you're a new developer. You need to be able to see the big picture and gain a sense of progress. Apple lays out a learning roadmap for you here: [http://developer.apple.com/library/ios/#referencelibrary/Get...](http://developer.apple.com/library/ios/#referencelibrary/GettingStarted/RoadMapiOS/chapters/Introduction.html)

After that, go with the tutorials that everyone else is recommending. <http://www.raywenderlich.com/tutorials>

</comment><comment><USER11> Lynda: [http://www.lynda.com/iOS-tutorials/iOS-SDK-Essential- Trainin...](http://www.lynda.com/iOS-tutorials/iOS-SDK-Essential- Training/92179-2.html)

</comment><comment><USER12> I just wanted to throw this out there:

you should first read the objective-c primer.

[https://developer.apple.com/library/mac/#referencelibrary/Ge...](https://developer.apple.com/library/mac/#referencelibrary/GettingStarted/Learning_Objective- C_A_Primer/_index.html)

You mentioned the apple docs feel complex to you but I'd honestly recommend truly taking your time and working through them as they really are the best.

</comment><comment><USER13> This is as good as it gets: <http://www.stanford.edu/class/cs193p/cgi- bin/drupal/>

</comment><comment><USER14> I recommend:

        * Stanford's videos and homeworks
        * Ray Wenderlich's site
        * Big Nerd Ranch's iOS and Obj-C books

If you want to learn Cocos2D for game development, also check out Learning Cocos2D.

To shamelessly plug, we also run a full-time, in-person iOS course (<http://hashmaplabs.com>).

</comment><comment><USER15> <http://www.raywenderlich.com/tutorials/> is pretty useful in places.

Stackoverflow or Google when you have specific questions.

When you say the Apple Developer resources are designed for a bit more smart audience I assume you mean already informed and knowledgeable about the basic APIs.

</comment><comment><USER16> Stuff at MakeGamesWithUs (<http://makegameswith.us/tutorials/getting- started/2#_=_>) isn't too bad since it will help you get up to speed, and you can always turn to them to do the marketing if you decide you're more interested in developing than selling.

</comment><comment><USER17> Around 9 months ago I wrote about my iOS development at <http://cherrypopapp.com/blog#iPhone_Development>

Take-away is; I started with the stanford tutorials (great!), but then just decided to dive in and learn along the way.

</comment><comment><USER18> It worked well for me using <http://diveintoios.com/>

</comment><comment><USER19> If you checkout <http://ioscodesamples.com> they have tons of code samples, although there aren't tutorials there is a lot of working code that does various things, it might help you figure out what you need to do.

</comment><comment><USER20> This isn't out yet, but it looks like it's going to be awesome: [http://www.kickstarter.com/projects/eallam/try-ios-iphone- ap...](http://www.kickstarter.com/projects/eallam/try-ios-iphone-app- development-course?ref=live)

<comment><USER21> Signed up as well can't wait!!!

</comment></comment><comment><USER22> I've been digging the apprentice trailmaps from thoughtbot, they have one for iOS too: [https://github.com/thoughtbot/trail- map/blob/master/trails/i...](https://github.com/thoughtbot/trail- map/blob/master/trails/ios.md)

</comment><comment><USER23> It's not really online reading, but we have an iOS "trail map" at thoughtbot: [https://github.com/thoughtbot/trail- map/blob/master/trails/i...](https://github.com/thoughtbot/trail- map/blob/master/trails/ios.md)

</comment><comment><USER24> If you're interested in building games and have done some programming before you should check out MakeGamesWithUs (www.makegameswith.us). The tutorials take you through building a clone of Angry Birds and are tailored to beginners.

</comment><comment><USER25> I found the SEE (free Stanford) courses to be best: <http://see.stanford.edu/see/courses.aspx>

</comment><comment><AUTHOR> Just wanted to share my other findings here:

<http://thenewboston.org> tutsplus.com</comment>


What the founding teams of billion dollar startups look like - <AUTHOR> https://medium.com/@RequestsForStartups/what-do-the-founding-teams-of-billion-dollar-companies-look-like-14036f214433

<comment><USER2> You could do a follow up, and see what does stanford do differently to teaching, that creates billion dollar startup founders.</comment>


Ask HN: Submit Questions for Office Hours with Daniel Gross - <AUTHOR> We (YC) are now hosting Office Hours on YouTube. Sam Altman went first and you can watch the video here: http://blog.ycombinator.com/office-hours-with-sam-altman/
Daniel Gross is up next.
We'll be addressing some questions already submitted on HN and through email@example.com but if you have a question for Daniel specifically, you can submit it here.
When you ask a question, please post a few sentences of context (e.g. what your company does) along with the question.
You can subscribe to our channel https://www.youtube.com/ycombinator to get the video when it's posted. <comment><AUTHOR> Thanks to everyone that submitted questions. We'll keep track of what wasn't answered for future episodes.

Here's the video - [https://www.youtube.com/watch?v=DzjKcUtRkCU](https://www.youtube.com/watch?v=DzjKcUtRkCU)

</comment><comment><USER2> I studied business for two years at a community college and switched my major to computer science for a semester before dropping out to learn on my own. I ultimately want to found a startup, but I want to work at a startup to gain experience first.

How does someone young without experience or a degree go about getting a job at a startup? For example, if I cold-email founders of startups I love, how can I convince someone to give me a chance versus the Stanford grads they're looking at? What about trying to work at companies like Uber or Airbnb that are far later stage?

<comment><AUTHOR> [https://www.youtube.com/watch?v=AcRwbl7sv-M](https://www.youtube.com/watch?v=AcRwbl7sv-M)

</comment></comment><comment><USER3> Hi, my name is Bryan. I'm in the process of starting a software company called TheftFree. (view on Twitter @TheftFree) The purpose of the software is to make credit card/debit card purchases literally theft free. I want to work with a company that's already established and has the same goals as I do. Do you think it's safe to reach out to them for discussion or do you think I should build the tech first? Any advice is appreciated! Thanks!

<comment><USER4> Why would it be _unsafe_ to reach out to them?

</comment></comment><comment><USER5> Hi, I am trying to get into a beta launch of a grocery delivery product (www.suncart.co) in Qatar and have not been able to find a technical cofounder over past 6 months. Got the product made from an outsourced company. Should i just go out and start the beta launch without a techie cofounder and keep the hunt going side by side ? What could be the best way forward.

<comment><AUTHOR> [https://www.youtube.com/watch?v=Gx6rWcHEyf4](https://www.youtube.com/watch?v=Gx6rWcHEyf4)

<comment><USER5> Just a small follow-on, what if I give out equity to an outsourced company in the start - instead of initial engineers ? Being a non-techie, managing techies can be difficult

</comment></comment></comment><comment><USER6> I'm stuck (and financially dependent) between a family that calls me delusional and a mindset that tells me to keep going. Also worth noting, I have a therapist I see weekly that assures me I'm not delusional. My question is this-- How do you keep going and not let the fire inside of you burn out when everyone around you is trying to put it out?

<comment><USER7> If I may give my 2 cents; are you deeply passionate about your startup? Are you trying to solve a personal problem?

</comment></comment><comment><USER7> Hi there, I have made an awesome free iphone app and I would like to know what is the best way to get the word out there? It is an app that let's people see verses from the Bible in their surroundings. Its Like putting on faith glasses. Thanks for your help! Antoni

</comment><comment><USER2> Lots of founders in the Valley will start things based on trends, and at that point it tends to be too late to be a first mover and be innovative. How can you be someone that lives in the future on the leading edge of technology?

<comment><AUTHOR> [https://www.youtube.com/watch?v=XMiQIj4oqdU](https://www.youtube.com/watch?v=XMiQIj4oqdU)

</comment></comment><comment><USER2> If I know I want to found a startup in x amount of time, what should I be doing in that time to prepare to be a founder? How do you turn yourself into the formidable founder that everyone in the startup world aspires to be?

<comment><AUTHOR> [https://www.youtube.com/watch?v=Ob0NsHp7U10](https://www.youtube.com/watch?v=Ob0NsHp7U10)

</comment></comment><comment><USER8> Company Context: A creative marketplace

How can Company start working on ML models. We have lots of data, but we are not sure what to do with all that data. We feel pressured to start working around ML, should we try to go into ML?

<comment><AUTHOR> [https://www.youtube.com/watch?v=jrsnnxNFKX0](https://www.youtube.com/watch?v=jrsnnxNFKX0)

</comment></comment><comment><USER9> Context: No company just asking

How feasible is it for someone to fly to SV for a week or two and raise money for a start up. How would you set up appointments?

<comment><USER10> Excellent question! If I may add to that:

How feasible is it to raise money for companies outside US (Europe or Canada) at different stages from VCs using this in and out approach?

</comment></comment><comment><USER11> As a founder, how do you know when the right time is to leave/quit/sell your company?

</comment><comment><USER12> Which are the most common mistakes you have seen first time entrepreneurs and founders make?

<comment><AUTHOR> [https://www.youtube.com/watch?v=XeeEt8LuxdU](https://www.youtube.com/watch?v=XeeEt8LuxdU)

</comment></comment><comment><USER13> Does YC accept startup founders aged 18 or younger ?

<comment><AUTHOR> [https://www.youtube.com/watch?v=vaiIwBB__2w](https://www.youtube.com/watch?v=vaiIwBB__2w)

</comment></comment><comment><USER14> Hello Mr. Gross, I have a business idea but I haven't any money... How to can promote or grow up my business ?</comment>


Mass-mirroring Wikileaks - <AUTHOR> http://22.214.171.124/mass-mirror.html

<comment><USER2> >if you have a _unix_ -based server...

Trademark violation! Look out! Wikileaks is in trouble now!</comment>


Ask HN: How brand name usernames are handled? - <AUTHOR>

Lo folks,
I've been wondering what are the common strategies used by software companies with regards to handling brand name usernames. For example if we look at Google, Airbnb, Dropbox, IBM, and Microsoft they each have their exact company names as their username on GitHub, Facebook and Twitter. I would be surprised if they were lucky enough to acquire their username on each service by being the first to get there.
So are usernames reserved from the beginning? Are they appropriated from normal users once a high value user wants it? Or do big companies just have people and tools they leverage to protect their brand name as new products and technologies come out?
It looks to me that it is in the interest of both the service provider and the business customer to allow big brands have the username that is their exact, or near exact, name. On the other hand it isn't obvious as to what the general approach to doing this is. <comment><USER2> To some extent regardless of how you feel about the "Big Guy Vs. the Little Guy" arguments these big organisations do have a legitimate trademark claim over the term and someone could use the username with the intention of misleading others.

It isn't reasonable to assume you'll be able to reserve every single trademarked username. So all you can do is have a policy and process in place to handle trademark complaints. You may also want to inform users at sigh-up that usernames subject to trademark complaints may be lost.

Then if the company wants to utilise their trademark as a legitimate representation of that trademark, then I'd likely have a process there also to verify that they are who they say they are.

<comment><USER3> I'd go even further and be proactive. Prohibit names with obvious potential to cause problems during sign up, e.g. fail to validate:

       *google*| *iphone* | *microsoft*

with a "username not available".

It won't entirely avoid the problem -- you can't stop the truly determined from creating problems -- but it will stop the casual lol's.

<comment><AUTHOR> It does seem like a reasonable step to take because any 3rd party who takes such a username does piggy back on the brand reputation of these companies; intentionally or not.

<comment><USER3> There is a Github repository waiting to be made.

</comment></comment></comment></comment><comment><USER4> Trademarks is generally how it's handled by most big websites. You can usually find something about it in their terms of service.

This is how I've managed to do it in the past working for some companies that had the rights to trademarks.

</comment><comment><USER5> An interesting question, I would assume this would be governed by the sites TOS which usually prevents "unauthorized" use which implicates trademark issues, which in turn gives TM holders footing to petition the site to remove "offending" account names. For example, github's TOS requires "You may not use the Service for any illegal or unauthorized purpose. You must not, in the use of the Service, violate any laws in your jurisdiction (including but not limited to copyright or trademark laws)." I would presume that overall most of these would be somewhat "amicable" versus domain squabbles, but that is situation-specific.

One progression is "Amazon" on twitter which appears to have been registered by an unaffiliated developer and transitioned (rather quickly) to Amazon Inc.:

[https://web.archive.org/web/20071111010348/http://twitter.co...](https://web.archive.org/web/20071111010348/http://twitter.com/Amazon) [https://web.archive.org/web/20081127003135/https://twitter.c...](https://web.archive.org/web/20081127003135/https://twitter.com/Amazon) [https://web.archive.org/web/20090414074613/http://twitter.co...](https://web.archive.org/web/20090414074613/http://twitter.com//amazon)

Not surprisingly, Twitter's TOS at that time was almost identical to github's current TOS: "You must not, in the use of Twitter, violate any laws in your jurisdiction (including but not limited to copyright laws)."[0]

Some may also remember firefox.com having a thanks message for the domain, which is somewhat in a similar realm.[1]

In short (insert, the usual this is not legal advice disclaimer), companies would leverage existing laws (primarily, or exclusively trademark) to point out TOS breaches to service providers. The TOS provides for "termination" of an account upon breach and the account is effectively transfered to the complaining party. Depending on the parties' attitudes there may be some delay to wind things down etc, but legally the provider can presumably immediately deactivate and transfer as they see fit (subject to the TOS).

[0] [https://web.archive.org/web/20071030230315/http://twitter.co...](https://web.archive.org/web/20071030230315/http://twitter.com/tos) [1] [https://web.archive.org/web/20050215090602/http://www.firefo...](https://web.archive.org/web/20050215090602/http://www.firefox.com/)

<comment><AUTHOR> Thanks for the answer. I guess it makes sense that it'd come down to trademark law or somesuch.</comment></comment>


COBOL: Everywhere and Nowhere - <AUTHOR> http://www.codinghorror.com/blog/archives/001294.html

<comment><USER2> I've never met a COBOL programmer. The only times I've seen actual COBOL code have been examples to show how inscrutable it can be (like the example in the article). I haven't seen any open source software written in COBOL, although I'm sure there has to be something. Yet, I know COBOLers are out there.

Given the fact that COBOL refuses to die and not for lack of other options, I've always assumed there's something that kept these guys going. I used to think it was just hard-headedness ("Haven't these guys heard of Python or Ruby or even like Java or .Net or something?!?!"), but age and experience have lead me to believe that it probably has something to do with the size of the paycheck.

So I'd really like to know:

Do COBOLers have a community of any sort?

Where do they go for help?

Do they read HN or proggit (or do they have their own portals that only run on green screens)?

What keeps them going (and do they actually despise their language but just suck it up)?

Are they locked away in the dungeons of enterprise IT departments (or are they more like the wizards in a tower)?

Is there some sort of annual conference where they all meet and dance in front of a bonfire (lit from the heat of their mainframes) and sacrifice young virginal (pure? dynamic?) OO or functional languages to keep their own alive?

<comment><USER3> I worked as a COBOL programmer for two years (well, technically I did 2 summer internships and two short winter stints) so I have a little insight into the "community."

I worked at a (successful) company that develops banking software and processes bank data. The majority of our data processing and operations codebase was written in COBOL, running on some Unisys mainframes. There is a growing population of .NET developers on the team, but for the most part the cube farm is full of COBOL programmers. In general they don't read HN, use StackOverflow, or any other online community that I'm aware of. For the most part, when they need support they ask one of the local dinosaurs. I have noticed that most of them don't use their career to define themselves like a lot of "modern" programmers (myself included) do. I think it's more of a 9-5 for them.

And they don't seem to hate COBOL, either. In fact, a lot of them like it. I think part of the reason is that it's one of the first languages they were exposed to, and one of the first mainframe-based languages that "made sense."

It really is everywhere (although 80% seems high), but you don't usually find it in any of the glamorized jobs. It's heavily used in the banking, healthcare, insurance, and payroll industries.

I'm still working for the same company, but I'm doing .NET stuff now.

<comment><USER2> In your opinion, why do you think they stay away from HN or Stack Overflow? Is it just that there's nothing there for them specifically or would you say that they're (on average) less interested in the wider programming ecosystem?

<comment><USER4> I'm not sure this kind of entrenchment is endemic of COBOL programmers specifically. I knew plenty of people in college who, once they knew Java, were perfectly content with their ability to program, and will probably be happily employed for the foreseeable future. I think it just boils down to the difference between the 9am-5pm'ers and the 5pm-9am'ers.

</comment></comment></comment></comment><comment><USER5> I think Jeff answers his own question when he refers to _my entire so-called "professional" programming career_.

The fact is, there are a lot of professional programmers doing a lot of work that don't mix in the same circles as Jeff. The fact that they don't read his blog, or post to StackOverflow doesn't mean they aren't out there.

<comment><USER6> The sentence after that one says: "That probably says more about my isolation as a programmer than anything else".

The point is valid, if only to speak of an interesting separation and the generally low-visibility of COBOL in parts of the programming industry.

I can't say I've met anyone who is still actively writing or maintaining COBOL code either. I know a few people who wrote COBOL at the start of their careers, but who have since transitioned into other things.

So I think the validity of the observation stands. A quick straw poll of my colleagues within earshot (yes, I'm reading HN at work) suggests that none of them know any active COBOL programmers either. This is from a group of people from very junior to very senior, with a range of about 1 - 20 years of commercial programming experience.

<comment><USER5> _So I think the validity of the observation stands_

Which observation? That the COBOL-type programmers (and we can add in RPG, and other non-sexy languages as well) are isolated from the rest of the industry? Sure. But in-house developers of serious, back-end-heavy apps have always been isolated-- including from each other.

<comment><USER6> No, that the reported popularity of COBOL is at odds with the anecdotal evidence.

<comment><USER5> I think if you started calling around to banks, hospitals, transport companies, oil companies, old-school manufacturing facilities, etc., and started inquiring about their existing codebases, you'd get a whole other set of anecdotes.

<comment><USER6> And that would be an interesting thing to see a blog post about too!

</comment></comment></comment></comment></comment></comment><comment><USER7> Vernor Vinge's fiction introduced the concept of the "programmer archaeologist," which seems appropriate here. He predicted that in the distant future, the skill of programming will have entirely shifted from writing new code (everything you need has already been written) to reading and curating old code. We may be there with COBOL already. _Understanding_ COBOL might be more important than _writing_ COBOL, so the newest variants of COBOL (like .NET) are _less_ relevant than the old stuff.

</comment><comment><USER8> Lots of COBOL still in existence.

If you use a credit/charge card, make an airline reservation, have an insurance claim adjudicated, pay a utility bill, etc.… odds are an old-school COBOL application (with a DB2 database or even more archaic IMS hierarchical system on the backend) is going to process that transaction. Sure, a snazzy web frontend might be in place now, but in the guts is buried business logic reduced and offshored staff no longer possess, and life lingers, only measured in half-life units now…

Most corporate COBOL (as this is the province of Fortune 500 firms) application support and development is handled by offshore vendors, primarily in Asian and Indian locales, with facilities here in the states to hold non- immigrant visa programmers.

COBOL knowledge (and a lot of the details are buried in the platform it runs on — in my experience, mostly IBM mainframes, though I started on Burroughs hardware) is still in a pre-internet age, and college textbooks and three ring bound together 8 1/2 by 11 pages serve as instructional aids, along with experience.

A lot of corporate outlets have engaged in boondoggles to replace the COBOL, but a good deal of these efforts have been epic fail:

* …lot less business knowledge handicaps

* …likely to whiz-bang consultant firms with their own lock-in proprietary systems that woefully underestimate effort to decompose and recompose legacy system…

* …the systems running have been optimized over the years, and they're tied to existing data center operations, which in many cases, are run by IBM. It may seem incredulous today, but even in the 90s, the mainframe systems ran circles around PC and web solutions, especially the "solutions" vendors were offering at the time.

</comment><comment><USER9> I think 80% of active code being COBOL can not possibly be true. Computer use and "active code" have probably grown exponentially over the years, and the new stuff hasn't been in COBOL for a long time.

<comment><USER10> Thats a Gartner Group claim from 1997. I wonder what would the share be now according to them.

<comment><USER9> For 1997 I can believe it - thanks for the info!

</comment></comment></comment><comment><AUTHOR> Just the other week I wrote a couple of .NET classes to read 'native' COBOL Indexed Sequential files from a brand new package installation at one of my client's sites. This package is still in active development in COBOL because the code is just about unchanged across multiple platforms - (Open VMS and Windows are both very similar from a COBOL point of view)

</comment><comment><USER11> Back during my year of unemployment after the first dot-com bubble burst, I met a woman who had been unemployed for two or three years, and she had COBOL experience. We got jobs within about a month of each other (she recommended me for a company that hired me, then I recommended her for a managerial opening at the same place), at a Java shop. So at least one of the following must be true:

* employers weren't all that desperate for COBOL programmers

* hiring managers in the COBOL world tended to be male chauvinist pigs

* this woman preferred unemployment to working in a COBOL shop

</comment><comment><USER9> Wow - at times I have pondered learning COBOL for fun, as I assumed it to be an easy language. That code snippet killed that illusion good and proper.

If I was religious I would now pray that I will never, never, never ever have to deal with COBOL, ever.

<comment><USER12> Everybody goes through that. "COBOL? What's the big deal? I think I'll try learning it some weekend."

Then they actually try learning it.

Then they are enlightened.

</comment></comment><comment><USER13> COBOL has fixed point maths built-in, ergo it's popularity in accounting and business applications.

Most COBOL code is straightforward file "read-process-output". I could easily see a system that _generated_ COBOL code to do assigned tasks: the generator would maintain the database and a description of transformations. The developer would work at that level and never look at COBOL code.

But someone's probably written such a system in COBOL!-)

</comment><comment> brown9-2 A grand total of 61 questions have been tagged on StackOverflow with 'cobol': <http://stackoverflow.com/questions/tagged/cobol>

For comparsion, the count for "C#" is over 30,000, ".net" is close to 20,000, and "java" is about 17,000.

</comment><comment><USER14> #5 Phillips Screwdrivers: Everywhere and Nowhere

Just because you take your car to Pep Boys, call the landlord when something breaks, and use power tools in the garage doesn't mean that olders tools don't serve their purpose.

COBOL is just another tool in the hacker's toolbox. It does a great job at what it was meant to do (neatly laying out and processing business transactions) and continues to do so.

I have worked on many COBOL systems and choose not to any more. Why? Just too damn many lines of code to do the same thing as many other languages.

I wouldn't worry too much about the supply of programmers for aging COBOL systems. Supply and demand will take care of that. Which would you rather do, web work for $50K or COBOL maintenance for $100K? Many would choose the latter.</comment>


Gravitational waves provide dose of reality about extra dimensions - <AUTHOR> https://phys.org/news/2018-09-gravitational-dose-reality-extra-dimensions.html <comment><USER2> Nice. A related result from the neutron star collision is that the speed of light and the speed of gravity are the same, to within something like 1 part in 10^15. Both light and gravity waves from an event 130 million light years away came in less than 2 seconds apart.

<comment><USER3> I don't get this. Shouldn't the speed of gravity be instant? If it has the same speed as light, the earth would gravitate towards the location of the sun roughly eight minutes ago (like we see the sun basically where it was eight minutes ago) in stead of where it actually is, and thus not hold its orbit.

<comment><USER4> I think this helps answer your question [https://physics.stackexchange.com/questions/252015/gravity-v...](https://physics.stackexchange.com/questions/252015/gravity- vs-gravitational-waves)

<comment><USER3> Thanks! That's a long read. I've started at the original question, but it'll take a while to process.

</comment></comment></comment></comment><comment><USER5> > The gravitational waves from the collision reverberated in LIGO the morning > of Aug. 17, 2017, followed by detections of gamma-rays, X-rays, radio waves, > and optical and infrared light. If gravity were leaking into other > dimensions along the way, then the signal they measured in the gravitational > wave detectors would have been weaker than expected. But it wasn't.

Do they really mean to say "followed by detections"? Don't gravitational waves propagate at c? Also, I'm puzzled by "weaker than expected". One issue is calculating expected intensities for gravitational waves vs electromagnetic radiation. The other is calibration of LIGO signals. It's not obvious that resulting uncertainties are small enough for drawing reliable conclusions about gravity leakage.

<comment><USER6> My understanding is that the detection order follows the underlying phenomena: first the neutron stars fell towards each other, producing gravitational waves, and only then did the stars collide, producing electromagnetic waves.

<comment><USER7> As I understand it gravitational waves aren't slowed down by anything whereas electromagnetic waves interact with matter along the way, which takes some amount of time.

There isn't much matter to interact with, but not quite zero either. Something like 1e-23 of the distance had some amount of matter in it (mostly very diffuse gas clouds, nothing more).

</comment></comment></comment><comment><USER8> I'm confused over the size of these extra dimensions... They say that they do not rule out small compact extra dimensions, but only large ones, the number they give is ~100 km. But this must surely be ruled out by ordinary gravitational experiments that establish the 1/r^2 law for gravity, since I would assume that that law would be seriously broken for extra dimensions of those sizes for even everyday physics.

The number that is quoted in some textbooks on String theory (but I do not have the refs.) is that gravity is 1/r^2 down to sizes of ~1 cm for extra dimensions.

<comment><USER9> Gravitational waves are the best litmus test we have for gravity on a large scale which is why they put to rest most of the modified gravity theories.

Newtonian gravity on large scales wasn't "proven" explicitly in fact we have had to introduce dark matter to make it work to match observations, there is also the issue of empty space having weight which is attributed to various favtors depending on the theory in question.

</comment></comment><comment><USER10> How come there are people saying there are higher dimensions and people saying it's all holographic and the truth is 2D

<comment><USER11> The discussion about how many dimensions "really" exist is pointless because there is no other way to define "real" than to define it as the reality that I experience. And I experience 3 dimensions.

Physics is a collection of models expressed as formulas, plus recipes of how to translate these formulas to the reality that we experience.

If I have a formula with 5 dimensions in it that tells me how to build a teleporter then that's great but it doesn't change the fact that the world that I experience is 3 dimensional in space.

</comment></comment><comment><USER12> So, is that a strike against string theory's extra dimensions, or is it another type of extra dimension being ruled out?

<comment><USER13> It is a strike against the idea that over long distances, the spherical shell of "expanding and thinning" gravity can go down faster than 1/r^2 (which would come about from A=pi*r^2, the area of a sphere in three dimensions), achieving that goal by slipping in to dimensions higher than three. However now we have found that gravitational waves are about as strong as we expect it looks like gravity isn't leaving the world of 3+1D.

<comment><USER14> Sphere's have surface area and volume. Neither of those quantities is given by the formula for the area of a circle. I'm not a physicist and can't speak to the merits of the rest of your post but this error of yours makes me doubt your post's veracity. Did you make a mistake in your parenthetical remark? Maybe it edit if you have.

<comment><USER15> I assumed it was a reference to the surface area of a sphere - which is 4 _pi_ r^2. The point would still hold.

<comment><USER14> Makes sense. That's what I would have thought if not for the _area of a sphere in three dimensions_ remark.

<comment><USER16> Area = surface area not volume.

Physicists tend to drop constant factors when they do calculations, I've noticed.

<comment><USER14> A sphere has surface area and volume. I didn't claim or imply that I thought area meant volume. It does not have area and the formula for the surface area of a sphere is not pi r^2. I mentioned this in my original post. Then there is the remark that whatshisface made: _A = pi r^2, the area of a sphere in three dimensions_. That is wrong and most likely a mistake.

When talking about dropping a constant factor are you referring to the 1/r^2 part or dropping a 4 in the statement A=pi r^2. Because if the latter then why keep pi? That's a constant.

<comment><USER13> The constants perfectly divide out in this case, adding the pi was an afterthought so that people would recognize it as an area. Yes... It should have had a 4 as well. Too late to edit now.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER17> Are there particular theories of quantum mechanics or string theory that are now any less likely?

Or is this just confirming what everyone expected all along?

<comment> T-A It's yet another limit on the general idea of large extra dimensions:

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

It doesn't say anything about compact extra dimensions (the tiny curled up ones you usually hear about in string theory).

<comment><USER17> Thanks! That's _exactly_ the context that was totally missing from the article.

</comment></comment></comment><comment><USER18> 'Scientists still confusing themselves by taking a 200 year old interpretation of an experiment as scripture.'

</comment><comment><USER19> the title of the article implies that there is new evidence for the existence of multiple dimensions, while the content of the article is about the opposite being the case

<comment><USER20> Hard to see how. "Dose of reality" usually means evidence _to the contrary_. Even if there was some ambiguity, the first line of the article as well as the caption of the opening image make it clear.

<comment><USER21> It's probably more cryptic than ambiguous, due to the decorative language. A lengthy terms and conditions is not ambiguous, yet it's very vexatious. This is neither ambiguous nor vexatious. Perhaps though, it's a little bit cryptic. A simple man must try a little harder. Spock would probably say the statement is intrinsically ambiguous due to the metaphor, however.</comment></comment></comment>


How do you reject a job offer gracefully? - <AUTHOR> I can't possibly be qualified in the technical role and the company knows this full well(The role I applied for isn't available any longer). They still offered me another route to an  engineering job anyway. I get the feeling they liked my interest in business related things despite being a dev (after a long non-technical interview we all enjoyed), but I know their stack is not one of my competencies. Been fumbling mess over this for at least a week. <comment><USER2> Do you want it to become one of your competencies? Maybe they like you enough to let you learn it on the job. If you want to work there and want to learn that stack, why not? If you really don't want to work there, then just thank them and say you've decided to pursue another opportunity.

<comment><AUTHOR> I definitely want to work there. The problems they're solving are interesting and fascinating and their engineering team is really good. I'd slow them down if nothing else.

<comment><USER2> I had a couple big companies take a chance on me when I didn't know much and it worked out for them. Think of it as their investment in you which you repay with your enthusiasm and terrific contributions.</comment></comment></comment>


From Scratch - a weekly radio show about the entrepreneurial life - <AUTHOR> http://www.fromscratchradio.com/show/?page_id=8 <comment><AUTHOR> Interviews: <http://www.fromscratchradio.com/show/?page_id=12></comment>


Show HN: Interactively select the quality and format for youtube-dl - <AUTHOR> https://github.com/synox/youtube-dl-interactive <comment><AUTHOR> PS: I coded this in an evening. This proves for me that nodejs makes it so easy to make beautiful CLI apps. It is simple and makes may life easier.

See more node cli tools at: [https://github.com/sindresorhus/awesome- nodejs#command-line-...](https://github.com/sindresorhus/awesome- nodejs#command-line-utilities)

<comment><USER4> Just few questions checking the repo.

Why are you using meow? It seems like you are just using it to grab args and print help. Does it do something that is not immediately apparent? It has a lot of dependencies that might be completely useless for you.

log-symbols seems also completely useless dependency, you could just add the two symbols you are using by hand. Is it doing something special?

As for nodejs making things easier. Maybe it's just what you are used to. There isn't much code here, but I'm guessing node_modules is going to be pretty large. I think you could make this work just as well using any language. I guess the bonus here is that this is portable (compared to implementing with bash), but since youtube-dl (as far as I know) is made with Python, maybe it would have been better to make this TUI using Python as well since at least the user will have it installed.

<comment><USER5> On a side-note, can you recommend any good TUI libraries for Python?

I've got a mini project that a decent TUI would potentially work very well for.

<comment><USER4> Sorry, I don't have any ready recommendations up my sleeve. Pretty much only CLI library I use is argparse.

</comment></comment></comment></comment><comment><USER6> I recently wrote[1] a track-selector front end script for youtube-dl that uses yad[2] as a simple GUI[3]. It's not finished (it needs better error handling anbd the gui layout is kind of ugly), but it mostly works.

[1] [https://gist.github.com/pdkl95/0f963eae3612ecb104f233ca9eed4...](https://gist.github.com/pdkl95/0f963eae3612ecb104f233ca9eed435d)

[2] [https://github.com/v1cont/yad](https://github.com/v1cont/yad) (yad is similar to zenity/{g,}dialog)

[3] [https://i.imgur.com/B5uf0PB.png](https://i.imgur.com/B5uf0PB.png)

</comment><comment><USER7> I just uploaded a batch script I use almost daily to grab music videos, live videos, sessions, etc. if anyone finds it useful: [https://github.com/soulofmischief/Batch- Utilities/blob/maste...](https://github.com/soulofmischief/Batch- Utilities/blob/master/src/dl.bat)

It automatically places videos in the configured folder based on type. Just type in an artist name, and select the type of video. Saves me a ton of time.

It's easy to extend and I plan to generalize it and translate it to bash sometime soon. I just do all of my media consumption in Windows currently.

</comment><comment><USER8> It's impressive how little code is needed with 7 npm dependencies for a little CLI program.

</comment><comment><USER9> I just have an alias with the format codes I want in order of preference (youtube-dl allows that)

That's a very nice interactive ui though

<comment><USER10> Can you post the alias?

<comment><USER11> It's well-documented in youtube-dl's readme: [https://github.com/ytdl- org/youtube-dl#format-selection](https://github.com/ytdl-org/youtube- dl#format-selection)

It has examples as well: [https://github.com/ytdl-org/youtube-dl#format- selection-exam...](https://github.com/ytdl-org/youtube-dl#format-selection- examples)

<comment><USER10> Oh nice, thank you, I never saw the examples page.

</comment></comment></comment></comment><comment><USER12> Cool, here's my simple script to select format called vdl, and can be extended:

        #!/bin/bash
        OPTS="-o %(title)s.%(ext)s --console-title --restrict-filenames"

        if [ "$#" -eq 2 ]; then

            if [ "$2" -eq "251" ]; then
                OPTS="$OPTS -x"
            fi
            echo youtube-dl $OPTS -f $2 $1
            youtube-dl $OPTS -f $2 $1

        else
            echo youtube-dl -F $*
            youtube-dl -F $*

            echo
            echo -n "Enter number: "
            read fmt

            youtube-dl $OPTS -f $fmt $*
        fi

To explain, if you know the format number off the top of your head you can pass it after the video id, otherwise it will prompt. Might upgrade it one day to use "set -x" instead of echo and exec.

<comment><USER13> \- Quote "$2" and "$1" \- Use "$@" instead of $* \- Use: OPTS=(-o "%(title)s.%(ext)s" \--console-title --restrict-filenames)

        "${OPTS[@]}"

This is what shellcheck reports.

<comment><USER12> Cool, love those kind of tools.

However, the youtube (and other sites id) and the format number will never contain spaces, so quoting isn't really needed here. If it gives peace of mind, sure.

</comment></comment></comment><comment><USER14> Looooooove this package! Use `youtube-dl` regularly and always forget the params. It's a nightmare.

Opened a PR to remove Lodash, emojis welcomed: [https://github.com/synox/youtube-dl- interactive/pull/3](https://github.com/synox/youtube-dl-interactive/pull/3)

</comment><comment><USER15> I always download with "-f 18".

</comment><comment><USER16> FYI it works with Debian Buster, interesting switches I didn't know

</comment><comment><USER17> 'Because remembering CLI flags is hard.'

Indeed. :)

</comment><comment><USER18> i don't know either project but on the surface doesn't this seem like it would be a welcome PR?

<comment><USER19> I'm generally against adding interactive features to CLI programs if there isn't a good reason for that. I don't want to remember which options I can/can't use in a non-interactive script.

Plus youtube-dl already has multiple GUI/wrappers, so there's already a separation for interactive features.

</comment></comment><comment><USER20> Youtube-dl is one those things I wish could stay under the radar.

<comment><USER21> Don't see why, if anything more people should know about it so shared content can become more redundant as people download it across the world. YouTube is a fairly brittle hub sometimes with all the takedowns.

<comment><USER22> I suspect the GP is concerned Youtube will take steps to block it.

This scares me a bit too, I watch basically all Youtube content via Youtube- dl. I have a script that runs every night on Mac, so that new content automagically appears in my Movies folder.

<comment><USER23> They do block it. Which is why it doesn't work if you install from your OS repo. You need to get it directly from GitHub.

<comment><USER24> And you need to update it every now and then as the game of cat and mouse plays on.

<comment><USER25> Glad you welcomed him to the real world. With things as they are now. I will let you continue to teach him.

</comment></comment></comment></comment></comment></comment><comment><USER26> Jesus .. the package.json alone is probably longer then a shellscript would be that implements the same functionality.

<comment><AUTHOR> I would love to see the shellscript equivalent! :))

<comment><USER27> For videos, this should work... added to your .bashrc file, which then needs to be reloaded (only once) by typing source .bashrc in your home directory from the command line:

        alias yt='youtube-dl --recode-video mp4'

On my system I have a funky python setup so I need to use this instead:

        alias yt='unset PYTHONPATH; youtube-dl --recode-video mp4'

I don't see the need for interactivity because the only format I ever want is mp4.

For audio, I would just do a separate alias with a different name. For example (edit: tested):

        alias yta='youtube-dl --extract-audio --audio-format mp3'

Invoke each with the URL. For example:

Video:

        yt https://www.youtube.com/watch?v=IFe9wiDfb0E

Audio:

        yta https://www.youtube.com/watch?v=qKS8KsTC4IU

If a youtube URL has extra parameters separated by &, delete those before invoking. For example the URL below, which has extra parameters because it came from a playlist:

        https://www.youtube.com/watch?v=7uQuX1sOYk4&list=PLYq_mcte9NvDA2Xi5Qjl1DrH5LuDKDlAI

should be changed to this before using it to attempt a download:

        https://www.youtube.com/watch?v=7uQuX1sOYk4

Or you can use the full original URL but you need to protect it from interpretation by UNIX by surrounding it with single quotes when invoking.

        yta 'https://www.youtube.com/watch?v=7uQuX1sOYk4&list=PLYq_mcte9NvDA2Xi5Qjl1DrH5LuDKDlAI'

<comment> why-oh-why > I don't see the need for interactivity because the only format I ever want > is mp4.

Then this tool isn't for you. If you're gonna skip the whole point of the tool, you can't claim your code suggestions are equivalent.

<comment><USER27> True! I should have made it more clear my examples weren't providing interactivity, I guess you're saying. OK.

</comment></comment></comment></comment></comment><comment><USER28> 380 dependencies for like 30 lines of bash script.

Javascript became the cancer of the Internet.

</comment><comment><USER29> This is too trivial to share, IMO.

Anyway, shell is more suitable for this kind of programs: you could write a bash script that ties together youtube-dl and dmenu or fzf or whatever within an hour.

<comment><USER30> _This is too trivial to share, IMO._

How do you define complexity threshold for something being worth sharing?

More to the point, _why_ do you define that threshold? What benefit is there to saying someone's work that they're sharing has to be sufficiently complicated? Simple things can be immensely useful and well worth sharing.

</comment></comment><comment><USER31> People gotta realize that Node.js is actually excellent for this sort of task. It hits quite a few sweet spots as an all-round Unix scripting language:

* Familiar syntax and semantics (Bash/Zsh/Fish/Csh/Ksh/Ash/Wtfsh are all way weirder than JS - and they are _only_ scripting languages, while JS is already everywhere)

* Standard library ([https://nodejs.org/dist/latest-v12.x/docs/api/fs.html](https://nodejs.org/dist/latest-v12.x/docs/api/fs.html)) gives you access to POSIX APIs ("batteries included" \- but not bloated)

* Sane packaging, package management, and ecosystem (overreliance on third-party module is a thing _exactly_ because NPM works with much less friction than e.g. the Python situation)

* Asynchronous event model lets you safely do multiple things in parallel without worrying about low-level memory management, or which concurrency boilerplate library to use, etc.

All in all, it's the perfect Unix glue. All it misses is a mature S-expression-based syntax.

For example, take the problem of locking your encrypted partitions before suspending your Linux machine. Since distro developers are too "busy" to provide what one might say is basic functionality, power users took matters in their own hands and wrote this 100-ish line Bash script ([https://github.com/vianney/arch-luks- suspend](https://github.com/vianney/arch-luks-suspend)), which evolved into this 1500-ish line Go monstrosity ([https://github.com/guns/go-luks- suspend](https://github.com/guns/go-luks-suspend))... as well as these ~75 lines of Node.js ([https://github.com/egasimus/node-luks- suspend](https://github.com/egasimus/node-luks-suspend)).

But yeah, sure, hurr durr JaavaaScriipt baad, 0.1+0.2!==0.3, 'true'==true, etc... The horror!

<comment><USER32> Look, I'm generally with you, there isn't anything particularly bad about modern JavaSscript, and it's a perfectly fine language to write your tools in if that's what you like.

But your points are... Weird.

1\. Familiar to people who know JavaScript, sure. But shell is the language you interact with the CLI with, so more people who use the CLI are familiar with a shell.

2\. Most languages have a standard library.

3\. I know many people who would disagree with you. Anyway, pip works fine in a Unix environment, which is what we're discussing here.

4\. We're talking about glue code, right? Glue doesn't tend to be very parallel.

5\. So, perfect Unix glue? Sure, you like it, and that's great for you! Keep on doing you. It's obviously capable of making nice tools, but so are most languages...

6\. You luks-suspend example is weird because the Node.js code obviously does so much less than the other versions. I have no idea what the Go version is doing, but the shell version does things like remount the filesystem, handle udev, etc... A bash version of the JavaScript code would be shorter!

7\. 0.1+0.2!=0.3 is a result of floating point arithmetic being floating point arithmetic. It's not specific to JavaScript.

<comment><USER31> 1\. Most people who interact with a shell know how to make it run one command with arguments; some eventually learn about IO redirection. Many such people who use Bash as a "command prompt" would find the way it does even simple things like variables and conditionals exceedingly arcane. Readability is important, and, for better or worse, a compact curly bracket syntax is seen as "the norm".

2\. Different languages' standard libraries have different scopes. Node's is just right for the task at hand.

3\. I know many people who disagree with me, too. That doesn't make me wrong (or right ;-)).

4\. Why not? Doing a task and displaying a rich progress indicator is doing two tasks. Glue is a continuum - for me, the concept includes orchestration of external "heavy lifting" tasks according to the desired logic, as well as processing intermediary outputs in simple ways so the whole pipeline fits together.

5\. Well, I've evaluated it and found it to my liking. I guess you grow to like the tools you use to accomplish things, and if everyone who went out of their way to publicly dismiss Node.js instead went out of their way to use it in place of Bash scripting, they might find it to their liking as well.

6\. Yet ironically, it has been the most reliable in achieving its purpose of locking my encrypted partitions when my computer goes to sleep, not to mention unlocking them when I wake it up.

7\. Exactly - but people keep pulling this and other quirks out of their ass as "proof" JavaScript is some horrible language. Show me a shell scripting language that even has floating point arithmetic! But maybe glue code can't ever need that, either?

<comment><USER33> > _Readability is important, and, for better or worse, a compact curly bracket > syntax is seen as "the norm"._

Python seems pretty popular.

> _I know many people who disagree with me, too. That doesn 't make me wrong_

The problem isn't that you're saying node is well suited. The problem was your suggestion that node was _uniquely_ well suited when actually the CLI is a solved problem in most languages.

> _Well, I 've evaluated it and found it to my liking._

That's all that really matters when it comes to your own personal usage. Just don't expect everyone to have those same preferences nor argue with other developers that your preferences are any kind of "fact".

> _I guess you grow to like the tools you use to accomplish things, and if > everyone who went out of their way to publicly dismiss Node.js instead went > out of their way to use it in place of Bash scripting, they might find it to > their liking as well._

Personally I don't like node and find Bash easier however it's thankfully not an "either/or" argument where your only options are Javascript or Bash. There's a whole plethora of options out there.

> _Yet ironically, it has been the most reliable in achieving its purpose of > locking my encrypted partitions when my computer goes to sleep, not to > mention unlocking them when I wake it up._

That's a pretty meaningless anecdote because it could be the result of a whole plethora of reasons outside of the language's control (including but not limited to user error) or even completely made up (like your point about floating point arithmetic (see below) or your other comment about one liners being more readable than multi-lined code).

> _Show me a shell scripting language that even has floating point > arithmetic!_

Quite a few do: ksh93, yash, zsh and murex (disclaimer: I wrote that shell) are all interactive shells which support floating point arithmetic.

In terms of shell scripting languages, you can add the following to the above group: awk, bc, dc and perl.

Even those shells that don't support floating point arithmetic can still do pseudo floating point maths by using powers of 10 multipliers and printf to place the decimal point:

        printf %.10f\\n "$((1000000000 * 365/7))e-9"

Ok, I'll grant you that is rather ugly. Thankfully you can call other shell scripting languages from within your POSIX/C shell:

        bc <<< "scale=10; 365/7"

This isn't a hard thing to research either; which suggests to me you haven't done your homework before making your arguments.

<comment><USER31> > Python seems pretty popular.

One reason it's so popular: even though it skips the actual curly brackets (thus making itself more accessible), it doesn't stray too far from the general syntactic paradigm of "curly-bracket languages'" \- even though I've also seen people being alienated by the idea of "significant whitespace", again for no other reason but that it "seems wrong" to them.

> The problem was your suggestion that node was uniquely well suited

No, just _much better suited than people give it credit for_. And this ecosystem brings new things to the table, too.

> when actually the CLI is a solved problem in most languages.

Being able to build a CLI at all? I guess, sure. Being able to quickly build an accessible CLI? Hardly so. Everything in the area of HCI is in flux, and gatekeeping the CLI domain for does more harm than good. Btw do you know anyone doing this sort of interface before Yeoman? [https://github.com/synox/youtube-dl- interactive/raw/master/d...](https://github.com/synox/youtube-dl- interactive/raw/master/d..). before JS.

> There's a whole plethora of options out there.

Which is why you've got to take into account opportunity cost, choice paralysis, etc. All of the options out there are positively fascinating, but if I have the options to solve problems in multiple contexts with the same familiar tool, I tend to usually go for it.

> Quite a few do: ksh93, yash, zsh and murex (disclaimer: I wrote that shell) > are all interactive shells which support floating point arithmetic.

None of which are POSIX, or common defaults?

> In terms of shell scripting languages, you can add the following to the > above group: awk, bc, dc

None of which are shells - they're DSLs you can call into from the shell.

> perl

Again, not really a shell. Though I wouldn't be surprised if anyone's using it as one.

> bc <<< "scale=10; 365/7" > 365/7

Even though these tools have a good reason to be like this, having to _research_ how to _call out to an external executable_ to do something as trivial as floating point division (in the sense of "cmon man I can do this in my head, why does is it have to be so hard to tell a computer to do it") is hardly on anyone's list of priorities.

At this point, nearly anyone would rather reach for the scripting language they're already familiar with, rather than learn an unfamiliar one just because it has historically dominated the problem domain.

> one liners being more readable than multi-lined code

Admittedly, that was a pretty bullshit argument. Not any less nuanced than "[l]ine counts mean jack shit", either - I take it as a general rule that one would prefer to write less code.

And I'm not weighing any of the examples against "[c]ode golfing, minifified code, shell 1 liners, Perl, etc. I didn't really take into account the extra functionality of the Go version - it was just as unreliable as the Bash one so I quickly discarded it when I found something that worked.

There's a story behind this comparison. It was likely user error, in the sense I failed to prepare my initramfs correctly using mkinitcpio or dracut (incidentally, both of those being shell scripts - insufficiently documented and not very readable to my untrained eye, either) But the JavaScript version worked for me because it didn't even try to chroot into the initramfs - <USER2> just moves a tiny handful of required binaries into a ramdisk, and works from that.

Since that solution _works_, I am hard pressed not to commend its minimalism. Is it inconceivable that that the author was not more clever, but the tools that they used enabled them to come up with a simpler solution in the time that would've otherwise been spent googling `bc` or poring over the sources of initramfs builders?

<comment><USER33> > _One reason it 's so popular: even though it skips the actual curly brackets > (thus making itself more accessible), it doesn't stray too far from the > general syntactic paradigm of "curly-bracket languages'" \- even though I've > also seen people being alienated by the idea of "significant whitespace", > again for no other reason but that it "seems wrong" to them._

All you're describing there is structured programming languages. Of course people like structured languages, that's why nearly every single programming language developed in the last 40 years (that isn't designed to interface directly with hardware) is structured. Even languages of entirely different paradigms such as Common Lisp, LOGO, Prolog, MATLAB and Forth all support structured control flows. Even BASIC - for all it's warts - <USER3> structured logic (even if many implementations lacked proper functions).

So you're not making a convincing argument about curly braces now you've redefined the argument as structured control flows.

> _No, just much better suited than people give it credit for. And this > ecosystem brings new things to the table, too._

Maybe. My personal opinion is the unmanageable nest of unvetted dependencies makes it a worse solution than people give it credit for. As a pure dev tool for personal use, go for it. But I don't want to read 10k+ lines of code in the dependencies of a tool that's ostensibly just an interactive alias.

I get the whole "standing on the shoulders of giants" thing but it's gotten out of hand with node. Half the time even people writing code in node don't know what dependencies their dependencies are pulling in. All that trust placed in an ecosystem that is very easy to abuse (and has been abused too). So no thanks, I don't think that's the right tool for serious CLI work which often needs to be run on trusted machines.

> _Being able to build a CLI at all? I guess, sure. Being able to quickly > build an accessible CLI? Hardly so._

Actually yes. I've been writing software for 30 year in well over a dozen different languages. Much, not all but a reasonable amount of that, was writing software for servers.

> _Everything in the area of HCI is in flux_

Not in terms of the CLI. We're using the same standards that were defined in the 60s. If anything, the problem with the CLI is that it's engineered around design principles which are no longer relevant to modern terminals. For example:

      * we no longer need to inline formatting with escape sequences - we have better markups for that.
      * ASCII is no longer relevant in our international community with different writing languages and character sets.
      * Terminals are no longer teletypes - there's no reason why we shouldn't be able to inline multimedia content
      * Terminals are no longer teletypes - we shouldn't need to be defining TTYs/PTYs as an OS abstraction
      * Defining TTYs is OS specific and a fucking mess on even some of the better designed UNIXes
      * Capturing and sending signals can often be OS specific and a fucking mess to work with on even some of the better designed UNIXes
      * Not all OSs even support the same suite of signals
      * Signal hotkeys can't even be redefined - which means you can't always compensate for one OS missing a signal that another might have. The best you can do is enable or disable the capture of that hotkey on the TTY. Which again requires OS specific syscalls
      * POSIX pipes are just byte streams. Which makes working with structured data a fucking nightmare (hence why Powershell, jq and murex all exist)
      * stderr is a lousy way of capturing errors
      * in fact error handling on the whole is just terrible on POSIX shells (hence why murex exists)
      * POSIX shells don't support any kind of unit testing (again, hence why murex exists)
      * exit numbers are a half arsed solution
      * named pipes are a file system kludge
      * TTY modes can get broken if a fork()ed process changes the mode and crashes for forgets to reset it on exit. Meaning your shell then becomes non-functional without manually fork()ing `reset`
      * ANSI escape sequences are anything but standardised. With different terminal emulators often doing significantly different things

This is all just off the top of my head so I could likely think of more if I spent any time thinking about it. All of those problems are a result of the command line interface being largely the exact same design as it was in the 60s.

So no, the CLI definitely is not in a state of flux. The exact opposite of that in fact.

More likely is the Javascript libraries you're using for CLI work is in a constant state of flux. This was a problem I had when I used to write software in node and it's one of many personal reasons I decided against using it for anything I really cared about.

> _Which is why you 've got to take into account opportunity cost, choice > paralysis, etc. All of the options out there are positively fascinating, but > if I have the options to solve problems in multiple contexts with the same > familiar tool, I tend to usually go for it._

That makes no sense. Last week you were saying it couldn't be done and now you're saying the problem is too much choice. Make your mind up.

> _[ksh93, yash, zsh and murex] None of which are POSIX, or common defaults?_

You didn't say "POSIX shells", you said "shell scripting languages"

Also node isn't a common default either.

> _[Perl] Again, not really a shell. Though I wouldn 't be surprised if > anyone's using it as one._

Again you didn't say "POSIX shells", you said "shell scripting languages". You can very much use Perl as a shell scripting language (and that is in fact still a common use case for it).

> _Even though these tools have a good reason to be like this, having to > _research_ how to _call out to an external executable_ to do something as > trivial as floating point division (in the sense of "cmon man I can do this > in my head, why does is it have to be so hard to tell a computer to do it") > is hardly on anyone's list of priorities._

Actually computers can't do proper floating point arithmetic (in the sense that humans do) either. That's why a lot of languages (and spreadsheets too) demonstrate seemingly broken logic when comparing floating point numbers.

> _Admittedly, that was a pretty bullshit argument. Not any less nuanced than > "[l]ine counts mean jack shit", either - I take it as a general rule that > one would prefer to write less code._

Line counts literally do mean jack shit. There are plenty of examples of where more lines equal better code. As a developer you should already know this.

</comment></comment></comment></comment></comment></comment><comment> cm-t please, need a snap to install it!

</comment><comment><USER34> Remembering flags is hard? Are shell scripts no longer a thing?

<comment><USER30> Remembering flags _is_ hard, yes. If you use a lot of different apps remembering the flags for something you use infrequently is a pain. I don't think I've _ever_ used ffmpeg without looking at the docs first.

As for shell scripts, they are a thing, and this thing is one (just written in node rather than bash.)

<comment><USER12> It's not that bad. Captain Obvious example:

      command -h  # or --help

For ffmpeg (and other huge cli) I use my shell history, man page, and Super User site. Then edit the params.</comment></comment></comment>


Anatomy of a virus call centre scam - <AUTHOR> http://www.troyhunt.com/2011/10/anatomy-of-virus-call-centre-scam.html

<comment><USER2> My mother, who is almost 70, received four of these calls last year. The first time she initially panicked, but wrote down a lot of information, including a callback number and they number they were calling from, during the thirty minutes she kept them talking. She then called the local police and emailed Microsoft with the information she had, and emailed all her friends to tell them to be careful & what to watch for. Some of them had been contacted already.

The next time, she kept them talking and was making intentional mistakes to keep them on the line, while using her mobile to call the local police to see if they could do something to trace the call.

The next two times she talked to them for a similar amount of time as well. She must be watching too many police & spy shows. LOL

<comment><USER3> Your mom sounds awesome. I don't think mine would fall for the scam, but she wouldn't drag them along, either. She'd just very politely (we're Canadian, after all) tell them she wasn't interested.

<comment><USER4> I was driving along the left lane of the interstate one day, a hundred miles north of Chicago, 20 mph over the limit, passing many cars. I noticed a car behind me in the left lane, not terribly close, but who hadn't been there before. I assumed he was catching me quick, and started looking for a gap in the right lane. I checked my mirror again a second later, he hadn't gotten any closer. I thought this odd, but continued in the left lane - the right lane was packed, and he was still a solid ten or fifteen car lengths behind me. After a minute of this I found a three car length gap in the right lane, and pulled over anyway. He was past in a flash. Canadian plates. Not that he didn't want to get around me, he was just too polite to tailgate. :)

</comment></comment></comment><comment><USER5> I've received a couple of calls of the same kind at home, typically on Saturday mornings. (I'm in the UK).

Though I was very surprised to get the same call over December in South Africa at my parents house (I recognised the script). Thought it was unusual. But seeing this one is a regular issue in Australia, I wonder how many other countries these people are targetting.

How wide are they reaching?

I played along with the first one - despite not having a Windows machine, and when they failed to figure out I had no Windows key on my current keyboard (old style Thinkpads don't), I got put through to a different person who told me I needed to see a doctor because I was blind, and then he hung up on me.

In later calls one of them was shocked I declined to follow their instructions, claiming it was a free service check. Another one got very nasty and abusive.

<comment><USER6> Thanks for mentioning that this is happening in South Africa, since I recently got my mother a land line there. That said, her laptop is so bad and used for so little that it would be funny to see them trying to do anything with it.

</comment></comment><comment><USER7> It's interesting to think that this attack vector is more effective against people. They won't trust "sites" on the internet because they have been conditioned not to but will gladly follow the instructions of a "expert" over the phone. What could someone do to stop this type of behavior? Repeated conditioning might take too long.

Aside: I love the ending near minute 25.

> ~I'm the senior most technician here.

> "Could you help me out? What does the Event Log do?"

> "Uh... Event Log .... click"

</comment><comment><USER8> I've never received one of these calls, but someone should set up a VM and let them in. See what they do exactly, and then report it. If you could get enough info on them, am sure the central office could be taken down very quickly, and the owners arrested.

Just a thought anyway, exposing them is an excellent first step though, and am sure keeping them on the line is slowing them down a little.

</comment><comment><USER9> Link in the article comments to [http://nakedsecurity.sophos.com/2011/09/21/microsoft- dumps-p...](http://nakedsecurity.sophos.com/2011/09/21/microsoft-dumps- partner-telephone-support-scam/) is worth reading. Amazing that someone would have the balls to try this, but I suppose there are no penalties for what amounts to abuse of privileges. I know MS tightened up on some aspects of the partner scheme (presumably to stop everyone and his dog using it as a way to get free copies of Windows).

So, who owns Comantra? There needs to be an international register of people unfit to own companies, or whose companies one shouldn't do business with. In the UK, Companies House records the _really_ bad guys who've managed to get struck off as directors, but this kind of scam needs to get you on a little list too.

</comment><comment><USER10> What I find surprising is that people still answer unknown numbers. I know plenty of people in their 70s that are pretty computer illiterate but are still savvy enough to screen calls.

If it is not somebody you know then your first assumption should be that it is just probably somebody trying to separate you from your money. Odds are that you will be correct.

If it is important they will leave a message. If in the voicemail they claim to be from your bank or some institution you have a relationship with then look up their number on their website and call them.

<comment><USER11> A lot of scams now have numbers that are spoofed. I get tons of calls from weird numbers (weird as in I live in LA, don't know anyone in the Midwest and it's a number with an Ohio area code) and whenever I listen to the voicemail its always a robocaller (sometimes in Spanish too, which is odd).

</comment></comment><comment><USER12> I've received one of these as well (UK). They told me my ISP had reported my computers was visiting sites with viruses, and got quite frustrated when I asked them who my ISP was and on which device they were reported?

Then they hung up.

</comment><comment> johnx123-up I think it's an old scam [http://blog.reverseaustralia.com/indian-microsoft- telemarket...](http://blog.reverseaustralia.com/indian-microsoft- telemarketing-scam/105/)

</comment><comment><USER13> Are there anti-spam filters for landlines?

</comment><comment><USER14> I'm sure if this guy stayed on the line long enough he would have overhead the sounds of helicopters dropping police on these guys to take them into custody.</comment>