Known IssuesPinMyScreen uses Chrome’s built-in screenshot functionality (the same one that’s used for the ‘most visited’ page you see when opening a new tab. This, for security reasons, prevents us from screenshoting any sensitive data that might exist within secured pages or Chrome web applications. As a result, not every website can be shot, and you’ll sometimes find that the extension sends an empty image onto the Pinterest ‘pin this’ form. The process of screenshoting a webpage requires a roundtrip request and response with our server. You should note that we do not keep any images or any other sort of information on those servers or anywhere else. As opposed to many other Chrome extensions, I’ve chosen not to use anonymous analytics as well, so no data on your actions is logged at any stage. However, communication with our servers sometimes takes a bit longer than expected. You should note, that if you clicked the ‘pin this’ button on your browser’s toolbar, the request was sent and the pinterest form will appear in a few seconds time. This however doesn’t always happen fast enough, and there isn’t an indication that the request is in a processing state. If I’ll hear a lot of complaints from people about speed, I’ll transfer the servers onto Amazon’s cloud services, so if you think that there’s place for improvement, just let me know.
Bug Reporting and SupportI’m always available to hearing feedback over the extension, be it a positive or negative one, so don’t hesitate. If there’s anything you need help with, just send me an email to me at shayacrich dot com. Visit our page on the Chrome WebStore to add the extension to your browsers.
Cloudinary’s documentation states that their client side libraries can automatically detect the protocol used in a page and generate HTTP/S urls for the image tags accordingly. This, of course, doesn’t apply to server side code, for which there’s no apt documentation on this matter.
In Cloudinary’s Django library, there are three ways in which you can define your site specific parameters:
- A dictionary called CLOUDINARY that you can set in your settings.py.
- The CLOUDINARY_CLOUD_NAME environment variable.
- The CLOUDINARY_URL environment variable.
Although not mentioned in the documentation, the CLOUDINARY_URL environment variable can take query paramters, and these would be added to the cloudinary object that generates the urls within the Django templates. So to make sure that all requests to Cloudinary are made with HTTPS, all you have to do is set the CLOUDINARY_URL variable with the query parameter ‘secure’ and the value ‘True’, like so:
Just make sure to replace the fake API key, API secret and cloud name I typed above with your own.
This approach is not so great, though. It forces us to make sure we include the extra query param if we’ll ever need to change the Cloudinary URL in the future, and because it’s not in the code, we can only have all our pages transferred securely or none at all.
An alternative would be to use the CLOUDINARY dict that we can set under settings.py, but that method has a disadvantage as well – it doesn’t play nicely with the other environment variables. In fact, Cloudinary’s Django library regards the three approaches specified above for entering site preferences as exclusionary, so if we set the CLOUDINARY dict under settings.py, the CLOUDINARY_URL will not even be looked at. Considering the fact that under platforms such as Heroku, an environment variable is the preferable route, we’re basically left with nothing but bad choices.
Luckily, the cloudinary object used to generate image links is just python code, the intantiation method of which takes keyword arguments that would be added to the same dict used for storing the site specific values from the inputs mentioned above. So to set Cloudinary to use secure URLs, all that’s required are the following two lines in your settings.py:
import cloudinary cloudinary.config(secure=True)
That’s it! Your Cloudinary URLs will now always be loaded with HTTPS. Because this is just python code, you can alter it to use secure or unsecure URLs according to different views (just make sure to do that inside view functions and not in settings.py).
Socialization of risk
Established companies no longer outsource just the development of new products. Now, they outsource the ideation and planning stages as well. Out of a few hundred teams working from basements throughout the world at any given moment, only a few would reach good results. An established company can choose to only acquire these few, and save up on the costs of trying to innovate internally.
To the economy at large, this isn’t good at all. Established companies no longer spend enough resources on advancing innovation, because they can mitigate the risks of failure by transferring these risks to individuals. Most of these individuals lose. And so, on top of the loss in potential innovation, an important portion of the workforce is busy at work building things that would amount to nothing instead of doing productive work that produces real goods that people can use.
Seizure of public funds
In the U.S a lot of the money in hands of VCs come from people’s pension funds. In Israel, where I live, a large portion of the VC industry is funded by the government. In both cases the money is poured into two main venues – wages for highly skilled workers, and fees paid to a few platform owners – Google’s Adwords, Amazon’s Web Services, Apple’s App Store, etc. In all of these cases, money is being poured from the regular economy with its normal wages to the high tech economy with its disproportionate wages.
A built-in lack of innovation
The startups favored by VCs are those for which there’s already a precedent and a clear business model, i.e not the really innovative ideas, but small improvements to existing tools and services.
There’s an alternative to the startup approach:
- Just build the things you think are most likely to be helpful to other people.
- Build tools in the evenings and on weekends and holidays, and whenever you can.
- Keep in mind that anything for which there’s a clear business model and monetization strategy has already been built. Instead, build things people would find helpful, no matter what the profitability of it might be, and no matter if it can scale.
- Build for your own sake, instead of working for the sake of potential future income.