Ask HN: Freelancers, how did you find your first paying client? - <AUTHOR>

Whether you're just starting out or have been in the game for a while, how did you go about getting your first payed client? <comment><USER2> A friend of mine was doing a video shoot for some church organization. They needed a new web host and some changes on their website, so he referred them to me. Through them, I picked up another client or two with which they were associated.

From there, someone familiar with that church group learned about me via them and asked me to help with a project he was doing.

From my work there, that client ended up funneling several clients to me.

As far as money goes, I think I started at around $20/hr and began raising my rates to $30, $50, and now $75-$100/hr depending on the project. For a while there, I had too many smaller paying clients coming to me but no real way to scale it other than just funneling them off to someone else and losing out on the potential income. Raising rates helped with that filter that out. Now if I get overwhelmed, I can actually afford to subcontract out to other folks that I trust without taking a big hit. I have collected a small list of people that I trust (a programmer or two and a graphic designer guy) that I use when I need them.

I still work a full time job, so I just try to balance my freelance gigs as best I can. My hope with raising my rates is that I can plan an eventual transition into full time freelancing.

I had a previous venture into freelancing many years ago, but only had one or two clients. I had worked out a residual payment sort of deal with them based on the amount of users they had paying each month. This was my full time job for a year or two until they lost their main source of users.

This ended up being much more of a rambling session that I intended. I guess my main point is, "by talking to people." Talk to your friends. Talk to colleagues. Talk to folks at your social gathering place of choice. It seems that someone always knows someone who needs some sort of work done. They may not be willing to pay top dollar, but to get your foot in the door I think that's okay.

</comment><comment><USER3> While I don't suggest this to be universal, I think you'll find that the majority of freelancers don't have first clients, they have first favors: a buddy who needs a website, an old acquaintance from high school or college who remembers you being the one who knew what RAM was an acronym for, etc.

I'd say, broadly, there are two types of early freelancing requests:

1\. The prospective client knows exactly what the finished product needs to be. He does not, on the other hand, know what technology is necessary or how long/expensive it will be. (These are the clients who say sentences like "Hey, how much would it cost per month to have a web page?"). These are typical first clients, who aren't quite aware of the gulf between "how much effort it is to set up a five-page Wordpress" and "how much value a five-page Wordpress brings to a small services firm," and tend to think of technology as an investment.

2\. The prospective client who has read an article or a book about something like SEO or social media or something like that and doesn't really know what it entails but feels as though they need it. These people generally think of technology as a cost -- or, at the very least, they don't know exactly what they'd be investing in.

To answer the question: I got my first client way back in tenth grade by being referred by a non-profit for which I had set up a Wordpress account; I got in touch with the non-profit through my high school's web design club; I heard about the web design club through one of my buddies in Algebra II.

</comment><comment><USER4> You will never get your first client sitting in front of your laptop. Few things you can do is - Build a free site for a small business in your neighbourhood. Go out and talk to them. Build it like you are building your own. Then slowly word-of-mouth publicity will start getting you clients.

If you are planning to register on websites like oDesk, then i would suggest you to work under someone who is already there and have a client base. Then slowly start building your own.

I hope this will help you. Good Luck!!

</comment><comment><USER5> It was very clear that a friend's workplace could leap 40 years into the future with a basic user database and eCommerce platform, so I explained the financial/productivity benefits at a party and offered to do it at a really low rate.

Other clients have come from telling friends I was freelancing, especially developer friends who will refer you when they're too busy to take on new work. If you have no developer friends, show up at meetups, design events, and start introducing yourself to others as a freelancer. You shouldn't start hard selling in social environments necessarily-- make authentic connections with people you vibe with so when they have some work down the line, they think of you.

For me it has boiled down to what is effectively networking, though the term/concept as I understood it from afar always made me nervous and misanthropic.

Its essential for freelancers, though.

I watched a lot of Ramit Sethi videos on youtube about social behavior in negotiations, networking, and how to not being a weirdo in otherwise anxiety producing environments. These helped immensely. And the amount of free info is amazing.

Money in the bank: [http://www.youtube.com/watch?v=Yb03mTqI2Io&feature=c4-overvi...](http://www.youtube.com/watch?v=Yb03mTqI2Io&feature=c4-overview- vl&list=PLFECEFDAC97C06DE7)

</comment><comment><USER6> The hard part about freelancing is that more often than not, paying clients want to see your portfolio. Now when you are starting off, most of the time you will have little to nothing to show(or atleast I did :P).

I started off by helping out student organizations in my university and building websites for them. I then used those websites in my portfolio. Within the universities, some organizations caught wind of my work and asked me to build their sites for them. Soon, I had people tell me that their family/friend wants a website and I found myself building those sites. Then I started branching off into the community. I posted on local boards and got a couple more clients there. After this point, I started getting word of mouth referrals.

In a gist, you start with customers who will pay you little to nothing. Do a good job and advertise that work, you will attract higher paying customers. Having a few personal projects will also help, just make sure that they look good (remember "To the user, the interface is the product".

Good luck!

</comment><comment><USER7> Craigslist, it was a local who was seeking a developer for a porn website. Worked part time for a few weeks, paid ok initially. However he screwed me (figuratively) for a few thousand dollars for the last installment.

It was part-time and I didnot care, however I got to see a live porno (DP) series in San Fernando valley.

</comment><comment><AUTHOR> My first payed client actually found me. I received an email one day from someone that was interested in me building an iOS App for them. We shared a few more emails, and then had a Skype conversation to move things along. Their app idea wasn't huge, but it was a week-long project, which was perfect for me at the time.

A week later, they had a new app ready for submission, and I had a Paypal notification of their transfer to me.

</comment><comment><USER8> My first project was a favor for my father-in-law. His church needed a new website.

When I started freelancing professionally 5 years ago, I booked my first real jobs through Elance. The pay wasn't great but got some portfolio pieces and references. Over time I left Elance, but I still have some agency clients that found me from Elance.

<comment><AUTHOR> Thanks for sharing, dalerus. Would you recommend that beginning freelancers use sites like Elance?

<comment><USER8> It's a good place to start to get portfolio pieces and I still maintain a presence there. I have an alert that emails me if anything gets posted in the 10K+ range.

Also I just started hiring developers via oDesk and I enjoy their system better than Elance. But I can't say how good they are for leads.</comment></comment></comment>


AWS deep-dive: How a news aggregator collects and serves up news articles - <AUTHOR> Hey guys,
For today's AWS Deep Dive I've interviewed the creators of a news aggregator and conducted an architecture review of their design.
https://www.youtube.com/watch?v=XaO8BBgBRH0
Thanks,
Vladimir
P.S. Let me know what else you'd like me to make <comment><USER2> Been meaning to get into AWS, but every time I try something it seems very complicated. Very excited for this channel!

<comment><AUTHOR> Glad you like it :) Let me know if you have an architecture you'd like me to review (as long as you're fine with me recording it).

<comment><USER2> I have none. Enjoyed all of the videos so far - keep them coming!</comment></comment></comment>


Show HN: A Java framework for building microservices? - <AUTHOR> https://github.com/gk-brown/HTTP-RPC <comment><AUTHOR> Hi all. I'm the author of this project on GitHub. It seems like it might be a good foundation for building microservices in Java. However, I'm not a microservices expert, so I was wondering what others with more experience in this space think. Thanks!</comment>


Show HN: Weleet – Subscription-based coworking spaces - <AUTHOR> http://www.weleet.me/?hn

