Monthly Archives

August 2018

Pros And Cons Of Building Your Website With WordPress

By Development, Marketing, Mobile, MVP, Security, Startup, Tips & Tutorials, Tools, WordpressNo Comments

WordPress as a web building tool has built its reputation as providing amazing features specifically in the world of CMS, powering over 75 million sites and almost 23% of the World Wide Webs’ sites. However, despite its popularity, WordPress has drawbacks as a website development platform that you should be aware of before jumping on the bandwagon. Being informed is one of the most important factors in deciding where and how to build your site.

 

A few of your options for building and designing your website:

 

Website Editor

(Wix/Squarespace or similar solution)

Website editor, easily learned, drag and drop designs, less customization, small sites

WordPress

Website builder, edit and manage content through admin access, customization limited to WordPress support and technical capabilities, learning curve

App development

Full development team/developer, Fully customizable, Supports large, complex sites with high user traffic

Some Things To Consider

 

Typical WordPress use

WordPress is largely known for its CMS (content management system) capabilities, but it supports models for blogging, eCommerce, and forum websites as well. Sites that differ from this will most likely need customization.

Cost

Building a site can be expensive, you need to make sure you’re getting what you need, rather than trying to opt for the cheapest solution. Custom website development can cost anywhere from $5,000 to upwards of hundreds of thousands of dollars, depending on your needs.

Time

Building a site takes time. How much time do you have? Most web projects take an average from 12 to 16 weeks. However, the time is always dependent on several factors, such as the complexity of the project, scope of work, number of people involved, etc. Always be sure to set a realistic timeline when looking at website building solutions.

Resources

How big is your team? Do you have any technical skills? WordPress maintenance requires a learning curve and dedication to the site after the initial build. To keep your site up to date, make sure you are prepared to learn or are willing pay someone for maintenance.

Security

WordPress is a great resource because of its popularity, but that popularity leaves sites more vulnerable to hackers and information leaks. What type of content are you providing? Does it need to be secure? Developing your own website or mobile app can provide more security.

Mobile

WordPress does not support mobile app development but does allow for you to have a responsive mobile version of your site.

Users

Does your website require a large number of users to log in and out of your site? Depending on your business, WordPress may not be able to support the high volume and data storage that your site requires. Consider building a customized application with a development team.

 

Benefits of WordPress

 

Ease of Use – For non-technical folks

WordPress is great for non-technical users who want to be able to manage their content and make minor adjustments without getting knee deep in code. The content builder enables you to design within a set framework BUT does not allow for much customization. If you are looking for customization, you will have to get your hands dirty and add in some code.

Plugins

WordPress has over 45,000 plugins that you can upload that increases new functionality options. This is great for you, it means you can do more than just make a basic blog! However, they require a lot of updates and may need customization and code to get them working properly with your site.

SEO Friendly – Kind of

WordPress is wonderful because it bumps up your site on web browsers from the built-in SEO(Search Engine Optimization) system, however, if you are a novice with SEO, you may need some coaching. Too much tagging and repetition can kill your SEO rating and send your website to the bottom of the page. Luckily WordPress has a wide range of plugins to help with this, including our favorite, Yoast, which helps by rating your pages on readability, keywords, and more!

Open Source – Faster Development

Open source code is great for speeding up development time. All of the code is shared and used between developers all over the world. This means your developer doesn’t need to make everything from scratch, cutting down on development time. However, this is a catch 22, as open source also means less security. Be sure to you weigh the importance of development time over site security.

Professional Themes

There is an endless source of pre-built design templates from which you may choose to use for the foundation of your site. Themes include one or more demos which you can activate. This provides you with an appealing, pre-designed site that requires minimal effort to get up and running. Keep in mind that these can be pricey and limit your site’s capabilities and customization, as not all plugins work with every theme.

Overall Lower Cost

Typically WordPress is a cheaper option than hiring a software development team. Since it is open source and widely used, you have many options for designers and developers. You also have the option to maintain the site on your own – if you have the resources and time to do so.

Mobile-Friendly

