Is it worth starting "from scratch" in web dev? Straight Python, or Django? - <AUTHOR> I've dabbled (and even made a living) in web dev for several years.
I started with Dreamweaver, and then gradually learned how to write HTML and CSS from scratch. I then used Dreamweaver to patch together PHP/MySQL for database-driven sites, until I switched to ExpressionEngine because it met my needs for a flexible back-end database to run my sites from.
I've always been strong in design, and so regardless of how patchy my back-end has been, the results have spoken for themselves and achieved my goals. Good writing and design have compensated for a shitty back end (though in time, my HTMl and CSS have become acceptable in quality).
But whenever I talk to someone who knows how to program, it seems like slicing butter for them to do what's required for a web app. Like they can spend a few hours and have something that works. And I've always been strong in math and logic, so I think programming is not a bad fit for the way my brain works.
So here's my situation. I'm getting back into web dev after a couple years of management/product dev in a startup, and I want to build something that kicks ass -- but to start I just want to build a new blog for myself.
I'm asking myself whether I should (1) keep using ExpressionEngine or something similar, in order to get the fastest results possible (I'm not actually too interested in this option anymore); (2) use Python with Django, to benefit from what a framework offers; or (3) use Python to code something from scratch, with the aim to understand what I am doing at a more fundamental level.
I'm looking to strike the right balance between getting shit done fast, that just works, versus doing things in a more sustainable way (ie. actually understanding how to program and benefiting from the resulting flexibility and power).
Anyone have comments on this trade-off / what kind of learning curve to expect as I debate whether or not to use a framework like Django for my first real Python app?
I read through a couple books on Python this spring and liked it (but am by no means proficient yet), so that's my language of choice. The question is simply how deep to go. I want to spend the right amount of time learning, without heaping an unattainable amount of work on my shoulders so that I can never get anywhere.
(If I continue with python I'll probably also continue with the book "Software Engineering for Internet Applications" which I also started this spring.)
Also feel free to let me know if I'm even asking the right questions. I just hate the idea of wasting months of my time on the wrong path. <comment><USER2> I'm a big fan of the "build a framework that you'll never use" philosophy. That isn't a joke. You aren't going to be able to match the quality of the thousands upon thousands of hours that have gone into something like Django, but making a framework will make you a better framework user. It makes you understand the flow, what building hooks is like, etc. It also means that you'll be more ready to dive into some of the framework code than someone who just uses a framework.

But that's just my opinion from seeing so many people not understand how frameworks work and try to use them.

<comment><USER3> I agree, but I also think using a framework is just as good in the long run...

You basically have hundreds if not thousands of people working on your project with you, fixing bugs, making it faster, more stable, and adding under the hood features. Something you would need to do yourself if you created your own framework.

</comment></comment><comment><USER4> Were I you, I would start with Django so that I would have an application up and running faster. And then, since Django is open source, start poking around at the internals to see how it works.

I would wait to roll your own web framework until you've had a little more programming time under your belt. Regardless of whether you may be a quick study or not, rolling your own framework is going to have all sorts of strange issues come up, and sometimes it's nice to be able to ask around on a forum, mailing list or IRC for help. Django has one of the largest (if not _the_ largest) Python community; at least as far as currently common frameworks go.

Django is quite nice as a framework as well, it may turn out that it's all you ever need. There are quite a few people out there who use it for every project they work on, with great results.

[Edit: Changed "webapp" to read "web framework"]

<comment><USER5> Offtopic. I'm curious: Why is the comment by ltbarcly dead? Doesn't seem particularily offensive.

<comment><USER6> I have the [dead] option on and I see often dead comments like this, so I was wondering too. Are some accounts banned or something?

</comment></comment></comment><comment><AUTHOR> After reading these comments I've realized that trying to "go it alone" in Python is biting off too much at once. It will be too long before I can finish anything usable, and I'll lose motivation.

So, I've decided to aim for "FAST" and use Django to get a working website out the door as soon as possible, and study programming at greater depth on the side (without expecting that effort to pay for itself immediately).

I started going through the book "Practical Django Projects" this evening and it feels right at my level.

Thanks for all your perspectives! I appreciate it a lot.

<comment><USER7> Building stuff is really the only way I've ever learned anything about programming. Sure, reading a good book on the topic is helpful, but until you've built a few things using it, you don't understand the language|framework|technique.

</comment></comment><comment><USER8> One thing you should be aware of is that Django's philosophy is to cleanly separate between what designers do and what developers do. That's why you don't (by default) get to use Python in your view templates as you would in php/jsp/rails. Instead Django provides yet another mini language just for views, including control sturctures, expressions, etc.

If you are a designer and developer in one person, Django might not be the best match for you, unless you love something else about it (there are many things to love about Django)

I found that I don't use most of what web frameworks provide. But you could argue that just using Django's nice regex based request dispatching is worth it, even if you decide not to use their template engine at all (it's replaceable after all)

To sum it up, what is it that web frameworks do for you? It's basically request dispatching, forms processing (validation and stuff), view templates and ORM. If your applications handle a lot of form to database CRUD, using a framework is helpful. Otherwise you could just as well use naked mod_python because request dispatching is actually rather trivial and python already has a simple template engine built into the language.

</comment><comment><USER9> I usually whip up a dirt-simple "Django-inspired" WSGI microframework (regexp- based url dispatcher, RESTful views, jinja or genshi templates, decoupled optional request and response objects (no shared state between requests), signed-cookie-based sessions, etc.) based on what I need as I go.

Instead of using an ORM, I've discovered an amazingly flexible, efficient DSL for dealing with Postgres. It's called SQL. ;-)

I wrap my model objects around sql queries, so, externally, the objects have a nice ORMey OO interface, but internally I can do all sorts of wonderful Postgresql magic).

After the first time you do it, making a new microframework usually takes less than a day, depending on what else I have to get done. (The reason I reimplement is to prevent myself from adding useless features that I "might" need someday on some future project).

One of these days, I might release one, but strictly as a code-dump example, not as an ongoing project.

(Back on topic, my recommendation to the OP is to start with Django. It's beautifully designed, and has served me well even after I stopped needing its code).

</comment><comment><USER10> While I'm not a big fan of PHP in general, the fact that you feel/felt comfortable with ExpressionEngine could mean that a related PHP framework would be a good choice. CodeIgniter (<http://codeigniter.com>) is similar to what EE is built on, and EllisLab is going to have the next version of EE built directly on CI. It's a really slim framework that doesn't force much on you, so you would get acquainted with PHP in general as well.

Along with that, I think it is a good idea to play with a number of languages and frameworks. To me, the best test is building a simple application in them, a todo list or the like. Try things like Django, Rails, Merb, CodeIgniter, Cake, and others to see what feels most natural and fun to you.

Be sure to also think of what else matters to you about a language/framework. Check out communities, plugins and modules, and the documentation.

<comment><USER11> If you're comfortable with PHP, then use PHP. I'm currently using CodeIgniter as my PHP framework and jQuery as my javascript library. Don't have very many complaints right now.

<comment><USER12> python and ruby are much better languages than php. I highly recommend the use of one of those.

</comment></comment></comment><comment><USER13> I am not a professional developer, and am more akin to a hobbiest programmer/developer, so take this for what it is worth.

Like icey said, pick up Django and learn it - this will get you results far faster and of a higher quality then rolling you own straight out of the gate.

From your post, it sounds like you will be learning to program, learning python and possibly learning Django all at once - an ambitious goal to say the least. Combining the three - centered around Django I think will be the most practical approach for diving in - far easier than learning to program in python and tackling the particulars of designing a web app framework from the ground up. djangobook.com , despite its (over-come-able) errors, will give you a nice base to start from. "Practical Django Projects" is also getting some good reviews, but I have not had the chance to check this one out yet.

I think you will find most of Django relatively easy to learn - and what is not so easy, will highlight some of the tougher aspects of developing a web app framework so you know what to look closer at and beef up on in the case that you do roll your own in the future.

Also, like icey said, once you become versed in Django you can decide to dig around in its internals. This will give you the chance to see what is already optimally designed (no one should reinvent the wheel) and what you can stand reinvention or redesign.

</comment><comment><USER14> I write my CGI scripts in C -- but only after writing all the libraries I'm going to want.

There are merits to "understanding what you're doing at a more fundamental level" as you put it -- but that doesn't mean that you should waste time writing the same code many times. Understand it, write a library, and be done with it.

</comment><comment><USER15> I think that you might really struggle trying to pick up Django without really understanding programming or Python. That doesn't mean that you shouldn't try, I'm just suggesting that you might struggle. A lot of people approach web frameworks from scratch and think that they can learn it in a couple of weeks and be proficient at them. It takes a lot of time. I'm thinking a good 6 months before becoming proficient.

Sure you can cut and paste the code from the tutorials and have a simple blog application and running in a week, but you won't really have a clue as to what's going on inside the framework.

There are a lot of parts of Python that Django uses that can be a little overwhelming to a noob programmer. For instance, URL's are crafted by using Regular expressions. Regexes might take you a couple of weeks to get your head around if you've never used them before. Django also tends to pass dictionaries around as arguments, which can be confusing and overwhelming if you've never seen them before. Same thing with it's use of list comprehensions under the hood. The use of _args,_ kwargs or variable length arguments can be a bit confusing as well.

So, be patient with yourself. Django is certainly a great framework and well worth the time investment to learn. Python is also a great language, but again, these things take time to learn well.

</comment><comment><USER16> I believe this was said about django (and a few other frameworks) when you write a site with django you are writing it in django and not python. well, that was the gist of it anyway. I didn't like django myself, I found it fragile, and I don't want my app to break unless I start dropping tables, or deleting code. a insert into should not break my app.

<comment><USER17> What?

a) Django is a framework in Python. If you are writing a site in django, you are writing it in python. I don't understand what you mean about 'writing it in django'.

b) How is django 'fragile' and how does your app break when you insert?