<comment><USER2> It's not clear to me, looking at your landing page, what this is. I went looking for an about page but couldn't find it. I'm really not interested in "meeting" the personas you've created to understand the offering here. Will you describe it to me?</comment>


Megaupload looks to be back up on a website ip address - <AUTHOR> http://184.108.40.206/ could someone confirm if this is real? <comment><USER2> Apparently, it's a fake. I have no sources (except this French page: [http://www.pcinpact.com/breve/68443-megaupload-fake- phishing...](http://www.pcinpact.com/breve/68443-megaupload-fake- phishing.htm)) that claims they've contacted representatives.

<comment><USER2> I contacted WorldStream.nl, owner of the IP. I'll report back if they respond.

<comment><USER2> Dear Sir/Madam,

Thank you for your notice! We checked the site is is not a phishing site neither the new megaupload, our customer just uses the site for marketing purpose.</comment></comment></comment>


How popular were you in high school? - <AUTHOR>

...just wondering. <comment><USER2> Not popular enough, but popular enough.

(You should have made this into a humorous poll.)

</comment><comment><USER3> I went to an all-boys school where it didn't seem to come up.

</comment><comment><USER4> more popular than i thought i was.

<comment><USER5> Yeah, that's what I'd realize at the end of the year after yearbooks were exchanged back and forth and from reading the notes left in mine I realized how many other's lives I'd touched in a good way.

Not "popular" conventionally; respected, yes, feared, somewhat. Most all of this having to do with my own personal demons.</comment></comment>


The Volcano That Shrouded the Earth and Gave Birth to a Monster - <AUTHOR> http://nautil.us/issue/53/monsters/the-volcano-that-shrouded-the-earth-and-gave-birth-to-a-monster-rp <comment><USER2> Excellent read, thanks for highlighting it. It provided quite an interesting backdrop for a good part of Western European art of the early 19th century.

</comment><comment><USER3> Interesting subject matter and story, but terrible writing. I'm having difficulty believing that it was really written by an associate professor of English at the University of Illinois at Urbana-Champaign:

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