WordPress makes it easy to transition your site from desktop to smaller screens such as tablet or mobile. This may require some customization to make it just right, but it can beat building a mobile app or an entirely new mobile site. Make sure a responsive mobile site is a right option for you as Hackernoon reports that in 2018 mobile users spend about an hour on the mobile web, while almost 3.5 hours on mobile apps.

 

 

WordPress Negatives

 

Open Source – Security

Open source is great for fast development, but it can leave your site vulnerable to attacks from hackers. This can lead to problems down the road, either legally or with development constraints. Are you going to be handling credit card information? What about users’ personal info? If you do, you will need extra security, make sure WordPress can secure your info or pick a developer/development team that is knowledgeable and can successfully secure your data. Have questions? Let us help you feel safe about your site’s security.

Customization Needs Coding

WordPress was built for blogging, CMS, forums, etc. This makes breaking that model to build a restaurant site, for example, with online ordering, slightly more difficult. Most WordPress themes aren’t built for any models besides the typical ones mentioned above, which means more customization and less flexibility for the overall design of the site. This doesn’t mean it’s impossible, but it does mean less access to content without digging into the code base.

Frequent Updates

WordPress is constantly trying to improve and update their structure to better serve their large user base. Because of this, updates occur on a regular basis and could impact your site’s performance. At times, you may need to update plugins, which could result in your plugins no longer functioning correctly or not being supported by the new version of WordPress. It is very important to save a backup of your site before updating, just in case something goes wrong while converting to the new version. As you can imagine, this process requires some technical knowledge and the ability to fix bugs that may occur as you update your site.

 

Pro tip: WordPress doesn’t offer support!

 

Learning Curve

No matter whether you are a coder, a designer, or someone with no technical knowledge, WordPress requires time to learn the ins and outs of building and maintaining a site. If you think building a WordPress site is as easy as dragging and dropping elements on a page, you’ve got it wrong. WordPress is a very robust solution that is constantly updating and changing, it takes time and dedication to keep your site up-to-date.

Slow Speeds

WordPress has a reputation for having slow loading times and speeds for users. This is a big downfall as research from Hobo shows that users quickly get disheartened by slow loads times. Users will leave your site to find what they need elsewhere within 2-10 seconds of waiting on content to load. Even more concerning, eCommerce users will leave only after 2-3 seconds without content loading.

Not Easily Scalable

Unless planned well in advance, WordPress is not the best at scaling businesses. Most models are built with the intention that the site will stay relatively at the same size, volume, and structure. Modifying your WordPress site structure later down the road can lead to some sticky situations with plugins, content, and speed.

No Support Service

Building a WordPress site on your own? You’re Brave! Although WordPress has a massive following and plenty of answers that are just a google away, WordPress does not have an official support service. This means no one can get into your account and help you solve those more difficult, niche questions. Website editors typically have lots of support, but if those solutions don’t serve your needs, consider hiring a developer or development team who will only be a call away to give you unlimited support to solve your issues ASAP.

 

 

Conclusion

WordPress is great for some websites, specifically for smaller sites that don’t require tons of functionality and serve as a source of information rather than supporting large amounts of user data. Making sure you understand the capabilities and constraints of using WordPress will allow you to make the best decision for your business. If WordPress doesn’t seem like the right solution you may be better off using something more accessible like Wix, Squarespace, or even hiring a development team to build a customized solution. Sometimes the answer isn’t clear, and you’ll need to sit down and map out all of the pros and cons of each solution available to you. Feel free to reach out to our team for some expert advice. Good luck!

 

Have questions? Ask an Expert!

Our team of experts is always available to talk through your concerns and guide you in the right direction for your business, even if that option doesn’t mean using our team. Talk now.

Increase Enterprise .NET Development Efficiency By Sharing Code With NuGet

By Development, Mobile, XamarinNo Comments

Reusing code can be a great way to increase efficiency within an organization. If there is an overlap in functionality across multiple development projects it makes sense to collaborate and reuse code across those projects.

Increase Efficiency

