HNHacker News
TopNewBestAskShowJobs

sghael

753 karma · joined September 18, 2009

sghael@activeinterview.com @sghael on twitter
submissionscomments
sghael··on Bad numbers in the “gzip beats BERT” paper?
The convention should be to use 1337 as your seed, and disclose that in your publication.
sghael··on Ask HN: Who is hiring? (September 2016)
Localytics | Boston | Front End, iOS, Android | ONSITE Localytics provides a mobile engagement platform for many of the world’s top app publishers including ESPN, Grindr, Periscope, and HBO. Our customers rely on us to keep their mobile users happy and engaged. We provide tools to drive great app experiences including push messaging, mobile analytics, predictive analytics, and individualized in-app experiences.

We are hiring front end engineers! We have a modern front end stack (ES6, React, Redux, Webpack) and a history of front end thought leadership and open source contributions.

We are also hiring mobile engineers with a focus on Android and iOS development. We build tools for our fellow mobile developers and write code that is deployed on billions of devices around the world.

To apply or learn more about either opportunity send an email to jobs@localytics.com Check out our engineering blog: eng.localytics.com

sghael··on Goodfilms Goes Mobile
Also looking forward to the technical writeup.

Not sure if it's just me, but when touching the menu controller on the top left, the dom slide over to reveal... nothing. Also, general weirdness using the gear button to change selection between all/enqueues only/ratings only/reviews only. Selecting something other than all does nothing and doesn't persist.

I'm on Android 2.3.3. My Touch 4g slide. Stock browser.

sghael··on Why Instagram is so fast at uploading photos
The photo isn't store in a database. It's stored on S3. They are not backing up S3, so this concern is misplaced.
sghael··on Another EC2 outage (yet AWS dashboard says no error)
Could you give a little more detail on your setup? I'm curious how others are designing around these issues.
sghael··on Android Cloud to Device Messaging Framework - Google Projects for Android
We're using C2DM at Ravid (http://getravid.com).

In fact, we open sourced our C2DM Ruby Gem: https://github.com/sghael/speedy_c2dm

sghael··on [dead]
This is Sandeep (co-founder of Ravid). My co-founder (keithba) and I found that sending private, asynchronous video messages on mobile devices is way more difficult than it should be. We created Ravid to solve this problem.

Note: US-only for now & requires a phone (so no tablets.)

