Ask HN: Examples of this marketing / sales pattern? - <AUTHOR>

One piece of advice that pops up on HN and elsewhere is that it is easier to sell to companies than to consumers (or that it is easier to sell at a sustainable price, anyway).
Assuming that's the case, are there any examples of selling services intended for consumers to other companies who can then bundle it as part of their service to consumers (to make their own offering more attractive)?
My hunch is that this pattern must work in quite a few situations. You can't easily sell after-dinner mints to people leaving a restaurant, but you can sell them to the restaurant to give to people on the way out / with the bill.
It's similar to white-labelling, but that's not exactly what I mean, as there would be no reason for the company to pretend that they are the ones delivering the service. It would just be an added extra to help them make sales / make their customers happier, etc.
So my questions are: (i) is there a name for this approach; (ii) what are some good examples to study; and (iii) in what situations does this tend to work / not to work? <comment><USER2> (ii) I can think of oil companies owning gas stations.

(iii) You have to add value to the main experience, I think. If you offer mints their experience of eating in a restaurant is improved because they don't have bad breath. If you offer beverages in a gas stations people won't be thirsty while driving.</comment>


Show HN: APIPlug – Get Deployment-Ready API Codes and Docker Containers from DB - <AUTHOR> https://apiplug.com <comment><AUTHOR> We're looking for feedback on usability and language/data source preferences. PostgreSQL, Python, you name it. We also applied to YC on this batch. Have a nice day!

</comment><comment><USER2> I would use it if it supported python. Signed up, do let me know when you implement it.

</comment><comment><AUTHOR> Hey HN! We need feedback, specially on UIX. Thanks

</comment><comment><USER3> How soon will you be adding codeIgniter support?</comment>


Why America Is Afraid of TikTok - <AUTHOR> https://www.theatlantic.com/international/archive/2020/07/tiktok-ban-china-america/614725/ <comment><USER2> The USA wants the monopoly on spying people. They don't like competition!</comment>


Show HN: An easy way to type messages on your Apple Watch - <AUTHOR> https://www.idownloadblog.com/2018/11/07/flicktype-keyboard-apple-watch/ <comment><AUTHOR> Developer here. FlickType is the keyboard app I've always felt was missing from my Apple Watch.

 _Why?_

I've always thought Scribble is too slow, Siri doesn't always work, and canned replies feel… canned. I asked myself, could a regular (QWERTY) keyboard somehow be not just bearable, but actually comfortable to type on?

 _How?_

My solution uses two simple flick gestures and a unique correction algorithm, and it almost feels like you're typing on your phone with one hand - surprisingly comfortable!

 _Woot?_

Yes! So you can now reply to messages straight from your wrist when the situation arises — and it might be more often than you think!

 _Take my $$$!_

Oh, it's completely free. But if you love it so much, there's also a paid version that you can use on your iPhone :)

 _More?_

This is just the first iteration of the watch app — expect a lot more to come. Tell me what you think and how I can make it better!

Thank you, Kosta

PS: For some more background, read my wife's recent post "Designing for Inherent Universal Gains": [https://medium.com/@flicktype/designing-for- inherent-univers...](https://medium.com/@flicktype/designing-for-inherent- universal-gains-746daf4dffc6)</comment>


Google+ reopened invitation period - <AUTHOR>

If you have a g+ account, you now can send invitations again. <comment><USER2> Add your name to this spreadsheet if you want in. I'll send out some invites here if I get in. [https://spreadsheets.google.com/spreadsheet/lv?hl=en_US&...](https://spreadsheets.google.com/spreadsheet/lv?hl=en_US&hl=en_US&key=tRzI- LhRgPwjKYur9Td7XMw&type=view&gid=0&f=true&sortcolid=0&sortasc=true&page=1&rowsperpage=250)

<comment><USER3> I needed to request access to use the spreadsheet, not sure if thats what you meant. Either way, i just noticed that they closed invites again anyways.

Regardless, if you get in and can send invites, ill appreaciate it if you send one to b.surmanski@. (gmail)

Thanks anyways!

<comment><USER3> ok, im in, thanks to whomever invited me!

</comment></comment></comment><comment><USER4> @jcarden .. i am unable to access the spreadsheet as it is blocked from my location .. will try to get out somewhere and add myself ..

please include my id 'firstname.lastname@example.com' just in case..

</comment><comment><USER5> The link to send invites isn't showing for me....

</comment><comment><USER6> Anyone can give me an invitation.

email@example.com.

I cannot edit above link.

</comment><comment><USER4> sorry for sounding desperate .. but can someone please send me a google+ invite... my google id is 'raghav305' thanks much in advance !!..</comment>


Blockchains will lead us to plutocracy - <AUTHOR> https://medium.com/@dionyziz/blockchains-are-inherently-plutocratic-45469ced0c0f <comment><USER2> this article is so full of grandiose claims even in the first paragraph that it's hard to comment on. Blockchain tech isn't going to replace nation states or even financial systems because trustless systems do not scale. There is no economic incentive to replace smooth running low-cost transactions with expensive blockchain transactions. The appeal of blockchain is purely ideological.

That aside I am at least thankful that someone points out the very obvious political failings of decentralised systems, they tend to be pretty tyrannical, and of course full of power disparities and 'law of the jungle' logic.

The much more mundane prediction is that blockchain tech, if it has any utility, is leveraged by government to for example circumvent sanctions and whatnot, and you get something like the Pedro, which as far as I'm aware hasn't replaced the very armed Venezulean government. You'll get a "socialism with Chinese characteristics" situation, where everything has weird crypto- jargon but functions like a normal system.

<comment><USER3> there is a Twitter account called "The Center For Decentralization" that used to post about this issue, but seems to have gone inactive for a long time. Too bad because the name of the account, with four words, sums up the core paradox of blockchainism better than anything I've seen since.

</comment></comment><comment><USER4> Or perhaps blockchains will lead us nowhere, because they're unaffordable to run?

