You Too May Be A Victim Of Developaralysis

David R. Lee:

The grass is always greener on the other side, but I believe it pays to know your options well.
After all, what good is a large toolbox when you only know how to use one tool?

Originally posted on TechCrunch:

Dear developers: Do you feel insecure because you’re only fluent in a mere eight programming languages used across three families of devices? Does exposure to yet another JavaScript framework make you shudder and wince? Have you postponed a pet project because you couldn’t figure out which cloud platform would be best for it?

You too may suffer from Developaralysis. Be afraid. There is no cure.

The panoply of options available to developers today is ridiculous. We’re choking on a cornucopia. Over the last few years I’ve been paid to write Java, Objective-C, C, C++, Python, Ruby, JavaScript, PHP (sorry) backed by various flavors of SQL/key-value/document datastores (MySQL, PostgreSQL, MongoDB, BigTable, Redis, Memcached, etc.) Do I feel good about this? Good God, no. Mostly I just feel guilty that I haven’t done anything with Erlang, Clojure, Rust, Go, C#, Scala, Haskell, Scheme, Swift, or OCaml.

I’m a victim of Developaralysis

View original 672 more words

How Facebook protects your account and passwords from hackers

David R. Lee:

Then you wonder how facebook has access to the websites hackers post to. Quid pro quo?

Originally posted on Gigaom:

Facebook provided more details on Friday how it attempts to protect the account information and passwords of its users whose private information unwittingly ends up on file-sharing websites that hackers typically frequent.

To keep itself informed of what stolen account information may be lurking on the web, the social network’s security team looks out for news on data breaches and then routinely scans so-called “paste” sites to see if any of the information on these sites belongs to Facebook users.

After gathering the stolen email and password combinations, the security team then funnels that info over to a program that can convert the data into a format that Facebook can understand. Because Facebook encrypts the passwords of its users in its own database using a hashing algorithm that turns user passwords into jumbled-up versions that only Facebook can recognize, the company needs do the same with the stolen credentials so…

View original 171 more words

The New Mobile-Cloud Enterprise

David R. Lee:

Haven’t tried BaaS, but sounds awesome

Originally posted on TechCrunch:

Editor’s note: Sravish Sridhar is the founder and CEO of Kinvey.

Enterprise IT is undergoing a platform shift from web-based, client-server systems to a mobile-cloud platform. This shift has caught the attention of all the major tech vendors who have either acquired or launched Platform as a Service (PaaS) or Backend as a Service  (BaaS) technologies to address this growing opportunity.

Facebook acquired Parse, PayPal bought StackMob, Salesforce launched Salesforce Platform Mobile Services, AWS released a suite of their own mobile tools, Pivotal launched Pivotal CF Mobile Services and RedHat just recently acquired FeedHenry.

PaaS has long been heralded as the future of application development. It provides developers with self-service access to an app server and scalable infrastructure, freeing them from dependency on their infrastructure teams. BaaS, however, takes this to the next level (or two) by providing mobile-specific features with context and abstraction, such as push notifications as part of “out of…

View original 594 more words

Should you choose Bootstrap or Foundation for your enterprise project?

To me, the answer is neither. The frameworks are great starting points, but as the project develops and requires more customization, the initial benefits of quick bootstrapping become negligible and even baggage. The worst part is that unused CSS and JS will hurt optimization.

There are libraries to strip out unused CSS but require regression testing.

I prefer a well-organized CSS framework such as SASS with breakpoints (not the library, but custom media queries and variables) with custom javascript as it will serve your project better in the long run.

Angular vs Marionette

I’ve been working with Angular (~6 months) and Marionette (~2 years) professionally with large applications, and I don’t understand why there are still comparisons where Marionette comes out on top. Yes, it’s that much better. Usually those that disagree have never tried Angular or “heard” things from others that “heard” things.

Marionette attempts to separate concerns, and it looks good for organization, but they are not complete separations and make debugging a nightmare especially when using Require JS. Developers of all levels will be pulling their hair out when working with a bug.

Coming from developing Backbone/Marionette web applications, Angular was initially difficult to grasp. But the difference is understandably valid as you develop applications that are overly complex. Once I got used to the Angular way, my mind was filled with frustration when working with Marionette applications.

Here’s my take on why Angular is better to use in a complex application – Angular’s view is the html page, and Marionette’s view is the View js, handlebars template, and html. I can confidently switch out the HTML file in Angular to create a brand new look with the same functionality, but I can’t say the same for Marionette. Minor changes in the html can require changes in the view js, and vice versa.

Marionette is based on jQuery so there are many existing plugins. When I started Angular, I needed to use something like Datatables.js for a sortable table. Forget the library, I was able to create a re-usable, sortable table in Angular within a day, and this was when I was just getting familiar with Angular’s API.

Minifying and Uglifying Angular could be difficult. I was tasked to minify and uglify an existing enterprise-grade Angular project that did not use Browserify or Require JS. It took me three days including one day of testing. It wasn’t too bad in terms of time, but it was painful looking for code that failed minification. If minification was considered from the start, this work could’ve been avoided.

So save yourself some trouble and pick Angular for your next enterprise-level project.

Build Profiles with Grunt (Node.js)

Just sharing a few ways of creating build profiles for web projects.

1. Client-side Javascript (Non-Grunt)
A boolean flag in the Javascript determines whether to load dev vs. prod files and resources. A bit ugly but an easy way to switch between multiple build profiles. The next two methods are cleaner and achieve the same results.

2. Cheerio Grunt Plugin
Use cheerio to manipulate the html file(s) to load dev vs. prod files and resources. Create a Grunt task that finds the CSS and Script tags and replace the href with the appropriate files.

3. Jade Templating Engine
Use jade to generate the html file(s) that load dev vs. prod files and resources. Use grunt-contrib-jade to pass in data to generate the files for the appropriate environment.