Tour De Babel -- Rant about programming languages - <AUTHOR> http://steve.yegge.googlepages.com/tour-de-babel

<comment><USER2> In an aside about Emacs, Steve Yegge notes, "[...] I type 130 to 140 WPM, error-free, in Emacs, when I'm doing free-form text."

That explains _so much_.

</comment><comment><USER3> Ugh. again, if you're going to tear on something, please... at least be right about it.

For example, If your code base is 50 million lines in _any_ language, you're doing it wrong, and it's going to be a pain to maintain. C++ has little to do with it.

He also seems to think Python is losing to Ruby -- Sorry, no. They're both going strong, and growing rapidly. Both of them are winning hard right now.

Also, his convolving of lisp and emacs is quite annoying. Emacs is not Lisp, and Lisp is not Emacs. Please don't confuse the two.

Overall, I think that this is a rather poor article. Although I've definitely seen worse.

<comment><USER2> He wrote that article quite a while ago (Sept. 2004), actually, and has a slightly more recent (Feb. 2005) follow-up that covers several more languages here (<http://steve.yegge.googlepages.com/language-grubbing>). Oddly, he acts as if he has no memory of writing the other thing.

He gives a much more informed opinion of Python here, I think. His overall impression is essentially, "Python is a really good language, but I already know Ruby, which is good at the same things, so I'll just stick with that." I feel the same, really, but favoring Python over Ruby.

<comment><USER4> _Python is a really good language, but I already know Ruby, which is good at the same things_

I was under the impression that Ruby was mostly used for webapps, with really little use in other areas. Is this not correct? Python is used widely for a variety of purposes, like system programming.

<comment><USER2> Ruby is a general-purpose scripting language. It just has a reputation as being used mostly for the web because Rails is its most popular app.

I don't really use Ruby (I already know Python well, and while I've played with Ruby a bit, I think my studying time is better spent on languages that are more different), so I'm going to let Ruby-ists provide examples if they want.

<comment><USER4> Yes, it was _designed_ to be general purpose, but is it? I mean, do people use it that way?

<comment><USER5> I've used Ruby for quite a while. I don't use Rails, and I haven't touched a web application in a long time. I've used it for system scripts, GUI applications (JRuby), game development, data processing, automation of MS Office applications, testing, prototyping, distributed build and deploy scripts, middleware, etc. I use Ruby for anything and everything I can think of programming unless I need to get closer to the hardware or integrate with something written in a different language.

Ruby can be used and will be used anywhere that Python can. They're both great languages, but I prefer Ruby for a few small reasons that Yegge seems to cover.

It's understandable that you might have this confusion, though, since if you're not a Ruby user it's easy to get the impression that Rails is the programming language. I constantly have to educate people about that ("Repeat after me: Rails is not a programming language"). Sometimes I wish Rails wasn't so popular, because I believe Ruby can stand on its own. I'm tired of conversations like this:

"Have you heard of Ruby?"

"No."

"Okay, have you heard of Rails?"

"Oh, Rails! That's what you're talking about!"

"No, that is not what I'm talking about."

I get this from the standard folks who never venture outside of their C++/Java/C# pens, and they've heard of Python only because of Google (tip for language evangelists: a hot and trendy company does more for your language than a killer app).

I would expect, however, that people who use Python would realize that Ruby stands right beside it as a similarly beautiful and productive dynamic language. In this I am constantly disappointed. Maybe it's a sign that Ruby is losing the popularity contest and will fade away to the sidelines. There are too many clueless people who pick up Python and love it and swear by the gods that there is no language like it, even though their experience with languages is summed up with C++, Java, and now Python. It's the language that ropes in all the clueless people that eventually wins. Congrats to my Python brothas.

<comment><USER6> "There are too many clueless people who pick up Python and love it and swear by the gods that there is no language like it, even though their experience with languages is summed up with C++, Java, and now Python. "

To be fair, the same seems true of Ruby (mostly via Rails); they come from Java or PHP and declare Ruby the pinnacle of language design.

(I'd like to think, though, they are a mostly a noisy minority. There are a lot of Ruby, non-Rails Ruby, developers who just quietly go about their business.)

</comment></comment></comment></comment></comment></comment></comment><comment><USER7> I find it annoying that people's only real criticism against Python is the white space. I love that feature, it's like high real estate prices, keeps the rif-raf out.

<comment><USER8> I also don't understand that critic. I have never ever had a problem with it and it is a big part of what makes Python so readable. I don't think there is any other language that comes close to Python in terms of readability.

What is the issue people have with it? They write code that writes code? That is the only issue I can come up with.

And self, yes it might seem a bit unaesthetic at first but it is not such a big deal.

For me, Python = productivity

<comment><USER9> When your working on cross multi-editor / multi-developer projects, you can do your tabs differently, (one might do tabs, another soft tabs, their soft-tabs are 4 spaces, another is 2, another is 8 (ack)) and you get irritating inconsistent tab errors. It can be quite annoying. Having to synchronize on such an irritating detail is even more irritating.

<comment><USER7> Exactly, in a language where it didn't matter the code would just look like crap over time where as python would force you to face the problem.

Not to mention can't you fix that sort of in consistency in vim or Emacs with a few commands?

</comment></comment></comment></comment><comment><USER10> Sorry, but I can't take seriously people, who are writing stuff like "C++ is the dumbest language on earth...". It's not even insulting.

<comment><USER5> That's funny. I have a really hard time taking anyone seriously who fails to realize the massive shortcomings of C++ as a language.

</comment></comment><comment><USER11> This guy is possibly the worst writer I have ever read. I do not understand why his material keeps getting circulated.

<comment><USER12> There's interesting content, even if you don't like his writing aesthetically.

<comment><USER11> A restaurant review has more content than this. This is just a list of personal tastes, with virtually no addressable argument. A lot of what he does say is idiotic. His entire lisp section, for example, is about an elisp system, which has absolutely nothing to do with the merits of learning real lisp. "Perl OO never really caught on." Um, have you looked at CPAN or the core module APIs in the last 8 years?

<comment><USER13> Perl OO never really caught on because it isn't part of the core language. It's the same with Scheme. It's nothing to be embarrassed about or something that you want to try and correct.

Also, what pray tell is a "real" lisp? Last I checked, Emacs-Lisp has macros and much of what makes any lisp a "real" lisp.

<comment><USER14> > Perl OO never really caught on because it isn't part of the core language.

What?

Perl OO did catch on, and it is part of the core language.

<comment><USER13> Perl OO = library. Scheme OO = library. Library != language. The last time I tried to use Perl OO, CPAN had to download a bunch of stuff for Moose. That doesn't sound like it's part of the core language to me.

Has the situation changed? Are there OO things included with the default dist of Perl?

<comment><USER14> Perl 5 has had OO forever. Here's how it works:

      package Class;
      sub new { my $class = shift; bless {} => $class }
      sub method { my $self = shift; $self->{attribute} = 'value' };

      package Subclass;
      our @ISA = qw(Class);
      sub method { my $self = shift; $self->SUPER::method(...); ... }

       package main;
       my $class = Subclass->new;
       $class->method;

This is built into the core.</comment></comment></comment></comment></comment></comment></comment>


The Future of Management Is Teal - <AUTHOR> https://www.strategy-business.com/article/00344?gko=10921 <comment><USER2> I liked the article. I wish it mentioned Basecamp, formerly 37Signals, one of the pioneers of this type of management style. See [https://www.inc.com/magazine/20110401/jason-fried-why-i- run-...](https://www.inc.com/magazine/20110401/jason-fried-why-i-run-a-flat- company.html)</comment>


Ask YC/HN: What are some reasonable rates to quote for technology consulting? - <AUTHOR>

Hey everyone.
I'd like to gather the great HN community's opinion on technology consulting rates.
In the span of two days, I was approached by two people in my network, one to help with ad and site monetization and testing, one to help with making sure a new web-based start-up is built optimized, help with social media/networking marketing, search, etc.
I was asked about my rates, and I had none (since I've never consulted in this fashion, I'm just out of college after all).
What are some rates you've heard of or used for your consulting or work, both non-programming and programming?
Thanks <comment><USER2> Well, to start, if you really know these people, ask what their budget is and set something in that range that you think is fair. If you're not sure about the people, then you ought to consider things like rent, food, etc...

One great place to go is the <http://freelanceswitch.com/rates/> calculator. It was designed to help answer questions like these. If this is your only source of income, this calculator is invaluable, but don't use it as the only determinant of your price, rather as a guide. You might break even at $50, but if the place you live in pays more in general, don't be afraid to ask for it.

One last thing, don't back down on a fair price. You would be amazed how easy it is (especially on your first jobs) for someone to talk you down below fair market for your work because you're afraid to lose the lead. Know what you're worth, and charge it.

Good luck!

<comment><USER3> Ask them about their budgets? That's like saying "oh, ok, how much do you have?". Even if they tell you, they're not going to like it, which may lead to probelms in the future.

<comment><USER2> As I mentioned, it's for people you know (and would be comfortable having that conversation with). I've worked for friends, and I'm clear up front that I'm not free, but I'm also more willing to work with them on price for stuff (as it's usually small and fun). Also, it can help you to determine if the customer is serious (Make me Facebook, $200) or not.