</comment></comment><comment><USER18> If you're doing web development for money, then you should go with whatever is the most expedient solution that produces reasonably attractive results. The danger here of course is that in the long run what's expedient now may lead to problems down the road - such as when you hit a problem the pre-built solution can't handle, or if it causes you to do more work than you would if you only had a better understanding of the underlying technology.

With that said, if you're doing this to try and learn something, then you will be doing yourself a disservice if you don't at least try to roll your own version of everything you will want to do with the web. Even if you start out with your own stuff and decide to swap in freely available components (open source, etc.), at least then you'll understand the infrastructure you're working with at a level you would otherwise not.

</comment><comment><USER19> Any free on inexpensive Python and Django server hosting around for playing around?

<comment><USER20> Try Google AppEngine. It's free, very easy deployment, and allows Django (minus some things like database) or roll-your-own python against their web API.

<comment><AUTHOR> Thanks. I was actually reminded of Google App Engine after following wmorein's link to web.py, and then thought about using their webapp framework instead of Django.

</comment></comment></comment><comment><USER21> I had a similar situation a few months ago. My goals were to get something up and running relatively quickly but it was my first python web app and I wanted to make sure that I actually understood what was going on underneath the covers. I used web.py (<http://webpy.org/>). Overall I've been pretty happy with it -- it is small enough that looking at the code is actually meaningful to me (although there is definitely some strangeness in there from my perspective) but I also can mostly just write the app and not think about the framework.

<comment><USER22> I second webpy, especially for a project such as the one the OP is considering -- a small site where knowing what all the code does is at a premium.

</comment></comment><comment><USER23> I suggest looking at the "Worse Is Better"/"Right Thing" discussion, as it maps perfectly to your situation: <http://www.jwz.org/doc/worse-is- better.html>

Worse Is Better gives you fast results with tradeoffs that you already knew of, while Right Thing approaches will allow you to discover hidden problems as you attempt to write the ideal program. So you learn more when you start from scratch, and that is a worthy goal.

</comment><comment><USER24> disclaimers: I didn't read the rest of the thread, and i don't use Django (I've been coding C, perl, python and ruby for years, and now rails).

I think the path of least resistance is to learn python and Django well, put some apps up, find out wehre the dev environment on Linux/BSD or mac is strong (editors, test tools, git/SVN), (and maybe make some decent money!).

Then branch out, start digging in to problems that web app frameworks solve, and solutions. These solutions would be the ORM, templating system, admin interface (Django's is admired and frequently copied), debuggers, performance profilers, testing stack, Ajax libs.

Look at the SQL generated, the HTML and CSS, how easy it is to rotate/analyze logs, DNS (subdomains, permanent redirects, etc), monitor/restart the proxy and servers, caching at all levels (pages and fragments, db queries, fixed assets in the browser). Also look at the mechanisms to plug in functionality, e.g. authentication, file uploads, multiple db connections, etc. That should teach you a lot.

</comment><comment><USER25> Use django, not because it's easy to get into, but because later you can use the large number of django apps to get kickstarts into things like adding a forum, blog, etc.

</comment><comment><USER26> naa.. you are asking the right question.

but let me put it this way. isn't it time that we forget about frameworks, starting from scratch, a lot of code that does the same thing 90% and only 10% innovation? Maybe it is better stitching actual services and "plugging" in the actual difference.

The wheel itself never was invention. It was its use. I bet the time when technology will be obsolete is approaching. It is what we can achieve what matters, not whats in the box.

</comment><comment><USER27> Maybe you should start thinking in going to another field, where your knowledge is more required?

<comment><AUTHOR> Right now, if I want to build something more complicated than an online brochure, I need to sell my vision to a coder or investor before I even have a working prototype.

This really sucks. It means I have to over-sell an idea that I don't even know is good yet (because I haven't built it) and then I have to give up equity at the worst possible stage (before I have any traction).

I've got design and management experience under my belt and I'm pretty sure my brain is capable of enjoying playing with code, too. So I'm choosing this path to amplify what I'm capable of doing in life, and to follow my gut.

<comment><USER27> I just was telling you what in my experience worked best for me.

I worked in game development for many years... from my own studio. Very successful on that, but I started to get bored of that. I wanted to use my brain more. I was selling games for advertising so in a way it was like making online brochures, though they didn't work online (they were developed for trade shows mostly). So I started shifting fields, slowly changing my game dev skills and experience for other field skills and experience. I can say it worked for me in many ways, but it wasn't easy. However, I couldn't think of a better option than that. If game advertising isn't what makes me happy anymore, I shouldn't be working on that anymore. And probably that works for you too.

<comment><AUTHOR> Well -- you are right. I'm leaving a company that _began_ as an entrepreneurial venture for me, but then morphed into something where I was to wait _several_ years for my shares (~15%) to vest, during which time I'd basically be a professional manager, grinding the 9-5 without control of the business.

Sucked my heart right out from my rear end is what that did. So it is indeed time for me to find something that makes me more happy!

<comment><USER27> Good luck!!! You'll surely make it!</comment></comment></comment></comment></comment>


Important Changes to CrashPlan for Home Service - <AUTHOR> https://www.crashplan.com/en-us/consumer/nextsteps/ <comment><USER2> Haha. "Important Changes". That's like a draw bridge posting a sign - "Important Changes to this Bridge" and finding out that the bridge now only goes half way across the river.

</comment><comment><USER3> [https://news.ycombinator.com/item?id=15072866](https://news.ycombinator.com/item?id=15072866) has a longer explanation

</comment><comment><USER4> Wow, I've been a Crashplan Home Customer since 2011. What a bunch of jerks.</comment>


RethinkDB issue #1000 — Database tools should be indistinguishable from magic - <AUTHOR> https://github.com/rethinkdb/rethinkdb/issues/1000

<comment><USER2> I'd rather have tools that I understood. You know, when they break.</comment>


An Ending - <AUTHOR> http://georgerrmartin.com/notablog/2019/05/20/an-ending/ <comment><AUTHOR> Well, if nothing else, at least GRRM confirms that he still plans to complete the books.</comment>


Ask HN: Heroku Postgres vs. Amazon RDS Postgres - <AUTHOR>

I'm currently running a Heroku Rails app and our Postgres DB has grown to a data size of 50GB, and our DB cache hit rate is at 93%.  We're on the legacy Ronin ($200/month) plan (1.7GB) and probably need to upgrade but the next upgrade is the 7.5GB plan at ($750/plan).  But we're running this as a bootstrap, so we'd like to save some money.
I notice that Amazon RDS for Postgres is in beta and will likely be a lot cheaper.  But I'm wondering if anybody has any experience using Amazon RDS for Postgres instead of Heroku Postgres.
We've got a small team so we don't have any resources for DB management, and that's why we like Heroku.  I'm wondering if Amazon will also the same convenience and no-maintenance approach as Heroku, and if we'll be saving significant amount of money or not.
Thanks. <comment><USER2> I've used Postgres RDS and it was fine. One limitation though is that unlike MySQL RDS, you can't (yet?) configure it for streaming replication. You can tick a checkbox to run a "Multi-AZ" deployment with failover, which I assume uses streaming replication behind-the-scenes, but there is no way to access whatever slave instance AWS is running. So you can't use slave instances for horizontal scaling, only high availability. I haven't looked at Heroku Postgres in a while, so I don't remember whether they offer what AWS doesn't here. It doesn't sound like you're anywhere near the point of scaling to a read-only replica though.

<comment><AUTHOR> With Postgres RDS is there any extra maintenance required (vs Heroku Postgres)? Or any other limitations besides accessing slave instances?

</comment></comment><comment><USER3> Back when we first migrated to Postgres, Amazon had not come out with their offering for RDS yet so Heroku was the first place we looked. Unfortunately (at that time), there didn't seem to be a way to launch a Heroku PostgreSQL cluster inside of a VPC, so it was off the table for us. I haven't looked at it since but would be curious to know if that situation has changed, or if the nature of Heroku's infrastructure simply prevents it from being workable.</comment>


Uber's board wants Expedia CEO Dara Khosrowshahi to be its next CEO - <AUTHOR> https://www.recode.net/2017/8/27/16212552/uber-board-ceo-decision-staff <comment><USER2> CEOs often lead on partnerships and strategy. I wonder what connections in travel this new CEO is going to leverage and how that will affect the uber operations in the short term, and the ridesharing product itself in the long term.

airline points on uber? (these are surprisingly sticky with consumers)

uber exclusivity deals or packages at hotels?

I expect to see more bundles of things with uber involved.

<comment><USER3> They should start a credit card business. Rakuten did this to great effect in Japan. Use the credit card, get points you can use for Uber. Customer acquisition is as cheap as putting a signup form in the back of each car and incentivizing drivers to mention it.

<comment><USER4> An ubercoin and ICO would be more buzzword compliant.

<comment><USER5> We need an ICO jar. One Bitcoin in the jar everytime an ICO is mentioned in jest.

<comment><USER6> Given the current value of bitcoin, I think we'd need to put a satoshi in the jar (I'm personally not swimming in bitcoin)

</comment></comment></comment></comment></comment><comment><USER7> While Expedia's website is fast and works well (and I've used them a lot for finding cheap flights), their customer service is probably the worst that I've ever experienced.

Trying to do something like getting the return leg of a ticket changed, resulted in multiple dropped calls, talking to people with poor English skills (all their support is outsourced) and even getting told that all their computers crashed so they can't do anything. Then when I finally did get through to someone, I was quoted $2,500 to change the date of a $400 ticket.

A simple Google search of Expedia customer service complaints reveals that I'm not even close to being alone.

I suppose their CEO calculated that the savings from having dirt cheap customer service exceeds the losses they suffer from alienating customers with miserable support. That might be true, but I still don't think it's a good way to run a company. We'll see what it entails for Uber.

<comment><USER8> The hotel subreddit has hilarious tales about Expedia CSRs: [https://www.reddit.com/r/TalesFromTheFrontDesk/search?q=expe...](https://www.reddit.com/r/TalesFromTheFrontDesk/search?q=expedia&restrict_sr=on)

</comment></comment><comment><USER9> This is the guy who made a huge tactical mistake when Booking.com was challenging Expedia by choosing to stick to merchant model (i.e., buying inventory) as Booking went for the agency model (i.e., lead gen).

Expedia has moved to an agency model since but the damage was done. Booking managed to get far more inventory, capitalise on more search/PPC traffic and blow past Expedia.

Wonder if he's going to make a similar kind of mistake and misread the transportation market.

Props to a fellow originally Iranian though :-)

<comment><USER10> Pretty sure even my grandma knows where the transportation sector is headed: electric, autonomous, sharing, services based, etc ;)

