Wednesday, September 9, 2015

Why copycats don't work

Over the last 12 month here in Miami we've seen a lot of tech start-ups action. New companies pop-up every week. New entrepreneurial programs and organizations are established. New incubators and accelerators come up.

However a lot of the ideas we are presented with are basically copycats of already successful companies. Things like "The Uber of XYZ service" or "A better, faster and more niche E-Bay" or "A more niche social media network" or "A more secure and we-don't-sell-your-e-mail-addresses-and-phone-numbers social media network" or a "Better Yelp combined with a MLM system" or "A safer Tinder" are crossing our desks every month.

While we admire the initiatives, the truth of a matter is these kinds of businesses will be difficult to grow. Here are some of the reasons for that:

1. They face fierce competition from bigger and better companies

It's is extremely difficult to divert current users of Facebook from Facebook just because you are telling them that you are not selling their data. People like Facebook and they got used with it. Despite security concerns, some defects and some pessimistic projections of naysayers Facebook's audience keeps growing and it will keep growing for a while.

Same thing with E-Bay and Amazon. Tough job to make people use an alternate platform just because it's cheaper or more niche. To convince them you need to throw in a tone of freebies, much more business value and- the most important thing- show credibility that you can scale, you won't crash at a certain threshold, you will do a better customer service job than them long term. If you do that, you will become an acquisition target anyways- which is not bad at all, if you can by all means you should sell.

And the idea of combining a Yelp type of service for fewer categories, operated by a new/unknown company that *combines* the subscription model with a MLM type of system is straight stupid.

2. They usually do not address the real pain or the actual need in the market place

See the real pain of Facebook's users is not that Facebook sells their data. I mean for some people that is important. But for most of them it's not because they don't look at their personal data as super valuable assets- which is why they keep signing up to Facebook despite all the privacy lawsuits and stuff.

Facebook's users would potentially benefit from more fun features, more engagement, an easier way to connect with more targets audiences, an easier way to to find lost friends (like me now, I am looking for an old friend I have not talked to in 17 years and I can't find him on Facebook, I wish Facebook had to way to find him for me by interfacing with other online services where he maybe a subscriber), more personalized stuff etc. So that's were would be a lot of added value for this type of business.

It is very important to identify the real issue / the real opportunity in the marketplace. Founders of copycats usually fail to do that.

3. They are generally not well executed as businesses

Execution is everything in business. Or almost everything. It's 99% of your business success. I'd say the idea and funds availability are under 1% in importance. How you run your business, how you sell, what you sell, to whom you sell, how well done your product is, how much word of mouth referrals you get and how much people like you and your company and perceive you as somebody who delivers a lot of value into their lives, all those are key elements.

The reality is that most of the founders do not execute well in business. They cut corners on product quality, they lack sales skills, they do not have the right relationships / re-sellers / distribution channels and are more likely prone not to be able to build critical mass.

4. They are hard to fund

Because some of these reasons (and potentially others) copycats are very hard to fund. Investors are very knowledgeable (many times they are entrepreneurs themselves) and they spot a copycat very quick. If you have a copycat and really believe in it, I'd say fund it 100% with your own money because it will be a hell of a job to raise them from investors.

5. They do not deliver true innovation

In the tech world innovation is key. Come up with something new and useful and you have a pretty strong play. But a copycat does not have the "meat" of the true innovation that was initially in place. Hence it will never trigger the respect and admiration of the initial true innovation.

And, of course, we are always presented with the counter example of ... Google. Google was founded at a time when five other major search engines existed and was still very successful. However people who say that tend to overlook that, back in the 1998-1999, Google was still a very early player in a relatively new and unexplored market (the market of search engines), that the Founders were data scientists who did a stellar job in categorizing "world's information"- a much better job than everybody else at the time and since then and that the company did introduced and very well implemented a multitude of innovative concepts such as the concept of page ranking. 

Back to Google the company was founded in Silicon Valley in a very unique and favorable moment in tech history- a moment that we will less likely see in our lifetime. Business wise Google got a little lucky too (as lucky as you can get with a lot of hard work and a good strategy) when their paid ads / Google Ad Words took off big time despite concerns of spam, security and invasion of privacy. Almost two decades after its inception Google (who employs some of the best engineers in the world) is still trying hard to innovate and to bring new products / ideas to the market place, most of which still fail (I don't know how many people realize how many products and services from Google's current portfolio are actually profitable- while everybody knows the giant success of Ad Words).

So I would advise for caution when comparing a lot of these new start-ups with Google.

I would stay innovative, humble and continue to try hard. Make less buzz and do more work.

Have a great day ahead!

Adrian Corbuleanu
Miami Beach, FL

Monday, July 6, 2015

On big data and data science

These days there is a lot of talk in the Miami start-ups and mid size organizations communities about big data. Usually looked at as something "new" and "cool" that you can do with your data, people ask you generic questions such as "Do you guys do big data?" or they even venture to state it as follows "Oh, I see, you guys do big data!".

I would like to clarify it right here: we currently do not do big data. While all our average projects collect and process significant amounts of data and while we do implement BI and Analytics, it would be a stretch to pretend that we are currently doing big data or data science.


Fig. 1 Big Data is a lot of Data!

I am writing this article to educate the public on what big data actually is, how it gets collected and processed, what kind of resources and technologies you would need to implement for big data, what kind of projects / initiatives is big data for and what kind of budgets is big data for. I will also touch on aspects of data science as many times data science goes hand in hand with big data.

This article does not want to be comprehensive however, if you are really interested in big data, it will give you a start point.

According to Wikipedia "Big data is a broad term for data sets so large or complex that traditional data processing applications are inadequate. Challenges include analysis, capture, data curation, search, sharing, storage, transfer, visualization, and information privacy."

Big data applications collect and process exceptionally large amounts of data, i.e. hundreds of terrabytes, petabytes or even exabytes of data of great varieties (not just alphanumeric data or binary pictures). These data are generated at great velocities and they have no guaranteed quality. Data sets are generally not easily link-able or immediately related to each other.

