HN user

wlindner

143 karma

staff software engineer and engineering manager at Pivotal

Posts6
Comments34
View on HN

Sure! Full Disclosure: I run frontend engineering for Zoomdata. Zoomdata is powering the backend, it's a server that connects to big data sources. In this case, Cloudera Impala, but we also connect to plenty of other big data stores like Elastic Search, Solr, etc. Zoomdata queries those big data stores, then streams the results over a websocket to visualizations. We have a web interface for analyzing your data in standard charts, but we also allow for total customization of visualizations (like for building this dashboard). Those visualizations can be embedded using iframes, or a more advanced approach using a javascript library. I used our javascript library to embed these visualizations into my own web based dashboard.

You can find out more at our website: http://www.zoomdata.com/

And we're hiring experienced JS devs in the bay area!

Thanks a lot!

Yes, it is a native ios app. For animations I used https://github.com/zrxq/UIView-EasingFunctions/

For animations, it's very important to use the right easing function to make it fit the feeling you want to evoke.

For instance, I used a keyframe animation for the login modal when you close it to not log in. It evokes a feeling of disappointment because it awkwardly swings down because you are not logging in :)

RE not using OAuth: I did that because users had a lot of trouble using the oauth login, so I basically just pass the users credentials to the oauth page. If you prefer oauth just press "Forgot Password" in the login popup and press the go back link, it will bring you to the standard Instagram login and will work the same.

Thanks! The app was designed by @alexsailer and developed by me, @wlindner.

I've always wondered the same thing, and I think it's because all of the location data in the Instagram app comes from Foursquare. It would be really competitive with Foursquare if Instagram could search locations, so I don't think Foursquare will let them. That being said, all of this could change with Facebook places instead of Foursquare locations: http://www.fastcompany.com/3028166/instagram-testing-faceboo...

The Losers of WWDC 13 years ago

for some reason, your comment made me imagine a silly conversation between two people:

A: "use google docs" B: "why? it doesn't do what I need" A: "yeah, but they're working on the right problem"

I see! That's pretty cool. I don't really use django, I basically just use app engine as a backend REST api for my backbone.js app. So, I check if the build directly exists when I'm first loading the app, and the template loads the minified version if it exists, and the unminified version if it doesn't exist. That way I can test the production version by running `grunt build` and refreshing the page. But I still get all the benefits of developing on the unminified version if I just delete the build directory and refresh the page.

It looks like this app runs the compiled main.js file (fishbone/static/js/main.compiled.js) even when you are developing in your local environment. Is it possible to run the unminified js code with App Engine in dev env and minified in prod? I set up a way of checking if my build directory existed and using it if it does, but it's still a little cludgy. Do you know of a way to do this with App Engine?

I've seen the UI improvements, but haven't needed to use them so I don't know how good they are. If those work: Awesome! In a way, that's a victory. If CL incorporates the best things about 3rd party sites into their own site, I think that's a big win for consumers. If CL refuses to allow 3rd parties to exist because they are skeptical of human nature. Talk about the ultimate irony: a site that lives off of people's willingness to trust strangers being unwilling to trust strangers themselves.

That's a very good point. 1,500 unique visitors is tiny. Hell, I will probably get more visitors to this single blog post. Forgoing everything about CL blocking me and such, I never did enough to promote the site. I started the site in 2011 and had little experience with promoting content. As a newb developer, I was leery of promoting something I created. What if it broke? What if people didn't like it? When in reality, I learned over time, that most people frankly don't care. And that's not a bad thing.

The past few years I have been learning over and over: ship it, get feedback, improve, repeat.

So, getting back to how they blocked me. If I understand correctly, craigslist blocked any HTTP requests from the Google App Engine User Agent. HTTP Requests from Google App Engine always append 'AppEngine-Google' to the end of the User Agent (http://code.google.com/p/googleappengine/issues/detail?id=34...).

You can recreate this block by doing this in python (you need the amazing python requests library, so install that): import requests

r = requests.get('http://craigslist.com) print r.status_code

This should print 200 and you're good to go.

Then, try it with the 'AppEngine-Google' in the user agent: r = requests.get('http://craigslist.com, headers={'User-Agent': 'AppEngine-Google'})

and r.status_code will return 404

bingo bango, you've been blocked. I could have just moved off of Google App Engine, etc. but I would probably be faced with a similar fate as Padmapper if I ever got any kind of sizable user base.

I created this gist: https://gist.github.com/wlindner/4752122 since the python code formatting is wonky