I think this is more about $UBER IPO. Stabilize the ship, smooth relations with investors, and start shopping to underwriters. Expect to see road show by Q2 2018.

<comment><USER11> This is spot-on, in my opinion. All they need is someone who is demonstrably competent and experienced to stabilize the ship and steer it towards an IPO.

There's no need for the candidate to be a visionary or meddle drastically with something that's already working extraordinarily well. That part is largely done - the Uber machine is mature and chugging along.

A seasoned operator needs to come in to provide PR cover, put in some basic organizational guardrails and rebuild the executive ranks to get the company IPO ready. Hiring a CFO is probably top priority as well as getting PR back on track. Those two moves alone would suppress external distractions and start the IPO process by having someone working on it full-time (CFO).

Let's see if Dara can pull this off.

<comment><USER12> I think this is exactly how Uber will fade into irrelevance. Think about it: We're bringing in a money guy to "stabilize the ship."

When the opposite of "rock the boat" is in power, don't be surprised if you get an irrelevant cruise ship. They run out of money soon, and nothing will change that short of a mass layoff or raising their prices above taxis. Then what?

They needed that autonomous driving tech. And I don't see a money guy pulling that off.

Remember how Marissa Meyer turned out? People ended up saying "Well, nothing could've saved Yahoo." But you could've said the same thing about Apple at its nadir. Same with Uber.

Uber is a real opportunity. Kalanick is unpopular, but he got Uber to where it is. So how certain are you that it was a good idea to kick the founder in exchange for a money guy? Given those options, I'd bet on the unpopular founder every time.

<comment><USER13> > _Uber is a real opportunity. Kalanick is unpopular, but he got Uber to where > it is._