Examples of applications that involve big data are the ones under work in different Government Agencies (including the ones under the Obama's Administration Big Data Initiative), applications implemented by large consumer product or social media companies (where they are trying to understand consumer's behavior to increase sales), by car manufacturers (who collect a lot of technical data on their deployed fleets of vehicles in order to predict a component failure and replace it right on time), by national insurance companies, by telcos or by professional sports teams and franchises. Companies like EBay, Google, Facebook, IBM and SAP have the budgets and practical reasons to implement big data. GM does big data. And of course the Government does big data.

An example of an unusual or unstructured piece of datum would be a "like" triggered by a certain post on social media or a shortened url. How do you collect, store and analyze that in conjunction with other likes of the same (or of a different person) on the same (or on a different) type of post. Remember posts can be of any kind: pictures, videos, texts, binaries, urls etc.

The objective of the systems handling these data is generally to collect and process them, to correlate them and find patterns in these large amounts of unstructured data and to design predictive algorithms or software that, with a certain amount of accuracy, can predict the behavior of certain systems or processes.


For example @ CERN (the place where the web was born and which is actually a nuclear physics lab that hosts the world's most powerful particle accelerator) scientists run experiments that are trying to explain some of the secrets of our universe. Their big data playground looks like this: about 60,000 processors distributed in thousands of computers in more than 100 data centers across the Globe. They collect and process some 30 petabytes of data.

Fig. 2 Supercomputer
Weather it's a supercomputer like Pleiades or a massively parallel / distributed / networked system you will need very serious infrastructure to handle big data. Your average shared (or even private) cloud host will more likely not be able to handle big data projects. The reason is they are generally designed to handle general purpose business applications and lack the processing horsepower, memory and storage capacity to handle these kinds of projects.

Processing big data and coming up with relevant / useful results also involves specialized technologies. They sound like these: Hadoop (used @ Yahoo), MapReduced, Hive, PIG and MongoDB. Predictive analytics are written in packages like MatLab, Mathematica, RapidMiner or Pervasive. Machine learning mechanisms are written in things like R, dlib or ELKI. Your average MySQL database with some back-end php code will not be able to successfully handle big data. While you can implement some traditional scripting on the data collection & data communication side of things, you will need specialized tools and complicated formulas to dig into the data you collected.

On the business side, last year we had an interesting discussion with the CTO of the Dolphins at the Dolphin's Stadium. As they are currently running a Big Data initiative to collect and dig into data collected from fans to increase fans experience on the Stadium and to increase tickets sales, they were struggling with a very simple notion. As follows: "The big question is ... what question to ask the system?". And that's obviously what question(s) to ask and how to design this system in order to actually see a benefit in increased sales. So before collecting large amounts of data and designing, think about your questions and your objectives. Or maybe it will come out ... It will jump at you ... as you start digging into those quadrillions of bits and pieces .,.

Now, a few words about data science as it does relate to big data and it is many times used in conjunction with big data. Here we go, back to a simple definition, I quote from Wikipedia "Data Science is the extraction of knowledge from large volumes of data that are structured or unstructured which is a continuation of the field data mining and predictive analytics [...]."

So what are some of the things your programmers have to be competent in to say they are data scientists? Here we go, just a few of key concepts.

To do data science you have to know statistics. Concepts to start with are as follows:

- parameters estimations

- confidence intervals
- p-value

I will not bother you with long definitions but, just an example, "confidence interval (CI) is a type of interval estimate of a population parameter. It is an observed interval (i.e., it is calculated from the observations), in principle different from sample to sample, that frequently includes the value of an unobservable parameter of interest if the experiment is repeated. How frequently the observed interval contains the parameter is determined by the confidence level or confidence coefficient." [quote from Wikipedia]

Fig. 3 Graphical representation of p-value. Authors Repapetilto @ Wikipedia and Chen-Pan Liao @ Wikipedia

To do data science you have to be very familiar with cost functions:


- log-loss
- DCG
- NDCG

Here is a fairly intuitive (even if not that straight forward) explanation of log-loss or logarithmic loss according to Data Scientist Alice Zhen. "Log-loss measures the accuracy of a classifier. It is used when the model outputs a probability for each class, rather than just the most likely class.  Log-loss is a “soft” measurement of accuracy that incorporates the idea of probabilistic confidence. It is intimately tied to information theory: log-loss is the cross entropy between the distribution of the true labels and the predictions. Intuitively speaking, entropy measures the unpredictability of something. Cross entropy incorporates the entropy of the true distribution plus the extra unpredictability when one assumes a different distribution than the true distribution. So log-loss is an information-theoretic measure to gauge the “extra noise” that comes from using a predictor as opposed to the true labels. By minimizing the cross entropy, one maximizes the accuracy of the classifier."


And another explanation by Software Engineer Artem Onuchin:


"Log-loss can be useful when your goal is not only say if an object belongs to class A or class B, but provide its probability (say object belong to class A with probability 30%). Good example of case where log-loss can be useful is predicting CTR or click probability in on-line advertising: Google uses log loss as CTR prediction metric." 

Let's say you are collecting data on millions of posted pictures and you want to write an image classifier that can make the difference between a banana and a ... boat for example. We know that pictures are nothing but matrices of pixels with different colors and levels of illumination but we also need to implement the formulas to classify these objects. 

To do data science you also have to be competent in machine learning and be able to understand concepts like:

- classification
- regression
- ranking
- overfitting
- convex optimization
- trees

"Overfitting occurs when a statistical model describes random error or noise instead of the underlying relationship. Overfitting generally occurs when a model is excessively complex, such as having too many parameters relative to the number of observations. A model that has been over fit will generally have poor predictive performance, as it can exaggerate minor fluctuations in the data." [quote from Wikipedia]


To do data science you have to conversant in some of the following technologies and tools:


- R
- Python
- Mathematica
- Weka
- Kaggle

R is a specialized programming language and environment used in statistic and data mining. It is a fairly straight forward open source command line language which provides powerful statistical functions that do not exist in other programming languages but it's a "different kind of language" that the ones your average programmer is used with.


Fig. 4 Data Types in R by Assoc. Prof. Roger Peng from John Hopkins School of Public Health

To do data science you also have to have a good understanding of complexities of algorithms, things like:

- eigen vectors
- singular values
- PCA
- LDA
- Gibbs Sampling
- Bottlenecks

Complexity of algorithms is crucial when crunching tones of data and trying to find the ... un-find-able. No matter how many hardware resources you will have in hand (and hardware resources are never infinite nor cheap at this level) the problems that you will have to solve will often raise you up exponentially. And it's never good to have exponential algorithms running.



And, somehow, with all this science you also have to have a certain feeling on the expected behavior of the user, reasonable ranges, top-level engagement etc. Yes, data science is a science and an art at the same time.

So, please next time when you think big data, think in terms of exabytes of data collected and processed, sophisticated machine learning mechanisms, thousands of servers and storage, large Corporations or the Government. And think some of the most brilliant minds on Planet Earth writing predictive analysis code and millions of dollars in research and development budgets. [and, yes, maybe us one day too but not now :)]

