12/28/2017 12:16:18 AM by admin
Joomla, DNN and other content management systems, once the high hopes of user experience and company information dispensing, are now just past memories. What they lacked was that ability to present information in a very specific way that only worked for that particular organization. They failed because many were designed as modular components. Yes they quickly changed content and gave more control over the content presentation but still confined the user to a pre-programmed experience.
Then came the SiteFinity CMS. Not long ago, we did a SalesForce integration project with it and were totally taken aback. With its MVC architecture and built in support for just about every protocol, it was just as simple as pie to add custom widgets that integrated with SalesForce via REST. In the past, creating a module not only involved some fancy code registration, but a ton of time to build user interfaces. SiteFinity stays true to object oriented principles. Not only is it easy to extend existing components, but the UIs come with base templates that can be extended or left alone and function as any of the many legacy ones.
There never was a Windows based CMS, as I recall, that offered features and extensibility, until now. The base price is affordable. If you need extras of course it will cost more. If you have access to developers, SiteFinity can easily become an enterprise wide information portal.
I give it two space bars and a caps lock. Download the demo version and tell me you don’t agree.
12/28/2017 12:15:51 AM by admin
Object reference is a common topic in software development. I don’t recall ever reading how to recognize it in an actual application outside of the code. So, this is good to add as part of my "Live and Learn" articles. We wrote a custom application for a manufacturer. That application had objects representing factory parts used to assemble widgets. Hand scanners were used to associate specific control numbers to each part and once the part objects got all of their properties populate they were sent off to another part of the application for migration into the Account and QA applications.
Because the same part was, at times, used from a box of similar parts with identical control numbers, some part objects got split out into multiples. Pseudo code Stuff now; the original objects are in a collection. A new collection was created with multiple references to one specific original part object. When the time came to scan the control numbers, users reported this. They scanned the first part and then the remaining identical parts showed up pre-scanned. This was correct because there was reference to only one mutable object. The solution was to instantiate new instances of the object class and put that in the second collection. You might declare properties as ReadOnly if possible. Some managed code compilers do not enforce mutability so it is good to recognize these signs also.
12/28/2017 12:15:30 AM by admin
Do not let anyone change functionality during testing. This should be the later stage of preparations for going live and the business logic hopefully is determined by this time if all has gone well.
One of our projects generated over 70 test cases that the client had only one resource for. That resource happened to be a manager. During testing the manager noticed bugs of course, but also insisted on adding and changing features. I explained to them that doing so may invalidate previous test cases that will have to be re-checked. The manager agreed, and so feature changes were done during testing as asked. The manager, however, never re-tested approved cases. This snow balled into plenty of aggravation for all involved. Code was written, code was testing and approved, and then code was affected by feature changes. It got to the point that the manager would come in every day and complain about having tested “things” that used to work, but no longer seem to work. This in fact was the symptom of a flawed testing process.
If the manager had gone back and re-tested after feature changes, there would not have been an issue. However workloads and time constraints dictated otherwise and the user acceptance process took much longer time and effort and cost the company more money which agitated the managers higher up the ladder. I think there was a week long period during this time where nobody said good morning to me.
What to do? Offer the manager an all-expenses paid trip to a faraway place? Maybe. In retrospect, the best practice would have been to document that no feature changes can occur during testing and create a more agile feature development iteration including more testing resources. Also, keep a good travel agent in your Linkedin contacts list.
12/28/2017 12:15:08 AM by admin
A client bought a third party application that needed to share data with two others. Our task was to create an integration layer for the applications to move data back and forth with reliability. All of the others used integration tables as endpoints. This means they consumed data from special tables and perform internal adjustments as needed before finally committing the data to production. The thing to understand is that the data entered is not necessarily that committed to production. Polling the database would work most of the time, however this approached also requires a data caching scheme adding even more overhead a not providing much more data integrity.
What to do? SQL Service Broker to the rescue. It is an abstraction layer in the database that provides kernel level messaging for the SQL server and application. This is done by the application defining a data set and listening for notifications from the Windows messaging system of when that data set changes. In this case the SQLDependency class was used to notify when other applications have fully vetted and consumed specific data without issue. This took a lot of responsibility away from our solution and reduced the overhead tremendously. It allowed us to focus much more on the business logic.
The SQL Service Broker offers a very granular level of application integration with minimal extra coding and less processing overhead. It will take many risky assumptions out of the application design and offer tightly coupled event driven integration opportunities. Not to mention that it brings plenty of SQL love to go around.
12/28/2017 12:12:35 AM by admin
We launched and new app a few weeks ago. Now the tedious task of marketing and driving traffic is undergoing. Some of the metrics are surprising so far. Social media currently accounts for about 31% of all web traffic referrers as Shareaholics sees it. This is a huge amount of traffic coming from Facebook, Twitter, Google+, and etc. So far we are seeing about 3 referrers from about 10K+ viewers. Only a few years ago we would have expected at least 1% of the viewers come over to our site. Is Guerrilla marketing on its last days? How is it that 30% of all traffic comes from these same social media sites with tiny referrer rates? It is so because the volume of the remaining 70% has tanked.
Traffic is dominated by paid advertising as Shareaholics is part of that same pay for traffic model. What is left is the lower amounts of volume driven by social media outlets. I think what our data shows is that future marketing campaigns will depend less on high volumes an more on targeted marketing.
12/28/2017 12:11:37 AM by admin
The divine ratio (1.618). Although the number itself has minimal meaning in web design, The construction of magic rectangles with divine ratios is a strong web design approach. Creating magic rectangles using Fibonacci sequences creates a visible framework to work in. It also mirrors what we naturally see in the world around us and naturally attracts the eyes to the web site message.
How to do this? Draw two 1x1 squares next to each other. Next draw one 2x2 square adjacent to the previous squares. Now do a 3x3 square next to the previous. Finally do a 5x5 square next to the previous one. In the end there will be a template of natural proportions that the human eye is comfortable looking at. Go back to each square and fill in the message your web site is sending and watch the traffic flow.
12/28/2017 12:11:15 AM by admin
The new Visual Studio 2015 has built-in GIT integration as well as Python support. The previous version included Bootstrap and other Open Source libraries. More so, the new VS supports mobile development across platforms. Is Microsoft going Open Source? Hardly! It's all about attracting developers. Microsoft was great at attracting developers to their platform, who in turn promoted their solutions. Back in the day, MS claimed partial ownership of software just because it was created on their platform. So the two worked together to the greater benefit of MS.
Things have changed. Look at the gaming industry as an example. About %53 of gaming developers classify themselves and independent. Both Sony and Microsoft are working hard to get them into their gaming consoles. Economies of scale have kicked in and MS like other global companies are focused on specific market advantages and recruiting independents to grow those markets with them. There seems to be a real trend now of attracting development to a specific platform and letting the developers come up with something that sells.
It is truly and exciting time to be a geek. Teach your kids to sling some code:)
12/28/2017 12:25:00 AM by admin
Requirements Assessment. Often the first process of many development cycles. The first of a linear sequence of processes within a cycle. Does it really need to be a linear sequential process? It does not! A current project was framed under a typical agile development cycle. However, when it came time to test, stake holders struggled to work with features without the entire production application as a reference. This generated a lot of additional code to proxy missing features and pushed the project past budget and delivery dates. I think part of the problem was the stake holders were not getting hands on frequently and early enough to constructively drive requirement refinements. So the solution was to stretch the requirements assessment over the feature development cycle and redefine the cycle itself by features. This allowed feature testing and approval much sooner. By the time the next feature cycle would start, there would be a near production ready code base to build on. Next time you find yourself thinking the project may need to be re-scoped, think about broadening the requirement assessment period over an entire cycle.