And Lyft got to where it is with no Kalanick. (... actually, does anyone know off the top of their heads, besides Lyft and maybe Uber employees, who founded Lyft and whether they're still in charge?)

The myth of the founder-hero who is the only person who can run a company usually has little evidence in its favor, but in this case it has explicit evidence _against_ it. Lyft as a service is basically indistinguishable from Uber in markets where it serves both, possibly slightly better. And if Lyft acquires Uber, the two services get to stop competing on price, buying them plenty of time to figure out the self-driving tech (which, I agree, they need), and the combined company will succeed easily, no Kalanick needed.

(Also, I think "unpopular" is a pretty low-information description of why Kalanick got forced out. It could mean anything from "people on the internet don't like them" to "regulators don't like them" to "investors don't like them" to "employees don't like them," each of which have very different impacts on the company, and comparing an unpopular founder in one sense to another company's unpopular founder in another sense may not be meaningful.)

<comment><USER14> I think you're overlooking a huge difference in your argument against "the myth of the founder-hero": Lyft benefited tremendously from Uber pushing into new markets / cities first. Uber and tk had a huge impact on making ride share legal, and Lyft never had to deal with that (or not nearly as much).

Also, how would Lyft ever buy Uber? Even if Uber and Lyft get 50/50 market share, which I think is impossible, you need to be way larger to buy out another company.

<comment><USER15> In the tech industry, the pioneers are usually the ones with arrows in their backs.

You are absolutely right that the TK/Uber combo going head-on against existing laws is what made ride hailing a reality for millions of consumers, but unless the pioneer has an air tight _go-to market strategy_ to create and maintain dominance of the market, historically, the odds tilt strongly in favor of the second mover, third mover, nth mover (i.e. fast followers) achieving market dominance.

Facebook, the market leader was launched in 2004, MySpace in 2003 and there was Friendster in 2002 founded by Jonathan Abrams.

Zuckerberg learnt _how not_ to run a social network from watching the mistakes of Friendster and MySpace before him.

</comment></comment></comment></comment></comment></comment></comment><comment><USER16> I wonder how much Uber will have to give him. He's already running a $22b company and was granted $90m in options less than two years ago. My guess: $500m minimum at a ~$30b valuation.

<comment><USER17> 1/60 of the company value? That is insane

<comment><USER18> That's pretty typical for a new CEO. 2-3%. In fact, that's a bit low.

<comment><USER19> This isn't a series B/C/D company. Expedia is losing a CEO and the new one isn't going to be paid 400m (2% of Expedia by market cap).

</comment></comment></comment></comment><comment><USER20> Based on his bio [0], Khosrowshahi seems like a more apt CEO pick for Airbnb instead of Uber. Thus, I think that someone with a more extensive experience in the transportation industry such as Kathryn Marinello (CEO of The Hertz Corporation) [1] or David Abney (CEO of UPS) [2] is more suitable for the job.

[0] [http://www.expediainc.com/brands/dara- khosrowshahi/](http://www.expediainc.com/brands/dara-khosrowshahi/)

[1] [http://ir.hertz.com/executive- officers?item=108](http://ir.hertz.com/executive-officers?item=108)

[2] [https://pressroom.ups.com/pressroom/ContentDetailsViewer.pag...](https://pressroom.ups.com/pressroom/ContentDetailsViewer.page?ConceptType=Biographies&id=1426319280274-279)

<comment><USER21> Those are massive fleet and supply chain owners. Uber is a booking platform that doesn't own a single vehicle or employ a single driver.

That said, I don't think same industry experience is that critical.

</comment></comment><comment><USER22> Seems like a pretty good fit. Khosrowshahi was brought in to take Expedia public and Expedia and Uber's business models are close-ish.

<comment><USER23> It seems unlikely that he was brought in to take Expedia public, since he joined 6 years after their IPO.

Expedia went public in 1999 [1], when Dara Khosrowshahi was working for an Expedia competitor: IAC. He didn't join Expedia until 2005, when IAC acquired Expedia [2].

Maybe I'm missing something?

[1]: [http://www.nasdaq.com/markets/ipos/company/expedia- inc-1567-...](http://www.nasdaq.com/markets/ipos/company/expedia- inc-1567-2927)

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

<comment><USER22> That's odd, crunchbase says their IPO was in July of 2005.[1] According to Expedia's website, IAC acquired Expedia in August of 2003[2]. It looks like between 2000 & 2005 Expedia/IAC had acquired a number of online travel companies. My thought is that when IAC purchased Expedia it was no longer being traded publicly. In 2005 IAC rolled in the additional travel companies and put Expedia back on the public markets. [1] [https://www.crunchbase.com/ipo/7451f106bd9bae69f9eb02a69f8c4...](https://www.crunchbase.com/ipo/7451f106bd9bae69f9eb02a69f8c4985) [2] [http://www.expediainc.com/about/history/](http://www.expediainc.com/about/history/)

</comment></comment></comment><comment><USER24> Wish him luck, but all the controversy and outrage are a huge distraction to the business.

<comment><USER25> I feel like most of the world outside sv is actually somewhat unaware.

<comment><USER26> It occasionally shows up in the local syndicated media outside of SV and major urban centers, however in my opinion you're correct, most of the US could hardly care less. Most people are properly too busy leading their own lives to obsess over the latest vapid drama coming out of a tech company.

Americans in general likely care as much about who is running Uber, as they do about who is running Expedia or Priceline. Which is to say, it simply does not matter to 99.9% of people and it never will.

<comment><USER27> And even if they are aware of the tech shenanigans at Uber, they will forgive and forget as long as they can get a subsidized ride with their local Uber drivers. People care more about their own bottom line than what is going on out in SV. In general, it simply does not affect their world.

</comment></comment></comment></comment><comment><AUTHOR> Looks like Recode has only had time to update the title to reflect the Expedia decision. The story was previously about how "Uber's board says it voted, but will not divulge its new CEO until employees know".

[https://twitter.com/karaswisher/status/901963504541810688](https://twitter.com/karaswisher/status/901963504541810688)

</comment><comment><USER28> This probably has something to do with their desire for IPO. However I don't even know how it will look like when Uber finally opens up their books. I'm only one data point but I get over half the invoices wrongly calculated by Uber since flat fare system started (down to the tax calculation), mostly in my favour, but still.

Again, I'm only one data point, but my usage of Expedia has exponentially fallen since the aforementioned CEO took over. This obviously not a decision to make Uber a better service. This is a bid to sell Uber to a bigger fool on the wall street.

I have no confidence in Travis-less Uber. The war with private car ownership is over. Private cars won.

<comment><USER29> Private cars won? I'm guessing you live in one of the US's urban sprawls? In the Netherlands, in London, in Brazil, ride sharing is taking over and competitors are enjoying the path cleared by Uber to take over with better service and fares.

</comment></comment><comment><USER2> Side note:

This new guy is an outspoken trump critic.

Meg is a republican, and ran as one for california governor

#deleteUber was started and accelerated partially by assumed associations between Uber and Trump

I wonder if the politics had any influence in the decision to pick him over meg.

<comment><USER30> I doubt it. Whitman was probably the most outspoken Republican _against_ Trump, called him a "demagogue", and stated publicly "I will vote for Hillary, I will talk to my Republican friends about helping her, and I will donate to her campaign and try to raise money for her."

Plus, given Uber's issues, being a woman had to be a big plus for Whitman.

<comment><USER31> > Plus, given Uber's issues, being a woman had to be a big plus for Whitman.

Seems to me that if she had been offered the job, she'd be set up for failure. I'm glad they went with the other one.

</comment></comment></comment><comment><USER32> Expedia? The #1 Dark Patterns? Wow, this should end well.

<comment><USER33> linnkedin is #1 for dark pattern

<comment><USER34> You've clearly never booked a flight with Ryanair ;-)

<comment><USER35> Can't say I agree. They upsell heavily, but it's not that confusing to navigate and avoid the extras.

<comment><USER36> Just don't try and change anything on the flight after booking. I had to cancel a flight and although Ryanair won't refund you the ticket price, they will refund the taxes. However interestingly their administration fee for the refund was exactly the same as the amount of taxes I was due to be refunded, so I got nothing.

</comment></comment></comment></comment></comment><comment><USER37> Based on his Twitter profile, he seems like a cool guy to run Uber. Good luck!

</comment><comment><USER38> From Wikipedia on the Expedia CEO:

>Ten years later, in 2015, Expedia awarded him $90 million worth of stock options as part of a long-term employment agreement, stating he would stay until 2020.

<comment><USER39> [https://en.wikipedia.org/wiki/Dara_Khosrowshahi](https://en.wikipedia.org/wiki/Dara_Khosrowshahi)

</comment></comment><comment><USER40> No one thinks Travis has a chance at gaining back control?

<comment><USER41> No, I don't think that can happen.

He's far too controversial. To say the company isn't profitable is understating things: it's a money fire. If you brought back Travis now, the VCs would walk away and stop putting money into the fire. New VCs might show up, but the terms for getting more money would start to get exorbitant, and Uber's spiral to bankruptcy would be a slightly shorter one.

</comment></comment><comment><USER42> Any guesses on how long it would take Uber to IPO from this point on?

</comment><comment><USER43> Has he even accepted the offer?

</comment><comment><USER44> why are all recode articles written in bro english?

<comment><USER45> It's Kara Swisher's style. She's a sufficiently well-known journalist to get away with it, though I agree it can grate a little.

<comment><USER46> It's not much of a style. I have to guess her audience has low exposure to literature.

</comment></comment></comment><comment><USER47> yawn...

# of f __ __to give == 0

<comment><USER48> You've been posting a lot of unsubstantive comments to HN. Would you please (re-)read [https://news.ycombinator.com/newsguidelines.html](https://news.ycombinator.com/newsguidelines.html) and stop doing that? We're hoping for a higher quality of discussion here. In vain, perhaps; but still hoping.

<comment><USER47> i'll grant that i can exude a somewhat negative outlook. but seriously, are you even remotely surprised about a comment like this related to uber?

If we're being honest uber represents pretty much everything negative comeing out of SV at this point....

Frankly I expect more from the valley (and from YC) in general..#justsayin...

<comment><USER48> I wasn't replying about Uber but to your entire comment history, which falls short of what we're hoping to see here. Also, the issue isn't primarily about being negative, it's about lowering the signal/noise ratio of the forum. We all have to be careful not to do that, because if we lower it a little bit enough times in a row, the whole thing will one day fall off a cliff. The basic idea of HN is stave that day off for as long as possible. In my experience, most people who get that idea are willing to help. We'd appreciate it if you'd help too.

</comment></comment></comment></comment><comment><USER49> This picture looks like a postal worker in uniform ready to walk into a Breaking Bad look-alike convention, he even has the badge ready to go.

I couldn't imagine how all-consuming a gig like this must be. If I were to hear the news, I think I would spend the entire day in bed... just one last time.

If this guy doesn't accept, they should try to lure Bill Belichick and Tom Brady from the NFL. I don't think you could find two people who win as much as they guys do.

I think I'll throw in my resume, just in case.

</comment><comment><USER50> But... Uber isn't travel. It's logistics. Expedia isn't logistics.

I mean, seems like a good CEO overall (in the vein of the "any CEO for Uber is better than none"), but I can't see what he specifically brings to the table to uniquely bring them to market. That said, it's not like Kalanick had something special either, it's just as the founder he has different cache.

</comment><comment><USER39> I like to try to watch a few videos of a prominent individual when sizing them up. Here are a few I found:

\- [https://www.youtube.com/watch?v=AsiiqlodKvU](https://www.youtube.com/watch?v=AsiiqlodKvU)

\- [https://www.youtube.com/watch?v=9PNT2I2Xsxc](https://www.youtube.com/watch?v=9PNT2I2Xsxc)

Overall I'm not impressed, but I'm curious what others' thoughts might be.

<comment><USER51> I watched those two and I wouldn't work for that guy.

I know nothing about expedia but it sounds like airbnb ate their lunch. That and google.com/flights.

But that's just a few minutes. Hacker News tends to have smart people with domain specific knowledge. Any of those around who know this guy? What's your take?

<comment><USER2> expedia stock up 5x since 2012, market cap 22b, their lunch has not been eaten.

<comment><USER52> Not to mention that they also own hotels.com...

<comment><USER30> And a ton of other travel brands you're probably familiar with: [http://www.expediainc.com/expedia-brands/](http://www.expediainc.com/expedia- brands/)

</comment></comment></comment></comment></comment><comment><USER53> Uber story is interesting: it's a fall of an American business not due to underlying business reasons, but due to politics and the board virtue signaling to the customer base. More similar cases to come, until the entire economy folds in 25-30 years (I budgeted ~5-7 downvotes on this: to me these downvotes only confirm the new growing anti business virtue signaling "consensus" that is toppling down the economy)

<comment><USER54> The fact that they're not profitable and have no obvious path to profitability seems like an "underlying business reason" to me.

<comment><USER53> Bezos should have been out too by 2003 then

<comment><USER55> Amazon always had a route to profitability, raise prices _a bit_.

Uber's route is to raise prices _a lot_.

<comment><USER53> Except that apart from AWS Amazon is still not profitable</comment></comment></comment></comment></comment>


A Text Field Specification - <AUTHOR> http://www.vpri.org/pdf/m2010002_lobjects.pdf <comment><AUTHOR> This active essay is available in a squeak image here: [http://tinlizzie.org/lesserphic2/Text%20Field%20for%20LObjec...](http://tinlizzie.org/lesserphic2/Text%20Field%20for%20LObject.zip)

Edit: It includes DynaBookJr, a Hypercardlike development environment.</comment>


How You Talk Yourself Out of Reporting a Bug - <AUTHOR> https://blog.beeminder.com/bugreports/ <comment><USER2> I've filed a few bug reports and I can't recall one that ever led to a fix. Most often they just sit there and get closed six months later for lack of activity. Some times they're fixed upstream. I found a bug in `dash` (Debian's replacement for sh, AFAIK.) It had been reported back in 2011 (IIRC) and the fix will finally be released with the next Debian release which will likely be out some time this year. :-/

I almost filed a bug against Visual Studio Code for a problem with `git` integration. One of the requirements for filing the bug is to install the latest development release. That was enough to discourage me. I'll just stick with `git` on the command line.

I filed a bug against one of the Visual Studio Code plugins that has not been fixed. (The extension tries to install a program in a system directory w/out getting root permissions and fails.)

If I thought my bug reports were providing any benefit I'd continue to submit them. (And in the case of VS Code didn't have too many hurdles to submit.)

</comment><comment><AUTHOR> Irony Of The Day: I realized a critical problem in the post about bug reports. We originally listed the three pieces of a Proper Bug Report as "what you did", "what you expected", and "what you saw" but that misses the most important point of a Proper Bug Report. It's not just the list of steps you took, past tense. The idea is to start from scratch and see if you can make the bug happen on command, writing down each thing you do along the way.

(Blog post now updated, including even the Latin inscription in the title image.)

</comment><comment><USER3> Love this! I think that you could use that to "debug" more things than just software. Like fixing a broken routine, etc.</comment>


Worst CAPTCHA Ever - <AUTHOR> http://svedic.org/programming/worst-captcha-ever <comment><USER2> D&B executive's spouse: You've really got to help my little brother. He hasn't had a job since he got fired from McDonald's two years ago.

Executive: What can he do?

Spouse: He's really good at programming. He took a class in it in high school five years ago, and I'm pretty sure he didn't fail. He even has his own web page.

Executive: Hmmmmm. I think we have something he can work on....

</comment><comment><USER3> Hey D&B developer here. I'm excited to see so much interest in my work. If the captcha is correct we categorize it as a bot and don't let it through. If the captcha is incorrect then it must be a human and we let them through.

Good news: we're hiring! We have day long meetings Mondays and Wednesdays, but other than that it's great.

<comment><USER4> I don't really understand this approach. Won't the false positive rate be close to 100%? Humans are going to get the captcha right every time. If it's supposed to be a honeypot system, the input should be hidden from human users to avoid that problem.

<comment><USER5> Pssst. I don't think that was seriously a post from a D&B developer.

<comment><USER4> Damn you, Poe! :(

</comment></comment></comment></comment><comment><USER6> Well, it is a good way to tell computers and humans apart. Computers can read it, while humans can't.

They should reject corectly filled in captchas.

<comment><USER7> I still loathe reCAPTCHA more than any other captcha out there. I've given up hopes of logging in on many occasions simply because of it.

Looks like it's designed for not to be deciphered either by humans or computers.

<comment><USER8> Fun tip: reCAPTCHA is actually two things, the "re" and the "CAPTCHA". In other words, one half is about testing that you're not a human, while the other half is a legitimately unknown word from a source of failed optical character recognition.

You actually don't have to get the latter one anything close to right; and I think you're given the option of at least one typo in the actual CAPTCHA test.

So when a CAPTCHA looks impossible, try doing the possible half and typing in "balls" for the other half. It actually works with pretty reasonable accuracy.

<comment><USER9> > try doing the possible half and typing in "balls" for the other half

That doesn't help with the digitization of books. :)

<comment><USER10> Who gives a crap about helping Google digitize books that they scanned without publisher or author permission and that we won't be able to to read afterwards because we have to respect copyright where they didn't?

Capchas are a pox on the web, and reCaptcha a sleazy immoral one, too.

<comment><USER11> Plus you can guess (with absolute certainty since they changed the domain to read the google.com cookie) they use it as an unblockable tracker to build a database of sites you're registered on.

</comment></comment></comment></comment></comment></comment><comment><USER12> Every expense was spared to give the impression that no expense had been spared. It's a credit report site; they want you to _think_ they are secure.

<comment><USER13> Exactly. It probably increases conversion because it looks secure.

Credit card forms are sometimes used that way too, they get a lot of extra information because if they don't, people feel that they're scammy.

<comment><USER14> But surely a working captcha would increase conversion as well _and_ have the added benefit of being a captcha?

<comment><USER15> And you really have to wonder, because the last time I had to implement a CAPTCHA (around 5 years ago), it was about 5 minutes of work. Google query, found a library, downloaded the library, copied the example into a form, and I was done.

I can't imagine coming up with your own clever hacked-together bogus CAPTCHA would be simpler than that. So they actually did it the hard way?

</comment></comment></comment></comment><comment><USER16> A wonderful example of cargo cult programming.

<comment><USER17> It's like all these sites that requires you to enter your current password before you can change it, but deleting the entire account is just ticking a check box (at least twitter and dribbble worked this way back when I had accounts there).

Some things we been doing for so long that we forget why we do them at all.

<comment><USER18> Or ones that make you confirm an e-mail address by entering it twice.

The reason you confirm a password is because you can't see the password, and so you never know if you mistyped it. Confirming an e-mail address, in a normal text field, is just stupid busywork.

<comment><USER17> I was not talking about retyping the new password, but about requesting the old password before you can change it. The reason you do this is because even if you theoretically could hijack the session, you still can not hijack the account. But the priority seems a bit off when the password is more important then the account, which makes you believe that the people behind the sites only added the extra password validation because they seen it every where else, and not because they understand the principle behind it.

<comment><USER19> Its to prevent people from being able to change your password if you step away from the computer for a few minutes to take a piss.

<comment><USER16> Exactly. The original commenter's point is that they prevent someone from changing your password, but they don't prevent that person from deleting your account.

</comment></comment></comment></comment></comment></comment><comment><USER20> One of my buddies worked in the accounting department at our state government. He needed to get a bunch of documents from another agency (like hundreds every month) to process claims. Well this other agency requires everyone to go through their website and download each document one at a time. They said it was to prevent abuse. For some reason they couldn't just send a batch of them to us, even a fellow state agency. So I made a scraper to download an entire month at a time. I figure it was a webforms site because it was filled with postbacks and viewstates which made it a bit of a pain, but the ridiculous thing was the CAPTCHA code:

<input name="actualSpoofValue" type="hidden" id="actualSpoofValue" value="TFU3P">

and TFU3P was the CAPTCHA code!

<comment><USER21> Isn't that one ambitious DA away from being a felony these days?

<comment><USER20> No, it was publicly accessible information from a public-facing website.

<comment><USER22> Since when was that a defence?

You circumvented COMPUTER SECURITY on a GOVERNMENT WEBSITE. This is how the judge will see it.

</comment></comment></comment></comment><comment><USER23> While this captcha is truly a display of ignorance I could imagine that "corporate developers" at D&B aren't web developers. All I am saying is that if you force me to write enterprise software (which I have zero experience with) on a tight schedule I'm probably going to make a stupid mistake or two even though I hope I am not of "lower quality". I imagine someone in management refused to hire web devs because "we've already got developers inhouse". Just a wild guess though.

<comment><USER14> It doesn't matter though. This isn't just a 'stupid mistake' made by a dev rushed for time, this is literally 'not a captcha.' It's not. Not even a poorly designed and incompetently executed captcha... it just isn't even one at all.

It doesn't take long to find out that best practices exist for captchas, what they are, what the typical vulnerabilities are, and then pick one from the top shelf of existing solutions once you realize captchas are hard to do properly and you're probably not being paid what it's worth to roll your own.

<comment><USER24> The funny thing is that the dev is apparently competent enough to make it look like a captcha, yet not enough to know what the purpose of a captcha is.

Actually, even if it was real captcha, a computer could still easily guess the answer because the random parts are outside the answer text.

<comment><USER14> Yeah the regular grid and text would probably make ocr even easier if it were necessary. It wouldn't surprise me if they just used uppercase letters, too.

Maybe they assumed that bots would interpret the page the way a human being would, when they're not looking at the source code? Though my money's on someone just not caring.

<comment><USER25> You know, it could have been gone this way:

Manager: Make me a captcha. Dev: We don't really need one, all we need is a simple way to avoid dumb automatic submits. M: Use a simple one, then.

... a few minutes later...

D: Here it is, the user just has to copy over those four letters. M: Hey this is not a captcha. It does not look like a captcha.

... a few minutes later...

D: Here it is, now it looks like a captcha.

On the other side, it could be very true that if you don't put some annoyances behind it, "normal" people don't recognize it as a captcha... And most of the time (on most custom low traffic sites...) you don't really need much more that a static "write the result of 2+2".

I've been there, I've already done it :-)

</comment></comment></comment></comment></comment><comment><USER26> But wait, how else would you make the automated tests pass?

<comment><USER27> Stub the captcha generator with one that returns a known value...

</comment></comment><comment><USER28> Funny coincidence, I ran into this on another website yesterday. And if it weren't bad enough that it was printed in plain text in the source code, it was only checked _client side_ with javascript. Seriously?

<comment><USER29> Just because something is checked client-side doesn't mean it's _only_ checked client-side. I've used JS checking on anti-bot questions[1] quite deliberately: it doesn't have any effect on 99%+ of bots, but it stops posts by humans from accidentally being flagged as spam.

[1] admittedly questions like "type _someword_ in this box to prove you're not a spambot"[2] rather than actual captchas, which I agree would be rather silly.

[2] if this is what you meant by a "printed in plain text in the source code" question, remember that most spambots aren't customised to an individual site, they just roam the internet submitting their crap to anything that looks like a comment form. Sure, it's trivial to write a script to parse the page and find the answer to the question - but nobody's actually going to do that for a typical company's "Contact Us" form. Adding this sort of check cuts down on spam enormously (from hundreds a day to zero), and is way easier for humans than solving a captcha.

<comment><USER30> > admittedly questions like "type someword in this box to prove you're not a > spambot" rather than actual captchas, which I agree would be rather silly.

This is not silly. This works _extremely_ well for the low traffic forum I run. Since there are a _huge_ number of phpbb3 forums out there, spammers have made spam bots specifically targeting the platform. If you make your forum epsilon different from the default then the bots don't work without manual intervention. That's enough to keep you off of autospam lists for very, very long periods of time.

And when someone inevitably adds your extra form element to their spam bot (it's happened to me 2 or 3 times over about 6 years) then you just change the answer and it stops working (and they might not even notice since it's a bot).

<comment><USER29> Updated to be clearer about this. I meant that fake captchas like the one in the OP (which put HTML text on top of a confusing background image to make it harder to read) were silly, not simple question checks.

<comment><USER31> It is the same thing. For a low priority target, it is sufficient.

</comment></comment></comment></comment></comment><comment><USER32> Speaking of, has anyone else noticed that captchas (especially recaptcha) have gotten a lot harder over the last year?

<comment><USER33> I have indeed. Anyone have more details? At one point I recall (re)CAPTCHAs being about helping OCR slightly less-readable words from book scans. But they were actual words. They seem to be gibberish words now.

<comment><USER34> Maybe they ran out of non-gibberish readable things to OCR?

</comment></comment></comment><comment><USER35> I find it hard to believe that you could be smart enough to build something like this, while also being dense enough to think that it's actually a CAPTCHA. My guess is that some pointy-haired boss really wanted a CAPTCHA and the developer didn't think it was needed. Everyone's happy.

Of course, the developer could have also just slapped RECAPTCHA on there and been done in even less time...

</comment><comment><USER36> Have a fun guys ...

<http://pro.sony.com/bbsc/jsp/forms/generateCaptcha.jsp>

<comment><USER37> too easy. try again.

  L	  K	  T	  F	  B

</comment></comment><comment><USER38> I've worked for managers who would've ask for features like this; they just wanted it to look like it functioned so our non-technical audience would think it was impressive.

</comment><comment><USER39> D&B?! Aren't these the guys everyone including Apple trusts for their DUNS number?!

Are you fucking serious?

<comment><USER40> Exactly. They're not the people everybody trusts to determine if incoming traffic is human/machine.

Your response implies that they are inept at their area of expertise.

<comment><USER41> It's relevant if being able to automate the connection allows you to circumvent the checks Apple, et al, have put in place with the DUNS number. I have no clue, so I can't render an opinion.

</comment></comment></comment><comment><USER42> I like the fact that it is case-sensitive and yet instructs to be typed in ALL CAPS :)

</comment><comment><USER43> This is hilariously awful. Thanks for sharing. I recently moved all my CAPTCHAs to games with AreYouAHuman.com and I love it.

</comment><comment><USER44> see also: <http://i.imgur.com/G8fV1IV.jpg>

</comment><comment><USER45> I don't see the problem. It's easy for people to see the word and type it in. Lightweight but not insignificant measure of protection. Compared with no protection, this form will receive less spam.

There is no impact on the user except a better user experience.

The corporate developer may have looked at the spam levels and decided that a basic measure would be fine considering the exposure to the page, or other reasons.

CAPTCHA is anti-people. It's a step back to the dark ages every time a website asks you to type in a fuzzy word, often just a jumbled string making it even worse for reading.

Surprised some comments are taking aim at the developer, who at least isn't using the stupidly backwards, barely visible full version of captcha. Check en.wikipedia.org/wiki/CAPTCHA it's a joke that the examples posted there seem so much easier than the overly-abstract usual suspects out there in reality. That wikipedia article needs a new section, something like 'criticisms' or 'UX Fail'.

D&B's 'captcha' is whack? So is Google's.

<comment><USER46> Why even bother adding the background image if you are just trying to stop dumb spam crawlers.

<comment><USER45> Very true, why indeed. A misunderstanding of how spam crawlers work? Btw, how do spam crawlers work?

People must prove they are people. And spam crawlers don't need to prove anything. Turing wouldn't have liked his name associated with a test that humans fail often (needing to refresh the captcha), and a test that machines must fail in order to be effective.

</comment></comment></comment><comment><USER47> Two years ago I had to deal D&B's flagship product, which came packaged in a Java applet. I remember one day I upgraded to the latest version of Java(a security patch) and it broke their tool. After contacting them they said the only solution was to downgrade to the Java version with a known security hole...

</comment><comment><USER48> Wow. That's... we're lucky Homo sapiens didn't get its intelligent species license revoked for this.

<comment><USER14> The notice of our species' Sapience Rating revocation has been on display at our local planning department on Alpha Centauri for 50 years now....

</comment></comment><comment><USER49> There are different levels of "captcha". Some bots just fill any forms on any sites with their spam.. a simple client-side question goes a long way to mitigate this. It obviously is a very different story if it's a script created especially for this form.

</comment><comment><USER50> That reminded me the captcha I got some time ago: [http://24.media.tumblr.com/tumblr_lvy7sl13MV1r839zio1_500.pn...](http://24.media.tumblr.com/tumblr_lvy7sl13MV1r839zio1_500.png)

</comment><comment><USER51> Twitter does something similar with 3rd-party authentication. The user puts in their name and password but then the rest of the process can be done by a bot. 1. click on a button to confirm granting access 2. provide the code in an image to he App but the HTML for the code hass the following:

Next, return to TrainerLists and enter this PIN to complete the authorization process:

7996044

</comment><comment><USER52> D&B is in the business of selling your corporate data to marketing companies. They claim that they never share their data base in an automated way, and to protect this information, so that it is only human readable but it is in their best interest to let companies have access. Likely this is there to allow miners, not specifically because they are incompetent, but because they are dishonest.

</comment><comment><USER53> [https://gist.github.com/rhapsodyv/5279369/raw/88af15fdba655b...](https://gist.github.com/rhapsodyv/5279369/raw/88af15fdba655b01db0cfe896a5376d033511fd2/gistfile1.txt)

This is a cpf (something like social security number in brazil) validator from this site: <http://via7solucoes.com.br/curriculos/cadastro.asp>

</comment><comment><USER54> Wrong. The worst CAPTCHA ever is <http://www.solvemedia.com/>

</comment><comment><USER55> LOL. So someone is doing automated lookups on the D&B site, they noticed, and then they put a broken captcha on the site.

Really, the only thing wrong with this picture is that they got called out on HN, so now whoever is doing the automated lookups won't be able to kill off D&B by releasing their information.

</comment><comment><USER56> I hate hate hate D&B. so scammy and spammy and worthless. I think their corporate structure reflects the scam... One company issues the DUNS # but another is the telemarketing spammy one that calls you for years afterward.

</comment><comment><USER57> My company got a couple of emails from a "credit advisor" Stacy at D&B with no subject. Then in the third email, from the same person... the email was typed out in the subject and there was no body. _facepalm_

</comment><comment><USER58> You know, maybe it's because they just wanted to slow down legitimate users for some reason, and spam wasn't a big problem. Ok I'm just trying to be optimistic.

</comment><comment><USER59> One odd quirk I've noticed with CAPTCHA's is that requesting a new one almost always returns one that is far more legible to discern. Is this by design?

</comment><comment><USER60> I thought you meant the reCaptcha Audio-Version (unsolvable for humans after it got broken a few times). This is just hilarious.

</comment><comment><USER61> I've seen some company's code that generated captchas too. It were the first 5 characters of md5 output of rand(1,1000)...

</comment><comment><USER62> How do audio captchas compare to the visual ones? Is it harder or easier for a computer to crack / people to understand ?

<comment><USER63> Audio captchas are pretty hard to solve for me personally, much harder than even almost unreadable Captchas. But maybe that's just me. Still can't imagine a bot solving the audio captchas I've heard though.

Edit: Just listen to it:

<https://www.google.com/recaptcha/demo/>

<comment><USER62> That is awful. In most of the triplets, the middle sound is completely drowned out by the noise

<comment><USER23> Wow yes I agree first time I hear reCAPTCHA. I am seriously wondering whether ANYBODY is able to solve this. I know it was broken before but now it seems reCaptchaing something means straight up denying it to visually impaired people.

</comment></comment></comment></comment><comment><USER64> Beats this! <http://www.hmv-news.co.uk/register.php>

</comment><comment><USER65> Security by "no one would be that stupid"

</comment><comment><USER66> Thing is, this will actually stop most contact form spam software.

</comment><comment><USER67> I love the use of the  and  tags, too.

<comment><USER68>  is valid in HTML, and different from . It's actually being used correctly here.

<comment><USER69> It's valid, but it's one of those things that shows they're not a web developer. We don't use  or  anymore. That's what CSS is for.

<comment><USER70> Nope, you're wrong.  is actually still being used to differentiate between .  is used for accessibility reasons (making the words enunciate with emphasis, while  just makes the words bold by default). If you want to bold a part of the sentence without having emphasis, you'll need to use .

<comment><USER31> What's the difference between  and .

Em is for emphasis.

<comment><USER68>  is for intonational emphasis, the way you'd give a little extra stress on a word when you are speaking.  is an indicator of importance, and may not correspond to intonational emphasis in spoken language.

As for the older tags, they were deprecated in XHTML, but have been redeemed in HTML 5.  is used for elements that are traditionally set it italics but are neither emphasized nor citations. Often that will be foreign words (where one ought to use a lang attribute). Similarly  is used to indicate elements that are traditionally set in bold face, but which do not indicate importance (as headings or  in running text would do). Both are better than the semantically-meaningless  tag, and _vastly_ better than misusing the ,  and  tags for their presentation effects.

</comment></comment></comment></comment></comment></comment><comment><USER71> After the D&B signup process, well, I am not surprised.

</comment><comment><USER72> Seems almost too simple... I feel like I am being tricked.

</comment><comment><USER73> Your data will be safe with us!

</comment><comment><USER74> I've seen one where it was always:

"What is 2+4?"

<comment><USER75> I put a super basic human authentication system on my wedding website in the online guestbook. It was just a simple form that was getting hit with spammers, so I added a super quick "What is the groom's name?" field to the form for authentication. Spam stopped completely. Sometimes, depending on the website, a super secure captcha isn't needed.

</comment></comment><comment><USER76> Somebody is gonna get fired.

</comment><comment><USER77> That's an April Fools!

...or isn't it?

</comment><comment><USER78> D&B. Trolled.

</comment><comment><USER79> this should be submitted to thedailywtf.com

</comment><comment><USER80> This should give you a really good idea what it's like trying to get a DUNS number (a requirement for doing contract work with the government as a business). Their entire business is basically the front-end to a scam. Somebody pulled a network contact to wedge their company in between businesses and the federal government.

You are _guaranteed_ to get scammy-sounding emails and phone calls from D&B after signing up. Emails with subjects like "Your business is in danger!" or messages like "Your business credit report has some big issues!" and you find out that in order to get "protection" or to find out what these "issues" are, you have to pay Dun and Bradstreet a shitload of money.

That company is a SCAM and a perfect example of how completely retarded/bought-and-paid-for the United States government is.

<comment><USER81> It's not just contract work with the government. Once you are a business of sufficient size it's almost inevitable that you'll run into some random thing where you're required to have a DUNS number before proceeding (and it's always unclear why this is a requirement). So dumb.</comment></comment>


Should you diversify or should you specialize? - <AUTHOR> http://dalethoughts.com/2012/01/should-you-diversify-or-should-you-specialize/

<comment><USER2> Specialize in one thing, but stay diverse enough to be broad minded and nimble enough to switch.

I was hired as a PHP developer in my current role 3 months ago. I have spent the last 7 years specializing in PHP, but also learning Java, C++, C#, Pyton and Javascript.

A month later our iOS developer left in a hurry. I was able to pick up the language and be commercially productive in 2 weeks. I was a hero.

A month later Google approached us wanting a project in Python. All of our PHP devs shrugged. I completed the project in Django (Python), we kept Google as a happy client. I was a hero.

You WONT have time to learn everything before you'll need it. One day you'll be tested with very short notice, and those generalists who were nimble enough to change diet quickly, will get the $

<comment><AUTHOR> As I was writing the blog post I kept thinking about how specializing one thing may, counter intuitively, lead you down another series of diverse paths that relate only somewhat to the original specialization. In the road race coordinator example from the post, it's possible that specialization in that area may lead to other opportunities in event planning unrelated to road races. Perhaps it even leads to a book deal about planning sports events.

Since I haven't specialized in anything yet I'm not sure I'm qualified to speak about it but I have a hunch specialization actually broadens opportunities.

</comment></comment><comment><USER3> This brings to mind a fantastic article about how to thrive as a knowledge worker.

'My Life as a Knowledge Worker' by Peter Drucker: <http://www.inc.com/magazine/19970201/1169.html></comment>


The fabric on the Surface Laptop should be cared for like a 'luxury' handbag - <AUTHOR> https://www.theverge.com/2017/5/9/15587364/microsoft-surface-laptop-alcantara-fabric-cleaning <comment><USER2> Or the fabric inside of your sports car.</comment>


Ask HN: How can I prove to my coworker that his code is complex? - <AUTHOR>

Currently, I think the code of my coworker really complex, but for now, this is just an opinion only.<p>Is there any metric that will transform my opinion on a proven fact? <comment><USER3> It's a nontrivial task, I wouldn't waste too much time in trying to prove that someone's code is complex. I tried in the past with the result of being appointed as "lazy" or "basic" developer. I heard arguments like: "if you think this is complex then you are not so good" or other very unnecessary arguments.

Don't prove he's writing complex code, it would be interpreted as "being wrong", but instead prove that you can come up with easier and cleaner solution. Write your own, test it and then propose it to the original author, see if he can admit that your solution is cleaner, easier to understand and easier to handle. I did this few times with very good results on feedbacks.

<comment><USER4> This is the path that I eventually started to take as I progressed as a developer. Most people when shown a better way are open to it as long as it isn't presented in a manner meant to convey superiority.

<comment><USER3> Yes.

...and one thing that can also happen is, when discussing a secondary solution, a third one can come up that is even better.

</comment></comment></comment><comment><USER5> You mean _unnecessarily_ complex, of course. That might appear self-evident, but it is better to articulate it in situations like this.

Why is it unnecessarily complex? Is it because it is handling cases which you think do not occur? Or is it implementing requirements that you think need not exist (i.e. implementing a more complex, undocumented version of the _specification_ than the one that is actually documented?) Or is it implementing the right specification, but without an effective program design that would reduce code and process duplication, or without the effective use of existing code, of the programming language, of libraries and of tools?

You need a more specific argument than "your code is too complex".

</comment><comment><USER6> No. ( _I_ don't believe cyclomatic complexity is meaningful, so it's not likely your coworker will believe it :))

The following assumes you've already politely expressed your opinion to your coworker and he's disregarded it.

It's important to understand what you're proposing to do here. You want to think of it in terms of fact, but what you are actually proposing to do is start a political fight.

Now, I don't know whether you're right or wrong. I also don't know whether it would be a good idea for you to start a political fight over the issue. I do know three things that are relevant to this situation, however:

1\. Whether you're right and whether it's a good idea for you to start a fight are separate questions. It's important not to assume an answer to one automatically implies an answer to the other.

2\. It's practically never a good idea to start a fight without carefully thinking through the costs and benefits - all of them, not just the immediate ones - and how you plan to win it.

3\. In the modern environment, the usual outcome of a fight is that both parties lose.

<comment><USER7> At the same time, if standing up for code quality implies a "fight" then there are several issues, only one of which is the actual code quality.

CC _does_ matter, even if in a limited sense: the more that can happen in a chunk of code, the harder it is to reason about. I guess I'd always thought that was obvious, because it's the same way with _everything_. Dismissing it out of hand is disingenuous.

That said, metrics matter at different times, and in different ways. Sometimes things are just complex at the method level.

In any case, if coworker is _disregarding_ input, there's a systemic issue at the personal level. I hope you're just using hyperbole when you say the only course of action is a fight: that's an extreme escalation pretty early in the process.

If the coworker _disagrees_ with the opinion, why not just have a conversation about what both parties mean by "complex"? List the tradeoffs that are being made (e.g., deep vs. wide) and why making or not making them makes sense.

People can discuss differences without "fighting" in any sense of the word. If they can't, they shouldn't work together, because it's stupid and a waste of time.

</comment></comment><comment><USER8> I've come up against this many times over. When it stems from over-enthusiasm for using recently discovered features or concepts I've reliably changed a trend-toward-complexity by picking a small section & re-writing it in a simpler/more elegant fashion, then proposing to the author something along the lines of "can we make it _all_ that simple"? The subtle (or not so subtle) creation of a challenge towards simplicity has worked well with coders near the beginning of their career.

<comment><USER9> ^ This right here.

I've come to learn that the best way to make your point in any programming debate is to go the extra mile and produce something people can see. Rhetoric and metrics are nice, but what really makes an impact is presenting an actual example of a refactoring.

For the original poster: Is the original code tested? What do the tests look like? Overly complicated unit tests are an indication that things aren't well factored. If you can present a simplification of tests along with your simplified revision of code, that may really speak to how your solution is better.

</comment></comment><comment><USER10> You're thinking about it wrong. It's not about the complexity of code or any measure thereof, but a simple communication issue.

Telling someone that their code is too complex can very easily be interpreted as a personal affront, especially by more junior developers. It can very easily communicate that they are a shitty developer and don't know what they are doing. When that happens you will get nowhere.

In that situation, the other person feels that they have to defend themselves. They get myopic and unable to see whatever argument you present. They simply will not accept it, or if they do they will resent you for it.

The best way to go about it is to acknowledge their efforts and validate their thinking. Look at why the code is the way it is, and try and understand why it's written that way. Approach the situation not as "I am right, you are wrong" but as "I don't understand this part, can you explain it to me." When they explain and you think it's complex say something like "Ah, yes! That's what I thought it did. It seemed a bit complex so I was wondering if it did anything else. Have you considered x or y?"

The more opportunities you allow to the other person to save face, and the more you value their efforts and work the further you will get.

</comment><comment><USER11> The simplest way is to provide an alternative implementation that is more correct, more succinct, and is easier to read.

+1 rich hickey talk

Of course that is not the least resource intensive solution. Code reviews may help.

<comment><USER12> This.

You could talk all day and no one will listen.

What also helps in the long run are stricter coding guidelines.

When we forced stuff like early returns instead of nested ifs much of our code just got easier to follow.

</comment></comment><comment><USER13> How did you come to the conclusion in the first place that his code is complex?

The answer to this question may provide your answer to your coworker. Ultimately if its only an opinion, then you don't have much to go off...

</comment><comment><USER14> To be honest, the technical aspects raised by the question pale in comparison to the human aspects. Even from a position of authority over a coder it can be very difficult to solve the problem of "excessively complicated" code. To "solve" this from a peer position, unless your coworker is an extraordinarily humble person, is going to be quite the trick. It is likely that the cost/benefit analysis (and in engineering you are never more than a few minutes away from a cost/benefit analysis, even here in the "fuzzy human stuff" domain) is unlikely to work out in your favor with any sort of strong approach. You are unlikely to experience any positive outcomes, what ones you could are fairly minimal, and the negative outcomes (w.r.t. your employment) are almost unbounded, including the ability to outright work your way into losing your job.

All you can really do is write good code yourself, keep learning how to write better code, and use this as an opportunity to learn how to deal with complicated code because goodness knows you'll never stop encountering overcomplicated code, unless this industry changes a lot.

If that sounds a bit defeatist... well... it's hard to express my true feelings in text here. I've been doing this for just shy of 20 years now and have no intention of stopping, so it's not like I'm burned out or anything. Yet... you can not escape the fact that you shall always be working with people whom you wish would code better. I find it helpful to remember that A: among the set of people I really wish would code better is my past self, at times even as recently as last week and B: there are certainly plenty of other people who wish that I would code better, for their personal definition of "better". In fact, I know that even as my code tends towards the "simple" side and I find some people's overcomplicated, they consider my code oversimple. (I mean, I'm still on my side and can defend it, but, well, insert any well-known saying about opinions here, right?) A certain amount of zen and a certain amount of humility is called for here in the long term, I think.

<comment><USER15> Considering the disappointing realities of human nature and office politics, I think your defeatist attitude is 100% the correct strategy. It may be worth politely and discreetly trying once to make things better, but in my experience if the individual / organization shows no interest (or just as likely, _outright hostility_ ) to the philosophy of trying to do things simply, the best recipe is to shut up, collect your paycheque, and constantly look for better opportunities elsewhere.

</comment></comment><comment><USER16> Often times people who are good at dealing with complex code become programmers, and they themselves write complex code.

Since so many projects contain a mess of complex code, programmers like these will always find jobs and you may end up with one as a coworker. It's not a bad thing but ideally they have enough of an aesthetic sense about code readability to use their powers for good.

</comment><comment><USER16> Chapter 1 of the below book is all about coupling in systems, and illustrates how coupling leads to significantly more system complexity:

[http://www.amazon.com/Event-Based-Programming-Taking- Events-...](http://www.amazon.com/Event-Based-Programming-Taking-Events- Limit/dp/1590596439/ref=sr_1_1?ie=UTF8&qid=1430830310&sr=8-1&keywords=event+based+programming)

Get it free here:

[http://en.bookfi.org/s/?q=taking+events+to+the+limit&t=0](http://en.bookfi.org/s/?q=taking+events+to+the+limit&t=0)

</comment><comment><USER17> Hi all,

there are some complexity KPIs that have proven to reflect the complexity of your source code. Code in nesting level N and the cyclomatic complexity (aka. McCabe complexity) [[http://en.wikipedia.org/wiki/Cyclomatic_complexity](http://en.wikipedia.org/wiki/Cyclomatic_complexity)] are two of them.

Especially "nesting level complexity", that is the amount of code in nesting level N+ (e.g. the amount of code in nesting level 7+), is a complexity KPI that can reflect unnecessary complexity in your code.

However, just having the "numbers" is not enough to convince your co-workers (I talk my own experiences here ;)). What you need is a visualization of these complexity KPIs. I used the following online-platform ([https://tp.softwarediagnostics.com](https://tp.softwarediagnostics.com)) to discuss issues like yours with my co-workers in an objective and transparent manner. They provide a freemium version of the platform that lets you analyze and visualize the nesting level complexity of your source code in a convenient way. Maybe it can help you in the discussion with your co-workers.

</comment><comment><USER18> (IMHO) Complex code is difficult to test so if the code can be tested easily without over using factory or tight coupled setup required then maybe the code is not so complex and maybe it's just an hard problem. Writing test can help to highlight an over complex code and an alternative code will have much simpler tests. It's not a metric but it's probably easier to agree on clean test

</comment><comment><USER19> Code is written for humans. I don't think there is any proven metric for elegance.

When I was a junior dev I made a god awful complex thingamajic for basically calling a dozens of functions with different input parameters. Our lead just said "o god, not like this _just call the functions_ " and he was correct.

Unless you are in a senior/junior position trying to prove your colleague wrong will likely result of him thinking you are arrogant and will make efforts to improve things in years to come difficult.

Communication usually fails. If you say "your code is too complex" despite your best efforts to be polite he might hear "I am an arrogant twat and just want to put you down for the fun of it".

Some times best people lead by example. If you can write your stuff elegantly and show it to him he may appreciate the more simple approach. Or not.

Unless it's an obvious antipattern like coupling of code and data we are, up to a point, discussing aesthetics. Experienced programmers often grow to appreciate simplicity if only of the categories of bugs code eliminates by just being simple. But this takes time.

<comment><USER20> > I don't think there is any proven metric for elegance.

there is: [http://www.osnews.com/images/comics/wtfm.jpg](http://www.osnews.com/images/comics/wtfm.jpg)

i'm not even joking.

<comment><USER19> Oh, had forgotten about that one. Actually, I think that image is posted on a wall at a floor in our office :)

</comment></comment></comment><comment><USER21> No one wants to hear that they are wrong, even if you proved it unless you already have their respect, or you are their boss. All programmer will hear is that "you are not doing good enough job," but the "good" is vague and graded, and lazy. Instead, show him how you would have done it. You know, as a learning opportunity.

</comment><comment><USER22> First you need to define what you mean by "complex" as that could refer to many things. A useful definition for the term will be focused on informing a decision. Why did you ask the question?

Further, definitions that rely on one or many observable phenomena are more useful than definitions which rely on subjective experiences.

</comment><comment><USER23> Maybe you don't understand the problem she's solving? Or maybe the co-worker designs in a way different from your comfort zone. How about trying to learn a few new design patterns. Then that 'complex' code will become familiar.

</comment><comment><USER24> I do this by reading the code's logic aloud, and while doing so, noting the _things that I have to remember_ to understand it. This includes things like "what was the name of that variable", "what does this function do", "has the parser read a comma", etc. Complex code results in larger "mental stacks", simple code smaller ones.

This isn't really "proof", but in my experience, such a demonstration is easy to understand and leads to constructive conversations and good results.

</comment><comment><USER25> Good code should be no more complex then the problem it's solving. Though sometimes easy problems prove themselves to be complex. If you can think of a simpler way to accomplish the same task while achieving the same thing, introduce the idea.

Chances are though, you don't have time to fix it, unless its young code, and you have some room in your schedule (which you don't, no one ever does). I'd just make sure the code review process is fixed so we can catch it earlier.

</comment><comment><USER26> Every developer has a different idea of what complex code means. Cyclomatic complexity is one metric, but vastly different code could have the same score. Sometimes we have to trade simplicity for flexibility, speed, or other goals.

The idea that you can prove code complexity shows that you are a newer developer. I'm not sure what goal you want to achieve by proving someone else wrote complex code. There are probably better ways to achieve that goal.

</comment><comment><USER27> Readability should be paramount above complexity. Write code for future you, and future developers that will be working on the project. You might understand the complexity now, but what about after not working on it for 6 months or more.

I don't know of any metric for code readability, but it should be as simple as possible. Readable code is WAY better than complex code anyday. Great programmers know this.

</comment><comment><USER28> Have you considered the possibility that you're asking the wrong question?

</comment><comment><USER29> Both watch Rich Hickey's excellent presentation on the matter and establish whether you agree on the definitions.

[http://www.infoq.com/presentations/Simple-Made- Easy](http://www.infoq.com/presentations/Simple-Made-Easy)

</comment><comment><USER30> Yes, there's a metric for that, and it's called Cyclomatic Complexity. Depending on the programming language there may or may not be tools to perform an anylisis on Cyclomatic Complexity on your code. I know for Java there are some tools.

<comment><USER31> Unfortunately the OP and possibly co-worker would need to believe that the results of a CC analysis were meaningful. Also, some problems are irreducibly complex.

One solution is for the OP to come up with a shorter, cleaner, better, etc. solution. Actually _presenting_ that version to the co-worker can be interpreted as directly confrontational ... though presenting metrics instead would more likely be interpreted as a side-handed attack, rather than a direct attack.

But if the OP can come up with better code, then that would answer to the OP's own satisfaction if the co-worker's code really is overly complex. Personal enlightenment (I tell this to myself) was all the OP was asking.

<comment><USER32> A question I'm asking myself more often as I get older: What is the value of changing somebody's mind?

To that end, rather than prove someone else's code is complex, we can emphasize the virtues of simplicity with what _we_ do. Refactoring someone else's code in smaller increments would be the passive aggressive middle ground.

There are more opportunities with code that hasn't been written yet. Maybe suggest watching this lecture as a group and then just discussing it without any additional agenda: [http://www.infoq.com/presentations/Simple-Made- Easy](http://www.infoq.com/presentations/Simple-Made-Easy)

<comment><USER33> Having worked a couple decades in the trade, occasionally with some very unstable people, I have seen one suicide. I doubt it had anything to do directly with work but it's been a reminder to be nice to people, even when they are wrong.

</comment></comment></comment></comment><comment><USER34> Complexity is not a problem if something is achieved with it. That said, a complex problem will often require a complex solution and sometimes the simplest solution is the most appreciated, efficient or elegant.

Poor maintainability /extensibility / modularity /scalability, bad encapsulation, abundance of side effects, spaguetti and raviolli code - <USER2> others - are perhaps the real problem you're seeing behind your coworker's complex design.

It is not a war that can be easily won though, you can see how in the java ecosystem unnecessary complexity is the norm. And outside java too we see unnecessarily complex frameworks or libraries gaining heavy traction.

</comment><comment><USER35> There are all kinds of complexity metrics that exist that you could use to quantify the complexity of the code at issue, and for many of those metrics there are also commonly-cited standards for levels of complexity that are sources of concern.

But its still, ultimately, a matter of opinion that the particular measure and standard are really too complex for the purpose the particular code is serving in the particular project, so while you can get some facts, the _relevant_ bit still boils down to a matter of opinion.

OTOH, the best proof that code is too complex is to demonstrate simpler code that does the same thing.

</comment><comment><USER36> If it's someone else's code, there are bigger challenges in the workplace than code complexity. The idea that it matters to whom something about the code is proved is a symptom of them.

</comment><comment><USER37> Software is all about tradeoffs, and there are so many ways a single problem could be solved. What works for me is to show them an alternative way that the code could be written.

Then you can have a practical discussion about the differences and what the differences are. Maybe their code is complex because they are considering more scenarios.

Sometimes, (not always), complex code is difficult to test. When I hear "the test is hard to write", it's a small to me that the code might be too complex.

<comment><USER38> These are the ones I really agree on. 1\. If you can show an easy way, show it to him and hope for the best for him to next time he'll pay attention to use an easy to understand code if possible. 2\. If your company goes for testing, show his/her code is hard to test.

Other than these aims in particular, you'll probably be ignored.

</comment></comment><comment><USER39> I have been on the other side of table where a coworker told me that my code was complex.

But at doing that he appreciated the code that it worked as expected and how quickly I made it work, he taught me that in long run though, how a complex code would lead to various bugs.

Show him examples, show him how to refactor that and convert the same code into a beautiful code.

So, my advice would be to give something back to the developer in case you want him to listen to you.

</comment><comment><USER40> Sure, you can prove it is complex by measuring cyclomatic complexity. But, the harder part is to prove that complexity matters. (I don't think it does myself).

Have you considered that maybe it doesn't matter? Is his code well tested, easily maintainable, ships with few bugs, and is produced on time? If so, who cares about complexity?

</comment><comment><USER41> You got two options :

1.Give him a better solution and prove that it can be done better 2.Let him drown and drag you in too.

<comment><USER23> Actually, at a paid job, you can't really redo your coworkers tasks and also get your own done. Not being paid to do that.

<comment><USER41> What you are saying is true, but it's still very relative since it depends on the situation you are in.

</comment></comment></comment><comment><USER42> Code Climate has a scoring algorithm that looks at the quality of your code, including its complexity.

[https://codeclimate.com/](https://codeclimate.com/)

</comment><comment><USER43> Do you mean "too complex for what it's trying to solve?" \- you can prove that with a simpler, cleaner solution to compare against.

</comment><comment><USER44> Don't bother, it's just an argument with no useful outcome likely.

Do good work. Improve yourself. Don't worry, none of it really matters.

</comment><comment><USER45> Ask him to change it in some meaningful way and document the struggle.</comment>


Are resume creation apps hoping for LinkedIn to buy them? - <AUTHOR>

I'm trying my best to figure out why so many resume creation apps are spawning up.
Are any of them better than insert your favorite document editor? <comment><USER2> I don't know if you can qualify them as necessarily "better" than a document editor simply because the advantage of a resume creator is in its design capabilities.

For those who are uninitiated with graphic design, having an app that can pump out a sleek, modern-looking resume is worth the money. It just comes down to aesthetics. Personally, I use LaTex to create my resume.

And to address the OP's question, I'm sure that is one motivation. But you also have to take into account that a resume-builder is one of the simplest web-apps you could build.

<comment><AUTHOR> I completely agree.

Perhaps some of these startups assess that LinkedIn is too "corporate" and too complex for creative or younger folks and are trying to tap into that market.

But most of these startups are: * Build your resume with us, its really easy * Buy our templates * Maintain multiple resumes etc.

These are services that job sites probably already offer. I just haven't been able to explain the surge of numbers of these resume building startups.. :-/

Full disclosure: I freelanced for one such startup earlier this year..

<comment><USER3> This Is where about.me really missed the mark - they could have done something much more amazing in this space.

Their pages were so damn one dimensional though, that it is useless.

But they STILL got bought for something like twenty million.

</comment></comment></comment><comment><USER4> Just incase anyone wasn't aware of it, LinkedIn's Resume Builder <http://resume.linkedinlabs.com/>

</comment><comment><USER3> Yes</comment>


The climate crisis is our third world war. It needs a bold response - <AUTHOR> https://www.theguardian.com/commentisfree/2019/jun/04/climate-change-world-war-iii-green-new-deal <comment><USER2> Please don't turn climate change into a war. The war on drugs has backfired immensely. I don't trust governments to play with our planets orbit (Milankovitch cycles) and get it right.</comment>


Inked Sales: How a Growing Law Firm Manages the Sales Process - <AUTHOR> http://federisgroup.com/2014/03/27/inked-sales-how-growing-law-firm-manages-sales-process

<comment><USER2> Biggest thing I took away from this is organize your contacts from the very beginning of starting your business so you can easily turn them in to mailing lists. There are so many different types of people I've talked to over the years of running my business: investors, experts in various topics, journalists, executives and it would be so nice when we have something to put out to just be able to refer to those various lists vs. digging through email and inevitably only finding a subset of those people.</comment>