For everything else that's "new" and "cool" please check out our website http://wittywebnow.com.

Make it a great day!

Adrian Corbuleanu
Miami, FL
http://wittywebnow.com

Note: To document for this blog I used online resources from the following sites. I thank them for making these info available.

1. http://wikipedia.com
2. http://quora.com
3. http://linkedin.com

Monday, June 22, 2015

New and old requirements on shopping carts and e-commerce solutions

As we have recently released a couple of shopping carts and e-commerce solutions, we have had a chance to validate some of the newer and older requirements when designing these kinds of solutions.

First off we will say that, while we occasionally design mid size marketplaces, most of our shopping carts address the needs of small businesses hence these are shopping carts with less than 50 products. We implement shopping carts in a variety of technologies ranging from Ruby on Rails gems to wooCommerce plug-ins for WordPress.

1. PCI compliance

The needs for PCI compliance are not new. The credit card processing industry had been implementing software security, specific procedures and standards for years. The bigger your company is and the higher the # of transactions you perform, the stricter the requirements are.

What is new is that we get requests from start-ups and other entities (such as educational entities) to provide PCI compliant solutions. That's usually a challenge because the budgets of these kinds of entities generally do not allow for detailed audits and specific procedures. Making a cart PCI compliant does not only involved packing their cart with a SSL certificate or passing the buck to a PCI compliant gateway (even if these things are steps forward to achieving PCI compliance). There are also specific training, internal procedures and manually procedures involved.

2. Products dashboards

Even smaller companies nowadays need the flexibility to add/change/delete products from their stores, edit prices and descriptions, update pictures etc. They also have to have the ability to do that using non-technical staff so they asked us to create product dashboards and management consoles.

3. Custom carts

From pictures to pricing, from layouts to integration with payment processors all of our carts are quite custom designed.

Our clients are asking for that rather than going with more generic (and often miss labeled as more secure or with a higher performance solutions such as Magento, Volusion or Big Commerce). We like that way too. There is no need to overload a small business with bells and whistles when they don't need them and actually can't afford them. Plus the effort spent on configuring a pre-packaged e-commerce solution is often times bigger than integrating a well done open source cart.

4. SEO friendliness

In the era of $25-$30/Google PPC more and more companies come back to the roots of SEO and organic search. They feel that investing long term on that web based real estate where they put their cart on is more important than driving immediate results by paying nightly prices in beach side hotels.

Hence most of the requirements we had for shopping carts lately involved designing the cart with SEO friendliness in mind. And that's everything, from how we call the pages, to how we put the copy of the text on the page and to how we name the pictures of the products. Meta tags too, even if they are lately less important than they used to be.

5. Pictures quality

Pictures quality is more important than ever. Unless you have a professional / superb quality / good size picture of your product, do not even think to put it up. In an era of minimalist websites and responsiveness it is a challenge to produce beautiful pictures that also load fast and scale well on all kinds of devices including laptops, desktops and mobile devices.

6. New industries / verticals

Interestingly enough, we have witnessed some new industries getting into shopping carts and e-commerce solutions. One of them is the education sector with quite a few schools implementing carts for parents to order uniforms or even contribute to school budget with direct donations.

As these kinds of solutions were traditionally adopted more by retailers, wholesalers or companies implementing market places for their own variety of products it is something new that we salute and appreciate.

Make it a great day!

Adrian Corbuleanu
Miami Beach, FL
http://wittywebnow.com

Wednesday, May 20, 2015

Maximizing ROI in software development

In today's competitive marketplace implementing software will necessarily deliver ROI for virtually any kind of business. That gets done by both minimizing the operational costs and by maximizing the market reach of your business product or service. I.e. by implementing a custom CRM and billing platform a company will save money with staff and by releasing mobile applications a company will increase their digital distribution channels.

But there is also a question of investing in creating the software itself. Depending on how you run the project and how well you work with your client, the same amount of functionality can be achieved in different amounts of time and with different amounts of investments (sometimes with astonishingly different amounts of investments). The worse a project is run, the more expensive it gets.

Here are a few tips from our own experience to maximize your ROI when implementing software. Some of these will be obvious, some others won't.

1. Assign highly specialized developers on separate components

Specialized developers write faster and more accurate than generalists. You want to have your database developer work on back-end, your APIs / web services developer write APIs and your front end guys focused on front end. It is a must for them to work well as a team and to communicate flawlessly and as a consulting business owner you should focus your efforts on recruiting them right.

I had the best results with specialized teams who had previously worked together on similar complexity (or higher complexity) projects.

And, yes, there are full stack developers out there who can do them all and they do it very well. They are great! However a lot of projects have enough complexity and require enough upfront bandwidth so that you cannot rely on one person only for any given project.

2. Work agile

