HN user

mtigas

1,036 karma

https://mike.tig.as/

Posts16
Comments80
View on HN
www.dailydot.com 10y ago

New Tor apps for iOS 9 headed to iPhone, iPad

mtigas
1pts0
www.propublica.org 10y ago

Verizon revives "zombie cookie" device tracking on AOL's ad network

mtigas
208pts94
www.propublica.org 10y ago

Verizon’s Zombie Cookie Gets New Life

mtigas
2pts0
www.propublica.org 11y ago

New Snowden Docs Reveal Secret Memos Expanding Spying on Foreign Hackers

mtigas
11pts0
fcc.squishify.com 12y ago

Protecting and Promoting the Open Internet NPRM | Condensed with Squishify

mtigas
2pts0
source.mozillaopennews.org 13y ago

Introducing Tabula, a human-friendly PDF-to-CSV data extractor

mtigas
137pts18
isc.sans.edu 14y ago

ISC Diary: a first-person sysadmin account of the June 29 storms

mtigas
1pts0
v3.mike.tig.as 14y ago

Django-medusa: Rendering Django sites as static HTML

mtigas
45pts22
v3.mike.tig.as 14y ago

Onion Browser (iOS Tor web browser, open source) now available in the App Store

mtigas
123pts49
v3.mike.tig.as 14y ago

Show HN: Onion Browser, an open-source iOS web browser w/Tor

mtigas
4pts0
bits.blogs.nytimes.com 14y ago

Google to Sell Heads-Up Display Glasses by Year’s End

mtigas
280pts132
v3.mike.tig.as 14y ago

Tutorial: Deploying Django on Heroku

mtigas
4pts0
mike.tig.as 15y ago

Pdb: Using the Python debugger in Django (A mini tutorial)

mtigas
3pts0
hackiswack.com 15y ago

“Hack Is Wack” - Snoop Dogg promotes Symantec's anti-cybercrime project

mtigas
3pts0
www.chiark.greenend.org.uk 15y ago

Windows applications making GRUB2 unbootable

mtigas
55pts33
www.google.com 15y ago

Method and apparatus for automatically exercising a curious animal

mtigas
2pts1

1) We’re not actually using Python for OpenCV, just ruby-opencv and possibly some bindings in Java/JRuby. (I think Python’s in the build instructions due to a numpy dependency in OpenCV. Though that might be specific to using Homebrew on OS X. Definitely looking into it soon.)

2) No plans at the moment, though that's an awesome idea.

I'm actually coming up on ten years of having the same blog: waaaayyyyy back when I started, I was editing all my pages manually. (Though blog posts didn’t have permalinks, it was just a growing massive "list page" that I’d break off and paginate every so often.) It started to become a pain in situations where I wanted to modify some basic aspect of every page: I’ve consistently gotten the itch to either re-architect or re-design my blog annually.

You really can’t beat a system that uses templates.

I'd tried my own Javascript-based content system in the past (where everything is based on one HTML page and JS loads the page content), but those add a bit more client-side complexity (not to mention search engine reachability).