The stack & tools:

  * Rails 3 (MRI) for our API servers.  
  * Worker nodes running Sinatra (JRuby) w/ Resque
  * Monit for monitoring services / Fabric for quick provisioning
  * The Android client is typical Java (using IntelliJ)
  * iPhone development w/ Monotouch! 
  * S3 for storage, and our public website using Jekyll
  * C2DM message delivery (our Gem: https://github.com/sghael/speedy_c2dm)
Lessons learned so far:

- Fragmentation on Android is a b. Especially when dealing with hardware stuff like cameras, expect to do a lot of device specific coding. Front-facing cameras are a perfect example. Gingerbread solves these problems in theory, but not in practice.

- Uploading video files over mobile connection is non-trivial (duh) - We've put a lot of work towards reliable and efficient uploads and downloads (intelligent packetization, retry logic, etc). We solve for the "elevator scenario". User sends a message, but steps into an elevator half way through delivery. Aside from Gmail, most mobile apps suck at this.

- On the positive side, 4G+ speeds are really impressive.

- Creating a portrait oriented camera application for Android is way harder than it should be (really poor API implementation around camera rotations). Contrast to iOS where it's super easy.

- UX matters - A friction-free UX required a lot of work. We had many alpha testers (both family and friends & paid services like usertesting.com/mobile) that helped us find the sticking points.

We'd love your feedback on anything!

sghael··on Monroe or Einstein? Instant eyesight check.
Images are just signals as a function of 2D space. So you can use the 2d FFT: http://fourier.eng.hmc.edu/e101/lectures/Image_Processing/no...

Another idea to grok: a checkerboard pattern image where every other pixel row and column are alternating full black and full white represents the "highest frequency" image possible at that sample rate (pixel density). This is the 2d equivalent of an alternating sinusoid +1,-1,+1,-1, etc

sghael··on Lightsquared network causing GPS interference.
That seems like a non-sequitur. Based on the article, LightSquare isn't an application of GPS. It's a wireless broadband network that just (unfortunately) happens to f with GPS signals.
sghael··on Rackspace cloud beats Amazon EC2, by a lot
Redundancy is insurance. By the nature of being there it's taken advantage of
sghael··on Ask HN: Anyone on HN running a web startup with 50K+ a year net profit?
wow, extremely slick. Are you using any specific UI/design framework to tools to create such a polished look/feel? Or totally coded from scratch?
sghael··on How to construct a web developer in twelve months
actually 9 mom months. so 1 month with 9 moms working on it.
sghael··on How to construct a web developer in twelve months
This is the first thing i thought as well. Build should be #1. The reading you do should directly support your building (finding help on HN or SO that help you solve the specific problem/bug at hand)
sghael··on Want to move fast? Just do this
back now.
sghael··on Want to move fast? Just do this
Sorry the server is on fire right now... got a tweet from smashing magazine. Working to bring it back up.
sghael··on Want to move fast? Just do this
Great catch. Although, in my defense I'm always looking to save time so I just used out of the box settings on the wordpress "Platform" theme. If you're starting from scratch on your own site, dont make this mistake :)
sghael··on Weekend deployments are for chumps
I agree. My other thought was 'isn't there a staging server in there somewhere?' Something that is near identical to production, with fake production data, etc, that could surface the problem before a customer sees it.

btw, props to Fog Creek and OP for airing their dirty laundry. They take some heat, but in the end we all learn from it.

sghael··on Best practices for JS and CSS organization
this is an interesting point (I've up-voted you).

But my gut feeling is that it doesn't matter. While I don't have any experimental data, I have to imagine this rendering penalty is in the noise of page/site performance. Asset packaging, gzip, using front end static server, etc are probably orders of magnitude more important for page rending speed than DOM traversal of CSS selectors.

sghael··on Show HN: Phoneify - 20 hours with Rails 3 & Twilio
I think its a better user experience to always show the number on a screen. Otherwise the user has to listen to the computerized voice recite the passcode, and they have to memorize it before punching it in.

This way, temporary memorization of passcode is avoided in both cases. The passcode is always rendered to pixels (computer screen or phone screen).

sghael··on Show HN: Phoneify - 20 hours with Rails 3 & Twilio
I'll soon be running on multiple (2 min) servers in different locations, for availability. Will probably stick to Linode. I use Webmin to monitor all processes and get realtime alerts if something amiss occurs.

Performance wise, there aren't many bottlenecks right now. Switching in Resque for my job queue (replacing Delayed Job) will make everything a little faster. If the queue ever starts to get large, I can quickly fire up another server as a dedicated worker.

I am leveraging AWS Cloudfront as a CDN for the widget JS, so the widget will load super fast for everyone. I offload all static assets when I can. Google CDN for JQuery.

The only immediate point of concern is the real-time API. That will soon have some throttling/limits on it to prevent abuse. I highly prefer people use the Post-back method to get notified of verifications (push is always better than poll).

As for proving reliability, I'm thinking of putting up public Pingdom reports for transparency.

sghael··on Show HN: Phoneify - 20 hours with Rails 3 & Twilio
Phone numbers are less disposable than email addresses (generally speaking), and thus you are less likely to have fraudulent/shady transactions occur on your site if the user is phone verified.

This may not be super important if all you want to do is prevent lowly Forum spam (ReCaptcha may be all you need in this case). But phone verification can be particularly useful when the cost of fraudulent transaction is high (like user purchasing goods on your site with a stolen credit card, etc).

As an aside, I saw Amazon and Craigslist now use phone verification for more critical parts of workflow. Which inspired me to build Phoneify as a JS widget than anyone could use.

sghael··on Show HN: Phoneify - 20 hours with Rails 3 & Twilio
Ryan Bates / Railscast for lots of useful Gem reviews.

Other than that its a lot of "I don't want to write this..."; Google: "[thing I don't want to write] gem rails 3 github"

sghael··on Show HN: Phoneify - 20 hours with Rails 3 & Twilio
And this is why HN rocks. Thanks Daniel
sghael··on Show HN: Phoneify - 20 hours with Rails 3 & Twilio
I can't go as far as saying that I prefer one more than the other. They're both pretty awesome in their own way.

I'm actually way more comfortable with Django, but the Gem eco-system with Rails is amazingly mature, and the Rack based approach of Rails 3 seems to have positioned the framework really well, architecturally. I found Ruby/Rails idioms pretty confusing when beginning. But most of the learning curve w/ simple projects is really about "where stuff lives", and that's the same effort to learn in any framework.

Django pros: Admin, Python, Explicit model definitions (not via introspection like Active Record), South > Rails migrations (IMO), easier to create relational models, query syntax rocks.

Rails pros: Gem ecosystem, Passenger, Capistrano, Haml/Sass, Mailers

re: Pricing - TBD :)