An essential tool for any collaborative development environment is a mechanism through which developers can create, share, and consume code. Often such code is bundled into “packages” that contain compiled code (as DLLs) along with other content needed in the projects that consume these packages. Using packages to transmit code facilitates the natural process of integrating updates that improve and add to functionality available to collaborators.

NuGet Packaging

NuGet is a free and open-source package manager designed for the Microsoft development platform. Since its introduction in 2010, NuGet has evolved into a larger ecosystem of tools and services. NuGet is distributed as a Visual Studio extension. Beginning with Visual Studio 2012 and subsequent versions, NuGet is pre-installed with Visual Studio by default. NuGet can also be used from the command line and automated with scripts. NuGet is the standard tool by which package dependencies are managed in Visual Studio projects/solutions.

A NuGet package is a single ZIP file with the .nupkg extension that contains:

  • Compiled code (DLLs)
  • Other support files related to that code
  • Descriptive manifest that can include:
    • Package ID
    • Package Version Number
    • Package Author Info
    • Package Description
    • Other Fields Included: Owner Info, Copyright, Title, Summary, Project URL, Icon URL, License URL, Tags, Release Notes

Creating A Single Cross-Platform NuGet Package For Xamarin Mobile Application Development

Visual Studio library projects can be configured to create a variety of packages with differing levels of compatibility from a single platform to multiple platforms. Most of the time creating NuGet packages with Visual Studio is simple and works well, but I encountered a few build errors while attempting to build a single multi-platform NuGet package for Xamarin mobile application projects using Visual Studio for Mac (VS for Mac). Here are a couple examples:

  • The Target “GetPackageContents GetPackageTargetPath” does not exist in the project. (MSB4057)
  • The “AssignPackagePath” has failed unexpectedly. (MSB4018)

Below is a step-by-step process for VS for Mac to create a cross-platform NuGet package that will run on iOS and Android that leverages Xamarin.Forms. Following this outlined process helps to mitigate and avoid some errors, but even this process is not error proof. It may take a few tries to produce an error-free cross-platform NuGet package with VS for Mac.

  1. Open Visual Studio and click File, and then choose New Solution.
  2. For your project template Select Multiplatform Library (as shown below).
  3. Next configure the solution. Give it a name and a brief description. Select Android and iOS under Target Platforms, then under Implementation select Single for all platforms.
  4. Make sure the project name, solution name, and path are the way you want it, then click Create
  5. To add platform-specific references the next step is to right-click on the project and under Add click Add Platform Implementation.
  6. Select Android, iOS, and Create Shared Project as shown below.
  7. When this process completes you should Build All in order to confirm that your solution is error free. Sometimes the build will fail at this point. This seems to be an expression of an error inherent in the processes executed by the VS for Mac IDE. If Build All fails it may be best to simply start over.
  8. Now is the time to make sure that the References in all the projects are correct. The main project should reference the .Shared project. The .iOS and .Android projects should have references to the main project and Xamarin.iOS or Xamarin.Android respectively. The .NuGet project should reference the main and .Shared projects.
  9. The next step is to add the Xamarin.Forms package to the .Android, .iOS, .NuGet and main projects.
  10. For proof of concept add a Xamarin Forms Page in the .Shared project with a label that says “Hello World.”
  11. Right-click on the main project and then select Options. In the Build section under General confirm that Target Framework is set to .Net Portable with a PCL profile that is compatible with the platforms to which you want to deploy your package. In our case, Profile 111 is correct.
  12. While in Project Options, under the NuGet Package click on MetaData to add or edit the data that will be associated with the package you create.
  13. Under the NuGet Package section Build tab, select “Create a NuGet Package when building the project.”
  14. Now when you Build All the single, multiplatform package will be generated and  saved in the main project’s /bin/ folder (either Debug or Release, depending on configuration). The NuGet package file will be saved with the extension .nupkg

With a little luck at the end of this process you should now have a single NuGet package that will deploy to both Android and iOS with the ability to leverage Xamarin.Forms.

NuGet Package Distribution