[https://www.theverge.com/2019/7/4/20682109/bitcoin-energy- co...](https://www.theverge.com/2019/7/4/20682109/bitcoin-energy-consumption- annual-calculation-cambridge-index-cbeci-country-comparison)

<comment><USER5> This author points to the role of often complex monetary policies which can be part of a multi-layered strategy to address the affordability of maintaining the platform. Projects such as Factom, Steemit, Lykke and several others have demonstrated that this is definitely not a binary consideration. There are definitely blockchains that are not sustainable in their design, but there are definitely instances where this is not the case.

</comment></comment><comment><USER5> This author does a great job of explaining the nuanced monetary policies that blockchain ecosystems require in order be resilient in delivering value to their stakeholders. As blockchain platforms can act as voluntary p2p value exchanges, is it really correct to consider it a tax?

Capturing enough value to stay in business is one of multiple functions treasuries can provide within these ecosystems. Another function of treasuries is to support additional monetary policy, like maintaining a deep order book and supporting some liquidity cushion to prevent manipulation of the price. When these features are explicitly known by people who choose to use the platforms, is it still a tax?

</comment><comment><USER6> "Both of these means are a form of linear taxation, the first on the store-of- value function of money, the other on the medium-of-exchange function of money (as far as I know, the third function of money is impossible to tax)."

Not so, taxing the "unit of account" is achieved simply by issuing more tokens, causing a devaluation, aka inflation. In fact it seems to me the easiest way.

</comment><comment><USER7> Maybe. But not blockchains, which require purchases of tokens, and hide the fact that they are nothing but speculation schemes.</comment>


What Lurks Behind Rabid Sports Fandom? - <AUTHOR> http://nautil.us/issue/54/the-unspoken/sports-hooliganism-comes-down-to-a-fear-of-death-rp <comment><USER2> It's odd; I'm usually a big proponent of terror management theory, but I think this take applies it so clumsily it's made me more skeptical.

</comment><comment><USER3> It doesn't seem natural to me. I hate to traffic in conspiracy theories, but...

For the past century the US Government via the CIA has encouraged uprisings via public protest.

Our enemies's governments interpret this (correctly) as a provocation and an existential threat.

I would not be surprised if our own counter-intelligence agencies have evidence that these people are being egged-on, provoked, and perhaps even funded by the intelligence agencies of our enemies.

<comment><USER4> Huh? Encourage sports riots? To what end?

<comment><USER3> \- Practice or experiment with new types of warfare.

\- Develop resources in countries of interest.

\- Demonstrate that they can.

\- Provide a credible threat without a symmetrically proportionate/appropriate response.

On the other side of the coin, they might try to take credit even if they don't deserve it, or we might decide to respond via non-symmetrical but proportionate alternatives.</comment></comment></comment>


The 84% who don't click on ads - <AUTHOR> http://sethgodin.typepad.com/seths_blog/2009/11/the-unclicking-84.html

<comment><USER2> Obviously wise advice, although without demographic information on the "clickers", besides the vertical market information provided [http://www.mediapost.com/publications/?fa=Articles.showArtic...](http://www.mediapost.com/publications/?fa=Articles.showArticle&art_aid=115210&lfe=1) \-- there is no way to target those who click.

Now, if we get the demo info about who is clicking (age, sex, income, marital status, job description) it would be a treasure trove to those who create the ads. More importantly, it would be a treasure trove to those of us without Fortune 500 budgets for advertising.

But I digress...

In other news, "The Stupids" is on Comedy Central right now starring Tom Arnold. It shows a one star review on Dish Network, but then again Dish Network's critique also doesn't rate The Goonies with the billion stars it deserves... hmm wonder if it's worth a watch on my break.

</comment><comment><USER3> While I agree with his overall point, his last statement is confusing:

"It's okay to make an ad that isn't easy to measure. If it works, that's enough."

How do you know it works if it's not easy to measure? This is the thinking that leads to Leo Burnett charging obscene amounts for "3 points of equity".

If you do not demand that your marketing team (or agency) give you metrics and demonstrate success/failure, then you have no way to know if your campaigns are successful. So what kind of metric can you use to measure the success of an ad that isn't primarily for clicking on?

<comment><USER4> Before the internet, people would run an ad campaign, and then measure sales for that period. We've become addicted to click-counting because its there. But its missing 84% of the data. Come up with another way to correlate ads with traffic, and make your fortune!

</comment></comment><comment><USER5> Note that those stats are for _display_ ads, not for _search_ ads. Display ads would be the crap you see flashing in your face when you go to a site just to read something. Search ads are a different animal as they're better targeted.

</comment><comment><USER6> It would be good if he illustrated his point with an example of an ad optimized for the 84%. Brand awareness? Advertising online to bring people in- store rather than simply driving clicks? What are good examples?

<comment><USER7> Brand awareness. An ad for a BMW for example. You're not likely to click and buy the car right there, so it works the same way as their TV ad does -- it'll keep the brand in your memory until you need to make a car purchase decision.

</comment></comment><comment><USER8> Am I the only person who uses Ad-Art?</comment>


Show HN: Covid-19 Treatment Dashboard - <AUTHOR> https://www.quiverquant.com/sources/covidTreatment <comment><AUTHOR> I built this dashboard to visualize ongoing efforts towards treatments and vaccines for COVID-19, using data scraped from ClinicalTrials.gov and NewsAPI.org.

Within the last few weeks there have been some promising results from these trials, including news from a Pfizer study released this morning ([https://www.cnbc.com/2020/07/01/coronavirus-vaccine-from- pfi...](https://www.cnbc.com/2020/07/01/coronavirus-vaccine-from-pfizer-and- biontech-shows-positive-results-report-says.html)).

I shared this on HackerNews three months ago ([https://news.ycombinator.com/item?id=22728049](https://news.ycombinator.com/item?id=22728049)) and received some great suggestions on improving the UI and data. Please let me know if you have any more ideas on how to improve the updated site!</comment>


Messaging updates for iPhone and a new look for iPad - <AUTHOR> http://newsroom.fb.com/News/604/Messaging-updates-for-iPhone-and-a-new-look-for-iPad

<comment><USER2> Wow, the stickers feature is a blatant replication of stickers in Path. Not that such replication by FB is unprecedented, but I'm still quite shocked.

<comment><USER3> totally agree, but then again.. who isn't copying?</comment></comment>


Dropbox saved almost $75M over two years by moving out of AWS - <AUTHOR> https://www.geekwire.com/2018/dropbox-saved-almost-75-million-two-years-building-tech-infrastructure/ <comment><USER2> AWS sells optionality. If you build your own data center, you are vulnerable to uncertain needs in a lot of ways.

(1) your business scales at a different rate than you planned -- either faster or slower are problems!

(2) you have traffic spikes, so you to over-provision. There is then a tradeoff doing it yourself: do you pay for infrastructure you barely ever use, or do you have reliability problems at peak traffic?

(3) your business plans shift or pivot

A big chunk of the Amazon price should be considered as providing flexibility in the future. It isn't fair to compare prices backwards-looking: where you know what were your actual needs and can compare what it would have cost to meet those by AWS vs in house.

The valid comparison is forward looking: what will it cost to meet needs over an uncertain variety of scenarios by AWS compared to in-house.

The corallary of this is, for a well-established business with predictable needs, going in-house will probably be cheaper. But for a growing or changing or inherently unpredictable business, the flexibility AWS sells makes more sense!

<comment><USER3> > A big chunk of the Amazon price should be considered as providing > flexibility in the future.

A recent place I worked at didn't understand this. They were going to the cloud as a strategic move because they didn't want to run a data center any more. Their computing needs were stable and predictable - no "Black Friday" sales that needed triple the servers for a short part of the year. They were going to end up paying far more for the total computing cost than if they had just kept buying blade servers and VMWare licenses.

<comment><USER4> I worked somewhere where the resident DevOps/Sysadmin guy would rather repeatedly write me emails about using an extra 10GB of disk for a data science project than just buy more storage. And this was on an instance with like half as much memory as disk available. There are some people in this industry who just have zero business sense.

<comment><USER5> Then there are people on the opposite side of the spectrum who don't even look at server costs. I have a task sitting in our backlog to optimize our instance usage which could save us over $100,000 a year. It has been constantly deprioritized in order work on feature development which is stupid because we could hire another developer to do it in a few days and then keep him to increase our feature development all while costing our company the same amount of money.

Granted, I think this is more of a case of the prisoners dilemma [0] between lower management and upper management (lower management doesn't want to work on it because it doesn't produce features that make him look good but he also does not want to propose the additional developer for it because then upper management will just tell lower management to do it without the additional developer).

[0]: [https://en.wikipedia.org/wiki/Prisoner%27s_dilemma](https://en.wikipedia.org/wiki/Prisoner%27s_dilemma)

</comment></comment></comment></comment><comment><USER6> There's two good reasons to use a service like AWS:

\- You're too small for efficient economies of scale on your own equipment (i.e. AWS is cheaper when considering total cost of ownership).

\- You need to scale rapidly to meet demand

The second one is largely a data issue, if you have enough historical data on your customers, their habits, usage, and so on then scaling becomes predictable and even when it isn't you could offload only part of your infrastructure to a cloud vendor.

What's interesting is that several companies that I know which rely on AWS/Azure/et al aren't on it for either of the two above stated "good" reasons.

They are large businesses and do almost no automated scaling. They're on it for what can only be described as internal political limitations, meaning that they are on these services to remove the politics of technology infrastructure, one less manager at the top, a shorter chain of communications, an external party to blame when something does go wrong, and issues like HR/benefits/etc for infrastructure employees is outside the scope.

In effect they view themselves as "not a technology company" so look to employ the fewest technology employees as they can. Even in cases where technology is paramount to their success. It is very interesting to watch, and I'm not even claiming they're "wrong" to handle their infrastructure this way, just that it is hard to quantify the exact reasoning for it.

<comment><USER7> Those are definitely two good reasons, but I think there's another: you are starting up and your core competency isn't object storage.

I'd argue that the core competency of Dropbox is its easy syncing. Dropbox wanted to get that to market quickly. If they had spent the time building out a data storage solution on their own, it would have meant months or years of work before they had a reliable product. Paying AWS means giving Amazon some premium, but it also means that you don't have to build out that item. It's not only about economies of scale and rapid demand. It's also about time to market.

I think it's a reasonable strategy to calculate out something along the lines of "we can pay Amazon $3N to store our data or store it ourselves for $N. However, it will take a year to build a reliable, distributed data store and we don't even know if customers want our product yet. So, let's build it on Amazon and if we get traction, we'll migrate."

S3 is a value-added service and creating your own S3 means sinking time. Even though data storage is very _very_ near to Dropbox's core competency, it's really the syncing that was the selling point of Dropbox. To get that syncing product in front of customers as fast as possible, leveraging S3 made a lot of sense. It gave them a much faster time to market.

As time went on, they had traction, and S3 costs mounted, it made sense for them to start investing in their own data storage.

It's about figuring out what's important (the syncing is the product) and figuring out what will help you go to market fast (S3) and figuring out how to lower costs after you have traction (transitioning to in-house storage).

Yes, a lot of companies use cloud services when they don't need them. However, Google Cloud's compute pricing is reasonably similar to DigitalOcean (with sustained usage discounts) and from what I hear these companies will often negotiate discounts. AWS can seem a bit pricy compared to alternatives, but I'm guessing that Amazon offers just enough discounts to large customers that they look at the cost of running their own stuff and the cost of migration and Amazon doesn't look so bad.

Still, when you're trying to go to market, you don't want to be distracted building pieces that customers don't care about when you can rent it from Amazon for reasonable rates. You haven't even proven that someone wants your product yet and your time is better spent on delivering what the customers want rather than infrastructure that saves costs. As you mature as a company, the calculus can change and Dropbox seems to have hit that transition quite well.

<comment><USER8> > Yes, a lot of companies use cloud services when they don't need them. > However, Google Cloud's compute pricing is reasonably similar to > DigitalOcean (with sustained usage discounts) and from what I hear these > companies will often negotiate discounts. AWS can seem a bit pricy compared > to alternatives, but I'm guessing that Amazon offers just enough discounts > to large customers that they look at the cost of running their own stuff and > the cost of migration and Amazon doesn't look so bad.

Of course, the dollar amounts dropbox saved are compared to those negotiated prices.

In my experience it isn't so much the storage price itself, but the network transfer that makes AWS absurdly expensive.

Most companies don't need something like S3. They can perfectly suffice with one server, maybe using RAID-1, or just using backups. Data corruption mostly happens through logical errors anyway and nothing in S3 will protect you from that.

<comment> jon-wood > Data corruption mostly happens through logical errors anyway and nothing in > S3 will protect you from that.

S3 supports object versioning, which very much will protect you from anything other than writing the wrong data for the entire history of an object.

<comment><USER8> Versioning is optional and just becomes part of the file data. Write garbage into that and it'll still take a lot to fix it.

Anyway, there's plenty of filesystems that have versioning built in as well.

Besides, I've been tasked with recovering the specific state of a database where every version of every object was available, and it was only some 200k or so records. That took me about 2 weeks. (mostly for writing code that could find a consistent version of the whole thing)

</comment></comment></comment></comment></comment><comment><USER9> This isn't surprising. At Blekko where I ran operations we did the math not once but twice (once when we got our series C to show that it made sense, and once when we got acquired by IBM to show why moving it into Softlayer was going to be too expensive). If you can build reasonable management tools and you need more than about 300 servers and a bunch of storage, cost wise its a win to do it on your own.

The best win is to build out in a data center with a 10G pipe into Amazon's network so that you can spin up AWS only on peaks or while you are waiting to bring your own stuff up. That gives you the best of both worlds.

<comment><USER10> So, rent the spike a la hybrid cloud?

<comment><USER11> Yes. The beauty of it is that building in the capability makes hosting your own even _more_ cost competitive. Because while you might have to plan for 2x or even 3x your average to handle normal peaks if you don't have anywhere else to send traffic, if you can spin up cloud instances to handle spikes you can plan for far higher utilization rates for your own equipment.

<comment><USER12> Makes a lot of sense for the customer. I just wonder what Amazon could try to do to prevent this model becoming prevalent.

<comment><USER13> Contrary to what you think, they activately encourage this style of usage.

AWS has a product called Direct Connect [0] to reduce bandwidth costs between AWS and your infrastructure.

[0] [https://aws.amazon.com/directconnect/](https://aws.amazon.com/directconnect/)

<comment><USER9> This is the local data center connection option I was referring to, the Coresite data centers on Stender Way (in Sunnyvale) had this option.

There is a latency spike between local and Amazon infrastructure so it would be critical to build your system so that putting this spike in the mix didn't impact your own flow path.

I had thought a bit about how we might do that at Blekko and I would probably shift crawling into the cloud (user's don't see that compute resource) and move crawler hosts over to the frontend/index side. But I'm sure there would have been a bunch of ways to slice it.

</comment></comment></comment></comment></comment></comment><comment><USER13> From reviewing the thread's discussion, it looks like businesses turn to cloud-based infrastructure for a number of reasons:

1\. To outsource non-core activities to experts and reduce risk, for firms that see IT as a cost center. A cost-cutting measure.

2\. To provide dynamic capacity for mature businesses that experience anticipated workloads that are short-lived (seasonal or computational needs). A cost saving measure.

3\. To provide dynamic capacity for new ventures growing in popularity i.e. fluctuating capacity requirements. This saves on large upfront infrastructure costs when long-term viability hasn't been established. A risk management measure.

4\. To be described as "innovative" because peers are doing it, for firms that see IT as a revenue center (in industries that view such investments as a source of differentiation). A form of virtue signalling.

5\. To make the accounts look good to investors by accounting for it as OPEX instead of CAPEX [0]. A seemingly irrational but valid reason. High OPEX numbers are easier to justify and more importantly, can be pared down with less friction than CAPEX, if things go south from intense competition for instance. Another risk management measure.

[0] [https://news.ycombinator.com/item?id=16458863](https://news.ycombinator.com/item?id=16458863)

</comment><comment><USER14> Data centers aren't cheap, so unless you have the economies of scale to offer R&D investment and stock-based compensation to your employees to build a modern cloud DC, good luck with that... done right you can save operating expenses, but it'll take a huge investment that would not scale for others.

<comment><USER15> I strongly disagree. Datacenters are super cheap compared to EC2. (I'm not talking building your own: start by leasing space from existing datacenters). There are a surprising number of places where you can go and lease a rack or ten or a whole room and be up and running in a couple of months.

I make the case that colocating pays off at just about any scale, assuming you have $10k in the bank, have a use for at least 40 cores and are able to pay upfront to handle anticipated scale.

Hurricane Electric has prices online of $300/mo for a rack. On AWS, a single full c4 machine (36 threads) costs $1.591 per Hour x 24 x 30 = 1145/mo -- this is more than the cost of running a whole rack with 40 machines. Decent internet can be gotten for hundreds per month.

Ok, so how about buying your own machines? E5-2630 with 20 threads is $700 x 2 = $1400 + motherboard + disk + ssd brings it to several thousand, so it will pay off in at most 6 months, and we're not even talking bandwidth or storage costs. Depending on the application you could be looking at a payoff after 2-3 months.

Worried about installing or remote management? IPMI, iDRAC, etc included with basically every server make this a piece of cake.

The only good case for cloud are if you may suddenly scale 10x and can't predict it; don't have $10k in the bank; or don't have 1-2 months to order machines and sign a contract for rack space.

<comment><USER16> What you're missing in that comparison is an extra engineer (or two) who can deal with power needs, networks hardware config, firmware updates, plans for rolling hardware, stock of replacement drives, seamless base system updates, dealing with the platform (virt or containers) itself and other things that the managed cloud gives you included in price. Ah, and they need to be available on call. Hardware may be cheap - people aren't.

<comment><USER17> You need people to manage AWS instances too, ive never seen any evidence that it actually takes less people at scale.

Sure for a few instances, its likely to be true because there is a certain amount of fixed overhead for dedicated hardware, but it remains a relatively low constant, but in reality there isnt much difference in terms of labour between wrangling hundreds of AWS instances, and hundreds of servers, and the servers will be many times cheaper to run.

</comment></comment></comment></comment><comment><USER18> So it only takes how many _exabytes_ of storage for it to be cheaper than S3, by only < $40M?

For all this talk about how expensive S3 would be for a filesystem, and how poorly suited AWS is for this kind of thing, Dropbox has seemed to make it work just fine.

</comment><comment><USER19> Well we removed all our servers from AWS and replaced them with lambda functions and dynamodb tables which resulted in 4.5 reduction in cost and increased performance by multiple factors. I suppose it all depends on what you are building and how you are building it. If you run servers I think it is no secret that AWS is not the cheapest option around.

<comment><USER20> Did the switch to DynamoDB make a big cost difference? I've never really thought about the cost of Dynamo vs. RDS as being huge, but honestly I don't know.

For most people (including every commercial project I've ever worked on), the time-saving and safety benefits of relational schemas was far greater than any theoretical infrastructure savings.

<comment><USER21> > Dynamo vs. RDS

This is so dangerous even to type out :) In some, limited cases, Dynamo can replace tables in an RDS, and completely outperform it, too. I'm a big fan, but it's fundamentally different from an RDS, and you can get burned, badly.

Oversimplified, DynamoDB is a key-value store that supports somewhat complex values. If you have large values, use S3 instead [0] - I think that's a good way to think of it, a faster S3 for loads of small records (with a nicer interface for partially reading and updating those records).

If you need to look up on anything but the primary key, be careful, costs can get out of control by having to provision extra indicies. If your primary keys aren't basically random, you'll run into scaling issues because of they way DynamoDB partitions. If you need to look at all the data in the table, DynamoDB probably isn't the right technology (it can, but scans absolutely tank performance = $$$).

[0] [https://docs.aws.amazon.com/amazondynamodb/latest/developerg...](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GuidelinesForItems.html#GuidelinesForItems.StoringInS3)

</comment></comment></comment><comment><USER22> While S3 storage costs are fairly reasonable, request costs are unrelated to file size, which makes it an absolutely terrible choice for filesystem-like activities. I say this from experience: S3 PUT requests make up a very significant portion of our AWS bill as we write a massive number of very small files to S3.

Does anyone know of a middle-layer solution that automatically concatenates files into larger chunks (similar to HDFS) prior to persisting to S3 and for retrieval utilizes HTTP Range requests to fetch the individual file? I'm going to build it if it doesn't exist. 100MB chunks would reduce our S3 PUT costs by ~1000x.

<comment><USER23> Do yourself a favor and use a Hetzner Storage Box: [https://www.hetzner.com/storage-box](https://www.hetzner.com/storage-box)

Even if you don't include any extra costs, just keeping 10 TB on Hetzner will cost you 40€ max, whereas with S3 it will cost you _at least_ $230.

<comment><USER24> A single Hetzner box is not really comparable to S3 in terms of durability and availability.

<comment><USER23> My experience is that they go down every 2-3 years, usually the problem is with the hard rive, occasionally with some other component. Under normal circumstances it takes them up to one hour to replace the hard drive, and then the array gets rebuilt for a few hours with the system being online. That means something like 2 hours downtime every 2-3 years, that's quite acceptable for my usage scenarios. In terms of money spent during that time, the difference is enormous.

</comment></comment></comment></comment><comment><USER25> Last year I wrote about the AWS spend of my SaaS business, Cronitor [1]. I couldn't imagine building a service like this without modern cloud providers, but it is no wonder to me why AWS generates all of Amazon's profit.

Essentially our migration over the years looks like:

1) Moving to EC2 from a VPS, The Ec2 instance with same specs is notably slower and you need to add a second instance where one worked before.

2) Moving to a managed service like RDS after running the service on Ec2, managed service with same specs is notably slower and you need a second instance where one worked before.

In the end, it's worth it, in the RDS example you're getting millisecond replication times, point-in-time database recovery, hot failover, etc. But still, it would be great just once if you got the same performance from an RDS 2xl as you'd get running your own DB on a 2xl of your own.

[1] [https://blog.cronitor.io/the-aws-spend-of-a-saas-side- busine...](https://blog.cronitor.io/the-aws-spend-of-a-saas-side- business-30bd5dbd91b)

<comment><USER26> > it is no wonder to me why AWS generates all of Amazon's profit.

Going out on a limb here but I'm guessing that Amazon makes a good amount of profit from their online retail store.

</comment></comment><comment><USER27> AWS (and other cloud provider) costs are non-uniform as you grow.

It goes something like this (from when you small to when you're huge):

\- very/quite cheap \- prohibitively expensive \- much cheaper than building and maintaining own infra \- prohibitively expensive/more expensive than building and maintaining own infra

So various companies will end up at various stages of this cycle. Dropbox is big enough to be in the latest stage.

<comment><USER28> Sorry, what do you mean non-uniform? The costs are digressive with volume. If you have non-linearly increasing costs with linear workload, then you have a fundamental math problem with your architecture / business model

<comment><USER27> Non-uniform with respect to what you're willing to spend on different parts of your business.

AWS is not a "once the sweet spot, always a sweet spot".

</comment></comment></comment><comment><USER29> I feel after getting to a certain scale moving to your own data center is a very smart choice. Its all about how well you can run your data center there after. So, good for them for scoping it out and saving money.

<comment><USER30> If it becomes cheaper to pay Sysadmins then it is always a good choice to move to your own.

</comment></comment><comment><USER31> Using the cloud is a waste of money as long as you don't need to scale up and down, or change the infrastructure frequently.

Bandwidth has always been insanely(!!) overpriced with most cloud providers.

<comment><USER32> What kind of business doesn't need to scale up or down?

Maybe if there will only ever be one client connected 24/7 and that never changes but I can't think of a real product that would avoid taking on more that one client.

</comment></comment><comment><USER33> For Dropbox, it probably doesn't even matter that there was a cost savings to moving from AWS. There is strategic value in not taking a critical dependency on a potential competitor, and Amazon is an obvious potential competitor in the for consumer and small business online file storage.

Using AWS meant that Amazon had IP logs for Dropbox's users. It had detailed information about Dropbox's business velocity. It had the ability to shape the customer experience of Dropbox's customers. In short, it made sense for Dropbox to move off of AWS for the same reasons that it makes sense for obvious Amazon competitors like Home Depot and Target not to build on AWS. However, unlike Home Depot or Target, the other major cloud providers, Google & Microsoft are also potential competitors in the file storage service market.

<comment><USER21> > Using AWS meant that Amazon had IP logs for Dropbox's users. It had detailed > information about Dropbox's business velocity.

That doesn't seem fair to say, without proof. Why would they risk all the other business they do, plus GovCloud, etc, to spy on a company? Are AWS and Dropbox even competitors? I don't think that assertion holds at all.

</comment></comment><comment><USER34> The difference between self hosting and running in "the cloud" is that when there's an error in "the cloud", you can't do anything about it ... But full stack debugging can even make a greybeard cry.

<comment><USER35> "The cloud" makes it easier to build an architecture with multiple failure domains. You don't want to be debugging in an emergency, you want to be hitting the failover button.

<comment><USER34> I think hiring dedicated servers or VPS is a nice middle ground between self hosting and all out "cloud" _cough_ lock-in. The cloud services do the failover and auto scaling for you, but often when something goes down it turns out they didn't even have any backups and all your data will be lost unless you actually backed it up yourself.

</comment></comment></comment><comment><USER36> Do we know how much they were spending on AWS before? Not that $75m isn't a lot but it would be interesting as a %!

<comment><USER7> > which reduced spending on "our third-party datacenter service provider" by > $92.5 million offset by increased expenses of $53 million for its own data > centers.

They reduced spending on AWS by $92.5M, but still store 10% of data there so ~$103M?

Looking at the $53M cost for their data center vs the $92.5M decrease to the "third-party datacenter", they saved around 43% moving to their own data centers.

</comment></comment><comment><USER37> I wonder what Dropbox is using. Of course they mention 'custom' software and possibly hardware, but I'm pretty sure it'll be some sort of Intel-based setup, maybe OCP, and Linux. The might be some hypervisory things going on, possibly Xen, maybe KVM. Then there will be some sort of firmware/OOB management as well, and perhaps some non-standard connectivity.

Those are mostly given. What runs on top of it, that's what interests me. Some orchestration/ private cloud software, some container platform, and perhaps a storage platform, which/what are those for Dropbox? Would it be standard OpenStack, Kubernetes and the true in-hous stuff: dropbox object storage?

<comment><USER38> I don't think there's much public info about the compute infrastructure, but here's a blog post about the object storage system: [https://blogs.dropbox.com/tech/2016/05/inside-the-magic- pock...](https://blogs.dropbox.com/tech/2016/05/inside-the-magic-pocket/)

</comment></comment><comment><USER39> Do they still use AWS for compute, with their own data center just for storage? Or do they have their own infrastructure for compute?

If I remember correctly, they noticed they could dust costs significantly in storage compared to S3 because the vast majority of files in your Dropbox folder just sit there and hardly need to be read or written again (photos, etc.).

If they're not using AWS for compute, it'd be interesting to see what sort of similar reasoning they have for why the costs are cheaper in house.

<comment><USER11> > If I remember correctly, they noticed they could dust costs significantly in > storage compared to S3 because the vast majority of files in your Dropbox > folder just sit there and hardly need to be read or written again (photos, > etc.).

Bandwidth costs alone for S3 are high enough that I've set up storage systems for clients that used S3 for durability but put it behind huge caching proxies that held a fairly substantial proportion of their total data, where the reduction in S3 storage paid for the cache setup several times over.

Storage costs are harder to cut, but yes, S3 is typically expensive there too, but it's also riskier to do your own because of the risk of data loss. At Dropbox's scale it'll be worth it, but letting Amazon worry about durability is one of the few cases where I'll happily recommend AWS despite the high costs.

</comment></comment><comment><USER40> This doesn't surprise me at all, considering storage is what Dropbox does and AWS has not really been competing on storage costs lately (as much as it's great when instances get cheaper, EBS has been 10 cents a gb/month for awhile now which is really problematic considering most of the new instance types are EBS backed).

</comment><comment><USER41> What would be the cost difference moving to Google Cloud or other cloud provider? The reason why I'm asking is that the move itself requires a re- consideration of all production configuration. The indicated savings assumes that Dropbox was using Amazon 100% efficiently to begin with.

</comment><comment><USER42> Yes, it's cheaper but that's because Dropbox needs lots and lots of infrastructure and they can hire people to run it. At some point, if you have the capacity, it cheaper to build than to outsource. Dropbox found that point.

Smaller companies don't have the option to hire a whole IT team.

</comment><comment><USER43> The article lacks a detailed analysis of how it saved so much money, there must be other stories like this when Cloud hosting doesnt make sense for really high volume data operations. The cost savings come purely out of large volume or is there something else to it?

</comment><comment><USER44> The cost of switching including? What's the percentage of saving?

</comment><comment><USER45> Didn't Zynga report the same savings prior to collapsing?

Is reporting massive savings on an infrastructure project a signal of softening demand and a weak product pipeline?

<comment><USER46> Wot Mate? You think when a company announces they are saving money on costs, lowering COGS and increasing margin by cutting costs by investing in a lower cost, higher performance solution, it's a signal of softening demand and weak product pipeline?

There's a kernel of truth in what you're saying, perhaps. Any growing company has to choose between devoting resources (engineers, cash, executive overhead) between different projects.

Alot of the time companies expand by capturing market share through adding features and expanding their TAM.

But it's foolish to suggest that lowering COGS and increasing margin means a company is in trouble.

Let's say your company is now making $1B/year (Dropbox) and you can choose between adding 3% more revenue or lowering your costs by 7%.

In most cases, for your IPO, you'll get a higher aggregate shareholder value by cutting the costs and increasing your margin.

<comment><USER47> Also, once a company is no longer being funded by venture capital and has to finance its own growth out of its profits, those millions it saves by cutting infrastructure costs can be used to hire more staff, rent more office space, and all the other things required for growth.

</comment></comment></comment><comment><USER48> Notably, the cost of doing so was over 50 million. So it's perhaps not realistic for majority of companies using AWS that are much smaller than Dropbox.

</comment><comment><USER49> This is a success story for both aws and Dropbox.

</comment><comment><USER50> It's understandable that lot of companies stick with AWS only because of inertia (read laziness) when they will be better off it.

</comment><comment><USER51> This is actually great P.R for AWS. Dropbox relied on AWS primarily for a decade, focusing on features and growth. Only when cost cutting became relevant to valuation, i.e. pre-IPO, they decided to invest in their own infrastructure.

Put another way, use the cloud unless your valuation depends on cutting infrastructure operation costs

</comment><comment><USER52> I'd rather see a figure of how much more money they MADE than how much they saved by doing something that is not directly related to making more money.</comment>


Microsoft's grinning robots or the Brotherhood of the Mac. Which is worse? - <AUTHOR> http://www.guardian.co.uk/commentisfree/2009/sep/28/charlie-brooker-microsoft-mac-windows

<comment><USER2> This is from 2009. I love Charlie Brooker like the next man, but this isn't really relevant any more.</comment>


Exam Credit for Knowing What You Do Not Know - <AUTHOR> http://daviddfriedman.blogspot.com/2017/03/an-application-of-economics-to-teaching.html <comment><USER2> There was a Decision Analysis class at Stanford that took this idea to an extreme. For each multiple choice option, you had to indicate the percentage confidence of that option being correct. The percentages for all 4 options had to add up to 100%. The score you got for each question = 1 + ln(confidence- assigned-for-correct-answer).

So if you were completely sure and gave the correct answer 100%, you would get a score of 1. If you gave it 90%, you would get a slightly lower score. If you "guessed wrong" and gave the correct answer 0% probability, ln0 is negative infinity, so you would instantly fail the entire assignment. It was a pain, but it really made you reassess how well you know stuff, rewarded people who truly knew their stuff, and burnt anyone whose confidence exceeded their actual abilities.

<comment><USER3> Why would anyone ever put 0% then? I would just redefine "impossible" to be an arbitrary percentage that guarantees I don't nuke the question.

Quick question: is confidence taken in percent form (ln(90)) or decimal form (ln(0.9))?

 _Edit:_ I am aware of the implication of having percent values, guys/gals. But if it's in decimal form, a 5% confidence level will end up losing you the current question AND three others.

<comment><USER4> I assume that was part of the lesson: in Bayesian decision theory, an agent that assigns 0.0 or 1.0 confidence to something can no longer update on new evidence about that thing. Saying something is 0% likely means being _so sure_ about that thing, that nothing—no matter how amazing—could or would ever change your mind.

Basically, no human is _actually_ ever 0.0 or 1.0 sure of _anything_. Assign five or ten nines of confidence, but not 0.0 or 1.0. (It's a lot clearer when you remove the log scale and notice that a 1.0 confidence-value translates to you saying you're "infinitely confident", which seems ridiculous.)

<comment><USER5> I suppose this is a bad place to ask this, but given that you need to do math to update your credences and also that you can derive any proposition from Pr('2 + 2 = 4) != 1, how does this work?

<comment><USER4> Basically: probabilities and credences aren't the same thing. They're measured on the same _scale_ , but probabilities can be used to reason about either facts or evidence, while credences are only "about" evidence (though potentially evidence _about_ facts.)

To put that another way: it is "100% true" that 2 + 2 = 4 (in ZF set theory); just like it is "100% true" that the sun _will_ rise today, because it already did (and otherwise the Monty Hall problem would have a different answer.)

But the credence in an agent's mind _can_ and _should_ only be informed by _observations_ of these facts; and the "observing hardware" cannot be 1.0 trustworthy. (Your senses can be imprecise; the brain can be buggy or biased; the environment being observed can be the construction of a Cartesian "evil demon"; etc.)

Given an _artificial_ agent with perfect knowledge (e.g. one who is able to directly entangle itself with the environment it is trying to predict, rather than just one able to entangle itself with _evidence about_ the state of an environment), some things _can_ theoretically be held to have 0.0 or 1.0 probabilities (e.g. events that already happened)—but given an _embodied_ agent, the "maybe my processing is flawed" argument should still make these into non-infinite _credences_.

<comment><USER6> If the Higgs field quantum tunnels to a lower energy level today in our vincinity, the sun will not rise tomorrow. Never put 100%

<comment><USER4> I didn't say "the sun will rise tomorrow"; I said "the sun will rise _today_ "—as in, the (trivial) probability that the sunrise that _already_ happened, will happen, looking forward from the more distant past to the more recent past. Given that we are talking about the probability of that event occurring _from_ a reality where it occurred, the updated probability of it occurring is 100%. (But we cannot have 100% credence, simply because we can't actually be 100% sure we're in said reality.)

</comment></comment></comment></comment></comment></comment></comment><comment><USER7> I was a Computer Science student and teaching assistant at the University of Toronto for a number of years (about a decade ago), and the 20% rule was in full effect: "On a test, if you write 'I don't know', you get 20% of the marks for that question"

As a student, this challenged you to know and understand what you know, and what you don't, and promoted the idea that knowing what you don't know is, in itself, valuable.

As a teaching assistant marking tests, this virtually eliminated long, tedious, often vacuous answers where the student was clearly throwing darts and hoping for a mark or two.

<comment><USER8> I recall there was another professor at UofT during my time there that used a scheme of "Everyone starts with 30% on each question, every relevant and correct statement you write earns you marks, every irrelevant or incorrect statement loses you marks."

<comment><USER4> It'd be interesting to use that approach _without_ having each question need to be limited by asymptotically approaching a 100% per-question score. You could do _so_ well on a question (proving things the teacher didn't expect the students to have learned at that level) that it would help you out with your scores on other questions.

Probably I'd just let the questions be scored with integers, start everyone off at 3, +1 for good points, -1 for bad points, and then take the Euclidean distance of all their question-scores to find out the total "length" of the reach the student has into good-answer space.

</comment></comment></comment><comment><USER9> When I was studying for the LSAT, I found it very helpful to mark a confidence indicator of 1-4 on every answer. Then, when I went back and graded my answers, I could see if I was missing questions that I knew I wasn't sure of, or if I was overconfident/sloppy on questions that I thought I knew. Not quite the same concept, but in the same vein of "know thyself".

</comment><comment><USER10> This is a great idea! I think there should definitely be more emphasis placed on knowing what you don't know in a good education system. Even something like knowing what areas of study exist can be quite valuable.

I had a friend acting as a research assistant to a biology masters student who was tasked with removing duplicates from an Excel file. The masters student said it would take about four hours because that's how long it usually took her to do it. My friend made a simple script in about an hour that then did the work in effectively no time. I am by no means a proponent of the "everyone should learn to code" movement but I think there could have been a lot of time saved here if the biologist just new the shallowest fact that computers are good for doing tedious things.

Obviously specialization is still very important but I feel introducing more shallow learning could really make a difference in both communication and innovation.

If you like this general topic Terence Tao has an interesting piece in a similar vein on assigning partial credit for true-false questions [1] that was posted on HN a while back [2].

[1] [https://terrytao.wordpress.com/2016/06/01/how-to-assign- part...](https://terrytao.wordpress.com/2016/06/01/how-to-assign-partial- credit-on-an-exam-of-true-false-questions/)

[2] [https://news.ycombinator.com/item?id=11821903](https://news.ycombinator.com/item?id=11821903)

<comment><USER11> That sounds a little uncharitable to the student. I know that cars are good for carrying stuff, yet I don't rent one to carry my groceries for three miles from the store to my home. Finding a programmer willing to do it for free might alone take her more than four hours.

<comment><USER10> Sorry I probably should have emphasized that this wasn't a once off task but was very frequent.

</comment></comment></comment><comment><USER12> Somewhat related, during my studies I got into some monumental arguments over the "using your answer from the previous question" rubbish.

Let's say I had no idea how to do question #10, but needed something to start with for #11. I would answer #10, and come up with an answer that made #11 as easy as possible. (I don't remember, something like x^2 instead of some integral junk).

Then I would complete #11 using x^2 as input.

Genius, I still think. My professors, not so much.

</comment><comment><USER9> In an economics class on Games and Strategies, the professor gave us a choice for one question: you can accept an 80% score for this question, or you can go to the front of the room and pick up the prompt.

Once you have decided to do so you will get whatever score you deserve — there's no turning back and declining to answer the question after seeing it.

I believe we were given the topic of the question in the instructions. IIRC, the class split about 50/50.

</comment><comment><USER13> As an electronic engineering student, our exams were negatively marked. If you got an answer wrong you incurred (-0.25 * $availablePoints). If you didn't answer the question you scored 0. We despised this at the time..

Now a medical student, we don't have negative marking. I feel it's actually very important in this discipline to know your limitations and not pass-off as though you know more than you do. I have however encountered resistance to this, having professors question my very reasons for doing medicine due to leaving questions unanswered..!

<comment><USER14> Do not worry. We know the ocean of knowledge they throw/threw us in with full expectation of us drinking in all that new material while being surrounded with sharks and there is a heavy storm that keeps a person from taking a breath.

Still Medical school kicks ass and life after it is colorless. Also, why are you complaining? With 4 Subjects tested every week year 2, 40 genes implicated in ovarian cancer and their frequencies are over the top. The only time I was disappointed was when a concept slipped because of the lack of waling minutes to master. Concepts are more important now as I see it in an age when any symptom or fact that slips can be double checked. Best years of my life!

<comment><USER13> I wasn't complaining, but thanks for this!

</comment></comment></comment><comment><USER15> Note that for multiple choice exams you can go further and have people assign a probability distribution over the answers, rather than just picking an answer. Then you can use a proper scoring rule: [https://en.wikipedia.org/wiki/Scoring_rule#Proper_scoring_ru...](https://en.wikipedia.org/wiki/Scoring_rule#Proper_scoring_rules)

</comment><comment><USER16> I had several CS courses where writing something to the effect of "I don't quite know the answer this question (or don't have time to solve it), but the formulas / algorithms / bits of info I think are relevant are: x, y, z." On a difficult question this might get half credit.

</comment><comment><USER17> > One problem in teaching economics--the course is on the application of > economics to law, for law students--is that it is possible to think you > understand something when you don't, when you are substituting some vague > things you think you know already for much more precise and quite different > things you are supposed to learn.

Isn't this generally the problem with economics writ large? It's possible to think you understand something when you don't, when you are substituting some vague math you _can_ do / _can measure_ for the more detailed and difficult (and possibly intractable) phenomenology that is reality?

</comment><comment><USER18> This is already done by certain tests like the AMC and the old SAT.

<comment><USER19> This used to be the case on AP exams too, prior to 2011 according to Google. 0 points for a blank answer, but -0.25 for a wrong answer.

</comment></comment><comment><USER20> Side note - if the article sounds uber-rational econ, it may be in part because the author is the son of Milton Friedman. Here is his first post on the topic. [http://daviddfriedman.blogspot.com/2012/11/the-use-of-old- ex...](http://daviddfriedman.blogspot.com/2012/11/the-use-of-old-exams.html) There is a great quote at the end.

 _And, for a last comment ... . I like to say that being a professor is better than working for a living, except when grading exams. One reason is that grading exams is a pain. Another is that it is when you find out that you have not done nearly as good a job of teaching as you thought you had._

<comment><USER21> While it's hard to argue that it runs in the family to some extent in this case, David Friedman is an econ thinker in his own right and certainly goes way further into what most would call extreme libertarian/"uber-rational econ" territory than Milton Friedman ever did. In fact, I'd say that "The Machinery of Freedom" ought to entitle David Friedman to the simpler introduction "...because the author is David Friedman."

<comment><USER22> His most famous book his named after his father's most famous book. His father clearly sets the context for his work.

</comment></comment></comment><comment><USER23> My favorite thing about this is something I heard from Dr Bender, Stony Brook CS: if you get <20%, there's no way to argue you should have passed when you failed, because a student who didn't take the class would do better

</comment><comment><USER24> If you're interested in the topic of making students divulge what their confidence in their answer is, you might also like this classic post by Terence Tao. [0] It explores how you might handle and grade a true/false test where for each question the student has to fill in their best estimate of the probability they got the question right.

[0] [https://terrytao.wordpress.com/2016/06/01/how-to-assign- part...](https://terrytao.wordpress.com/2016/06/01/how-to-assign-partial- credit-on-an-exam-of-true-false-questions/)

</comment><comment><USER25> I've seen it implemented in one regional mathematic competition. It was a multiple-choice test, where leaving an answer blank netted you 3 points, while answering wrong gave you 0 points.

</comment><comment><USER22> The author is apparently unaware that his "new" idea was standard practice for statistically-validates tests (like the SAT) for decades?

</comment><comment><USER26> At UIUC, Professor Erickson has a policy that rewards students with 25% credit for indicating they don't know the answer to a particular question, both on homework problems and exams.

[1] [https://courses.engr.illinois.edu/cs473/sp2017/exam- policy.h...](https://courses.engr.illinois.edu/cs473/sp2017/exam- policy.html#other)

</comment><comment><USER27> I was hoping this would look something more like, given a scenario and a question about it, being able to clearly identify the pieces of information without which the question is unanswerable.

That said, time saving and BS reduction are also valuable goals!

</comment><comment><USER28> I'm upvoting all the comments people didn't make.</comment>


Ask YC:  What new technologies are you exploring? - <AUTHOR> What are you tinkering with?  What are you exploring?  What are the technologies that really interest you? <comment><USER2> After having explored "new technologies" since my graduation in 99, I paused myself and has started moving back in time, discovering things like Lisp, Smalltalk, vim and bash. I picked up Python and rediscovered a beauty of a simple text file without XML garbage. All of that feels very "fresh" to me after years with COM-ActiveX/Win32/XML/XSLT/XPath/.NET and other "ex-new" tech.

Besides, what is "new"? MVC has been something of revelation to most web "engineers".

In fact (or maybe it comes with age) I started to dislike new stuff, like Flash/Flex/Air. I see a great danger of "web runtime" being controlled by a company. If they won't stop, Adobe will soon become "Microsoft of the Web" because they'll be controlling "Web OS". This is why I want AIR to fail and I hope that more web applications stick to HTML/CSS/JavaScript as opposed to moving to Adobe world.

For same reasons I always stayed away from Java. Same applies to Silverlight.

I do like D though (the language). But the author made two crucial mistakes that will inevitably hurt this beautiful systems programming language: he picked a name that does not work with search engines at all, and he decided to control too much - won't even let other people to distribute binaries of his compilers.

<comment><USER3> It's a little harsh to compare Adobe to Microsoft. They were friendly to the open source community by open sourcing Flex. And as far as controlling the runtime goes, that does have some risks going forward as you say, but it also has the benefit of allowing cross-platform web development largely free of browser-compatibility issues. Which is nice.

<comment><USER4> At least with Java, you had multiple working implementations of the VM from multiple vendors. With the Flash VM, there's only Adobe's VM, and they've made no indications of opening the code anytime soon.

<comment><USER5> What about Gnash or Swfdec? A free Flash player seems to be high enough enough priority that one will have feature parity with Adobe "soon".

</comment></comment></comment></comment><comment><USER6> Large-scale text mining (Google/Wikipedia). There's boatloads of patterns and data latent in an enormous popular text corpus.

For instance, if you have two terms, and you want to see how similar they are, that's P(A|B). So do a search query for A&B and for B, and P(A|B)=P(A&B)/P(B), and that's a first approximation, a Google Distance, for arbitrary terms.

The information silos are only a couple years old, and already they're so valuable. I can't wait until the Internet's a century old.

<comment><USER7> P(A|B) != P(B|A), so not really a distance...

<comment><USER6> It's from Cilibrasi and Vitanyi. They have shimming factors, so you take the min of A|B and B|A, then you throw in some logs to not penalize low probabilities.

</comment></comment></comment><comment><USER8> What really interests me is Common Lisp. I am planning on using it for a real web application (omg).

If you are interested:

[http://uint32t.blogspot.com/2007/11/web-programming- framewor...](http://uint32t.blogspot.com/2007/11/web-programming- frameworks.html)

[http://uint32t.blogspot.com/2007/11/update-web- programming-f...](http://uint32t.blogspot.com/2007/11/update-web-programming- frameworks.html)

[http://uint32t.blogspot.com/2007/11/lisp-web-framework- desig...](http://uint32t.blogspot.com/2007/11/lisp-web-framework- designer.html)

So far it is fucking amazing. I love it.

</comment><comment><USER9> Distributed version control systems. Especially Git, ATM.

Also seeking a deeper understanding of language design and compilers. Some inspirations for why:

[http://steve-yegge.blogspot.com/2007/06/rich-programmer- food...](http://steve-yegge.blogspot.com/2007/06/rich-programmer-food.html)

<http://martinfowler.com/dslwip/>

Next on my list after all that: Machine learning.

</comment><comment><USER10> Bourne shell, sed, awk, sort, uniq -- the UNIX utilities are worth your time to get to know well.

Filesystems -- how to write them, and what's out there already.

</comment><comment><USER11> Well, perl is pretty new. In geological terms. Plus, I'm finding that 1000+ line java applications can be replaced with 15 lines of perl.

<comment><USER12> Which ones? I suppose then there are also 1000 line Perl applications that can be replaced with 15 lines of Java. There are enough bad programmers out there...

<comment><USER13> Doesn't it take 10 lines to say "Hello World" in Java.

<comment><USER14> You were probably exaggerating, but for reference:

        public class hello {
        	public static void main(String args[]) {
        		System.out.println("Hello World");
        	}
        }

Also, I interviewed with a large company that shall remain nameless (probably not who you would expect), and one of the interviewers mentioned that their build system was a MILLION lines of Perl...

<comment><USER13> Yes, I am exaggerating. I would call this three lines. As there are 3 constructs here.

A million lines of Perl, was maintaining that part of the job description?

<comment><USER14> Yes, the position was for the build team, so I assume maintaining that beast was part of the job.

</comment></comment></comment></comment></comment></comment><comment><USER15> Android looks like a lot of fun, and I get a good feeling about it. So I decided to port Hecl to it.

I want to do a web thing in Erlang + javascript, but haven't quite figured out what... although <horn tooting> I actually started using Erlang a number of years ago.

</comment><comment><USER16> What I'm currently looking into, none of which is too new, is: Scheme (Gambit C), Lisp macros (On Lisp), concurrent-like programming with continuations and epoll, raw X Window protocol (i.e., not using Xlib after initialization), OpenGL/GLX, unconventional text editors (the editor part of Jef Raskin's THE/Archy). In a short term, I'm just scratching an own itch, but some of these technologies I want to learn for longer term projects.

</comment><comment><USER17> GWT, Android, Ericsson JSF MobileFaces, Metro web services using Glassfish, JPA (mapping to MySQL DBs), and Flash Lite are what I'm dabbling in right now. With the exception of Flash Lite, all of that is Java based... Meh.

<comment><USER18> hey it would be great to talk about coding on android, email me bkmrkr at yahoo.com

</comment></comment><comment><USER19> I'll admit what everyone else here is apparently afraid to: Flex/ActionScript 3.

I don't really see a future for MXML in it's current form but the rest of the stack--mainly ActionScript 3 / the SVG drawing API, Video/Audio APIs are definitely worth looking at. Some of the highest paying web development gigs are in Flash programming, and it's a lot less painful than browser programming (which isn't saying much).

<comment><USER8> Can you talk about it here please: <http://news.ycombinator.com/item?id=81768>

</comment></comment><comment><USER20> Currently playing with (separate of each other):

\- Android SDK (though it was kind of surreal to realize that I was coding Python for work and Java for play... @_@)

\- Cairo vector graphics (it's not that hard to get Cairo-rendered buffers into OpenGL textures (though you do have to un-premultiply the alpha values :P))

\- Working on a lightweight embeddable lisp compiler (currently hosted in Python). Stealing good ideas from Arc, so get coding, Paul! ;-)

\- Working on an interesting, erm, "lifestyle-enhancing" webapp in Django [one that already provides value to me just by having it for my own use!]

\- Pyglet (python multimedia and windowing lib)

For work:

\- Coding web apps in Pylons. (SQLAlchemy is a manly ORM that makes other ORMs look like babies' toys ;-)

\- Further investigating haXe and OpenLaszlo (did this for fun on my own a while back, but didn't have time to do much with either of them)

As you can see, I love to code lots and lots :D

<comment><USER21> hah, reading #1 made me laugh out loud, as I spent last night hacking android, and then come to work to slog away in python! How did this happen!

</comment></comment><comment><USER22> After working almost exclusively in game development for a big while; now I'm exploring all computer vision related technologies.

</comment><comment><USER23> Not really new at all, but the approach is: I started using just javascript to develop web apps - no server - the apps just interface with a server to get and post data.

That's fun, especially with jQuery, which I highly recommend.

<comment><USER24> We're doing a lot of this, too. Not to say there isn't a vast swath of on- server work being done, but a lot of new features we're developing are using the server just to serve up the JavaScript and collect some data from disparate sources.

<comment><USER15> What kinds of applications do you do like that, if you can talk about them?

<comment><USER24> Our software is an installable web application for web hosting systems management...so we have a lot of opportunities to do neat stuff--there are so many useful UI elements that could be added that would make the product more useful without requiring any additional information than what we already collect or create. We're currently building a "desktop" with ExtJS that'll have a dozen or so widgets for presenting various bits of information about the running system. The data already exists and is currently, mostly, presented in simple HTML and CSS graphs...but with a little tweaking we can make the backend spit out simple data structures in JSON and then display them in various dynamic ways.

The first one that is almost wholly free of server-side code is a "news" module that pulls a feed from our forums News category on our company website. ExtJS makes this kind of thing trivial (one of their example apps is an RSS feed reader that uses Google Gears). Other short-term bits will be converting all of our graphs to dynamic versions that change every minute or so. Bigger plans include a terminal emulator to replace the Java applet SSH client we currently include. Interactive terminals are trickier, and I'm not sure if we'll end up implementing the actual full terminal emulator in JavaScript or do most of the work server-side and just pass things down to the server (probably the latter at first). But, very short-term (like being released sometime this week) it's all just conversions of existing widgets to present nothing but JSON--it actually makes the server-side code remarkably simpler to not have any UI elements.

</comment></comment></comment></comment><comment><USER25> zoomable interfaces, erlang and functional programming, adaptive resonance theory, android, javascript, basic GIS, meta programming in ruby.

<comment><USER26> The ZUI was the worst idea in Raskin's book. You can't use muscle memory for the system because the target x,y positions and sizes change based on how zoomed in you are. Worse, the ZUI doesn't solve the biggest bottleneck in the existing GUI canon - asking the user to arrange and keep track of his own crap. His ZUI concept is like the mac or windows desktop, except now you get a magnifying glass.

The better method is search, or more accurately, comprehension, but this is a grail quest, and my solution isn't done yet.

<comment><USER27> I'm interested in your unfinished solution; you have any thing about it online?

</comment></comment></comment><comment><USER28> Machine Learning, especially Reinforcement Learning

<comment><USER29> me too... have you read Sutton and Barto's book? <http://www.cs.ualberta.ca/~sutton/book/the-book.html>

</comment></comment><comment><USER30> Lots of JavaScript, mostly with JQuery. Some Flash. Compilers, interpreters, & language design (which have always been a hobby of mine).

I'll also second what everyone else said about learning Lisp, Smalltalk, early windowing systems, UNIX fundamentals, and other forgotten areas of the history of computing. There're lots of good ideas in there.

</comment><comment><USER31> Haskell, compilers, interpreters.

</comment><comment><USER32> I missed coding, so I've been tinkering with the LLVM compiler infrastructure lately.

</comment><comment><USER33> Speakers that cost under $1 <http://www.householdhacker.com/>

(Its a troll, in case you don't know.)

</comment><comment><USER34> Parsers (they are new to me).

</comment><comment><USER35> machine learning

</comment><comment><USER36> News aggregators.

<comment><USER37> What are you trying to do with them?

</comment></comment><comment><USER38> I'm writing a compiler in C. It's exactly the kind of practice I needed to make up for years of slacking.

<comment><USER32> For what language?

<comment><USER38> C->MIPS.

It's for a class, but it's consuming most of my free time. The classroom instruction is good but we're largely on our own as far as implementation goes (though it has to be written in C or C++).

We only have to finish a subset of C, and I'm not planning to take it any further.

<comment><USER32> Neat! You should write your compiler in the same subset of C, so it can be self-hosting. ;-)

</comment></comment></comment></comment><comment><USER39> Flex/AS3 AS3 is interesting because it's client-side and quite fast compared to Javascript.

</comment><comment><USER40> I think GWT is very cool. I wouldn't attempt to write a big application in Javascript but I would do it in Java. Not only I am more familiar with Java, but I also appreciate having strong typing as a safenet.

</comment><comment><USER41> TV set top boxes, exploring haven't figured out how they'll work though.

</comment><comment><USER42> Mobile, mobile, mobile...

</comment><comment><USER43> The people working on the hottest stuff will not tell you what "new" technologies they are working on. Very little of it is ever "new", just new ways of putting it together.

</comment><comment><USER44> Erlang and D.

</comment><comment><USER45> I find the following technologies interesting:

1\. SERS 2\. MEMS 3\. Taggants 4\. Ground source heat pumps 5\. OLPC 6\. NMR/MRI 7\. ERP

Except for 5 maybe 7, not common topics of interest here.

</comment><comment><USER46> Silverlight w/C# clientside. I'm excited by the idea of replacing javascript. I'm still happy to use java backend, I love tomcat.

<comment><USER47> Please explain why you're excited about being able to use C# instead of Javascript. Personally, if I had to use C# for anything, I'd be very excited by the prospect of replacing it with Javascript.

<comment><USER48> Desktop UI, Enterprise Systems, Large-scale software. Would you rather write your web-app using Javascript that (hopefully) able to connect to a DB?

<comment><USER12> Javascript doesn't imply that it has to be client side.

</comment></comment></comment></comment><comment><USER49> has anyone started hacking away at OpenSocial?

<comment><USER50> Not me, but one of the bloggers I follow has been hacking away at it

[http://feeds.feedburner.com/~r/FractalsOfChange/~3/179825426...](http://feeds.feedburner.com/~r/FractalsOfChange/~3/179825426/opensocial- deve.html)

<comment><USER49> great article! forgive me for submitting it :)

<comment><USER50> E-gads! Karma slut! :)

<comment><USER49> i've been called worse

</comment></comment></comment></comment></comment><comment><USER51> tagclouds

</comment><comment><USER13> Erlang, Ocaml and Jocaml.

<comment><USER4> Now that I realize there's something called Jocaml, I want to learn it too.

<comment><USER30> Jocaml is fascinating. It's a concurrent distributed-programming language & runtime based on the join calculus (which if I had to describe it would be "pattern matching over processes", a pretty nifty idea in itself). I looked at it fairly briefly in college and it seemed really interesting, but wasn't mature enough to really do much with. Given how it's popping up now, that may have changed...

</comment></comment></comment><comment><USER48> The whole .NET 3.0/C#/ASP.NET3.5 and SQL Server 2005.

</comment><comment><USER52> getting up to speed on web technologies. jquery, css, javascript. facebook apps.

learning about business process modeling languages.

</comment><comment><USER53> lua

</comment><comment><USER54> Photo sharing

</comment><comment><USER55> Most people on this post are talking about languages. There could be other things more important, like AJAX (which isn't totally new), Amazon AWS, Google Android, but mostly it would depend on what you are trying to accomplish I guess ?</comment>


Ruby Arduino Development - <AUTHOR> http://rad.rubyforge.org/ <comment><USER2> Looking at the code, it is based on RubyToAnsiC

<http://ruby2c.rubyforge.org/>

A nice introduction:

[http://ruby2c.rubyforge.org/svn/ruby_to_c/propaganda/Ruby2C....](http://ruby2c.rubyforge.org/svn/ruby_to_c/propaganda/Ruby2C.pdf)

<comment><USER3> Thank god. The day Python and Ruby interpreters are being regularly run on microcontrollers... I will not be happy on that day.

Why, you ask? Recall if you will that most ATmega chips, for example, run at 8MHz. Also recall that the Intel 8088 (the brain of the IBM PC) peaks at 10MHz - AND it's 16 bit.

<comment><USER4> _sigh_

It's such a shame that the current embedded systems crowd keeps beating this dead horse. Performance is not the only metric by which to quantify the performance of a system.

Any engineer worth his salt knows that everything is a trade-off, and there are many, many projects where embedding an interpreter is a good choice. It can buy you things like design agility, memory safety (robustness, security), run-time linking (remote code updates), garbage collection (robustness), green threads (maintainability due to separation of concerns, memory-efficient if done correctly)

In terms of cost, an interpreting JVM will typically be 20x-100x slower than equivalent C code depending on the application (although technically C doesn't do automatic bounds checking and isn't type safe, so it's not really equivalent). Garbage collection often introduces pause times as embedded GC tends to be less complicated than server-grade, but you can still implement time-critical stuff in C. For example, the .NET/TinyCLR based Fez Panda board has no problems doing one-wire because of this. Finally, you tend to be less memory efficient because your high-level language might be OO, doesn't know about bytes/shorts/ints but rather just has the type 'Number', and because of GC.

If you blindly follow the 'performance is everything' mantra, you forget that there is a whole slew of applications where you really don't need 20MHz, and where things like robustness and security are way more important than real- time. The few extra K of memory for the micro might cost you a couple of extra cents, but it can save you a lot of development time. Depending on the volume this might be an appropriate choice.

<comment><USER3> I'm not a performance freak, it's just a question of available resources. Your Fez Panda board is an outlier with massive amounts of RAM and flash, and a very high performance core. That .NET embedded framework requires 256K flash, 64K RAM minimum.

Normally I wouldn't care in the slightest what language you use, but I guess you could say I am nervous that interpreted languages would be favoured due to popularity and familiarity rather than sound design decisions, and rapidly take over the embedded market.

<comment><USER4> Well you can run a VM in much smaller footprints. I can run Java on at Atmega128 for example, with multiple threads, GC, etc. Sun had a reduced JVM running on 2K MSPs (no GC, single-thread). It just depends on how much of the functionality you want, how much of a class library, and where you put the trade-off between speed and memory consumption.

As for features, the chip in the panda costs $13.44 in single quantities, and $8.13 in volume. An Atmega1281 costs $13.12 in single quantities, and $7.32 in volume. I can see how having a .NET runtime built into your chip with a class library to drive all your peripherals is worth a few extra cents.

> Normally I wouldn't care in the slightest what language you use, but I guess > you could say I am nervous that interpreted languages would be favoured due > to popularity and familiarity rather than sound design decisions, and > rapidly take over the embedded market.

I'd say C is currently favored due to popularity and familiarity rather than sound design decisions. Either way, why would you be nervous about global trends? The embedded systems world is easy to predict, it's always 10-20 years behind the rest. We'll be programming in JavaScript before long :D

source:

[http://search.digikey.com/scripts/DkSearch/dksus.dll?Cat=255...](http://search.digikey.com/scripts/DkSearch/dksus.dll?Cat=2556109&k=lpc2387) [http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&...](http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&name=ATMEGA1281-16AU- ND)

<comment><USER3> You're right on the price comparison. I don't actually use the ATmegas, they are just popular, which is why I discussed them. I personally prefer MSP430's most of the time, which can be had as cheaply as $0.50

</comment></comment></comment></comment></comment></comment><comment><USER5> Note, the latest release is from 2008.

Edit: "Do you run the Arduino development tool chain on an _obscure (i.e., non-OS X) platform_?" is a gratuitously condescending in my opinion. Since when's OS X the default/most popular/whatever platform for doing GCC development?

<comment><USER6> The project is under active development on Github: <https://github.com/atduskgreg/rad>

<comment><USER7> That doesn't look very active to me. Four commits over the last 2 years, with none of them touching actual code.

<comment><USER8> You aren't skilled in the art of using Github

<comment><USER9> What maxogden probably means is that if you look at the Network tab in github, you can see there are multiple active forks. This is the most active one I could find: <https://github.com/seips-net/rad>

</comment></comment></comment></comment></comment><comment><USER10> Might be nice for prototyping. I've never been a big fan of the Arduino programming language. It's a thin veneer over C that insulates newbies from "scary" things like port i/o bit twiddling, while not really moving the dial on language expressiveness or presenting a familiar face. Ruby has a shot at both of these.

That said -- this is pretty much unimaginable for my current embedded development projects, where C compiler tricks have been the name of the game for some time now. Add a feature, exceed the 8K program memory limit, find something to optimize, repeat. Injecting a Ruby-to-C compiler into this loop would be madness.

</comment><comment><USER11> I can't find a single reference to memory management, which is a really bad sign for a project using small chips. If I can't guarantee that the loaded program will not overflow, what's the point?

</comment><comment><USER12> What's the benefit? Can you leverage any Ruby libraries? Or is it Arduino development with Ruby syntax?

</comment><comment><USER13> It may get some flak, but I think it is a very cool project.

Dare I ask if a Python version will become available?

<comment><USER14> Check out Python-on-a-chip, p14p: <http://code.google.com/p/python-on-a-chip/>

Similar idea, although the VM in this case runs on the micro. Last I looked Arduinos had not enough RAM, but some similar boards like Teensy++ did (I actually contributed a proof-of-concept Teensy++ port.) However since then apparently lots of RAM-size optimisations have been added.</comment></comment>


5G Security - <AUTHOR> https://www.schneier.com/blog/archives/2020/01/china_isnt_the_.html <comment><USER2> Schneier is, as always, excellent.

My personal approach to 5G security is simpler. This is easy for me, as 5G doesn't bring anything I want to the table -- but it may not be so easy for others, so I'm not actually recommending it across the board.

I won't be adopting 5G at all until I absolutely have no other choice. Hopefully, enough years will have passed by that time that we'll have a better handle on what the security risks are and how to mitigate them.</comment>