It's not always a great way to approach things, but sometimes (and you'll know when) it is a decent approach.

</comment></comment></comment><comment><USER4> In major metros in the USA $100/hr is entirely reasonable for someone who gets results directly.

If you're performing a specific task you're very comfortable with, or will be on call, bill the full rate in 15 minute increments.

If you're venturing outside of your comfort zone and/or providing soft consulting such as advice, discount appropriately. Likewise, if they'll be providing you work in bulk (some number of hours per week, or a long project), consider discounting fairly aggressively as well.

Freelance hours (1099) are different than employee hours (W-2) from a tax perspective, so be sure that your income is equivalent to what you'd want to have as an employee at least.

<comment><USER5> In particular, you will have to pay an extra 7.5% in soc sec tax. That's not even talking about insurance issues, which you can (hopefully) ignore for a while if you are healthy and single and living in a state where you can legally do so.

</comment></comment><comment><USER6> Don't be afraid to ask for what you're worth. On the other hand, you don't earn anything if you price yourself out of the job.

For reference, the going rate in Minneapolis for competent contract software engineers seems to be in the $100/hr neighborhood.

If you can't come to an agreement on an hourly rate, you might try negotiating a price for the job as a whole. If you're especially productive, you might even come out better this way than if you had done an hourly arrangement.

<comment><USER7> If you do negotiate for the job as a whole, try to be very explicit on what is deliverable. It's easy to get stuck in a trap where you keep adding just one more thing and it takes forever without you getting more money.

</comment></comment><comment><USER8> The factors to take into consideration are the expertise you bring to each of these projects, other folks that can do something similar, how quickly do you need to complete these projects, are these one-off's or is there a potential for on-going consulting, how badly do you need the money from these gigs, how much will you learn from these 2 gigs, can you use what you learn to market yourself for other similar gigs, etc.?

Since you are just out of college and you have probably not negotiated consulting rates, assign what you think is a fair hourly rate for each of these projects and then _double_ it -- that should be the rate you could look at charging.

Once you gather enough expertise, and can showcase clients & portfolio, double your rates again.

good luck!

</comment><comment><USER9> Right out of college you should be looking for $30 to $50 for tech consulting.

I usually work at 2 rates depending on the project or engagement. I have a "developer" rate where I'm looking at an every day engagement for longer than a month. Essentially I'm guaranteed work for a considerable period of time so I charge less.

Sometimes I get called in for one of consulting gigs, maybe just a day to a week of training or consulting. I usually charge about 50%-100% more for these types of gigs, this is common - you incur a lot of overhead on a gig like this. I'm up front about this with potential clients as well, they know my rate goes down for a longer engagement.

By the way where are you? Do you have some unique skillset?

<comment><USER10> > By the way where are you?

This is probably the most important question. Good luck getting $30 an hour in a small market, and you could certainly ask for more than $50 if you know what you are doing in New York City. So where are you?

</comment></comment><comment><USER11> It really depends on two factors. What level of value do you offer company that wants to work with you and what is your level of need for income?

The more value you can off and the less you need the work the more you can charge. Generally internet marketing consultants can charge between $50 and $200 per hour.

The more details you can provide the more specific I can be on what competitive rates might look like.

</comment><comment><USER12> I charge $100/hr for consulting relating to video encoding and compression. I'm a college student, but I can get away with it because its such a great niche (and there aren't very many of us compressionists out there who aren't covered in dozens of NDAs and noncompete agreements...)

Ironically, I only get paid about half that for my actual coding contracts, which quite honestly are much more work.

<comment><USER13> What do you actually do and how do I get into a market like that?

</comment></comment><comment><USER14> Jerry Weinberg has a great statement on this: set your price so that you're happy either way.

In other words, set it high enough that if they say yes, you feel good about how much money you're making, and if they say no, it's a relief because you wouldn't have wanted that deal anyway.

I found this helpful because you can answer it yourself (without any market info, which can be hard to get sometimes) and it's optimized for making you feel good.

</comment><comment><USER15> As a hardware consultant during college, I was able to charge $20 - $30 per hour. Naturally more is better. If you have experience, it is easy to justify $100.

</comment><comment><USER16> It really depends on the level of specialisation involved.

I would say $125 - $150/hr is a reasonable rate, but my consulting work could not be described as IT generalism. It also depends on your overhead, firm size, whether there are subcontractors involved, etc, etc.

</comment><comment><USER17> I do consulting every now and then, and my hourly rate is around $100, which I'm told by clients is very fair.

I primarily do business/IT strategy, business models, etc. but also some programming and a bit of usability.