NuGet packages can be distributed and consumed in multiple ways. If your package is meant to be shareware it can be published and distributed for public consumption directly on nuget.org. If the packages are meant to be proprietary then a private repository can be created. Something as simple as a folder on a secured network will work. The NuGet Package Manager in VS can then be configured to load or update packages from whatever location your packages are stored. The location can be configured by opening the VS project you want to add the package to and then complete the following steps:

  • If Loading New Package:
    • Right click on “Packages” folder in the target Project and select Add Package
    • Select Configure Source and add local directory in which NuGet Package resides.
    • Set the Package Manager source to the folder that was added
    • Select the Package to be installed
    • Click Add Package (if it is a Shared Project Solution the package will need to be added to each each Project)
  • If Updating Package:
    • Right click on the package to be updated and click Update (updated package should be located in local directory the package was originally loaded from) (if it is a Shared Project Solution the package will need to be updated in each each Project)

The Value of NuGet

Leveraging the power of NuGet is an excellent way to package, transmit, consume, and update shared code across .NET projects. As the default package manager for Visual Studio it is familiar to developers and already integrated into the IDE’s workflow. The example package described here is one of the more complex scenarios, but generally speaking it is relatively simple to create platform specific packages. The distribution and update process are also easy to implement and manage. All of this adds up to saving time and money for your enterprise.

 

Addendum:

If you would like to do some additional reading I have listed below a partial list of resources I used to create this article.

Manually Creating NuGet Packages for Xamarin

https://docs.microsoft.com/en-us/xamarin/cross-platform/app-fundamentals/nuget-manual

Cross-Platform Development with the Portable Class Library

https://docs.microsoft.com/en-us/dotnet/standard/cross-platform/cross-platform-development-with-the-portable-class-library

Creating a New Multiplatform Library for NuGet

https://docs.microsoft.com/en-us/xamarin/cross-platform/app-fundamentals/nuget-multiplatform-libraries/single-codebase

Create .NET Apps Faster With Nuget

https://www.nuget.org

An Introduction to NuGet

https://docs.microsoft.com/en-us/nuget/what-is-nuget

NuGet Documentation

https://docs.microsoft.com/en-us/nuget/

Portable Class Libraries (PCL)

https://docs.microsoft.com/en-us/xamarin/cross-platform/app-fundamentals/pcl?tabs=macos

 

How to Integrate the Salesforce API into your Rails Project

By DevelopmentOne Comment

Many companies use Salesforce, it’s one of the biggest Customer Relationship Managers (CRMs) available right now. Many companies use Rails as well. Combining the power of Rails with the power of Salesforce can greatly benefit any company. Where do you begin with this process? Let us look into a (not so little) Ruby gem, named Restforce.

Restforce

 

Restforce is a Ruby gem made for the Salesforce REST API. It includes many features that help developers interact with the Salesforce API using REST, and has been downloaded over 9,000,000 times. Installation is simple, just like any Ruby gem, just write

gem ‘restforce’

Into your Gemfile, and then

bundle install

Into your terminal.

Initialization

 

Before you begin sending requests to your Salesforce org, you’ll need to first initialize and authenticate your client inside a model as a method, so you can connect properly. There are many ways to do this, but here, I am going to use the username/password authentication method.

Here we are setting the client. There are many variables involved to get a proper connection, so I will go over each of them.

  • Username and password are, of course, the account’s username and password.
  • The security token you can get by requesting one from Salesforce. In order to see your token, you must go to SETUP > MY PERSONAL INFORMATION > RESET MY SECURITY TOKEN. From here you can simply press the button to get an email from Salesforce, giving you a new security token. Note, that the only way to view your security token, is to change it. So save the token after receiving it, in order to avoid hassle later. Changing the security token will also lead Restforce to return authentication errors until the security token is updated in the codebase or environment variables.
  • To view your client ID and your client secret ID, you must go to SETUP > APPS > CONNECTED APPS > MANAGE CONNECTED APPS. From there you should see a list of apps you have connected. Click on one to see all its information, including the client ID and the client secret ID located in the OAuth section.
  • API version is exactly what is sounds like. It is normally best practice to make this the latest version of the Salesforce API.