Ask HN: Are any startups working on automated ML model generation? - <AUTHOR> 	It seems like while there are a lot of research papers coming out about automated architecture searches, including DARTS and NAS, there aren't many products or companies focused on an offering. Is the compute bottleneck really the only reason this is the case? I feel that automated architecture search is probably the most useful way to democratize machine learning, and can likely be packaged as an API that Software Engineers can easily understand. Am I wrong on this?<p>I'm aware of Darwin and Google's AutoML, specifically. Anyone else? <comment><USER2> While I guess you implied neural networks under ML here's an example of a classification AutoML based on linear models but may include NN in the future [https://github.com/paypal/autosklearn- zeroconf/blob/master/R...](https://github.com/paypal/autosklearn- zeroconf/blob/master/README.md)

</comment><comment><USER3> Driverless AI from H2O and DataRobot

</comment><comment><USER3> TPOT python library</comment>


Intel vs. Microsoft: how Atom processors could kill Windows RT - <AUTHOR> http://www.theverge.com/2013/3/21/4004540/intel-vs-microsoft-how-atom-processors-could-kill-windows-rt <comment><USER2> Does anybody know the state of SecureBoot-lockdown of these? From what I understand, the ARM tablets have to be locked down by Microsoft's policy, whereas at least x86 laptops need some sort of way to either disable SecureBoot or provide your own keys – what about x86 tablets?

<comment><AUTHOR> Atom is an Intel x86 processor as far as Windows is concerned, and runs the same version of Windows 8. I don't see why SecureBoot would be any different...</comment></comment>


Companies Flee U.S. Tax System by Reincorporating Abroad - <AUTHOR> http://www.bloomberg.com/infographics/2014-01-27/companies-flee-u-s-tax-system-by-reincorporating-abroad.html <comment><USER2> Is there a reason (honest question) why we have corporate taxes in the first place? Why not tax the money when it passes from the corporation to a physical person? Wouldn't that simplify things in many respects, and make evasion more difficult? And be good for American business?

<comment><USER3> _why we have corporate taxes in the first place_

Someone asked this question last week on a similar thread; the answer I gave there is still relevant so I'm just going to copy and paste it here:

Compounding investment returns. If I loan you $1000 at 5% interest, I have to report $50/year of interest income on my tax return. Since I pay approximately 40% income tax (federal + provincial), I have an after-tax return of 3% compounding annually. If you abolish corporate income taxes, then I could have my company loan you the $1000 and receive the interest; it would then compound at 5% per year, and I would only pay income tax when the money is paid out to me as a dividend. In effect, you would be turning corporations into tax shelters.

Now, this isn't absolutely insurmountable; in fact, Canada already has different tax rates for "active business income" vs. investment income, and theoretically you could have a 0% rate on "active business income" and a 40% corporate tax rate on investment income (which would then create non-taxable dividends when finally paid out to individuals). But you'd still have the complication that "retain profits" produces a different taxation result than "pay out profits as dividends, then raise more funding a few years later".

<comment><USER4> "If you abolish corporate income taxes, then I could have my company loan you the $1000 and receive the interest; it would then compound at 5% per year, and I would only pay income tax when the money is paid out to me as a dividend. In effect, you would be turning corporations into tax shelters."

Can you explain what the problem is? I mean you use the term "tax-shelter" and we associate that with something bad. But what's wrong with only taxing when you actually get access to the money you made?

You can't even sell the company without having to pay taxes. The money seems 100% unusable till you pay taxes on it. I guess you can reinvest it into something else without cashing out, but that hardly seems like a bad thing

<comment><USER3> _Can you explain what the problem is?_

Well, the most obvious problem is that rich people (who can afford to leave their money invested for longer) pay less tax.

<comment><USER4> Well they aren't really rich if they can't spend the money haha

But I see your point: Though it would seem that the way people currently get paid with stock options - where you pay tax when you "cash out" \- is effectively equivalent (except it's even more regressive because the capital gains tax is a joke).

</comment></comment></comment></comment></comment><comment><USER5> As an example, Apple has $100 billion parked in offshore subsidiaries that it refuses to repatriate to the US because the full 35% tax rate would apply. If the US were more tax competitive, this sort of thing wouldn't be happening.

[http://www.huffingtonpost.com/2013/04/24/apple-debt- offshore...](http://www.huffingtonpost.com/2013/04/24/apple-debt-offshore- cash_n_3142063.html)

[EDIT: fixed to read $100 billion, not million]

<comment><USER6> Of course. Tax competition is obviously the answer, not companies paying fair taxes in the countries where profits are generated. How silly of me...

<comment><USER7> Use/VAT taxes are considered regressive and therefore hurtful, bad, and evil with respect towards lower classes. The great irony is that by avoiding such taxes it hurts the poor and enriches the rich. Tragic.

</comment></comment></comment><comment><USER8> This is what happens when you raise taxes to absurd levels. People leave -- especially the rich. If you have a company that provides products or services globally (instead of a business that requires a physical presence such as WalMart or a gas station), what incentive do you have to be based in America?

<comment><USER9> Are tax levels absurd?

<comment><USER10> US Corporate tax rates are. So big companies with options do all sorts of insane dancing to avoid/reduce them, which leads to lower actual collections rates.

<comment><USER11> 40% US official vs 24% effective worldwide.

</comment></comment></comment></comment><comment><USER12> As an American, this looks like a short list of companies to boycott. I don't want anything to do with companies trying to get out of paying their fair share of taxes in the US.

<comment><USER13> I never understood this. They're trying to pay less tax - they're doing it legally & as far as we know not "evading" anything.

You do the same thing on your tax returns to pay as little tax as possible (or get as big a refund as possible). Why is it worse when a corporation does it?

<comment><USER14> I don't evade taxes by setting up shell persons in various companies. I would look down on someone who did.

Actually I do know someone who maintains a fake residence for tax purposes, and I do look down on her (a wealthy heiress who didn't want to pay inheritance taxes).

<comment><USER13> "Evading" taxes is disingenuous as these are completely legal methods. You're implying they're doing something illegal.

Would you rather not have the ability to incorporate your business wherever you like and only be locked down to one country with no other choices?

<comment><USER14> No, I'm not implying they're doing something illegal, merely slimy. I would rather people didn't try to avoid paying their fair share to the society they live in. And I won't give such people my business, if I know about it and can help it. They can play the game, and suffering opprobrium for their actions is a valid rule of the game. If you're talking about only what's _legal_ , it's _legal_ for me to blacklist them, blacklist their employees socially, and to encourage others to blacklist them too.

<comment><USER15> In the context of U.S. taxes, 'evasion' and related words have a loaded meaning, where evasion is the word for illegal activities and avoidance is the word for legal activities.

<comment><USER14> "Avoidance" is not the word used by normal people. That's a word only used by tax-evasion consultants (and their clients) to euphemistically refer to what they're doing, which is gaming loopholes (many of which they have themselves lobbied to have added to the laws).

<comment><USER15> Your tone here is frustrating, pointing out that a word has a strong implied meaning doesn't really invite a lecture.

<comment><USER14> Sure, it implies they're scum! That was intended. I'm not going to correct it by using some newspeak bullshit that no regular humans use, like "tax avoidance". This isn't a corporate prospectus! I have never heard a regular person use the term "tax avoidance strategies", only consultants who are trying to differentiate their brand of tax-evasion (technically legal!) from the other brand of tax-evasion.

<comment><USER15> It also implies illegal activity. I didn't mean to ask you to correct your usage, I just meant to point out a potential interpretation of it.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER5> For comparison - global corporate tax rates:

[http://www.kpmg.com/Global/en/services/Tax/tax-tools-and- res...](http://www.kpmg.com/Global/en/services/Tax/tax-tools-and- resources/Pages/corporate-tax-rates-table.aspx)

<comment><USER13> Quick scan shows that the US is 2nd only to UAE in tax rates. Did I miss something?

<comment><USER16> These are official tax rates, not effective tax rates, which makes the whole thing disingenuous. AFAIK, the effective tax rate for the US puts it near the very bottom, just above tax havens.

<comment><USER17> In addition, most of those other countries charge VAT.

The whole point of VAT is to reduce tax evasion by charging tax at every step of the production chain. Thus, countries with VAT tend to have lower corporate tax rates, because they have replaced part of the corporate tax with VAT.

American corporate + sales tax rates are substantially lower than the equivalent corporate + VAT rates in most developed countries.

</comment></comment></comment></comment><comment><USER18> As of a few years ago, the USA is the only G20 nation that taxes corporations on their overseas earnings. (Japan was the last other holdout).

<comment><USER13> I think it's also the only other country in the world besides Eritrea that still forces citizens to pay tax based on citizenship rather than residence.

</comment></comment><comment><USER13> As it gets easier & easier for smaller companies & individuals to setup international businesses, I think this is going to happen on a major scale outside of mega-corporations.

<comment><USER19> About 10K of my income is from resold web hosting - the numbers actually pan out for me to open a business in Ireland and keep it open for about $1500 per year + $1000 in IE taxes to duck about $3500 in US taxes. If I only spend the profits outside of the US (in the form of vacations), it would work.

<comment><USER20> Assuming you are a US citizen, you're taxed on your worldwide income. So, you have to figure a way to make that trip abroad not a vacation (personally taxable fringe benefit).

It would be perfectly legal for your Irish company to hold a board meeting in Ireland and compensate the ordinary and reasonable expenses for attending. Clearly, that would not be a vacation. ;)

</comment></comment></comment><comment><USER21> Of the sixteen companies in the table, four have moved to the UK, and three to UK overseas territories. Doesn't say much for our tax regime, does it?</comment>


Ask HN: People of SFO, help - <AUTHOR>

Morning all,
I'm thinking of coming to SFO for a month to work, not a new job - I can do what I'm doing now but in SFO.
The thing is that I don't want want to come over and just sit and work in an empty office, then go back to my accommodation. I'd be coming out to meet y'all, make new contacts and expand my horizons so to speak.
So my question is: where is there to work? Good co-working spaces? Regular meetups? Pubs over-run by tech geeks?
Thanks!
(Note: I resubmitted this because I realized everyone I wanted to respond would be asleep! Zzz) <comment><USER2> NextSpace SF is one of great coworking space. you have to pay anyways. Try browse some at meetup.com, not really sure is there any hn meetups soon.

anyway you run your own project?

<comment><AUTHOR> Hey, thanks for the info. By day I'm product head at an agency here in London... by night I am of course working on a few things!

</comment></comment><comment><USER3> Hey buddy! In Mountain View check out hackerdojo (<http://wiki.hackerdojo.com/w/page/25437/FrontPage>) and in SF hit up (<http://www.parisoma.com/>).

</comment><comment><USER3> also, the summit in the mission (SF) is really cool too.</comment>


Azure Appears to Be Full - <AUTHOR> https://www.theregister.co.uk/2020/03/24/azure_seems_to_be_full/ <comment><USER2> This is a bit like the financial crisis in 2008.

In 2008, the idea was that if you bundle up a large bunch of mortgages, then the bundle will have low risk because the chances of everything failing at the same time is low. The cloud is designed so that resource usage spikes of individual customers can always be served because one customer is very small compared to the whole infrastructure.

However, in some cases, these mortgages/resource spikes become highly correlated.

<comment><USER3> It's a pretty common model in many industries...

If every gym member visited the gym at the same time, they wouldn't all fit. Only a small fraction of the members use the gym at any one time, so it works.

Banks would crash if everyone tried to withdraw their money at the same time, but they don't, so the bank can loan the money out.

<comment><USER4> As a matter of fact, I cannot think of a single industry that can serve a full service to the entirety of their clients at a discrete point in time.

<comment><USER5> Garbage collection. As in the people who pick up your bins. They do this on a weekly basis.

<comment><USER6> But if all their customers want their garbage picked up today, or everyday, it won't work.

<comment><USER7> More relevant to the cloud analogy, if all their customers wanted to purchase a large extra pickup (beyond their normal baseline) on their normal day, which is part of garbage service offerings, they wouldn't be able to accommodate it.

<comment><USER5> Aha, thank you for finding the flaw in my example! I lounge corrected ;-)

</comment></comment></comment></comment></comment></comment></comment><comment><AUTHOR> I think it's very problematic that a major cloud provider is unable to update their status page, even when this has been ongoing for days. All green ticks here: [https://status.azure.com/en-us/status](https://status.azure.com/en- us/status)

<comment><USER8> How to Use a Cloud Provider Status Page:

1\. Enter the URL of the cloud provider's status page into your browser and press enter.

2\. If the status page loads instantly, all services are go.

3\. If the status page takes between 2 and 5 seconds to serve, the cloud provider is experiencing a slowdown.

4\. If the status page takes between 5 and 30 seconds to load, the cloud provider is experiencing a major problem.

5\. If the status page takes between 30 seconds and 1 minute to load, requires you to refresh before you can see it, or fails to load completely such as with missing images, then the cloud provider is experiencing widespread problems in multiple regions and has only sporadic availability.

6\. If the status page doesn't load at all, all services are down. Check the CEO's twitter page.

7\. If the CEO's twitter page has a pinned tweet telling you not to worry, then all of your data has been lost.

</comment></comment><comment><USER9> I heard from an insider that some Azure services had a 10x growth because of the recent changes in our society. It's not like you can prepare for a 10x hit.

My personal experience for our AWS CI infra that it's struggling more and more recently. Builds are slower on average than a couple of weeks ago. Maybe those VCPUs are not the same VCPUs as yesterday ;D.

</comment><comment><USER10> There is something satisfying about the bounds of the cloud metaphor being reached (a cloud can't fill the sky).

<comment><USER11> A trip to Scotland will change your mind, fast...

<comment><USER12> That's a bit harsh, we've had at least 3 days this year where it wasn't raining!

</comment></comment></comment><comment><USER13> AWS and GCP are not full

<comment><USER14> Feels like an opportunity for building a service that uses AWS, GCP or Azure based on which is cheapest at that moment + which is not "full"... Unless that already exists.

<comment><USER15> Lowest common denominator though. If you can use just plain old VMs, there's probably little value in using the big cloud vendors. Traditional hosting would be loads cheaper.

<comment><USER16> Really? Do you mean running your own data center or what services are you referring to?

<comment><USER15> No, not running your own data center. Traditional server hosting. Rackspace, Liquidweb, Packet.net and similar.

Meaning that if you're going to use the lowest common denominator, why not pay fair market prices for egress and compute?

Any value in cloud is typically the services that are higher level than a VM. Those services would be hard to put a generic multi-cloud facade in front of. It would be brittle and bug ridden.

</comment></comment></comment></comment></comment><comment><USER17> That would explain why I have to wait sometimes ~1h until the Azure DevOps queued pipelines build starts.

<comment><USER18> They do document capacity problems with the hosted pools on their status page [https://status.dev.azure.com/_history](https://status.dev.azure.com/_history) e.g. from their last event:

> Capacity constraints due to increased demand stemming from the global health > pandemic are causing pipeline delays when using our hosted pools. We are > working on mitigations, but currently expect the issue to persist for at > least the rest of 25-March peak hours. You can work around these issues by > temporarily moving critical pipelines to self-hosted agents.

</comment></comment><comment><USER19> Worked on small Azure setup several weeks ago and probably my experience will be useful for other people:

Pro:

\- you can use shell in browser

\- traffic is cheaper related to AWS

\- fast 1GbE network

Cons:

\- VM deploy is VERY slow, 2-3 minutes

\- no ipv6 out the box, you need a balancer(!) and 4-5 non-trivial shell commands

\- attaching new storage was extremely painful experience

It general Azure feels just like middle cloud service.

</comment><comment><USER20> Yep, people are finally realizing that 'cloud' isn't something magical and limitless. It's just a bunch of servers, connected together, with each having a limit as to how much data in can store and process.

<comment><USER21> I doubt anyone actually thinks that.

It's understandable to be surprised, it's not every day everyone needs resources at once at the same time, although some foresight a month before couldn't have hurt

</comment></comment><comment><USER22> I think this introduces some interesting points to the DR and BCP conversation.

Is it a safe bet that we can rely on the cloud to have capacity? Normally I wouldn't doubt it but in this sort of situation is becomes more likely they will be put under capacity stress.

Will the cloud vendors learn and build slack in? I think they're very lean operations and maybe this kind of slack would damage the profitability too much.

If the cloud vendors can't guarantee capacity ( I suspect this will be the conclusion ) then what does they mean for our DR and BCP planning?

<comment><USER23> > Normally I wouldn't doubt it but in this sort of situation

Then you're very misinformed.

As a cloud administrator, I see resource availability and account limits on a weekly basis going back years.

I tell people:

\- to pre-provision at least some extra servers rather than wait for an autoscaling operation to fail.

\- that new instance types often are rolled out gradually, and lead time is often 1 month in AWS

\- that killing a 1000-node cluster then expecting to immediately rebuild it often doesn't work.

\- for DR and BCP planning, each region (or AZ) should be able to handle enough load at all times in case one region (or AZ) is unavailable. I've never seen anybody do that, even after I told them, because cost.

<comment><USER24> For AWS, limit monitor is a handy tool for "small" customers:

[https://aws.amazon.com/solutions/limit- monitor/](https://aws.amazon.com/solutions/limit-monitor/)

It starts having issues when you get to 5,000+ ec2 instances, but it's somewhat understandable that they don't aim to support that level of usage within a single AWS account.

On another bullet point: if you go serverless (API/HTTP Gateway, Lambda, Dynamo DB), you automatically get full region DR. I personally recommend HTTP Gateway if you can swing it, API gateway is only worth of it you are doing personal projects (mostly free tier) or are seriously leveraging the API gateway specific features

<comment><USER25> Seems like there's some confusion on what that one really does.

It only notifies you about your own Service Limits, so you will know before you hit one in an unfortunate moment. It's important to monitor that, but it doesn't protect or notify you against cloud provider's own limitations. A scale-out event can still fail if AWS has no more extra capacity ("full") even if your limits allow you otherwise.

AFAIK there's currently no way to know it beforehand if they actually have the capacity or not.

</comment></comment></comment></comment><comment><USER26> That's been a recurring issue with the UK South region ever since they introduced it.

Theregister even reported on it a couple of years ago

[https://www.theregister.co.uk/2017/05/04/microsoft_azure_cap...](https://www.theregister.co.uk/2017/05/04/microsoft_azure_capacity_woes_hit_uk_customers/)

</comment><comment><USER15> I'm watching many struggle also with on-prem VPNs, Citrix, WebEx, and so on. Though there do seem to be honest efforts to shore those up and also try more modern tools. I imagine a lot of stodgy companies will have a much better WFH environment after all the dust settles.

<comment><USER27> I'm running around fixing load balancers, SSL gateways, NetScalers, converting double-hop to single-hop access, upgrading key components, etc...

It's kinda fun, but it's also infuriating that 90% of our customers decided to wait until the _week before the lockdown_ that we warned them would be coming _months_ ago.

</comment></comment><comment><USER28> Are there any good guides on switching from Azure to AWS?

</comment><comment><USER29> I bet AWS or GCP will never have a problem like this because they're not stupid enough to operate at only 20% spare capacity at any given time

<comment><USER30> It would appear GCP may be having some problems too: [https://news.ycombinator.com/item?id=22694710](https://news.ycombinator.com/item?id=22694710)

Coincidental?

</comment></comment><comment><USER31> Disclaimer: I work for Microsoft. I have no particular info on this, but I did read the article _yesterday_ over breakfast, followed links to complaints, etc., and would like to point out two things:

1\. This appears to be a UK-centric thing (and those datacenters don't have the full Azure portfolio, as can be seen here: [https://azure.microsoft.com/en-us/global- infrastructure/serv...](https://azure.microsoft.com/en-us/global- infrastructure/services/?regions=non-regional,united-kingdom-south,united- kingdom-west,europe-north,europe-west&products=virtual-machines))

2\. The very last paragraph on the linked article reads: "Note that Azure is a huge service and it would be wrong to give disproportionate weight to a small number of reports. Most of Azure seems to be working fine. That said, capacity in the UK regions was showing signs of stress even before the current crisis, so it is not surprising that issues are occurring now."

All of this is public info, so maybe people should read up on facts first? :)

<comment><USER32> Not sure if it is UK only issue. Couldn't start a VM yesterday in other European regions. Today I have some other problems with azure search services.</comment></comment>


Go language turns two, but its syntax turns forty - <AUTHOR> http://www.scriptol.com/programming/go.php

<comment><USER2> I don't get the "its syntax turns forty", as if it was a bad thing.

If those who attempt to devise a more "modern" syntax come up with things such as Visual Basic, then I'm happy with an ancient syntax.

<comment><USER3> The syntax may be a mixed bag. Some old and new stuff. The problem is that they didn't try harder and instead preferred explicit code too much in my opinion. I still like Go, but its main selling point in my opinion is that programs written in it start fast enough. Maybe a second important feature is that deployment is helped by statically linked programs, where one .exe is all you need.

That sends me back to the Delphi days and I'm not too happy either. Because Delphi provided those kinds of features and we ended up losing it in favor of Java and .NET craziness.

The thing is, Go web apps start faster in the App Engine than web apps made with some of the other languages and also may take up fewer resources. That means that App Engine applications can be scaled up and down because spinning up new processes (with Go apps) is instant.

Here's an example:

        $ cat hn.go && 8g hn.go && 8l -o hn hn.8 && time ./hn
        package main

        import "fmt"

        func main(){
          fmt.Println("Hello HN!");
        }
        Hello HN!

        real	0m0.002s
        user	0m0.000s
        sys	0m0.000s

Cheers.

</comment></comment><comment><USER4> Is there a CoffeeScript to Go translator? Then I'm interested.</comment>


Why tech companies never pay out their earnings as dividends - <AUTHOR> http://fiveyearstoolate.wordpress.com/2010/01/31/my-friend-who-hates-tech/ <comment><USER2> There is a huge reason why tech firms don't pay dividends: their employees have stock options. Unfortunately, although dividends paid to shareholders lower the share price, the strike price on employee options is not adjusted for the lower share price caused by dividend payments. Thus, paying dividends hurts the value of employee stock options, so tech firms that use options NEVER pay dividends.

Also, in terms of returning retained earnings to investors, there is no difference between a company paying dividends and a company repurchasing shares (assuming the shares are fairly valued). Happily, though, when a company repurchases shares, it doesn't affect the strike price of stock options. Thus, tech firms don't pay dividends and they repurchase shares instead. So in addition to the "dividend yield", we also need to add in all the capital that Microsoft spent on share repurchases, which was $47.7B in the fiscal year ending in June 2009 (<http://www.microsoft.com/msft/reports/ar09/10k_fr_fin.html>). That ain't nothing.

As an aside, Microsoft started paying dividends only after switching from using employee stock options to using restricted stock (the value of which isn't affected by dividend payments).

These points aside, the author has a good point, which is that more tech firms should do more to return retained earnings to shareholders (whether via share repurchases or dividends).

<comment><USER3> I disagree with the notion that dividends paid lower the share price. Is there a theoretical reason? Or is it observed in practice? I would very much like to learn more about this if you could send pointers.

To me this looks more like a device used by managements to justify their practice of share repurchase. The options should be repriced not when dividends are paid but rather when stock repurchase is done. Like you mention, stock repurchase never affects the strike price of options. There is a very informative comment on stock repurchases by Warren Buffet in this 2005 annual report - <http://www.berkshirehathaway.com/2005arn/2005ar.pdf>

<comment><USER4> Paying out cash on hand should reduce the share price, because money in the bank is proportionally owned by the shareholders.

For an extreme example, imagine a hypothetical company with 1 billion shares outstanding and $1B in the bank and no other business than earning interest on its cash. With $1B in the bank, it should be valued at $1/share plus some share of expected future interest payments. Pay out a $1/share dividend, and the company is now worth $0.

<comment><USER5> Huh? share price is determined by one thing and one thing only, market demand.

As twitter has shown, valuation does not need to correlate to any traditional financial metric whatsoever. Twitter is worth 1 Bn becomes someone decided to pay for a stake at that valuation. No other reason.

<comment><USER6> Sure, but the fundamental value of the share obviously goes down at the instant the company pays out a dividend, so the expectation is that the companies price will drop.

Since everyone expects it to happen it generally does.

<comment><USER5> Except that dividends are announced well in advance so if the price did drop automatically on the day the cash is paid out, it would be trivial to short the position.

The fact is, there is nothing predictable in the stock market.

edit: as BobbyH points out, my point about shorting is mistaken but that does not change the key point about unpredictability of the markets vis a vis declaring a dividend.

<comment><USER7> A good example of dividend behaviour can be seen in the 16th December dividend from Sycamore Networks (see <http://www.google.com/finance?q=scmr>). This dividend was announced on the 18th November (roughly a month before the effective date). The share price doesn't change at that point, but on the effective date it falls by $9.70, almost exactly the dividend amount of $10. I chose this example as Sycamore gave out a quite ludicrous amount of cash (something like 35% of the company value) so the price drop is very obvious. Another unusual feature of the dividend is that the pay date is actually before the effective date. The dividend is paid on the 15th December, even though its the people who own the shares at the market open on the 16th who qualify for the dividend. This comes about due to a rule that NASDAQ have that if a distribution is greater than 25% of a company value, then the effective date is set to be the day after the pay date.

I think that while there is a lot that is unpredictable about the stock market, you can be fairly sure that on a dividend's effective date, the share price will fall by roughly the amount of the dividend. It won't be exact due to all the other factors which would affect a stock's price on any day, but it will be roughly correct.

</comment></comment></comment></comment></comment></comment></comment><comment><USER8> I agree with the basic argument, but for most of the 1980-2000 period it was more tax efficient to return money to investors through long term capital gains, rather than dividends. This situation will return next year if the Bush tax plan expires.

</comment><comment><USER9> The answer is very simple. Invest in companies that pay dividends, like telcos, electrical utilities, steel mills, railroads and other giants of the the 20th century. Note that you wont get any stock appreciation to speak of. Tech companies that dont invest in new markets die when competitors make the move. Apple might very well be dead if it tried to live of the Mac franchise.

Companies are allowed to keep their income so long as it is necessary for their business. You might think that a mom and pop store would be allowed to keep millions in cash, but since that kind of money isnt necessary for the operation of the business the excess gets taxed at 80%. (My info is old so the exact percentage may be out of date.) Large tech companies like Microsoft and Intel pay nominal dividends to keep the Federales at by, not out of generosity to their stockholders.

<comment><USER10> "Tech companies that dont invest in new markets die when competitors make the move."

He moves on to say that these tech giants usually end up dying anyway, so he is suggesting they "die with dignity" or at least realize when they should stop growing into new markets tangential to their core competency.

</comment></comment><comment><USER11> In theory yes, repurchasing shares should do just as well as paying out dividends.

In practice, no.

Most companies are run by people who are utterly bad at allocating capital. They will buy stock back when it is overvalued, when it is trading towards its high because they feel on top of the world and unstoppable. They are almost always making a grave mistake.

Share buybacks need to be used like Henry Singleton at Teledyne:

You buy back stock when it is trading towards its lows and likely undervalued.

You issue stock and use it as currency for acquisitions when it is trading near highs so that you take advantage of its overvalued status in the market place.

<http://en.wikipedia.org/wiki/Henry_Earl_Singleton>

Singleton showed how to properly allocate capital in tech and do it in a way that enriches everyone. That's why most people today look to what he did at Teledyne as models for best practices in capital allocation.

<comment><USER12> I'm always confused when I hear of any strategy that involves doing x when share price is low and y when share price is high.

If you can know when shares are low or high, there are lots of ways of using that information. The problem is knowing.

<comment><USER11> If you are running a company, you should know when the price of your stock disconnects from the actual fundamentals of your business.

<comment><USER13> Agreed, and I think it happens much more often than most people realize...

It's the disagreement on what something's worth that makes the market.

</comment></comment></comment></comment><comment><USER14> Really? I get my dividends just fine...

<http://www.google.com/finance?q=ibm>

<http://www.google.com/finance?q=microsoft>

<http://www.google.com/finance?q=sun>

<http://www.google.com/finance?q=oracle>

etc. etc. etc.

And their dividend payouts are about on par with my non-tech holdings also.

</comment><comment><USER15> > His view is that there is no way to be a truly long-term investor in tech > companies because management never allows companies to transition from > growth companies to mature, income-oriented ones.

I'm not sure if this is true if you looked at the tech industry as a whole. I think it is, but my view is biased from almost purely following GOOG, AAPL, MSFT, etc.

But if it is true, it would be a good explanation as to why Warren Buffett does not invest in tech companies.

</comment><comment><USER16> The argument seems sound to me, except that a company like Apple is such a great counter example. In 1997, Michael Dell was famously quoted when asked about what should be Done with Apple (a company that Steve Jobs had _just_ returned to)

"What would I do?" Mr. Dell said to an audience of several thousand information technology managers. "I'd shut it down and give the money back to the shareholders."

The rest, is as well all know, history - Apple became worth more than Dell in 2006, and today, is worth almost six times as much as Dell.

I'm pretty certain Apple investors are happy that Apple didn't start issuing dividends and run the company on its (by then dying) Mac OS 8.x, but decided to completely reinvent itself on NeXT OS (aka OS X).

An anecdote, but a useful one.

<comment><USER17> I don't think the comparison is applicable here. In 1997 Apple was clearly not in a position to transition from a growth-oriented company keeping it all for investment, to a profit-oriented company paying back a large chunk of its profit to shareholders. In 1997 Apple profits were minus 1 billion dollars. Even if you factor out Next buyout (400 millions), that's still deep down in the red. Not profits to distribute.

But that would definitely apply to 2010 Apple & Microsoft : should they continue to look for growth at all cost, or start paying big (bigger) dividends to shareholders? I lean toward investing... continue to try to change the world, please. Even if lately Microsoft seems to be bad at it (but are they really?), trying to follow the leaders instead of implementing a vision, it doesn't mean it's too late...

</comment></comment><comment><USER3> The tech companies, by not paying out dividends, are in effect telling shareholders that they can invest the profits better than them.

This belief I guess comes out in part due to the meteoric profit growth that successful tech companies witness which leads to hubris in the management. The other reason for this belief is the shareholders themselves who let management invest profits in any project they want in the hope of ever increasing profits and stock price.

About microsoft's dividends, one thing the article misses is that msft's payout is very high but most of it is via stock repurchases. The reality is that managements of all companies - tech or otherwise - concentrate on their own interests. That is why you see companies spending so much on stock repurchases rather than pure dividends. In theory it reduces the number of shares - but in practice it is a device to prop up the stock price so stock options or stock price linked benefits for employees and management are profitable. Microsoft spends disproportionately higher on stock repurchases compared to dividends. If they paid all that money as dividends, it would be a very decent dividend paying company.

</comment><comment><USER18> It would be interesting to take a poll of ms shareholders to see if a majority want the dividend raised. It would be a great test to tell how broken corporate governemxe really is.

<comment><USER19> I think the issue is that often tech company founders / management have preferred shares and therefore greater voting rights than general common stock shareholders. So even if a large group of common shareholders wanted to see dividends, they wouldn't have much authority.

I may be wrong though, I'm just starting to learn more about corporate finance.

<comment><USER5> This is true. Most companies are structured so that there exists a preferred share class with greater voting rights so to pass anything you'd have to get buy in from the board members who are the ones who typically own this share class.

<comment><USER20> > Most companies are structured so that there exists a preferred share class > with greater voting rights

"Most"? The press accounts around Google's IPO said that voting preferences were somewhat rare. They mentioned some newspaper companies and Ford.

Do MS, Apple, or Cisco have voting preferences?

</comment></comment></comment></comment><comment><USER21> They probably do it because dividends are seen as somewhat obsolete, but firms have to continue paying them because they set a precedent. They are small because they have to be consistent or investors freak out, so the actual earnings aren't distributed anyway. I'd personally rather not have dividends for several reasons:

1\. the stock price should accurately reflect the earnings of the firm. When a dividend is announced, the price of the stock decreases by the amount of the dividend. If you want some of those earnings, then sell a share. There's no need for the company to issue a dividend. This is a common misconception most people have.

2\. You're taxed on the dividend payments (exceptions tax deferred retirement accounts). This is annoying, especially if you don't want them now and would rather have them just reinvested. Ignoring taxes, the value to the shareholder is the same regardless of whether dividends are paid or not.

My professors in finance all go on long rants against paying dividends, and it really does seem that they're antiquated. Most newer firms just don't pay dividends, and tech companies just happen to be newer firms usually. It's not necessary a property of just tech companies.

<comment><USER22> "dividends are obsolete" sound to me like another form of "it's different this time."

I don't believe that. The purpose of a company is to make money for its owners. Dividends are payments to the owners of the money the company makes.

As far as capital gains goes, that is just a side-effect (albeit, a potentially lucrative one).

<comment><USER21> I fail to see your argument. The owners make money without receiving dividends. It's reflected in the stock price. When a dividend is issued, the stock price goes down by exactly that amount. It's the exact same thing. If you want that money, sell the stock. My argument is that from a tax perspective, it's more beneficial for the owners for the company to NOT pay dividends. If you ignore taxes, they're identical.

Put another way: Company X's stock is $100/share. They issue a 50 cent dividend. The stock price will go down to $99.50/share upon announcement. The investors/owners still have $100 whether the dividend is issued or not, except the investors have to pay taxes on that 50 cent dividend now instead of having it re-invested.

<comment><USER5> That's a very one-dimensional view of investing though. The Bogle (the founder of Vanguard) school of investing says that investing in the hopes the price will go up or down is nothing but speculation on the same level as investing in commodities (a barrel of oil does not do anything, it just sits there and is worth what the market says it is worth).

This traditional view holds that companies are fundamentally different than barrels of oil, in that they can produce wealth and provide reasonable returns to their share-holders year after year and that you can take your 7% appreciation at the rate the economy grows (or at least used to).

Timing the market is certainly a valid (if highly risky) strategy, but it's only one view of investing. It's only in this strategy which dividends don't make sense.

</comment></comment></comment></comment><comment><USER23> I don't feel this an explanation of why they hold on to the cash. More an explanation of why even large tech companies are perhaps not the best long- term investments.

<comment><USER24> Yeah, that was my first thought as well. Better article title might be "Why Tech Companies Suck for Not Paying Out Dividends."

</comment></comment><comment><USER25> Intel pays me dividends

<comment><USER26> You're ignoring the point. Intel pays crap dividends for a company of its size and profit margins.

</comment></comment><comment><USER18> How and why do sites like this one disable zooming on the iPhone? It really grinds my gears!</comment>


Real URLs for AMP Cached Content Using Cloudflare Workers - <AUTHOR> https://blog.cloudflare.com/real-urls-for-amp-cached-content-using-cloudflare-workers/amp/ <comment><USER2> The underlying mechanism, web packaging, will enable verifiable archives.

Perhaps this will put an end to people claiming that archive.org changed a snapshot of their page.*

[*] [https://blog.archive.org/2018/04/24/addressing-recent- claims...](https://blog.archive.org/2018/04/24/addressing-recent-claims-of- manipulated-blog-posts-in-the-wayback-machine/)</comment>


Better Clojure formatting - <AUTHOR> http://tonsky.me/blog/clojurefmt <comment><USER2> The 80-character limit may have come from punchcards, but it's still important in 2018. It allows me to have three side-by-side columns of code, and I know I'm not alone. Even 100-character limit would break similar setups.

Furthermore, I personally find a lot easier to read code that is not too spread horizontally. I do not have extensive experience with Lisp or Clojure, but all languages I've worked with will handle a "small" line width of 80 character just fine most of the time.

I do recognize this is a matter of personal preference, but please don't dismiss the 80-character limit because it's old. It may be, but it is still relevant.

Other than that, I wholeheartedly agree with the post. I started toying around with clojurescript for the past few months, and the one thing I can't wrap my head around is its formatting. Sometimes one space, sometimes two. Sometimes block spacing. It's very confusing.

<comment><USER3> We expanded our team line limit to 88 characters and that feels quite a bit better than 80. There are a lot of pretty common lines of code that once you're nested in a function/if statement/loop stretch out beyond 80 characters but fall comfortably into 88.

<comment><USER4> I used to use 100 characters as my limit and it was pretty nice. I switched back to 80 because most editors already mark the 80 character point and I didn't want to have to configure editors (basically laziness). I find 80 fine for most code. There are some cases where I naturally go over a little and its a bit clumsy to avoid it, but they're few enough that I don't care. Especially in Clojure code, I find that if things are that long, then its too nested and hard to follow anyway and I rearrange my code (use ->, ->>, let etc to split nested forms up).

In Clojure code, the most likely reason to go over 80 characters for me is let forms like (let [long-descriptive-names-that-get-too-close-to-80 (and we-have- hit the-limit)]) but overly long names mess the code up anyway and should be avoided. Descriptive is good, but too long makes it hard too read too.

</comment></comment></comment><comment><USER5> > > Avoid trailing whitespace.

> This is one of the stupidest things to automate. Unlike indenting, removing > trailing whitespace simply produces diffs where it doesn't matter. And does > nothing more.

I suppose formatting is a weak point for version control systems, but I think that is all the more reason _to_ get rid of trailing whitespace. The more your code is clean of ambiguous formatting, the less it will change between commits.

<comment><USER6> If you got rid of it from the beginning there is no diff. The argument makes no sense.

</comment></comment><comment><USER7> I agree with everything he said... except the 80 col limit. I know I'll probably lose this fight, but I frequently write code on all sorts of different screen sizes broken into split panes (Code | REPL, Code | Browser, Code - REPL | Docs) and having a line limit makes this manageable.

Maybe 80 isn't the right one, but letting code stretch out to ad-infinitum (either with awkward line breaks or having to scroll) is a big ergonomic loss for me personally.

<comment><USER8> I agree, and it's not mainly because of splitting the screen. Very long lines of code just read badly, even if you have the screen-space to fit them.

It's easy to skip and forget where you were when you look to compare the code to something and then look back.

<comment><USER4> Yep, there's a reason most article/blog sites use a fixed-width column of text. Long free-flowing lines of text are simply hard to read.

I also used to not care about side-by-side, but now, I find it too useful. Besides, nobody wants to scroll to read git diffs.

</comment></comment></comment><comment><USER9> I see a fifth column growing here.

The core problem (sort of created here) is about how lispy Clojure should be. Unlike most programming languages, Lisp code isn't meant to be fully statically analyzable. This affect indentation as well, because the "full picture" of syntax is only available at runtime.

Consider a macro invocation:

      (foo bar
           (some args)
           (some other code))

vs.:

      (foo bar (some args)
        (some other code))

Which indentation style is the correct one? _That depends on what "foo" is_. If it's a function, then the first one. If it's just a regular macro, it's still the first one. But for some particular macros - like _defun_ in elisp/CL, the valid syle is the second one. You can't, in general[0], know that until runtime. That's why the Lisps usually give you tools for that. In Common Lisp, you have &body, which works like &rest but also hints that the expected indentation is like the 2nd case I shown here. In Clojure, you have metadata - you can attach e.g. {:style/indent 2} to your macro, which signals that desired indentation changes to 2nd form on third argument.

My personal opinion - most Lisps are designed for interactive, in-image work. So is Clojure. If you want to have a completely static formatter, go back to coding Ruby or Python.

\--

[0] - You can guess it in simple cases, but not when you're dealing with macro-writing macros, i.e. code that writes code that writes code.

<comment><USER10> Isn't LISP a language that prides itself in having no special forms? A macro is a macro is a macro.

        (macroname
           first-param
           third-param
           fourth-param
           ad-infinitum)

This is the only case (there are no special, or complex, or any other cases).

Besides, if you took your time and actually read the article, you'd see `defn` in the examples.

<comment><USER9> > _A macro is a macro is a macro._

At the syntax level, yes. But indentation is not a syntax-level concern, but a _semantic one_. Speaking Clojure,

      (defn function [arg]
        {:some-op arg})

has the exact same syntactic structure to

      (assoc-in some-map
                [path]
                {:some-key path})

but it's expected to be indented differently because of the difference in _meaning_ between defn and assoc-in.

Lisp allows you to use macros to provide new symbols that, put first in a list, imply something else than function call. So user-defined forms are put on equal footing with things like if or defn. And user-defined things can _generate_ more user-defined things that are meant to be indented like defn. Hence the need for loading the code for correct indentation.

<comment><USER10> Nah. I still don't see the difference :) To me all of these are some macros/functions that expect certain parameters. Makes it much easier to reason about code IMO (especially if they are indented similarly).

<comment><USER11> Even the basic lisp mode in Vim recognizes the difference. There is a :set lispwords=... list of symbols that are operators. They get indented like this:

      (lispword a b c
        d e f
        g h)

whereas symbols not in the set like this:

      (not-lispword a b c
                    d e f)

This is important so we don't end up with this:

      (let ((x y))
           form
           form)

or, _vice versa_ , this:

       (list (item 1) (item 2)
         (item 3) (item 4))

</comment></comment></comment></comment></comment><comment><USER12> Clojure doesn't need this gofmt crap from Golang. The reason Golang needs it is that it uses a bizarre code formatting convention of indenting with tabs and aligning with spaces. It's impossible to correctly use both tabs and spaces in your code manually. You're bound to screw it, so there is a need for an automated formatter that enforces this style.

In Clojure we format everything with spaces ([https://ukupat.github.io/tabs- or-spaces/](https://ukupat.github.io/tabs-or-spaces/) \- 99% of Clojure code uses 2 spaces). This formatting style is pretty much trivial and all code editors support it.

I'm perfectly fine with Clojure code formatted slightly differently depending on a person who writes it. If you want a BDSM language, code in Golang.

</comment><comment><USER13> Jeez it's just data! Use a standard format for serialization and then use programs to format it for reading & everyone gets to read it the way they like it

<comment><USER14> That way you force a serialization standard upon everyone. I'd rather force a formatting standard upon everyone and get the benefit of readable code with any tool e.g. also code reviews in version control. There's hardly a way to read code "the way I like it" in a webapp.

<comment><USER13> that's exactly what I mean by standard serialization format - format of code exchanged between people and programs. You can always rely on the standard way (for example the one presented here) when reading code on github or when you open it in your text editor by default, and then if you have another way you prefer that it be formatted, you can use a program to format it that way for you while you work on it - however when you commit it, it's formatted the standard way not your special way.

We've conflated how the code is stored with how it looks. We need to separate these. That's one of the problems with equating code with text: they're different things. Code is data (or objects), text is a way to represent code.

<comment><USER15> I don't know if they are totally separate. Say you like to see XMLHttpRequest and I like to see xml-http-request. If I type xml-http-request, how can a piece of software know how to translate that to XMLHttpRequest?

It's not just variable casing; it's any situation where one coding style distinguishes two things which look the same in another coding style. And I think there's a lot of such cases.

<comment><USER13> this is in the context of LISP code

</comment></comment></comment></comment></comment><comment><USER16> > if everybody is reformatting it's doesn't really matter how much.

Really aggressive reformatting introduces git blame horizons that can make code archaeology more annoying.

I wouldn't consider it a reason not to switch to autoformatting, but it might be a reason not to get _too_ wild about changing the conventions.

<comment><USER17> It's why I issue a separate commit for reformatting.

At least when the person sees my commit in git blame they know to annotate the previous version.

<comment><USER18> Or even better, do it once for the main codebase in a single commit, then make sure developers have their editors apply the formatting on save, and a formatting check in CI, so that way misformatted code never gets code- reviewed.

</comment></comment></comment><comment><USER19> That's one very nice side of python, no time wasted on formatting. I cannot bear formatting arguments even for a second it kills my soul.

<comment><USER4> I've heard endless Python formatting debates too.

Luckily _most_ people have settled on pep-8, but even there, there are points of contention, such as line length limits, or how spaces won the tabs vs spaces debate (despite that imho tabs are superior as they encode indention cleanly: 1 tab = 1 indent, yet each person can set their editors tab width however they prefer) See, nobody will ever fully agree on formatting.

<comment><USER19> That's true.. even though I wouldn't consider variable naming and docstrings a formatting debate.

<comment><USER4> To me anything that affects the visuals of the code without the semantics is a formatting issue -- so tabs vs spaces (and how many) for indents, space after function names (before parameter lists), space between operators, whether camelCase or something else, Foo.foo or Foo.Foo or foo.foo or..., etc. They're all formatting.

But that wasn't my point really, which was just that despite its forced indentation, Python still has, in my personal experience, its own formatting debates.

</comment></comment></comment></comment><comment><USER20> it's a classic "worse is better": if doing good is hard, let's do the easy stuff. meh

</comment><comment><USER21> No mention of cljfmt, which I've used for a few years via lein plugin ('lein cljfmt fix').

<comment><USER22> I think you're missing the point. The point isn't "no tool exists to format my clojure code!" which is obviously wrong. The author is looking to define a _standard_ that is simple enough to define once and be used universally. `cljfmt` is awesome and I use it myself, but it fails on pretty much all of the criteria the author lays out (slow startup time, it is "extensible," formats macros/binding-forms/functions differently, etc).

<comment><USER9> Honestly, I think this is a bad idea. The way Lisp works, you need to load the code to have a shot at knowing the correct indentation. You can't just do it statically without abandoning the different syntax for function calls vs. block-of-code macros, as the distinction between the two may not be generally apparent until runtime.

<comment><USER22> That isn't "how lisp works," that's how most people choose to format their lisp code.

And this is the entire point of the article. He discusses this at length: to reach the universality and speed of a `gofmt`-like formatting tool, we would have to give up on the idea that s-expressions should be indented differently based on their content.

Personally I find this a very tempting tradeoff. You may not, but indenting different s-exps in different ways based on their first element is not "correct," it's just... what most people choose to do.

<comment><USER23> > You may not, but indenting different s-exps in different ways based on their > first element is not "correct," it's just... what most people choose to do.

They are not just s-expressions. They are programs. Just like a C code is not a random string, but a program.

</comment></comment></comment></comment></comment><comment><USER24> isn't it true that the lisp community is more tolerate of horizontal space than most subsets of programmer?

That, plus the fact i haven't coded on a 4:3 monitor since ~2002 makes me thing this is not helpful. The overuse of newlines in coding standards is... a useless exercise.

<comment><USER18> I don't know about the wider Lisp community, but I think Clojure is much easier to edit and more aesthetically pleasing when arranged in well-newlined blocks <=80 chars wide.

Constraining line length is great for readability. The benefits are similar to those gained by limiting prose line length, and sentence length.

Think of a long line of code as having similar traversal characteristics to a linked list. This requires more memory for comprehension, and is hard to search.

Now compare this to a newlined block of code, which resembles a richer data structure that spatially colocates relevant elements.

It's a difference that matters a lot.

<comment><USER11> > _The benefits are similar to those gained by limiting prose line length, and > sentence length._

Not really; prose doesn't indent with increasing nesting, so line length in prose actually means that many non-whitespace characters to scan.

> _Now compare this to a newlined block of code, which resembles a richer data > structure that spatially colocates relevant elements._

Nobody writes huge lines in Lisps; but the indentation can get out of hand in large functions. So you have this neat block that spatially colocates relevant elements, but has 150 columns of whitespace on the left, which creates a navigation challenge that is different from the problem of scanning a long line.

If you combat this by simpy constraining the column length, then what happens is this problem

                                                (cramped
                                                  expressions
                                                  (butting up
                                                           to
                                                           80
                                                           col
                                                           limit))

You have little recourse but to break it up into smaller functions (perhaps some of them nested in the parent).

<comment><USER4> > Not really; prose doesn't indent with increasing nesting

Clojure lines increase in length as they increase in nesting, but without increasing nesting, they don't typically get particularly long[1], unless you have very long argument lists or very long names. So, the key is to reduce nesting (which helps comprehension anyway) and Clojure has plenty of tools to help with that: you can use ->, ->>, as->, some->, or you can bind sub- expressions to names using let/when-let/etc. There's no need to split code into smaller functions unless it makes sense to do so (eg for code reuse or semantically).

[1] 2-space indents help keep indents from being crazy wide without crazy nesting. The only place where I often find lines getting too long is let- blocks with aligned expressions and long variable names:

        (let [this-name-is-too-long (some-code-here
                                      (uh-oh this is getting long)
            ...

<comment><USER25>
            ]
        ))

Had to close those parens to stop the mental itch!

<comment><USER4> Hah! But but but I _did_ close them (implicitly, as part of the "...")

</comment></comment></comment></comment></comment></comment><comment><USER26> There are some professional domains where the "domain-namespace-alias/domain- variable-name" is over 80 characters. Clojure should not enforcement language- independent aspects.</comment>


What you can get me for Christmas next year... - <AUTHOR> http://www.novelquest.com/emperor.html <comment><USER2> You can get me a way to shut the music off on that page.</comment>