sghael··on Show HN: Phoneify - 20 hours with Rails 3 & Twilio
You account balance is purely stubbed out. Right now there is no balance tracking (so it's basically free until I bake that in).

I probably should have put some thought into pricing before posting on HN, but pricing is one of those eternally difficult things so I punted for now.

International SMS verifications should work, but some people are currently reporting issues with that. No voice verification for International planned (for cost reasons).

sghael··on Show HN: Phoneify - 20 hours with Rails 3 & Twilio
I'm using Linode server w/ pretty standard Cap deploy. Using jammit and minification tools to pre-process some assets (like widget js code).
sghael··on Show HN: Phoneify - 20 hours with Rails 3 & Twilio
It should work, although I have only nominally tested international numbers. What country are you in?
sghael··on Show HN: Phoneify - 20 hours with Rails 3 & Twilio
absolutely --

gem 'rails', '3.0.4' gem "mysql", "2.8.1" gem 'capistrano', '2.5.19' gem 'capistrano-ext', '1.2.1'

gem 'awesome_print', '0.3.1' gem 'closure-compiler', '1.0.0' gem 'compass', '0.10.6' gem 'devise', '1.1.6' gem 'fancy-buttons', '1.0.4' gem 'jammit', '0.6.0' gem 'jquery-rails', '0.2.7' gem 'haml', '3.0.25' gem 'hpricot', '0.8.3' gem 'hominid', '3.0.2' gem 'kaminari', '0.10.4' gem 'postmark-rails', '0.4.1' gem 'ruby_parser', '2.0.5' gem 'twiliolib', '2.0.7' gem 'uuidtools', '2.1.2'

group :production do gem 'passenger', '3.0.4' end

sghael··on Show HN: Phoneify - 20 hours with Rails 3 & Twilio
I'm using Twilio defaults -- Which means International is SMS only, and US+Canada works with Voice or SMS.
sghael··on Show HN: Phoneify - 20 hours with Rails 3 & Twilio
I wrote Phoneify over the last couple of weeks using Rails 3, Twilio and a variety of Gems, putting in about 2 hours per day. I'd love any feedback from the HN community on any aspects of the site (design, API construction, documentation, marketing, pricing which is TBD).

On a related note: I have to say that I'm really flying with Rails 3. Typically I roll with Django, but have been super impressed with the Rails 3. Feels really clean, and there are some Gems that make the more mundane parts of the webapp construction fun and agile: Haml/Sass, blueprint, Fancy-buttons, Devise.

I'll probably write up a blog post soon on all the tricks & shortcuts I used to get this off the ground. Many of the shortcuts have to do with design and layout, and less so about backend coding.

Page 1 of 3Next →