It is also a good practice to add the keys, passwords, etc into environment variables. Having access to these keys means you have access to any records and fields in Salesforce! Now that everything is set, let’s begin interacting with the API.

Requests

 

Requests are the main way to interact with any REST API. Restforce makes it incredibly easy to make any request to the Salesforce API.

  • As any software developer knows, GET requests are when you need to pull data from an API. This can be done a number of ways through Restforce. Here are a few of the most common ways to get data.

  • POST requests are the next most important. These let you send information to the Salesforce API.

  • PATCH requests are like POST requests, in that you send information to the Salesforce API. However, this time you are changing an object, rather than creating a new one.

  • Finally DELETE requests will remove objects from the Salesforce API.

With these methods at your disposal, you are ready to integrate the power of the Salesforce API into your Rails project.

Example

 

Model

Controller

You can find the Github repository here.

API Call Limit

 

Note that each Restforce call you make is an API call, each Salesforce account is given a certain amount of API calls per month (depending on your Salesforce contract). Be sure to check your API usage. If you’re interested in updating a massive number of records, then perhaps use dataloader.io or the application “wizard”, where you can upload a csv to massively create, delete, and update records. You can read more about that on our blog here.

Data Sync

 

While being able to connect your Rails application to your organization’s Salesforce account can be an empowering tool, there is the risk having data sync issues if you’re storing records in your own database in addition to creating and updating records in Salesforce. It’s important to note that when you create Salesforce records, the record could change in Salesforce, and your Rails application won’t even know about it. So when using this gem, one thing to think about is where your source of truth is if you’re saving and updating in multiple places. Saving to your own database is still a good practice in case for some reason there is an outage out of your control on the Salesforce side of things.

Conclusion

 

Now you know how to integrate your Salesforce org and your Rails app. Using the Restforce gem, you can easily connect to your org. Making REST requests is also extremely simple. Simple methods allow easy GET, POST, PATCH, and DELETE requests to be made. Now that Rails and Salesforce are connected, interacting with Salesforce through your own app has never been easier.

How to Import Your Rails Data Into Salesforce With CSV

By DatabasesOne Comment

Oftentimes, companies want to move resources into Salesforce. It only makes sense, being that salesforce is one of the top Customer Relationship Managers (CRMs) available right now. There are loads of benefits to storing data in Salesforce, including security, organization, and data recovery. What is the process of moving data to Salesforce like? Let’s talk about CSVs.

Process

 

  • When working in Rails, all your data is stored in a database. First you’ll need to pull the required data from the database and put it inside a CSV file, using the psql command line. CSV stands for comma-separated values, and is a way of storing table-like data in a text format.

user$ psql
user=# \c database
database=# \COPY my_table TO 'filename.csv' CSV HEADER

This will create a CSV file in the chosen directory with the contents of the table from your database.

  • From here, we will begin to upload our CSV file to Salesforce. First you’ll need to go to SETUP > DATA > DATA IMPORT WIZARD. Where you can find and launch the wizard to import data.
  • Once the wizard is launched you will be asked to choose what type of data you are importing. This is basically asking which Salesforce object you are looking to import, whether it be contacts, leads, or a custom object you created. Select which type you are planning to import.

  • Next you will be asked what you want to do. Since we’re importing new data in this tutorial, we will select “Add new records”

  • After that, select the CSV file you would like to import, select the correct Character Code, and locate the option by which the values are separated by. The character code and separator, will more often than not be the default values Salesforce sets. After this step, then just press “Next” at the bottom right of your screen.

  • After pressing “Next”, you will be directed to a new page asking to assign Salesforce objects to the CSV headers.

Some headers will be mapped already, as Salesforce typically knows what some values will be mapped to, saving you time. However in this situation, our contact_name and acctount_name headers are not mapped, so we will have to do it manually, starting by clicking “map” on the left side of the screen.

  • Mapping an object to a header is quite simple, as all you need to do from the pop-up box, is find the related field, or fields, and select them to map.