I'm placed in Copenhagen.

<comment><USER18> if your clients think your rate is "fair", doesn't that suggest you're undercharging?

i would guess when a client subjectively feels your rate is "a little on the high side" then it's probably fair. they prefer low rates.

<comment><USER19> There's an old story about a guy calling in a plumber to have a look at his washing machine which he said. "It just stopped working....."

The plumber looked over the the washing machine, pulled it out fro the wall a little, peered down the back, lifted the lid and took a peek inside then closed it, turned it on then off then back on again then paused thinking a little. He then proceeded to dive into his tool bag, bringing out a soft faced rubber mallet and gave the washing machine a firm tap somewhere on it's behind. It then proceeded to start filling with water and going through a cycle. This all took about 8 minutes.

The bloke who called him was pleased until he got the bill. The first thing he looked at was the figure at the bottom. $120!!!!!

$120 the man exclaimed!!!! But it only took you 8 minutes......

The plumber then gestured to the itemised part of the bill.

"Hitting part of washing machine with SF MALLET - $20" "Knowing exactly where to hit it - $100"

</comment></comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment>=== Old story (and in many guises floating around the net) but a goodie.

If you save someone $10000 with an hours work - technically if they paid you up to $9999 then they would be better off. If you're good - then you may always be on the low side.

</comment><comment><USER20> Better yet, just become a social media consultant and charge $300 an hour to overhype Twitter!

</comment><comment><USER21> I charge $250 an hour for interaction design and general consulting (e.g. pure advice), and my husband charges the same for his expertise in JavaScript.

But I'm booked solid so that must mean it's time to raise rates.

Lots of good people undercharge because they know how much they don't know. Consequently, lots of bad people overcharge, because they are overconfident (or simply shysters). The trick is in knowing which you are.

I follow 2 key pricing rules:

1\. Tell the potential client your hourly rate, then slap them in the face. If they're not more shocked by the rate than the slap, you're not charging enough. (Figuratively. Haven't slapped a client yet. Although some have deserved it.)

2\. Remember it's about value and not about cost, just like those tire pumps at gas stations charge you a buck or more for air -- the air compressor doesn't cost anything like that much to run and maintain, but boy is it economical when you consider the wear it saves you on your $150-a-pop tires. Does an hour of your time only generate $50 of value going forward? Well, there you go.

FWIW I am in the midst of writing a short ebook filled with advice on consulting aimed at designers & developers, that I've developed over the past 11 years of consulting. Watch this space, kinda thing. Or if you'd like to "beta test" it for me, email me at firstname.lastname@example.com.</comment>


Ask HN: Is there an open source curriculum for for a mathematics degree? - <AUTHOR> The Open Source Society University is basically a GitHub repo which has all the components of a traditional CS major with resources in one place. Does somebody know of something similar for a mathematics degree? <comment><USER2> There's a fairly detailed curriculum here (three parts) [https://www.quantstart.com/articles/How-to-Learn-Advanced- Ma...](https://www.quantstart.com/articles/How-to-Learn-Advanced-Mathematics- Without-Heading-to-University-Part-1)

</comment><comment><USER3> Most colleges have open source course websites where you can just go and read the syllabus etc. Not "all in one place" but pretty good resource.

</comment><comment><USER4> Not including all the resources, but in my experience many (German) universities tend to have very comprehensive examination rules which list all offered courses with brief rough lists of topics covered. For these the standard references are various textbooks, though almost none are ebooks and even fewer are freely available (scripts sometimes are).

</comment><comment><USER5> The hard part about learning math is not finding course material. Three or four textbooks can cover the entirety of undergraduate mathematics. The real challenge is in the discipline, focus, practice, and repetition of doing problems over and over and over again. It can be almost impossible to force yourself through this, and it's really easy to start glossing over things you _think_ you understand. The only real way to learn math (short of possessing genius level autodidacism) is in a classroom setting, with a teacher and peers, receiving constant feedback and assessment. I would strongly suggest you check out the local university or community college if you have a serious desire to learn.

</comment><comment><USER6> I don't know of any degree granting programs but if you want math training all the way through a college level try Kahn Academy at [https://www.khanacademy.org/#/math](https://www.khanacademy.org/#/math). Hope that helps a bit.

<comment><USER7> This goes through lower division college-level math, but nothing higher than that.

</comment></comment><comment><USER8> [https://ocw.mit.edu/courses/find-by- topic/#cat=mathematics](https://ocw.mit.edu/courses/find-by- topic/#cat=mathematics) is where I'd start.

</comment><comment><USER9> Most universities have their syllabus freely available on their websites. For example here is the one from Cambridge University: [https://www.dpmms.cam.ac.uk/study/](https://www.dpmms.cam.ac.uk/study/)

</comment><comment><USER10> Related discussion following a similar question I asked: [https://news.ycombinator.com/item?id=18939913](https://news.ycombinator.com/item?id=18939913)

</comment><comment><USER11> Check the Oxford undergrad math course: [https://courses.maths.ox.ac.uk/overview/undergraduate](https://courses.maths.ox.ac.uk/overview/undergraduate)

</comment><comment><USER12> Have a look at this: [https://hbpms.blogspot.com/](https://hbpms.blogspot.com/)</comment>


Moto X phone specifications - <AUTHOR> http://www.motorola.com/us/consumers/Moto-X/moto-x,en_US,pg.html <comment><USER2> This introduction for Moto X is really, really trying way too hard to be cool in both the copy and design. It comes off almost as badly as the Samsung ad mocking the uncool parents and nerds in line for iPhones.

Particularly cringeworthy:

* "Your socks, your watch, your bike say so much about you" * "Play Goldilocks and choose the right size for you: 16 or 32 MB" Was Goldilocks really the best pick here--isn't this the male pitch, badger hair shaving brush, tortoise shell glasses and all? Didn't Goldilocks have three choices? * "you'll never miss those OMG-that-was-sick-did-you-see-that moments" Sick copy brah. * "Moto X responds to your voice, no touching necessary. (That's what she said.)" This doesn't even make sense as a joke.

<comment><USER3> wow that is actually their marketing copy... An actual "that's what she said joke", holy shit.

I once wrote about Apple was losing their way in terms of their marketing writing, but it seems their competition is not even close to catching up.

As a lowly marketer it strikes me as unfair/frustrating that there are people out there getting paid triple what I get paid writing unconvincing drivel that treats the customer as a dumb internet meme.

<comment><USER4> They've removed the "that's what she said" joke. Hilarious.

</comment></comment></comment><comment><USER5> I think if you're buying phones based on # of cores or Ghz, you're basing purchases on the wrong thing.

If you want to buy a smartphone based on the fact that it has 4 ARM cores, you are buying on specs, not on actual delivered capability, and those extra cores may very well be eating up more power and more die space for no reason. (I'm not talking about Moto X's low-power DSP cores, I'm talking about having 4 Krait or ARM 15 cores)

GPU cores are different because GPU workloads are automatically parallelizable, but then again, you only need as many GPU cores as it takes to drive average workloads at the given pixel density. It makes no sense to include enough GPU to render a game at 250 frames per second. Developers are most likely not going to spend time optimizing a game for a high end GPU like it was some kind of console in a fragmented market like Android.

Point is, one should look at these phones from a practical standpoint and ignore the spec sheets. Does it take good pictures? Does it feel fast? Does the screen look good? Does the battery last long? Does it feel good to hold and lightweight? Does it do cool stuff that makes you more productive, etc.

If you buy phones on spec alone you may end up with a POS that looks good on paper but is irritating to use.

Take the Galaxy S4, sure, on paper and benchmarks (some of which are cheats), it looks great. But how often are those peak rates hit? How much Android software really takes advantage of the full power of the device? How much battery life is sacrificed, or size?

You could say that the screen or memory capacity might be objectively better, but again, how much of a price in battery life are you paying for those displays?

Also, on customization, consider that Motorola is going to build and ship, to you, a phone in 4 days. Maybe you don't care about any of the color options, but you have to admit, being able to assemble and ship a phone to you with a 4-day turnaround is impressive and is a manufacturing capability that is sure to useful for other things in the future.

<comment><USER6> Who is complaining about the specs? I seriously doubt many people, even in these parts, buy phones based on the number of cores in the cpu or gpu alone.

The big problem I see with the Moto X is the price. A mid-range phone should not be 550 off-contract. I was seriously expecting a $299-349 price for this kind of device. Maybe we will see that with the Play edition? I doubt it though.

<comment><USER7> Basically every single comment on /r/android about this phone is about how the specs are not high enough to justify the price. It's kind of disappointing and amazing.

<comment><USER8> They are right though - spec for spec, this phone is priced much higher than phones with equivalent components. Whether or not that matters is yet to be determined, but we do know that in the past, Android handsets have dated fairly badly, so specs are something that have to be taken into consideration, even if the handset feels good now.

The high cost is a result of having it made in the USA, no doubt.

</comment></comment></comment></comment><comment><USER9> It's being reported that the bootloader is locked:

[http://www.droid-life.com/2013/08/01/moto-x-bootloader-is- lo...](http://www.droid-life.com/2013/08/01/moto-x-bootloader-is-locked/)

So that's that. I was waiting for this reveal before deciding on a new phone purchase, but that's not remotely acceptable for me. Looks like a GS4 Google Edition is in my future instead.

<comment><USER10> How bizarre that Google would push for and sell in their store unlocked versions of the Samsung and HTC phones, but not release the Moto phone unlocked to begin with. Like, why does their own phone need a Google Edition? Hilarious.

Maybe the companies aren't integrated enough for that, yet? You'd think Google would be more of a mind with its own company than with the competition, though!

<comment><USER11> A Google Edition will be released soon.

That this version is not available right at launch sucks, but it's not like they can just dictate to carriers whatever they want.

They probably had to make some concessions (like the AT&T exclusive on the designs) to get the phone in the front of every store. They obviously want to go mainstream with that device, and for that you need the cooperation of all the big carriers. (and thats probably not so easy considering that it took Apple years to get its iPhone sold by most carriers)

<comment><USER12> _> it's not like they can just dictate to carriers whatever they want._

Why not? Apple does. And because Apple has paved the way since 2007, it should be much easier for Googorola. All it has to do is make a phone that consumers want. That way the telcos won't be able to ignore it.

<comment><USER13> I get the impression that carriers are selling Android _because_ it provides an alternative to iOS that they can control.

<comment><USER14> Yes, but someone needs to convince them that they are making the stupid choice. My guess is that no one in Google or Motorola is that person.

<comment><USER9> Getting back to what I said way upthread: it seems like refusing to buy a launch product through a carrier and going for a saner choice from the Play Store might be a good way to convince them.

</comment></comment></comment></comment></comment></comment></comment><comment><USER15> I had low expectations based on the leaks and this thing is _still_ incredibly underwhelming even relative to my drastically reduced expectations.

Surprisingly meh across the board, even if the price were in Nexus 4 territory. At $200 on contract it is a sad and unfunny joke.

Between this and the fact that Google destroyed Navigation with Android Maps 7.0.2, I'm starting to doubt my next phone will be an Android device at all, which is an idea that would have been unfathomable to me a few months ago.

<comment><USER16> Is it $200 dollars on contract? I thought it was going to be in the range of $200 dollars _off_ contract.

</comment></comment><comment><USER17> Why "OK Google Now" instead of just "OK Google"? That seems like too much sub branding, which is something I usually associate with Microsoft (every Microsoft product is called Microsoft+SomethingElse).

They certainly want the prefix to all voice commands to be a low incidence sequence of phonemes for any language so that you don't get spurious activations and drain battery and/or accidentally execute a command, but I would think "OK Google" is a rare enough phrase that it would suffice.

A five syllable "wake up" command just seems excessive.

<comment><USER18> What's even stranger is that "OK Google" _is_ the hotword for the Chrome Voice search thing they recently launched at IO.

Retconning "Google Now" into a voice assistant is weird because at IO they were saying how they wanted Google itself be the assistant, by modelling it after the Star Trek computer.

Also what happens when the actual, predictive Google Now comes out for Chrome?

<comment><USER14> Betcha it's something inherent to the ability to process the phrase "Google." Probably a usability thing, and a subtle one at that.

</comment></comment></comment><comment><USER19> Is this a real product launch? This page is horribly broken for me:

[http://i.imgur.com/npxvDcQ.png](http://i.imgur.com/npxvDcQ.png)

There's a header element further down the page "Feminine mystique", not sure what that has to do with a phone.

And then near the bottom there's some cringeworthy copy:

"Never ever, ever, like never, miss a shot ... And you'll never miss those OMG-that-was-sick-did-you-see-that moments again either."

Like dude, that phone is so sick....what? Is it meant to be a caricature of US youth?

<comment><USER20> Same here. A whole lot of blank white space. Had to do a Ctrl-A to find out there was white text on a white background. Same on Chrome, Firefox and IE. I thought perhaps our work network was blocking a stylesheet or something.

</comment></comment><comment><USER21> The upside of this website is that it is immediately obvious that I am not the target market for this phone.

</comment><comment><USER22> Wow, for all the hype, this phone is incredibly mediocre.

</comment><comment><USER23> I'm curious if this page was even supposed to go live. There are _2_ references to 16 MB / 32 MB and also a "That's what she said" blurb.

Ouch.

<comment> jack-r-abbit The MB thing appears to be fixed. I don't see it. Just GB.

"TWSS" is still a pretty popular (but pretty over used) thing. So I don't really see the issue there.

<comment><USER24> Motorola is not a "hip" or "young" brand. IMHO they should try easing into a new self-image a little more slowly. This seems a bit Ballmer-esque ("GIVE IT UP FOR ME!" / the dance monkey boy video).

<comment> jack-r-abbit Really? I thought their whole "Hello, Moto" campaign was along these lines. Not sure how "hip" or "young" it was... or this one for that matter. But I know lots of "unhip, unyoung" people that still drop a TWSS almost daily.

</comment></comment></comment></comment><comment><USER25> I wonder why it says Android 4.2.2 instead of Android 4.3

<comment><USER13> Didn't Google say they're operating Moto as a walled-off separate company so that it would have no advantage over other phone vendors?

</comment></comment><comment><USER26> Can it swap batteries? I plan to continue sticking with Samsung Galaxy (3/4) for this reason alone. The UX benefit of never having to plug the phone into charge and just quickly swapping batteries when it dies (or on the road) is amazing.

<comment><USER24> How do you charge the SG3/4 spare battery ?

<comment><USER26> I've got one of these chargers:

[http://www.amazon.com/Samsung-Battery-Charger-2100mAh- Includ...](http://www.amazon.com/Samsung-Battery-Charger-2100mAh- Included/dp/B0089VO7QU/)

\+ bought an extra battery (for a total of 3 batteries for ~$30).

<comment><USER24> that looks pretty sweet; I was just complaining the other day about the lack of a robust accessories market for non-iOS devices, because a given retail store can devote three feet of shelf space to iOS cases/chargers/whatever and cover ~30% of people who have a mobile device, whereas if they have three feet of android accessories, it probably covers much less of the market.

(though people who have samsung devices, given the market penetration that samsung has, are probably in better shape than others in this respect)

</comment></comment></comment></comment><comment><USER27> Apparently one of the scripts isn't loading so the images (which are referenced only through data-stretch attribute)

[http://demandware.edgesuite.net/aahb_prd/on/demandware.stati...](http://demandware.edgesuite.net/aahb_prd/on/demandware.static/Sites- Motorola_US-Site/Sites-Motorola_US-Library/en_US/v1375382790154/meet- moto-x/hero-moto-x-01.jpg)

to

hero-moto-x-08.jpg

EDIT: looks like they are using this jquery plugin [https://github.com/danmillar/jquery- anystretch](https://github.com/danmillar/jquery-anystretch)

</comment><comment><USER28> Oddly, (or not?) the images were blocked by AdBlock, leaving me really confused.

\-----

Very similar specs to my current

        http://en.wikipedia.org/wiki/Galaxy_Nexus

minor improvements in battery, and camera

<comment><USER29> Yea, the only image (even without adblock) that loaded was the motorola logo at the top.

</comment></comment><comment><USER30> [http://www.wired.com/gadgetlab/2013/08/inside-story-of- moto-...](http://www.wired.com/gadgetlab/2013/08/inside-story-of-moto-x/)

</comment><comment><USER31> Pretty sad. Guy Kawasaki had everyone super excited about building their own phone and we end up with just color and capacity choices. Plenty of phones with the later, not to mention SD card slots which are far more capable, and nearly everyone can already choose their color just by tossing a case on it. We even have companies selling custom 3D printed color cases with whatever you want on them in far more detail than this allows.

</comment><comment><USER32> _Motorola X8 Mobile Computing System_

Wow, please no. Google, just relieve them from their pain already.

<comment><USER33> Hey wait a second...I am quite intrigued by that "always on" speech core and that NLP core. Google has some great speech recognition tech(possibly the best). This is one area where they can really leave the rest of the pack behind, looking like cave men.

<comment><USER34> Yes, this looks like a great little device but for the part about convincing me to buy it.

</comment></comment></comment><comment><USER35> Does anyone see a full spec list? What sensors does it have? The page linked seems to only list some features.

Edit: "People are skydiving out of space ships." [Citation needed]! What ship has gone to space and also let someone skydive?!

<comment><USER36> [http://www.redbullstratos.com](http://www.redbullstratos.com)

Old news, I know. :P

<comment><USER35> Hm. I am disappointed Google refers to those helium balloons as "space ships". They're atmospheric balloons, not space ships, and there's a really big difference. Okay, I'll calm down.

Back on topic, I'm still looking for the specs...

</comment></comment></comment><comment><USER37> Wow... terrible taste with the "Feminine Mystique" reference.

</comment><comment><USER36> _Storage 16 GB standard, 32 GB version available online. 2 years 50GB storage free on Google Drive_

Wait, so you get more free cloud storage than what the phone actually supports? Interesting.

<comment><USER38> I may be wrong, but I was under the impression that the Google Drive mobile app didn't store anything locally.

<comment><USER9> It caches locally, but it's not like dropbox and doesn't simply mirror your online data.

</comment></comment></comment><comment><USER39> 16 or 32 MB - I'm thinking this is an error.

[http://imgur.com/dKRihDu](http://imgur.com/dKRihDu)

</comment><comment><USER40> Buy a three year old phone, such as the HTC Desire with a 32GB SD card and you will have more storage than the new Moto X, even twice as much as the 16GB version.

</comment><comment><USER41> I'm sorta disappointed.

</comment><comment><USER42> Motorola is still alive?

<comment><USER43> Bought by Google.

</comment></comment><comment><USER44> People were mostly anticipating a crazy good battery and an unprecedented low on-contract price. Neither happened - time to move on.

<comment><USER45> Crazy good battery may yet be in there ... depending on your definition of "crazy".

<comment><USER44> I often get 24 hours on my iPhone 4S (with a few things turned off). And that's what Moto-X is promising. So I don't define that as "crazy good".</comment></comment></comment>


The Bottom of the Pay Scale: Wages for H-1B Computer Programmers (2005) - <AUTHOR> http://cis.org/PayScale-H1BWages <comment><USER2> This data is from 2005! A lot has changed since.

I can't quickly google the date it changed (before of after 2005?) but during the first bubble of 1999-2001, H1B holders were beholden to their employers as they were not allowed to look for another position or switch companies. The only official choice was to leave the country. This made employees virtual slaves to their employers (I was one of them) and was a great way to ensure artificially depressed wages (no competition => no risk of them leaving => so no reason to pay them a competitive wage).

I suspect, no data here, that this situation has changed a little. H1B wages may still be on the lower end of the spectrum, but that would be mostly driven by the (IMHO absolutely crazy) development of 60%+ of H1B visas going to body shops. This should change. Quotas for the Tatas. Give lone wolf applicants a chance again to come to the US and make this a better place.

PS One thing many critics of the H1B program forget: H1B holders pay into the social security system, but unless they reach the required 40 points, they have no right to collect. The only way reach 40 points is to work here 10 years (4 points per year) but the max H1B duration overall is 6. Unless they get a greencard, through marriage or company sponsorship, they only add to the coffers without the chance of collecting.

<comment><USER3> You can count US social security contributions towards the requirements in other countries (and vice versa) if they're covered by one of the treaties: [https://www.ssa.gov/international/agreements_overview.html](https://www.ssa.gov/international/agreements_overview.html) .

It's a short list of countries, though, and doesn't cover the top H-1B senders

</comment></comment><comment><USER4> Here's an idea: auction off H1-B spots based on salary each month. And require the employers to pay that wage annually for at least 4 years. Would keep the H1-Bs for the most valuable candidates, and prevent its abuse as just a way to import cheap labor.

A special pool for startups would be nice too, with less costs/requirements.

I'd personally be in favor of getting rid of the cap entirely or increasing it several times at least, but these might be more realistic reform ideas.

<comment><USER5> I'd also make the visa attach to the person, not the company. (Ie, the person can change jobs, taking the visa with them, so long as they keep the auction- winning salary level or higher.)

As for:

> A special pool for startups would be nice too, with less costs/requirements.

...why?

<comment><USER6> Yeah why should startups get to avoid paying market prices. If you want to subsidize starups do it directly, don't assist then in depressing wages.

</comment></comment></comment><comment><USER7> > the program is vital to U.S. competitiveness because it allows the world's > "best and brightest" to come to America and helps sustain U.S. leadership

If it is truly the "best and brightest", then why are they paid so low?

<comment><USER8> Because there is no risk of them leaving if they are tied to the company. That's a huge blow to supply, which depresses wages.

</comment></comment><comment><USER9> >Wages for H-1B workers in computer programming occupations are overwhelmingly concentrated at the bottom of the U.S. pay scale. Wages on LCAs for 85 percent of H-1B workers were for less than the median U.S. wage in the same occupations and state.

>Applications for 47 percent of H-1B computer programming workers were for wages below even the prevailing wage claimed by their employers.

That is pretty damning evidence. The program is clearly not being used for its intended purposes. When somewhere between 47 and 85% of H-1Bs are being significantly underpaid compared to their peers, the program is not being used to being over workers with "specialized knowledge" as they claim--but to drive down wages. It makes sense though, when you look at the biggest H-1B recipients: [http://www.myvisajobs.com/Reports/2015-H1B-Visa- Sponsor.aspx](http://www.myvisajobs.com/Reports/2015-H1B-Visa-Sponsor.aspx) It's all low quality outsourcing shops like Infosys, TCS, Wipro, HCL, and Cognizant.

Make the H-1B 'lottery' into an auction. Instead of accepting 65,000 H-1Bs at random--accept the 65,000 H-1Bs with the highest wages. That way we are getting the immigrants with the highest valued skills and stopping companies like Infosys, TCS, Wipro, HCL, and Cognizant that game the immigration system by applying for the cheapest H-1Bs possible.

</comment><comment><USER6> The only real way to prevent this is to raise the price. Either through auctions, increased fees, or increased minimum salary.

If you can't find someone at the prevailing wage, you have to offer more. That's how the prevailing wage increases. Increasing the supply of workers willing to work for the current prevailing wage depresses wage growth--there's no way around it.

<comment><USER10> This is not evidence that H1B make less for similar skills/experience. Just a big average.

Fees and paperwork is already fairly high, so I don't think companies hire H1B to cut costs.

<comment><USER6> If that is the case, then it means we are hiring H-1B workers who are less skilled on average, than the average US worker.

If H-1Bs weren't available, companies would be forced to keep raising the offered salary when they couldn't fill a position. Virtually any position can be filled given a high enough salary. Therefore if companies are choosing to hire H-1Bs instead of raising the salary to the level necessary to fill positions with US workers, then it is because it is cheaper to pay the H-1B costs.

</comment></comment></comment><comment><USER11> This article is fairly typical of ones critical of the H1B program: it looks at average programmer wages instead of controlling for experience or skills. As we all know, wages for programmers vary widely.

<comment><USER6> So you're saying that if we control for skill and experience H-1B programmers don't make less, but their overall average wage is less.

That means that we are hiring H-1B workers who are less skilled than the average US worker. How is that any better?

<comment><USER12> How is the parent saying that? I'm interpreting this as given two identical employees an h1b would be paid less.

<comment><USER6> >I'm interpreting this as given two identical employees an h1b would be paid less.

That is what the study implies. The parent says, no this is not the case because they didn't control skills and experience, so some other factor must be causing the observation that H-1B workers are paid less.

In that case the only other option to explain the results is that the average H-1B worker is less skilled or less experienced.

</comment></comment></comment></comment><comment><USER13> 2005 should be in the title

<comment><USER14> Yes.</comment></comment>


Microsoft Java - <AUTHOR> http://virtuallyfun.superglobalmegacorp.com/?p=1789

<comment><USER2> Yes Microsoft made a JAVA compiler and runtime, NO it is not a new product, as a matter of fact Microsoft cannot redistribute it at all.

But back in the day it was a very exciting thing to have JVM's from SUN, Microsoft and IBM... Its kind of funny how nobody thinks twice about Solaris containing Java, OS/2, and how Microsoft got pushed out of the market for trying to co-opt Java.

<comment><USER3> Right you had to be very careful when writing an app in Visual J++ as it always ended up using Microsoft UI libraries only available on the Microsoft JVM.</comment></comment>


Show HN: Skilleo – Prove and learn coding skills - <AUTHOR> https://skilleo.me/

<comment><AUTHOR> Hi guys,

The reason I showed you Skilleo is to gather your feedback about it.

We want to make sure that you understand what is Skilleo and what allows you to do, once you visit it at the first time.

In case you wish to discover more inside, feel free to sign up.

Any feedback about it, even if you are not from a IT sector is welcome.

Thanks!

Cheers Joao</comment>


Global Azure network infrastructure issues - <AUTHOR> https://azure.microsoft.com/en-us/status/?y=2019 <comment><AUTHOR>
       Network Connectivity

       Engineers are currently investigating DNS resolution
       issues affecting network connectivity to Azure services.
       More information will be provided as it becomes available.

</comment><comment><USER2> And here I am, fighting for an hour with sudden failures to sign-in to OneDrive.</comment>


Latency is Everywhere and it Costs You Sales - How to Crush it - <AUTHOR> http://highscalability.com/latency-everywhere-and-it-costs-you-sales-how-crush-it <comment><USER2> Some of these tips are really good (using a CDN, caching on basically every layer, using YSlow), but does the author really believe using FPGAs and ASICs for websites is really practical? I've yet to see one real-world report of people using FPGAs to speed up sites. Hell, I haven't even seen any academic proof of concepts focusing on the merits of FPGAs in the web environment.

That's not to say that FPGA's won't be useful (they could potentially be helpful for real-time ranking and the like), it just seems out of character to mention something like that on a website scalability site. Grain of salt, and all that.

<comment><USER3> FPGAs are impractical. They are designed for integration and custom design rather than performance. Any data processing tasks are probably not worth it. Intel i7 series CPUs are probably a better investment as they have native text-processing instructions!

<comment><USER4> I just found a benchmark on Intel's site that shows the effect of enabling the text processing instructions in SSE4.2. They claim a 25% speedup for XML parsing and 37% for XML validating.

</comment></comment></comment><comment><USER5> I think this quote should have been a headline as opposed to an easily missable list item

'80-90% of the end-user response time is spent on the frontend, so it makes sense to concentrate efforts there before heroically rewriting the backend.'

<comment><USER6> What is done in that 80-90%, and how do you optimize it?

<comment><USER7> Watch the YSlow guys and be enlightened. Everything they produce about the subject (and I don't just mean the plugin) is solid gold. They are easily the best "Follow these simple directions and you will make money" technical material I've ever seen.

video of talk: <http://www.youtube.com/watch?v=BTHvs3V8DBA>

slides of another: [http://www.slideshare.net/stoyan/high-performance-web- pages-...](http://www.slideshare.net/stoyan/high-performance-web-pages-20-new- best-practices)

<comment><USER5> sorry way away, yeh the yslow stuff is really good, the new google tool is also handy although not particularly different.

<http://developer.yahoo.com/yui/theater/> \- also has a series of good website performance videos

</comment></comment></comment></comment><comment><USER8> A bit off topic, but could someone recommend any good articles or case studies highlighting the importance of site design and the potential affect on sales of nuanced site changes (ie: I recall reading an article about how a small change to a checkout process increased sales x%, but can't find that article).

I am trying to put together some reading material for a non-technical person in my startup who is unconcerned that our web design company is botching things.

(Even if you don't have a specific link, if you remember reading something and can remember the company name or an googleable information, it would be much appreciated).

<comment><USER7> <http://www.youtube.com/watch?v=erdEZvOq6wo> (Several examples where a single call to action was changed trivially, resulting in millions.)

[http://www.bingocardcreator.com/articles/developing- shopping...](http://www.bingocardcreator.com/articles/developing-shopping- cart.htm) (Rather less impressive ;) )

[http://blog.pokercopilot.com/2008/10/do-big-shiny- download-b...](http://blog.pokercopilot.com/2008/10/do-big-shiny-download- buttons-work.html) (Answer: yes.)

<comment><USER9> OT: Your article was damn good. Have you written any others (going up to /articles didn't work)?

<comment><USER7> Most of my articles are on my blog rather than my business site -- I only put them there when I need to use Rails to spit something out for the article.

The blog is at <http://www.kalzumeus.com> .

</comment></comment></comment></comment><comment><USER10> "Latency is physics, bandwidth is money."</comment>


CloudFlare.com Scheduled Maintenance: Tuesday, March 5, 2013 at 6am UTC - <AUTHOR> https://support.cloudflare.com/entries/23270916-CloudFlare-com-Scheduled-Maintenance-Tuesday-March-5-2013-at-6am-UTC

<comment><AUTHOR> Posted this in case people go to www.cloudflare.com at that time and are concerned that it might be a repeat of the downtime we had. It's not.</comment>


The Second Edition of "Refactoring" - <AUTHOR> https://martinfowler.com/articles/refactoring-2nd-ed.html <comment><USER2> Compared to the first edition of the book the second edition has the same functionality but is much better organized, which will make future editions much easier to develop.

<comment><USER3> Would you say the book has been refactored? Nah, just kidding, the author would probably call it restructured.

<comment><USER4> That's the joke.

</comment></comment></comment><comment><USER5> No other book improved my coding style as much as the first edition of Refactoring. On a superficial level, it teaches you how to "clean up" code, according to various patterns. But what it really does is give you a feeling for why the code should be improved in the first place. Highly recommended.

<comment><USER6> Once one adopts the refactoring mindset, its lessons and approaches can also infuse new code aka "prefactoring". :) Ken Pugh wrote a 2005 book called " Prefactoring: Extreme Abstraction - Extreme Separation - Extreme Reliability 1st Edition", which won a 2006 Dr. Dobbs' Jolt award.

[http://www.drdobbs.com/joltawards/2006-jolt- awards/187900423...](http://www.drdobbs.com/joltawards/2006-jolt- awards/187900423?pgno=3)

<comment><USER7> Did you also read "Refactoring to Patterns"? If so, could you compare that with Prefactoring ?

[https://industriallogic.com/xp/refactoring/](https://industriallogic.com/xp/refactoring/)

<comment><USER6> Sorry. I haven't read that book. :)

</comment></comment></comment></comment><comment><USER8> I think almost every programmer would benefit from reading "Refactoring". It sharpened my skills quite a bit, and I was already experienced before encountering the book.

The book was an easy read and was an efficient use of my time. I expect that rewrite in Javascript will further improve the information density.

<comment><USER9> I bought the book ages ago and remember not really finding anything of value in it. I don't mean to sound like someone from /r/iamverysmart but I recall thinking I would benefit in the way I did from the design patterns book: by giving me terminology for things I already did. But as far as I remember, the names were really obvious ("rename parameter", "extract method", etc.) and the instructions equally so. Can you give an example of something you learned from it?

<comment><USER10> I remember having exactly the same experience, including the anticipation that I would benefit from it the way I would from Design Patterns. For most of the refactorings in the book, a bullet point in a list would've seemed a bit excessive, never mind a step-by-step sequence of instructions. In the end I literally threw the book away – the only technical book I've ever done that to.

I distinctly remember one of the things in the book, which in retrospect isn't even really a refactoring, called something like "null object". The idea was that if you were going to return null from a function (e.g. get student by ID but that ID doesn't exist) then you could instead return a concrete singleton object that represented null. That way, if you forgot to check for it then at least your program wouldn't crash. Now, the merits of this idea are debatable and I don't think I've ever used it in the years since. But I strongly remember thinking at the time that it was the only idea in the book that wasn't totally obvious.

There was a good chapter early on about testing, which I think was my first exposure to that idea. It was a bit brief but that's not a surprise given it was a bit of a digression from the main topic. A whole book on that might've been quite a bit more interesting.

<comment><USER11> I use this pattern fairly regularly in a variety of ways. Here's a quick piece of example code that might help explain this a bit better. I'm writing this example in C#, but I usually work in other languages (Java / ruby / Python / JS),

before:

      public Student GetStudentById(int id)
      {
        var record = db.findStudentById(id)
        if (record == null) return null;
        return new Student(record.id, record.name, ...);
      }

Then in say a student record controller class:

      public View Get(int id)
      {
        var student = getStudentById(id);
        if (student == null) return View("NotFound");
        return View("Display", student);
      }

After:

      [ContractAnnotation("=> notnull")]
      public StudentSearchResult GetStudentById(int id)
      {
        var record = db.findStudentById(id);
        if (record == null) return StudentSearchRsult.NotFound;
        return new StudentSearchResult(record.id, record.name, ...);
      }

Then:

      public View Get(int id)
      {
        var student = getStudentById(id);
        return new View(student.ViewName, student); // look no null check becase student.ViewName is always valid here
      }

Note: of course this is entirely simplified for the purposes of example. Perhaps your real world example doesn't return null from the db, but a RecordSet with either 0 or 1 elements. Perhaps your db uses exceptions that you translate into results like this.

The cool thing there is that you get tool support (from e.g. ReSharper) telling your that this is entirely safe to do without a null check and tool support when it's not.

<comment><USER12> But then the 'Student' object does not represent a student but represent the result of a search which may or may not be a student, and this result decides its own view. Effectively the model is coupled to a specific view, which seems wrong to me. I would much prefer to have the search return an Option<Student> and then have the controller select the view based on this option. This also makes it explicit that the search may nor return a result, which is not really explicit if it always returns a Student instance.

<comment><USER11> Note the explicit change to StudentSearchResult over student there to make your last comment kind of a yes, I agree and that was the intent...

There are many ways that this can be implemented that avoid an if result != null / == no value, often a map suffices.

</comment></comment></comment></comment></comment></comment><comment><USER13> I've read and enjoyed quite a few of Fowler's articles. The things I've taken from his writings have been concretely valuable so far too. I'm not experienced enough though to evaluate how his ideas stand up in big or complicated projects.

Can anybody comment?

<comment><USER14> I can't comment on other articles, but I would be careful with some suggestions about mocking everything in automated tests. I've seen a couple of totally botched projects because of that approach.

<comment><USER13> How did the mocks do the damage? Lack of integration tests, wasted time, or something else?

<comment><USER15> It results in tautological tests.

<comment><USER16> Not really. I mean, you're still testing that the compiler works and that the memory works. ;)

</comment></comment></comment></comment></comment><comment><USER17> For most people, I think his online catalog of refactorings and blog articles are sufficient. Though I think the first edition is a good book, I wouldn't need it if I didn't do research on refactoring tools.

<comment><USER18> Did not know there was a online library of refactorings. Here's the link [https://refactoring.com/catalog/](https://refactoring.com/catalog/) if anyone's interested.

<comment><USER19> What's the target demographic for something like this? It seems like the trivial part of refactoring.

I've seen a similar, entire book dedicated to database refactoring that had roughly the same pattern. Chapters named akin to "The Change Table Name Refactor" felt kind of bizarre, when what I was hoping would be contained was advice about refactoring large databases in practice (moving data to new service boundaries, etc). Practical advice on building systems to move data and such seems to be just missing

<comment><USER20> I read the first edition when I was nearly 2 years into my professional career. I understood the basic 'what' and 'how' of software development.

Refactoring helped me start to understand the 'why' and 'when'. Why is design A better than design B? When is it time to tidy up this code? Which choice will be easier to change later? That kind of thing.

</comment></comment></comment></comment><comment><USER21> Is anyone aware of a birds-eye catalog of common code abstractions?

e.g. linked list, hashes, lookup table, classes, counters, iterators, etc

(Not referring to books such as TAOCP which cover a few topics in-depth)

<comment><USER22> Sounds like you want [https://en.m.wikipedia.org/wiki/Introduction_to_Algorithms](https://en.m.wikipedia.org/wiki/Introduction_to_Algorithms) maybe?

<comment><USER21> Well, I can probably mine 10 tops books and come up with a good list of 100 abstractions. But i am sure someone has done a much better job than me on this..

</comment></comment></comment><comment><USER23> > When I choose a language for examples in my writing, I think primarily of > the reader. I picked Java because I felt the most people would be able to > understand the code examples if they were written in Java. That was the case > in 1997, but how about in 2017? [...] Such a language needed to be widely > popular, among the top half a dozen in language popularity surveys. It > really helps to have a C-based syntax, since most programmers would > recognize the basic code structure. Given that, two stood out. One was Java, > still widely used and easy to understand. But I went for the alternative: > __JavaScript__. [...] But the compelling reason for choosing it over Java is > that isn't wholly centered on classes. There are top-level functions, and > use of first-class functions is common. This makes it much easier to show > refactoring out of the context of classes.

This is very interesting choice of language. I wonder whether typescript could have been a candidate as well. Although not as popular as JS, I believe most of JS community has migrated to typescript (due to obvious benefits) and it is more closer to a C-based language.

<comment><USER24> > I believe most of JS community has migrated to typescript

You think the majority of JS developers have switched over to TypeScript?

<comment><USER23> _has_ may be incorrect but I do feel the switch is happening [0]. Angular which is the most popular client side JS framework is using Typescript. React is also moving in the same direction with typescript-react-starter and tsx support.

[0] [https://2018.stateofjs.com/javascript- flavors/overview/](https://2018.stateofjs.com/javascript-flavors/overview/)

<comment><USER25> In my (part of the) JS world Angular is dying and React has long since won.

<comment><USER26> I agree, I don't know any front end devs who would choose Angular for a new project. The current choice seems to be between React and Vue.

</comment></comment></comment></comment></comment><comment><USER27> I am a huge fan of this book. The Pragmatic Programmer and this book are the two that I recommend most.

When I first read Refactoring, IntelliJ wasn't released yet and refactorings still needed to be done by hand. Automated refactorings are so incredibly useful when it comes to improving code quality over time that I don't know what it was we did without them.

</comment><comment><USER28> Refactoring with and without types feels so different. I'm surprised the book so lightly made the switch.

<comment><USER29> Is it really? Types just help formalize (for you and the compiler) what the code actually says.

Types or not, the refactored code itself is still refactored.

<comment><USER25> In a typed language, an IDE can make _breathtakingly_ large refactorings that are 100% correct.

<comment><USER29> That's obviously true, but you seem to be conflating refactored code with _tooling support_ for refactoring.

Done by a tool or not, the refactoring in principle remains the same. The tool merely automates the transformations which defines the refactoring.

And in that sense types isn't really essential to refactoring at all.

<comment><USER26> Types make it much, much easier to write useful refactoring tools, and to verify that the tools did the right thing.

</comment></comment></comment></comment></comment><comment><USER15> I thought this new book would be the third edition.

[https://www.amazon.com/Refactoring-Ruby-Addison-Wesley- Profe...](https://www.amazon.com/Refactoring-Ruby-Addison-Wesley- Professional/dp/0321984137)

</comment><comment><USER30> Oh man thanks for posting this. Did not expect to see this come. I have both of them ("Refactoring" and then the "ruby edition") - it's a part of my vocabulary.

Also thanks to other posters who describe their view of the updates of content.

</comment><comment><USER31> Does anyone know if Martin Fowler still doing any Ruby? Or has he given up on it?</comment>


Trump Is Right About the Coronavirus. The WHO Is Wrong,' Says Israeli Expert - <AUTHOR> https://www.haaretz.com/israel-news/.premium.MAGAZINE-israeli-expert-trump-is-right-about-covid-19-who-is-wrong-1.8691031 <comment><USER2> This is Israel's "response team" to the pandemic. good luck with taking advice from the only shtetl in the Middle East.

[https://i.postimg.cc/T1XwRy2f/PNG- image.png](https://i.postimg.cc/T1XwRy2f/PNG-image.png)</comment>