Agility gives any project a lot of traction and optimizes implementation costs a great deal! By bringing requirements inconsistencies and defects up early in the processes and by continuously iterating and tweaking the code, you will release faster and with better quality.

I always used to give the example of this major telco project I was involved in. After six month of coding, production release and deployment the client changed a big portion of the requirements. Took us another three month to implement them.

Note that for the agility to work well a few things have to happen: you have to have a great development and business team (easy to work with, highly skilled and non-testy) and the client also has to be interested in working in an agile way as well (some of them are not, it's a culture thing).

3. Pull the most competitive rates per head for the amount of expertise

Weather you employ on-shore or off-shore resources always strive to get the best deal out of your per head developers rates. Important: that CANNOT be at the expense of lack of quality or lack of experience. An inexperienced developer is much more expensive than an experienced one.

4. Use pre-defined & pre-written components / modules. Integrate.

Pre-defined modules and components also give you a lot of traction. Imagine the project of a local school district where they need a web based CMS platform for their school with shopping cart and marketing capabilities. While you can write things from scratch, there are very inexpensive and easily customize-able educational related Word Press themes, pre-designed e-commerce carts such as WooCommerce and pre-written modules for events calendars. Plugging in and configuring these components will reduce the man hours with 60%-70% (!).

There are projects where the level of customization or configuration of pre-written components is higher than others. In those situations it is worth writing from scratch rather than integrating. However in most of the cases integrating saves money!

5. Constantly facilitate between the development team and the client

This comes back to agility. There is a tendency in certain projects for the development teams and the business side not to collaborate efficiently. It's your job as a project manager to keep communication flowing, eliminate road-blocks, mediate and negotiate, keep your developers away from distractions (such as distractions related to internal tech support or non-impact-full technical work items).

Reporting daily progress in an agile way with web links and tangible digital assets is also another great way to keep the client involved and get feed-back.

Involving the client in the decision making process of designing features (even if the client is not technical) is also a great way of collaborating with the client.

Make it a great day!

Adrian Corbuleanu
http://wittywebnow.com

Monday, May 11, 2015

After an eMerge Americas event

Last week we've been proud participants to one of the biggest tech events South Florida is hosting year around: eMerge Americas. Hosted in a prime location at the Miami Beach Convention Center, with more than 10,000 participants, with all the major tech companies boasting big booths, 100+ start-ups showcasing their new ventures, a Career Section and a number of celebrity speakers the Conference was a success!

Now that we were able to catch our breadth following up with contacts after the event, here are some thoughts we came home with from this event.

1. South Florida's tech market is definitely growing in initiatives

There were 129 start-ups participating in the start-ups contest. That's more than I expected! It is correct, some of them were from out of town but Miami was very well represented as well. It is a great thing to see young entrepreneurs putting together ideas and business plans and pitching. And it is a great thing to see crowds flocking and National TV Networks broadcasting the events.

2. The South FL tech investment community still looks pretty shy

While the initiatives are great and Miamians show very entrepreneurial, the investors community remains shy. Prizes of the $25k, $50k and even $100k of sorts will not drive talent to Miami fast enough to make it compete with major tech hubs like San Francisco, New York or Boston. Make it a million $ for a prize and then we are talking!

I spoke with a lot of very talented developers that I personally know: they would easily relocate to Miami should the opportunities arise! They are attracted by the weather, the relatively low cost of living and the good taxes environment but they look for the same things: great projects and great salaries.

Prior to this show this piece of information came in that for every single dollar invested in tech in Miami there are a thousand dollars invested in in tech in San Francisco ($14 mil. in 2014 as opposed to $14 bil. in 2014). That's a huge difference!

So I challenge the South FL investor's community to step up to the plate and significantly raise the bar in terms of invested amounts in South FL projects.

3. The tech talent looking for full time jobs remains scattered

While the entrepreneurs were great, the job seekers were shy. We participated in the Career Fair section. In two full days we gathered only about 25 resumes out of which only 2 people had the actual education and skill sets to be interviewed for a full time position.

This comes back to two avenues: one is the School's System in Florida- which can definitely be improved. And another one is the amount of capital investments that is poured in the local economy. The better schools and the more investments we will have, the more successful people we will be able to drive and the more innovation will happen.

4. We are in Miami- so we have to show off!

At that times it was funny to see how some people turned a tech event into a fashion show! Attendants showing up late and without an apparent interest in technology were showing off expensive clothing and apparel and looked like they were in a big hurry just to pass by.

5. We still need a major innovative driving force to take this City to the next level

I appreciated the speeches and keynote speakers: they are a necessity at these kinds of events. I love Manny Medina and I even like Pitbull. I am even okay with a Mayor talking here and there- even if I am not sure what a Mayor actually does for the tech community in a City like Miami.

But I wish more tech super stars were invited to talk. How about a Bill Gates or a Mark Cuban? How about an Elon Musk? They would have been inspirational!

So Mr. Manny let's try to bring over better quality speakers next time!

Along the same lines one thing Miami (and South FL more general) is still lacking is a major recent innovation story like the ones that people used to write when the first PC was invented in the IBM"s facility in Boca or when Citrix was founded in Ft. Lauderdale. I agree that things like growing and selling Teremark to Verizon for a lot of money was a great business success in South FL but I am looking for the next Steve Jobs! And the next Apple Computers!

Make it a great day!

Adrian Corbuleanu
http://wittywebnow.com

Monday, April 13, 2015

The power of integration

Integrating pre-written and tested components is a common practice in software development. When designing a large scale solution, in the interest of time and budget it is many times a very good idea to integrate pre-existing code rather than writing it from scratch.

Weather they are open source or white labeled / licensed these pre-existing components will help both the client and the developer.

Here are a few examples of commonly used pre-existing components:

1. Shopping carts

There is a large variety of shopping carts available on the market. They range from carts for small shops to enterprise level carts that can handle large inventories and large numbers of concurrent transactions. Shopping carts are generally easy to configure, customize and straight forward to hookup to most of the industry's standard payment gateways.

Here is an example of a popular Ruby gem that offers a shopping cart

https://github.com/spree/spree

Other popular solutions include Volusion, Big Commerce, Shopify, Web.com and Yahoo for Small Businesses.

2. Shipping and handling modules

While most of the shopping carts have a shipping component, there are specialized shipping and handling APIs that do a very good job. Those are good to integrate especially when you have to deal with international shipments and non-standard addresses formatting. They are also great if you do not have a specialized shipping and handling company and you want to be able to address complex postage and shipping requirements with in-house personnel.

An API that does a very good job with this is https://www.easypost.com/

Other popular shipping and handling apps are the ones offered by the popular carriers like FedEx, UPS and DHL.

A Drupal based module is this https://www.drupal.org/project/commerce_shipping

3. Chat clients

Chat clients are very popular nowadays. You will definitely get requirements to implement a chat client (and possibly a chat server as well) if you work in social media projects or projects that involve online support (including IT support).

Back in the hey days of dotcom you had to do all kinds of magic, open up and close all kinds of sockets and write your own chat applications. But nowadays you have them at your fingertips.

Well known chat clients are Userlike, Pidgin and Trillian.

4. Games

To engage their users base, nowadays a lot of the interactive online platforms and social media sites require the availability of online games or gaming platforms. While your shop may not be a gaming development studio, you still do have access to a variety of online gaming platforms that can be easily integrated in your solution.

Some of the most popular gaming platforms are Arkadium, GamezBoost and Gamer Launch.

From our experience integrating games in social media platforms does require some funds (as most of the gamers charge at the level of $5k/month for the service) but it is by far much less expensive and faster than developing your own custom games as a company. The gaming platforms are titles rich as well, some of them providing hundreds or even thousands of different games. Latest platforms are also mobile ready.

5. Calendars

A lot of educational, events based or marketing driven websites require online calendars implementations. Usually the staff has to be able to share their calendar, add/edit/delete events, send notifications and updates and integrate with other standard calendars such as Google's and Outlook. Since a couple of years ago more requirement are for all the calendars to be mobile ready as well.

You can embed Google's calendar in WordPress https://en.support.wordpress.com/google-calendar/ or you can use one of the popular open source calendar servers such as http://calendarserver.org/

6. Standard servers (network applications)

When working in network applications such as load balancers, L4_L7 traffic management devices or other similar software/hardware solutions you will have a need to integrate some standard network services such as DNS (http://maradns.samiam.org/), DHCP (http://dhcpserver.sourceforge.net/) or NAT (https://github.com/lontivero/Open.Nat).

In the old days we used to have to write our own load balancing code but the latest versions of linux kernel made it much easier with things like LVS.

7. Language and currency converters

When you work on localized websites you will more likely run into the need of implementing language and currency converters. There is a wide variety of plug-ins for all the major platforms including WP and Joomla plug-ins. They cover automatic site content translation in many languages and currency converters for all the major currencies.

Here are some of the most popular translation tools: https://wordpress.org/plugins/wordpress-language/, WPML.org, qTranslate, Stella. For currency convertors you have Google's, Oanda and Yahoo Finance.

We used language and currency converters in real estate sites that target international markets in addition to the US market. In Miami a Spanish plug-in is always a great idea to have as well.

8. Standard feature sets for social media

A lot of the current niche or business driven social media platforms use a standard set of features (on top of many custom ones that depend on the solution). They generally include profiles and bios definitions, photo galleries with captions, the ability to follow users, like and dislike content, post comments, pictures and videos etc.

There are many open source pre-written modules that support social media platforms. One of them is The Social Stream https://rubygems.org/gems/social_stream/versions/2.2.2. Another one is Networkx in Python. Jomsocial as well is a very popular framework to write social media functionality on top of Joomla http://www.jomsocial.com/.

For straight-forward, standard looking Content Managed websites with a responsive web design requirement people can also use standard professionally looking pre-designed templates. These templates are very inexpensive, very easy to customize and have a big advantage: they do not necessitate involving and paying a professional graphic designer.

Here is a link to a site we occasionally use to pick up templates from:

http://www.templatemonster.com/wordpress-themes/53484.html

Here are also a few considerations when doing research to choose a pre-defined component:

1. Security

No matter what plug-in you implement consider security and understand possible vulnerabilities. If the module is open source it is easy to review the code for potential issues. If it is not do your online and offline research on the company / group that provides the module. Even the big shops have vulnerabilities and some components are more secure than others. Do your due diligence.

2. Scalability

When you work on larger scale systems consider the effort invested in growing up a pre-written module in comparison to a custom one. If the effort to customize the module is larger, then stick with writing custom code.

3. Clean code & flexibility

Always review the modules code thoroughly to see how flexible and easy it is to be customized to your clients needs. I.e. a chat client is pretty standard but a custom DNS server may involve more customization and configuration. You want to work with clean modules, things that are standard written and using best practices.

4. Support and documentation

Always test the tech support of the company that provides the module and/or check the online forums / discussion boards of open source groups. Most of these modules are actively maintained by large groups of developers. Support and documentation tend to vary in quantity and quality.

As we do a lot of Content Management, Social Media and e-commerce software development we successfully use a lot of these in our daily endeavors and our clients are happy every time when we can save them time and money while maintaining the quality, flexibility and reliability of the delivered solution.

From a business stand-point we have seen dollar$ savings for the client, depending on the size of the project and number of components, from 15% all the way up to 40%(!) calculated for an average complexity 3-6 month project.

Make it a great day!

Adrian Corbuleanu
Miami Beach, FL
http://wittywebnow.com

Friday, March 13, 2015

3 business cases where software development gives you traction

As technologists we always whiteness-ed discussions like these:

"Have you considered Scala? It's Object Oriented and it overcomes a lot of Java's shortcomings!"

"Have you heard of the new xyz Google plug-in?"

"We don't like Windoze, we are open source developers!"

All these are fine discussions between developers but the business does not care. They want results. They want product delivered fast and with great quality. They want paying customers. They want great customer support and outstanding responsiveness to issues. And, more important, they want to understand why and how your solution will help their business.

So how we as developers tailor our day-to-day approaches to fuel business growth? In this blog I will discuss three real world scenarios.

#1 Affiliate marketing and payment system 

This company is a start-up running an outstanding Content Management initiative on a full stack platform with a full blast database, a sophisticated users management system, a responsive website and two mobile applications.

They have an opportunity for a participation in an affiliate marketing program ran by a national company. The national company is restrictive/controlling and they are imposing cumbersome leads generation and payments requirements. The leads will basically be generated from their site, their site has to process the payment for subscriptions and well then they will give us access to the lead so we can register the user with our website. Subsequent users (subordinated to a user they registered) registered directly with our website will have to re-directed back to their site for payment processing and a commission will be cut.

While the opportunity is good, coding for such a functionality is not straight forward and security mechanisms will raise the price of the ticket item for software development services.

Instead of pushing for a sale in what it could mean more of hassle for both our customer and us, we recommended working with other companies who do it right: will just send us the lead and let us process the payment and cut their commission from there.

This is a good example of a situation where, no matter of the technology, implementing a solution would not make business sense.

#2 Plug-in for Indiegogo campaign

Another start-up is running a crowd funding campaign. They designed an attractive Indiegogo package for a niche / affinity based social media solution. They need to have people contributing through Indiegogo and getting their perks for their contributions- which are basically different levels of subscriptions to the service and marketing materials from the company such as tshirts and hats. They need us the programmers get their mail addresses for them to be able to ship the product.

Everything is fine. Just that Indiegogo does not have an API for 3rd parties to work with. On top of that business requirements are that the company's store has to allow for artifacts purchases directly from the store as well.

This is another example where the technology that you use to implement the business requirements matters less. What matters more is the approach to plug-in Indiegogo's code into your site's code. So it's a work flow issue more than anything. You basically have to simulate an automatic login into Indiegogo, grab the transactions of the day & the tokens generated with them and pass them to the company's web store so people who contributed to the campaign get access to the system and get their tshirts shipped out.

#3 Mobile ready real estate document generation system

A local well established luxury real estate agency is looking to implement a custom document generation and management system to assist different parties involved in a real estate closing. These would be standard docs involved in a real estate transaction like sales contracts, disclosures, property appraisals, legal docs etc.

There are of course similar solutions on the market but they all lack different features that this realty would like to see: i.e. they do not have mobile support, they do not take social media logins, they lack certain stats and reporting capabilities.

While we were analyzing hard to propose a solution and we were all spinning our heads off talking databases, responsive design and mobile apps the client had a very simple and candid question: "What can we do better than these guys?" (they were talking about their competition that was already using a similar product).

The answer in this case was in our ability to support formal real estate docs generation from all kinds of devices including mobile phones, tablets, laptops and desktops. The customer was very happy with that answer and we immediately understood that getting too much into the technical jargon would have hurt the deal rather then helping it.

This is a good example where you as a developer know how to talk your client's language.

Make it a great day!

Adrian
Miami Beach, FL
http://wittywebnow.com

Wednesday, February 18, 2015

Social Media in the Software Development Business

Over the last 6-7 years Social Media became a part of our life. Weather it's Facebook, Twitter, LinkedIn, G+, Instagram, Pinterest or just older places like Digg everybody is on social media nowadays.

But how important is social media in a software development business?

I'd say results highly depend on the platform.

Here I will discuss things from my personal experience. I am not saying it will be like this for everybody. But there are definitely some trends.

1. Facebook

This platform is clearly oriented to the consumer. It is less business to business. While there are more recent solutions to target businesses in your geography my experience is that Facebook is not the ideal place to acquire new customers for a software development business. People are generally there to socialize / entertain themselves and not to conduct business.

There are two aspects I was able to identify where Facebook can be helpful though:

- social media back links and likes: more recently Google started to take those into account when they organically rank your site

- retaining and re-engaging your current customer base

We are not big on Facebook but we keep consistent with our company's general message across different platforms and so far we have good feed-back.

2. LinkedIn

LinkedIn is a great business-to-business platform to be on. People are on to do business, to look for jobs, to work on gigs, to refer contracts etc.

Historically we did a lot of business on LinkedIn and there is definitely more to do.

Keep in mind that LinkedIn is generally "slower" in responses than other social media networks. Being a professionals network obviously people don't have a lot of time to be on it but when they are, they are a great audience to send your message to.

So do not get discouraged if you do not see immediate feed-back when posting a picture, a blog or a video: they will come.

LinkedIn is also a great place to build reputation for your company through clients and professional peers referrals and testimonials. As opposed to other social media networks- which are more open- here you have the ability to moderate what is posted about you or your company which is normal for business and a very good way to do things.

There are also many online marketing tools that tie into LinkedIn to build prospects lists, enlarge your networks, gather more testimonials etc. While I tend to stick with the classic tools LinkedIn themselves offer + my standard Constant Contact account, I recently started to look into some of these tools as well.

Projects showcase section is great as well as it allows your company to show product they built.

3. Twitter

Twitter is a good fast tool to recruit software developers.

I've tried many things on Twitter including some paid / ppc advertising but that's about the only thing that worked well for my business.

There are many developers on Twitter and many of them know other people. If you have an immediate project to start interviewing for, it is a great place to attract talent without paying a recruiter.

You can also build some reputation / followers / back-links even though pretty much everything that's posted on Twitter tends to have a short period of life.

4. Instagram

It is not a social media platform suitable for the software development business.

5. Pinterest

It is not a social media platform suitable for the software development business.

6. Google+

I use G+ in conjunction with by blog. In about 8 month I was able to build a list of about 120 subscribers to the blog. It's a start.

G+ is not bad for a business- especially a software development business- you can moderate your comments, post articles, create back links for yourself and showcase expertise in your blogs.

A lot of the professionals I work with are on G+ as well (rather than being on FB) so it is a good way to build and enlarge your community.

In terms of attracting new business, I have not had much luck with G+.

How about you guys? What's your social media experience?

Make it a great day!

Adrian
http://wittywebnow.com

Monday, February 16, 2015

Back to agility

This week we are back to agility and agile software development. It is so important and it saves you as a developer so many headaches and your client so much money that it's almost like a must to talk a little bit more about it.

Today I would like to focus on two items: technologies that help agility and results driven behavior.

(1) There are actually technologies that help an agile process

I've been trying to discuss this topic during some agile events in town. I got little feed-back to it and I believe the reason is that most of the attendance is not technical- they are mainly projects managers.

I'll make a case there are actually technologies that help, if not even drive, agility.

Some of the them are Object Oriented Databases as opposed to tabular databases. By definition inserting a new field in an OO database will be more agile and easier to pivot with than when using a tabular database. OO databases, such as Mongo DB or Postgres, embrace late requirements changes, eliminate read locks and ensure atomicity and consistency in an efficient manner.

I won't assess for example that Ruby is "more agile" than Java or .NET because that won't make sense. But I will say that architect-ing a solution the right way can tremendously help your agile process. An example is building a framework that generates full stack marketing websites. Instead of writing each individual site as a separate solution (let's say on a Microsoft stack) you can make an xml that will define the behavior of each site in different market verticals. Such a framework will be much easier to maintain, adjust, change and re-test even with late / unforeseen requirements changes.

That is why I always say that the greatest agile teams I worked with are usually the greatest programmers too. Because they can write things in a smart way.

(2) Do results really drive behavior?

There is a lot of talk in the community about the business results that are supposed to drive an agile behavior. In other words if an agile teams shows better results in an Organization, other teams who are not doing agile are going to adopt that. Hence an agile culture will spread around your Organization.

I tend to disagree. My experience with agile teams is that they are either agile or not. They either have an agile culture / approach as part of their internal human structure or not. Of course you can educate people, you can train and draw guidelines but it just happens that most of the time "people who write code from right to left" are the most agile ones too.

So in my Organization I stress on recruiting the right people: the ones who kind of see agility as a natural, self driven behavior in software development rather than as a process or a set of rules.

I agree it is harder in larger Organizations where you have all kinds of teams and you have to deal with all kinds of people: many of them who you did not recruit to begin with. Showing some of them the carrot may not work. Showing some of them the stick may or may not work.

But what do you do when the customer is not interested in being agile? Then you are really stuck. Because you cannot impose it on your customer. Educating the customer many times works but financial analysis and bottom lines with $ signs will get you better results. Some customers just need to understand that working agile is in their own interest as well.

Make it a great day!

Adrian
Miami Beach, FL
http://wittywebnow.com

Tuesday, February 3, 2015

10 trendy statements in tech start-ups

When you work with the shakers and doers, with the entrepreneurs and with the tech community, it is always fun and exciting. You also periodically run into a series of stereotypes that make you smile.

1. Our app is part of the "ecosystem"


I hear that a lot stated in the context of mobile applications seen like some sort of "living system" as opposed to a network of digital assets- which is really what they are. While I have nothing against the marketing verbiage and it really sounds cool, I can't stop thinking like the science guy that I am.

And when it comes to science an ecosystem means only one thing and I quote from Wikipedia "a community of living organisms (plants, animals and microbes) in conjunction with the nonliving components of their environment (things like air, water and mineral soil) interacting as a system."

I think that, whoever chose to abuse this term, really only looked at the end of this sentence ... "interacting as a system".

2. I "uber"

It is new fancy way of traveling by car in busy cities. It is supposed to be cheaper and better than a cab and faster than a bike. Plus it's cool: it has a mobile app as well and everybody talks about it.

I don't know: I don't use that service. I drive my own car and it works pretty good for me.

3. We've been selected for an "accelerator" in San Francisco

Going back to Wikipedia: "Seed accelerators are fixed-term, cohort-based programs, that include mentorship and educational components and culminate in a public pitch event or demo day. While traditional business incubators are often government-funded, generally take no equity, and focus on biotech, medical technology, clean tech or product-centric companies, accelerators can be either privately or publicly funded and focus on a wide range of industries."

Everything is nice and dandy with these accelerators however what we find in the real world is that many of them are neither seed-funded nor mentored for success. 


4. Our idea / concept is unique: nobody has that right now

If your idea is really unique you should worry. It usually means one of these two things: you either did not do enough research to see what other ideas are out there or there is no market for your idea. Yes, I know, I know. Henry Ford invented the automobile at the beginning of the century.


5. I like "affinity" social media

There is a trend that shapes up towards niche or affinities based social media as a opposed to more generic social media. I happen to like the trend however I think that people like Facebook had a strong marketing and technical concept and, more important, they were industry pioneers. That is actually the reason they were so successful: they kind of played very well all the aspects of the business from concept to execution.


So my humble advice for social media entrepreneurs is for them to focus on execution of their concept: you need a great reliable and super sexy site, you need users involvement, you need to give people reasons to stick around and, very important, you need to be able to reach to a lot of people. Just the fact that their concept is niche will not make their business successful.

6. He/she is a bad-a** coder

This one I can't even spell out. Apparently it's a big plus to be that kind of a coder these days.


7. We are seed-funded

That in Miami usually means they have somewhere around $25,000 and $50,000. Sometimes less than that. Not really that much money if you think in terms of developing a product, getting an office space and starting some initial form of marketing. On the other hand what we see is a lot of great concepts / prototypes and sometimes even MVPs with a lot of potential. And quite a few experienced teams. Should those businesses be well funded, they would have a way better shot at becoming successful.

Lack of appropriate funding is currently one of Miami's biggest issues. It steps a lot on the break.


8. We are in an "incubator" in Miami

And here we are back to Wikipedia. "Business incubators differ from research and technology parks in their dedication to start-up and early-stage companies." Some of the things listed here are "help with business basics", "networking activities", "marketing assistance", "help with accounting/financial management", "access to bank loans, loan funds and guarantee programs", "help with presentation skills", "access to angel investors or venture capital".


And again all these things would be great if they were seriously implemented. But we run into businesses that do not have their act together with their marketing, they do not have a business structure (let aside they don't have an accountant), they don't even know how to make a presentation. And angel investors are rare and very conservative ... Many times they want to see finished products and signed up paying customers to invest ...


We network and market more than most of these start-ups: and based on their cash flow they should do double than what we do.


9. Our company's "valuation" is astonishing

How can you even dream to have a realistic company valuation when you are a start-up with a team of three, some seed funding and no product or market study? I suggest we get back to the basics of economics and do real studies / valuations. Then we will be looked at more seriously by seasoned investors.

10. I am a "serial entrepreneur"

You are a serial entrepreneur if your name is Elon Musk. Or Steve Jobs. Or Mark Cuban. Everybody else does what we are all doing: trying & re-trying things hard until we find something that works. So let's see things in prospective and remain objective: pivots are fun but they don't make you a serial entrepreneur.

Make it a great day!

Adrian Corbuleanu
Miami Beach, FL
http://wittywebnow.com

Friday, January 23, 2015

When people drive technology (and not the other way around)

As a technologist I've always been an advocate for technology. Technology that makes people life better, less expensive and more beautiful. Technology that breaks geographical and cultural barriers. Technology that creates jobs and creates opportunity.

Some 20 years ago, I actually chose a career in technology because I believed in the concept. And where others see technological obstacles, I tend to see opportunity.

I some fast 20 years we were all witnesses of some huge technological moves that forever impacted the world: the PC was invented, the Internet spread out, mobile devices got born etc. etc.

But, while some things that I call "technology popularization" and "democratization" happened, we keep seeing resistance to technology. We keep running into underfunded projects. And we keep running into places where technology runs people rather the other way around.

We believe people should create useful, easy to use, totally white hat, high impact, inexpensive technology. For other people. Period.

So, as people who create technology every day, we are taking this liberty to open up a dialogue with other developers, users and members of the business community.

We are raising awareness, as many times we see technology either underutilized, utilized in a wrong way or simply ignored.

It's almost like a manifesto. I would like to:

(1) Have people drive and create technology to the benefit of other people

When you create a mobile application that retrieves geo location aware data from a database, do it so you can make the user's life easier. Maybe he/she is a new in town and does not know where to pick up pizza from. Maybe he/she is looking for a doctor in his neighborhood. Maybe he/she wants to see menus and prices of all italian restaurants in a 5 miles radius.

We, the people (or the programmers), created that app to help other people. They, the people at Google, created that Map API that allows for that. They did it to help other people.

And, as long as these apps will work well and people will be able to find what they are looking for, we will all do well business wise too.

But never start with the business or with the money in mind. Have that as a reward of a very well done job. A job that helps out people.

(2) Never create technology just for the sake of technology: always address a problem

How many times have you ran into dumb, copied or redundant systems? Into crappy apps. Into things that bombard you with random ads? Or into things where you do not see any practical sense (such as a corporate CRM that requires sales agents to insert sales leads that already exist in another CRM of the same company).

How many times have you seen companies putting out products that serve no purpose or products they do not believe in. I've seen many. I've seen accountants web pages that look like a 3rd grader's work and do literally nothing. I've seen in-house databases that nobody ever used. And I've seen exotic features that people were literally afraid to touch. "NEVER push that button!" told me a sysadmin one time :)

Never create technology just for the sake of showing off technology. Create technology that serves a purpose: save people time, save people money, make their work easier.

(3) Be careful with letting previous developed technology "choose" your users or customers

"This is how we always did it." You hear this dangerous statement all the time. And in organizations of all sizes. The fact that you used to it bad, buggy and inefficient are definitely not good enough reasons to keep doing it.

Even worse is to recruit personnel or chase customers just based on a certain technology. "We are targeting Microsoft users." or "We only recruit for Windows programmers" are examples of very simplistic ways of looking at things. Nothing against Microsoft here (we totally use and build products based on their technology every day). Just an example.

So try and see the big picture. And do not be afraid to change technology if your users or customers will benefit from that change.

(4) Leverage the beauty and power of technology

Instead of starting with a generic / negative statement like "We do not need this type service.", "We do not have the approved budget to approach this." or "Our customers are not familiar with this type of technology" please take a moment to reflect on some things.

How can you leverage technology? Why investing in good well implemented, easy to use technology is never an expense and is always an investment? How can you make 1,000 times fold what you are making right now by implementing a technology?

I'll just give one example: a real estate company continues to market in their neighborhood by mailing out business cards and fliers. They spend countless hours having staff producing the written content, putting everything in envelopes, sticking stamps on and manually sending thousands of pieces of mail out. What if they had a mobile app that will actually drive potential buyers to their doors? How much more impact full and productive will that be?

(5) Remain curious and up-to-date with technology 

Technology always changes but that should not intimidate you. See, things are actually not changing that fast as they seem to be. There are somehow always the same fundamentals- try to understand those a bit and you will be able to easier see the big picture. There is always a database- somewhere. There is always a cloud- somewhere. You always have some apps- somehow. And you also have a smart phone, a desktop and maybe a laptop. The rest is just ... pushing buttons :) [of course I am simplifying things but it's something like that.]

So please, I urge you to remain curious and to keep learning and playing with new technological things. Weather it's your new iPhone and you just take pictures of your broken refrigerator parts to send them to your contractor or it's your new PC with a new awesome flat screen where you lookup things on the Maps, whether you are new on Facebook and you are trying to figure out how to post a "selfie" while staying in line for coffee or whether you want to see how you can enroll your kid in a new health insurance plan in less than 10 minutes there is always opportunity to learn and exercise technology.

Give technology a chance and technology will not let you down ...

Life with technology is absolutely beautiful Planet Earth! Let's keep it that way together.

Make it a great day!

Adrian Corbuleanu
Miami Beach, FL
http://wittywebnow.com