I think the ability to regenerate an entire 500+ page static HTML site is pretty powerful and useful. (Also: who wants to manually update date-based URL paths every time there’s a new thing? http://v3.mike.tig.as/blog/2012/06/30/ http://v3.mike.tig.as/blog/2012/06/ http://v3.mike.tig.as/blog/2012/ etc.)

EDIT: As to your first question wrt "dynamic features I wanted": CMS and full control over my site's behavior and templates. It’s Django-based, too, so I can theoretically extend it with any features as necessary. (I also have plenty of "non-published" content that I can view on the local, "hot type" development server of my site, but the "renderer" file is only configured to upload blog posts marked as "live". I find that feature pretty useful.)

For my blog, static files (anything stored in an app's "static" directory, basically[1]) the like are handled transparently through django-storages' S3 support [2]. (The STATICFILES_STORAGE option in settings.) If you’ve used Django's staticfiles framework before, it’s pretty much plug-and-play.

For more dynamic file storage (say, using FileField or ImageField in a model), I believe django-storages would work, too. (Make sure you configure django-storages with the DEFAULT_FILE_STORAGE option set to S3 also.)

Assuming you’re managing your site via a local dev server (or a server that "hosts" the "hot type" version of the site), any time you "upload" a file to your local server, it'll actually upload to S3 (and any calls to "field.url" will actually map to the S3 URL). Not sure how well it'll work in all use cases: I haven't actually used FileField or ImageField myself in the django-medusa+django-storages usecase, but I have used both separately so I’m fairly sure this is possible.

This is a pretty darn good question though, so I’ll likely make a follow-up blogpost with a more comprehensive walkthrough regarding handling staticfiles and FileField/ImageField. Sometime in the near future.

Multiple sites/subdomains is a bit more complicated. I’d say you should probably use separate Django instances for each and render them separately. (For S3, you’d need to use separate buckets, anyway.) If they need to share data, you can configure multiple Django settings.py configurations for each site but still use the same source tree and local database. (See the Django sites framework: [3])

[1] https://docs.djangoproject.com/en/dev/howto/static-files/ [2]: http://django-storages.readthedocs.org/en/latest/backends/am... [3]: https://docs.djangoproject.com/en/1.4/ref/contrib/sites/

What if you don’t have control over your hosting environment? (Or don’t have an application hosting environment to work with? Or don’t want to provision one?)

What if you don’t want to use your own infrastructure? (See Ars Technica’s WWDC liveblog[1], which polls JSON files that are in the same directory and appeared to be periodically updated during the event, by some software that a reporter was using. Ostensibly because the feature is short-lived, super-high-traffic — likely thousands of concurrent users — and should be as low latency as possible due to the nature of the event.)

Not to knock on Varnish, because I use it on plenty of larger things and love it. I just think that there are usecases where you can rationalize not even having an application server to cache in front of.

[1] https://s3.amazonaws.com/liveblogs/wwdc-keynote-2012/index.h...

It was an itch I wanted to scratch. I’d been tempted to convert my entire (Django-based) blog over to something like Hyde[1], but wanted a bit more flexibility than the framework provided.

In most applications I work on, I lovingly use and abuse Memcached, Redis, and Varnish. If you’re working on an application that warrants using a live website and the whole application server shebang, then yes, I’d agree with you.

But for something like my blog and other non-dynamic websites which don’t update very much at all, I’m not sure if I see a pressing need for an application server. My blog previously ran varnish-nginx-uwsgi-django, but I was moving off of a VPS and it was the last thing left on that server. I got curious.

In the case of something like the L.A. Times’ Data Desk[2] projects (who use their own django-bakery app), if some views are very expensive/slow to generate, you can offload the work from the application server and do it in advance. (This makes sense if you want to just render everything out on a fast workstation or if you have a local database of several hundred gigabytes that you don’t want a live server querying to crunch the data.) It’s not out of the question to pregenerate HTML pages, JSON for visualizations, and simple image files (generated in PIL).

In any case: it’s not so much a question of “high traffic apps” as much as the tradeoff between (computation cost + server maintenance cost) and (app that is server-side dynamic or updates frequently). Most people don’t want to configure and maintain an app server (with cache layers and all) for a simple app and those that don’t seem to have uptime issues the moment they get any legitimate traffic: see [3].

So:

* I decided I didn’t want to maintain an app server for my blog, and my historical average for updates is about once every four weeks (or even more infrequent). * People seemed to be big fans of Jekyll/Hyde, Movable Type’s static publishing mode[4], WP Super Cache, etc. * I felt a Django-friendly analogue to those would be cool. * Like any developer tinkering with their own blog, there didn’t have to be a point.

[1] http://pypi.python.org/pypi/hyde/ [2]: http://datadesk.latimes.com/ [3]: http://inessential.com/2011/03/16/a_plea_for_baked_weblogs [4]: http://daringfireball.net/linked/2011/03/18/brent-baked

It’s very wget-like, due to the use of the Django HTTP test client — just slightly more elegant due to the programatic definition of what gets scraped/rendered and the addition of the "direct to S3" backend, which allows arbitrary mimetypes.

Glad you like it.

It's still a regular linearly-scaled chart, so I don't think it's too confusing.

Funny enough, I plugged this into Google Docs to see if I could re-scale to give you a comparison of the given chart vs a 0-based, 5-unit-interval chart and it looks like that's actually what they used to generate the chart.

https://docs.google.com/spreadsheet/ccc?key=0Ag2TNlAslc4GdFd...

Apparently the automatic scaling gives you the 8-based scale you see in their post. (And apparently you can't manually re-scale a Google Docs chart.) Using "stack" mode (I don't actually know what this option does for a single-series chart like this) gives you a 0-based, 10-unit-interval chart. (Again, not sure if you can adjust this to any other unit-scale.)

Slightly different scale, but I don't think it's a significant difference (though the "television" portion does appear slightly smaller in the automatic scale).

Charts like these are always susceptible to scale-skew and perception, and even simple charts (like this) can be debated on those subjective measures.

Haven't looked at the SPDY spec[1] too closely, but I think each side of the SPDY (or underlying TCP) connection would be able to idle-disconnect after a timeout or during a high-load situation. (i.e. to prevent idle connections from consuming ports/file descriptors)

So in the case you quoted, the server would also be able to explicitly tell the browser to start a new connection later. (It's not just a browser-to-server signal.)

Generally, most HTTP 1.1 (keepalive-aware) servers have a default timeout for those "persistent" connections[2][3] so this isn't actually a new problem specific to SPDY.

(Aside: simply consuming leaving open an idle TCP connection for later re-use doesn't necessarily imply that idle users will "DDOS" a server. Depending on the server software and OS, the cost-per-socket is low enough that many idle connections isn't actually a problem until you get to port and file descriptor limits — which, again, is already well-dealt with in plenty of other HTTP/TCP applications by using timeouts at all.)

[1] http://www.chromium.org/spdy/spdy-protocol [2]: http://wiki.nginx.org/HttpCoreModule#keepalive_timeout [3]: https://httpd.apache.org/docs/2.2/mod/core.html#keepalivetim...

Onion Browser developer here.

Covert Browser’s been around since November, but apparently doesn’t support cookies or POST requests. (Easy way to test POST by itself: try a search with https://duckduckgo.com/lite/ or the regular DDG with the "Address Bar: No (POST)" option, it doesn’t work.)

Also figured an open-source clone would be more beneficial/trustworthy to really paranoid folks (who could even go as far as build it themselves).

I’ll make it a priority to allow using bridges. Unfortunately, since Iran is known to block pretty much all Tor access (even regular, unlisted bridges), it may still not work.

Getting around this entirely would require obfsproxy[1] which wouldn’t work on iOS the way I have it set up due to the inability to spawn sub processes. (Tor client, when configured to use obfsproxy bridges, has to spawn an obfsproxy process to handle the obfusctaed traffic.)

[1] https://www.torproject.org/projects/obfsproxy.html.en

There’s another one (Covert Browser) that’s been in the store since November that’s got a few issues (lack of cookie support, lack of POST support) that render a lot of websites useless.

Generally I don’t think this is (on the face) any worse than a regular third-party browser app: Other apps (games are a great example) are free to implement custom communication protocols and there are plenty of unsavory / underground / illicit websites on the regular internet. Tor has a lot of legitimate and illegitimate uses, but that can pretty much be said of web-based communication in general.

Actually: should be available everywhere except France right now. (Selling encryption apps to France apparently requires an "export compliance approval" from the French government, and I haven’t gone through that process yet — primarily because I don't speak French.)

Let me know if that's not the case and I’ll double-check my settings in iTunes Connect.

Nice work.

I'd tinkered with the same thing and actually came up with https://github.com/mtigas/django-medusa but never got it clean/stable enough to talk about (though it now runs my blog to S3 where it's served now). Some of the same ideas, but very different execution of the concept. (Up to the apps to define a `renderer` to generate a list of URLs to render; management command then abuses the test client to fetch each one, which also allows storing header information like content-type when using a backend like S3.)

Baking in the build bits as part of the generic class-based views = very cool. Pun intended.

> They could have an option like "prevent users from posting my photos to other websites".

(EDIT: Totally missed the "Allow others to share your stuff" option that spullara mentioned. I still think that feature should probably be wrapped hand-in-hand with CC, though.)

Flickr already has this in the CC licenses, which are already more specific options than that. (Anything in CC is "allow people to use this elsewhere" to some extent.)

Honestly, this could all be made better by making the CC licenses more prominent and making the descriptions much more human-readable (for the non technical, non startup-y crowd).

The CC tool at https://creativecommons.org/choose/ is really close, but the wording still a bit too close to legalese IMO. Perhaps:

* Let other people use my photos as long as they credit me. (Yes is locked in) * Let other people use my photos on products and websites where they make money. (Yes/No) * Let other people use this for collages, Photoshopped mashups, and other derivative works. (Yes/As long as they use the same open license for it/No)

(With some sort of live-updating "here is the license you have ended up with and here is what it means" bit.)

I’m not sure if the licensing stuff shows up in the Flickr registration process at all, but maybe a reminder in the (relatively spacious) sidebar every few logins would help folks choose the right thing.

Then CC-license your content with the most restrictive CC version (non commercial, no derivative works, attribution required). That’s essentially what Pinterest's "anyone can repost anything that anyone has posted" sharing style is, anyway.

By using the full "all rights reserved/copyrighted" status, you’ve essentially told Flickr and any users viewing your photos that any use of that photo must go through you first.

What if I’m a professional photographer who doesn’t want my photos re-posted everywhere to, in essence, help Pinterest gain users make money? (Rhetorical, by the way; not a pro photographer and most of my photos are under the least restrictive CC-BY license. I personally think photographers could stand to get a lot more exposure via Pinterest.)

Not sure what HP's decision-making process was here, but sure looks like the team wasn't ready (or may not have even known if this was in play ahead of time). See comment by Dave Balmer (Senior Software Engineer, webOS Developer Relations):

https://github.com/hpwebos/webos/issues/1#issuecomment-30868...

> Meg's announcement was news to us in the webOS team as well. The HP executive team has been weighing a lot of options of late, but thanks for assuming all us in the trenches are that deeply "in the know", makes me feel warm and/or fuzzy. :)

The choice of a red-green gradient is probably not wise, considering the prominence of people with red-green colorblindness. ( Screenshot http://bit.ly/fcRHRk vs filtered screenshot http://bit.ly/frqlxP — Note the similarity of NYC and Jacksonville.)

Otherwise, I really dig the execution of the map.

EDIT: Cached the filtered screenshot so as to not hit the (relatively slow) colorfilter.wickline.org server.