Now after repeating that for each un-mapped header, you are ready to begin importing.

  • Click the “Next” button at the bottom right corner of the screen for a review of what is being imported. From there, just press “Start Import” to begin putting your data into Salesforce. Note: This can take some time depending on how much data you have.
  • After the import you should now have a list of objects available to you on your Salesforce homepage.

Conclusion

 

Now that you know how to import your data, you have the power of Salesforce on your side. You can create graphs, organize your data, as well as many other ways to improve your business. Data can also be updated and new data can be added at any time, so you can always have Salesforce up to date with the rest of your company. If you are looking to centralize your data in either Salesforce or Rails, rather than both, look here to help you make a decision.

Should You Build Your App From Scratch or Using Salesforce?

By Development, DjangoOne Comment

An important decision that comes to all companies before building out an application, is the decision to use either an app builder like Salesforce, where almost no prior coding experience is required, or a web development framework, like Ruby on Rails, C#, Java, or Django (we will simply refer to rails for now). It’s an important decision that will determine the development path to follow. In this article, I’m going to go over the benefits of both Salesforce and Ruby on Rails in order to help you make an educated decision on what path you would like to follow.

Salesforce

 

Pros:

Streamlined – Salesforce strives to be an end to end software data tool to manage your complete enterprise. You can easily connect all your employees using streamlined tools and applications that come out of the box. This requires fewer resources overall and allows you to manage your business from anywhere.

Mobile First – Salesforce also gives companies and developers an easy way to create your mobile applications. In fact, it’s touted as being built mobile-first. The instant you create an app for your browser, a clean-looking mobile version is generated that can be used by all users.

Simple – As you may be able to tell from the previous benefits of Salesforce, it is built to be straight forward. Salesforce is proud to note that their software can be managed by others who have have less technical experience. This is especially true due to Salesforce’s own Trailhead, which is “The fun way to learn Salesforce”.

Cons:

Limited Customization – There isn’t much customization for how Salesforce apps work and look.  If you purchase a solution that is built on top of Salesforce, you are often limited in your ability to customize how it will work as you now rely on Salesforce updates. For users on Salesforce, some functionality may break after Salesforce update. Updates usually consist of large layout changes to the platform, causing problems to the businesses using it by making some important features now hard to find. This also gives new Salesforce businesses a learning curve around the Salesforce system, not the business.

Expensive – While Salesforce seems inexpensive out of the gate, costs can quickly escalate out of control.  If your ROI (return on investment) isn’t there, Salesforce will be an anchor instead of a rocket boost.  Many times, the rising costs of additional but much needed capability causes subscription creep that the company is saddled with.

Developers Needed – Many companies try and wedge in a java or .net programmer and tell them to code up Salesforce apps or integration only to find that they cannot do the work. To build and operating in Salesforce at a deeper technical level, you need to have experiences certified Salesforce personnel on your team.

Building From Scratch – Ruby on Rails/Django

 

Pros:

Application Flexibility – If you are building a specialized software product, rails is also no doubt one of the best for designing a customized platform.  Rails allows you to customize everything from design, to workflow, to api exposure. In Rails, because developers practically start from the ground up, you can put a very personal touch on your app.

Platform Flexibility – There are no platform limitations.  If you can think of it, you can build it.  You are not limited to restrictions. Building your apps in Rails will also save you from worrying about third parties. With Rails, the only business you need to rely on is your own.

Cost – For smaller companies with developer experience looking to start up a new application can find Rails applications to be more affordable with server usage being the only minimal cost.

Cons:

Experienced Developers – Working on a Ruby on Rails web-app will require one or multiple experienced developers. Connecting your users is also a greater hassle as well, compared to Salesforce.

 

Conclusion

If you are looking for a flexible and cheap way to create a CRM, then building your application from scratch would be your best choice! Especially if you are looking to create a much more personalized CRM that works your way. On the other hand, if you are looking for something simple and streamlined, Salesforce is the choice for you! As anyone can learn Salesforce! In the end, it’s whatever benefits your business the most, for whatever its needs may be. You could even do both, with the ability to integrate the Salesforce API into your Rails project.