Mentations on Mentations

Thoughts on the Mentations product, Code On Time, technology, and life in general by Brian Schneeberg.

Report Writing Tips using COT

A consistently asked question when using Code On Time (COT) is how to develop full fidelity reports.  The folks over at COT have enabled customers to integrate Microsoft .RDLC files (Report Definition Language - Client) with COT controllers.  The idea is that you can use the Visual Studio Report Designer (VSRD) to design an RDLC report that is based on one of the COT Data Access Objects (DAO) produced in your COT project when you generate it.  You can then hook this report into the associated COT controller which is also using the same DAO to produce fully formatted reports as PDF, MS Word, or Excel format(s).  On paper, this looks like a pretty straightforward process UNTIL you actually try to design a report using the VSRD.  This tool has a reputation for being cumbersome/onerous/unwieldy to use - and rightly so! 

As a result, one is faced with the frustrating task of muddling their way through using this tool or they must find a substitute reporting tool which also produces RDLC files.  While there are third-party reporting components available which allow you to work with RDL/RDLC files (both types use the same XML schema), my guess is that you'd rather not run out and buy another product after having just made an investment in COT.  And if that is the case, then you're in luck...

Luckily, I am a Microsoft Access junkie from back in the day.  I know my way around the MS Access Report Designer pretty well and the experience between using it versus using the VSRD is like night and day!  So with that in mind and the stage set, let me walk you through my sanity-saving, no-cost (if you already have MS Access and SQL Server) alternative to writing COT-compatible reports:

  1. Use the same exact SQL that the related COT controller XML file uses and create a SQL Server view out of it;
  2. Use MS Access to develop the report (based on the view created in the previous step) due to its superior report designer;
  3. Create a SQL Server Business Intelligence Development Studio project and import the Access report by right-clicking on the Reports folder created in the project solution and selecting the Access DB you created the report in (this will save a new copy of the report as a .RDL file);
  4. Use File Explorer to find the .RDL file created - copy it to the COT website and place it in the Reports folder, changing the extension from .RDL to .RDLC;
  5. Open the report in the VSRD and tweak any design elements needed.  Also, you must pick the appropriate data source (generally the first SELECT object associated with the controller you are working with) from the listing of data objects shown in the project;
  6. Change the name of the dataset to exactly match the name of the related controller;
  7. Add a "FilterDetails" parameter to the report and then add the related field to the header of the report so that users can tell if any filters have been applied to the data shown;
  8. Hook the report into the controller file XML by adding a new "action" to the "actionGroup" with the headerText = "Report"*.  For instance: <action id="a5" commandName="ReportAsPdf" commandArgument="AssetsReport.rdlc" headerText="Formatted Assets Report" description="View Formatted PDF Assets Report." />
  9. Test in a browser and make any changes needed to formatting, etc. within the VS IDE.

While there is, admittedly, some trickiness involved with this solution I think you'll come to realize that this methodology is an order of magnitude easier than just trying to use the VSRD by itself!  :^)

Please feel free to contact me if you need any help implementing your COT reports - I'd be happy to help.

* If you decide that you want to use the COT GUI versus editing the raw XML, YMMV on Step 8...

June 01, 2013 in Code On Time, Web/Tech | Permalink | Comments (0) | TrackBack (0)

Tags: Code On Time

Code On Time (COT) versus ASP.NET MVC (and also Dynamic Data)

Ok, so this matter has been on my mind a lot recently.  There is a current perception in the Microsoft development world that ASP.NET MVC is the best thing since sliced bread and that if you're using anything else based on the older Web Forms technology EVEN if it ALSO follows the MVC pattern (like COT does) then you are out of touch with MS development best practices.  As a result, a large client that I work with (as well as other developers my company teams with) have a strong inclination to use it and pretty much dismiss other development methodologies/patterns out of hand.  Sure, they will discuss pros and cons of one methodology versus another, but in the end they still side with MVC giving the reason that if everyone else is doing it, it must be the thing to do!  Of course, they add to this that it will be easiest to find another developer who wants to take over the development effort if I were to get hit by a bus tomorrow ;^).  Never mind the fact that I can [seriously] get the development done in about HALF the time with COT with MORE functionality baked-in!  Of course, they also use the argument that COT LLC. is a small company whereas Microsoft is not and the fact that the possibility of COT LLC. going belly-up is much greater than MS doing so... the old "nobody ever got fired for using IBM" rationale.  Ugh.  So in essence, they weigh unlikely risks (me dying or COT folding) much heavier than the very real notion that I can save them 50% of their money/time (BTW, there are no "black box" components as part of COT - it generates native ASP.NET code either in VB.NET or C# so even if the company went out-of-business, you would still have the entire generated code base at your disposal).  Say what?!  Just for grins and giggles, here is an analysis I did between COT versus ASP.NET MVC (click on image to enlarge):

COTvsMVC

 I'd love to know if you think I'm missing any cogent points here.  Please feel free to comment if you do think so!

Well, long story short, in this particular client scenario, there was a bit of a silver lining in that while I was unable to get the client to use COT, I at least convinced them to use a more rapid development pattern than ASP.NET MVC since MVC requires a lot of "down in the weeds" tweaking of code EVEN IF you are using scaffolding to help you generate the controller and view files!  Oh, and of course the tooling/controls support is not yet in the same league with Web Forms and everyone seemingly is using variations/extensions of JQuery for MVC projects.  While JQuery is cool, you cannot achieve the same productivity as when using native ASP.NET controls.

The more RAD-friendly Microsoft technology that I chose (based on Web Forms BTW), is called "Dynamic Data".  Its popularity seems to have peaked around 2008/2009 and has declined since then, most probably in direct proportion to the rise in popularity of MVC.  I still don't fully see the logic in this since you can do much more with much less code using Dynamic Data, especially if you are developing a line-of-business, data-centric application that requires a lot of lookup data CRUD support.  Yes, I am aware of the "separation of concerns" argument that MVC is well-suited to support, but what I don't think many realize is that the same kind of thing is possible both with Dynamic Data AND COT.  Admittedly, with Dynamic Data this is limited more so to the GUI layer since it sits directly on the Entity Framework data model but with COT you also have discrete objects for each data object (controller) as well which are fully customizable.

In summary, IMO, if you want the most bang for your development buck then I would humbly suggest you give strong consideration to COT.  The code generation capabilities are second to none, it generates native ASP.NET code, and it provides a lot of features baked-in like AJAX, reporting, bulk editing, import and export of data, etc.  If however, your company/client is extremely risk adverse and won't use a third-party vendor then I suggest you check out MS Dynamic Data.  Only in the case where your development effort is going to be a larger, multi-developer/multi-year sort of engagement would I think seriously about ASP.NET MVC - I do think in this type of scenario MVC makes it easier to allow multiple developers to work on the same code-base simultaneously.

July 25, 2012 in Code On Time, Web/Tech | Permalink | Comments (0) | TrackBack (0)

Tags: Code On Time, Dynamic Data, MVC

Mentations - The Progress Made Thus Far

200610311 Howdy!  I know it seems as though "Elvis has left the building" based on the lack of posts here but rest assured, such is not the case!  The reason for the post sparseness is that we have been hard at work building out Mentations to eventually achieve a V1.0 non-beta baseline.  The highlights of progress made thus far include the following:

  • Added voice commands and speech synthesis - see the Voice Activation & Speech topic in the online help (http://www.mentations.com/products/Mentations/Help/webframe.html) for more info. Users have found this functionality to be especially helpful in mobile usage scenarios using Ultra-Mobile PCs (UMPCs). These capabilities allow you to ask Mentations to read the current news/blog/weather/etc. headlines as well as entire news articles, all while you're driving along or doing some other multitasking;
  • Created Mentations Lite (https://www.gpinc.biz/mentationsweb/), an entirely web-based interface for access to your Mentations interface even when you aren't at your own computer. Using AJAX, it was possible to achieve much of the look and feel of the desktop client (although the functionality is still lacking);
  • In support of RSS and blogs, we have added the ability to import and export OPML to facilitate easy personalization of the interface;
  • Also to facilitate mobile usage, we have added a variety of location-based functions including the ability to receive live GPS readings from a connected (wirelessly or otherwise) GPS device and then to see a map displaying nearby locations within a 10 mile radius related to your interests as well as the ability to see the locations of any friends and family who are also using Mentations. This functionality is available through the new Mentations Vicinity Map as well as the Mentations relationship screen;
  • Added a new football-oriented theme;
  • Added the ability to minimize Mentations to your system tray versus the taskbar for easier access to the application;
  • Added the capability for you to completely customize the Mentations interface through the addition of "Unmanaged Interfaces". You can either start with one of our interface templates or build out an interface entirely from scratch with whatever categories, feeds, and graphics you feel are appropriate versus being subjected to our version of reality ;^). You can then choose to make this new interface public for others to enjoy too! It will even be posted on our website in our forthcoming Mentations interface gallery;
  • We have added the Mentations Helm which provides a screen where you can build your own interfaces from scratch or from pre-existing public interfaces. Included with this functionality are the Calculation Scripter and Web Service Request Builder tools. Once you are satisfied with your creations, you can choose to make them public interfaces and if approved, they will be posted to the forthcoming Interface Gallery on our site for all to see/use! Btw, if users click on offers while using any of your interfaces, we will split any revenue received with you 50/50! Furthermore, you can also show your own offers from within your interfaces which of course you can keep 100% of any revenue from;
  • Also, we have added support for international (i.e., non-U.S. based) users which is a good thing since, as it turns out, over half of you fall into this category! Currently, this means primarily that you'll be able to see weather for your locale, but other international content will eventually follow. Fyi, you can change your location by right-clicking on the background and then clicking "Preferences". This will launch the Preferences Wizard. From within the wizard, make sure to check that you are an international user (if applicable) and then enter your city and country;
  • Further, we have included better screensaver integration such that the Mentations desktop client can actually be automatically launched by the Mentations Screensaver;
  • Finally, we have created the "Mentations Mini" gadget (see http://www.mentations.com/MentationsMini.htm for an example). This gadget provides an easy way for you to post a miniature, read-only version of your current Mentations interface on your web page for others to be able to see how you're doing at a glance! If you don't have your own website, you can also link directly to ours for people to see your Mentations Mini. Sample HTML/hyperlink code can be automatically generated by right-clicking on the Mentations background and clicking "Tokens" -> "Email Footer". As the label implies, this is also a great footer to add to the bottom of your email messages!

As you can see, we have been quite busy!  Fyi, a complete listing of all enhancements/fixes made to Mentations can be found on the Mentations News page (http://www.mentations.com/news.htm).

In closing, any suggestions or feedback regarding the current release of Mentations (Version 0.81) would be greatly appreciated!  Please do not hesitate to contact us at any time at support@gpinc.biz.

December 14, 2006 in Web/Tech | Permalink | Comments (0) | TrackBack (0)

Entrepreneurship - Insight #2

My second (much delayed) insight in this Entrepreneurship series is, Be careful what you ask for.  As with Insight #1, this advice applies not only to entrepreneurs but to everyone.  For instance, it is tempting to look at others who are making more money than us or living more flamboyant lifestyles and to say, "I want to do what they do!"  But do you really?  It is easy to see the "greener grass" but often not to see the responsibilities and obligations that come with the territory.  Another way to put this is, You can do anything you want to in life, as long as you're willing to accept the consequences. 

Something I've heard before and which I think is a great way to go about choosing a career path is to find something you are really passionate about *and* can make decent living at and pursue that.  Those things that you are really passionate about but that won't generate income are better left to side projects or hobbies unless you are already financially secure or don't mind living the life of a pauper!

The bottom line of what I'm trying to say is that passion is as important as potential.  Don't just look at the prestige or money associated with a given position or career but also how interested you are in doing that type of work because thirty years doing something you despise can seem like an eternity!

August 26, 2006 in Entrepreneurship | Permalink | Comments (0) | TrackBack (0)

UMPC/Origami - The Killer App

When I first heard about the upcoming release of UMPC/Origami devices, I was both excited and anxious at the same time.  You see, this is EXACTLY the type of form factor that I deemed optimal for Mentations to run on 3 years ago when I started work on the product, but I had hoped to have been further along in the development of this service by the time these types of devices came to fruition.  In fact, over a year before Origami was announced I purchased a Sony U750P ultra-portable PC (which seems to have influenced the design of these Johnny-come-lately units) to begin honing Mentations towards.  Granted, I think some improvements have been made like integrated Bluetooth and maybe even integrated GPS in some UMPC models.  Actually, I think that having integrated GPS will be key. Integrated EVDO would be very cool too for always-available internet but I guess working with the cell carriers hasn't quite panned out yet logistically and/or technically.  However, considering various carriers now allow you to use your Bluetooth-enabled phone to access an EVDO network or (in the case of Verizon) to buy their USB connector to tether your UMPC to select cell phones, the lack of a built-in cell card isn't all that bad (but still annoying).  Another alternative would be to get a Kyocera portable WiFi router and turn your entire vehicle into a WiFi hotspot!

Ok, so you're asking, "What does this have to do with Mentations and why is it a killer app for UMPC devices?"  Well, because the main design goal of Mentations is to provide information at a glance via dynamic pictures at the right time and location.  It should be self-evident that having a device that can constantly run Mentations and always be with you (just like your cell phone probably is) would bring us closer to satisfying the time and location criteria, especially if GPS is also available.  Further, having a built-in stand that you can prop open at a moment's notice to display an aesthetically pleasing picture that dynamically conveys information (i.e., Mentations) about how you're doing in your net-driven life is huge!

We believe so strongly in this vision that we have just finished baking in location-based functionality into Mentations including support for GPS!  Now, wherever you are (assuming you are connected to a GPS device), you can pull up the Mentations Vicinity Map to see if there are any personalized points of interest located nearby (within 10 miles) including friends, family, and interests.  Furthermore, you can now pull up a relationship within Mentations and get driving directions to THEIR current location regardless of whether they are in your general vicinity or not.  If GPS is not available, Mentations will still provide this type of functionality by using the zip code that you provided the system with to approximate your current location.

This is just the beginning; Mentations is still very much in its infancy and will continue to evolve into an application that you will want as your constant companion, while traveling or otherwise.  It will understand your needs and desires taking time and location into account.  Mentations could very well become THE killer app for UMPC/Origami devices!  Yes, I know I'm a bit biased, but I really do think so.  ;^)

April 22, 2006 in Web/Tech | Permalink | Comments (0) | TrackBack (0)

Entrepreneurship - Insight #1

At the risk of potentially starting off this series with my biggest lesson to date making all subsequent Entrepreneurship postings anticlimactic, and also that you'll think my biggest lesson is lame ;^), my first insight is DO, and THEN receive.

Ok, so on one level this seems obvious right?  Do some action and receive some result.  But that is not what I mean.  What I do mean is that, in my experience, in order to receive some title/position/ranking/VC attention you must already operate at that level.  This is the smart business way of avoiding the fulfillment of the "Peter Principal" (i.e., continuing to promote an individual until they reach the level at which they are not competent, at which point they are no longer promoted; this leads to everyone being promoted to their highest level of incompetence).

Notice the subtle distinction between "do, and then receive" versus "fake it 'til you make it".  With the former, you are legitimately putting in the time and effort to build competence at a particular thing versus the latter where you basically pretend as though you are something you're not.

Before I got into the business world and entrepreneurship, I thought that companies/VCs took a risk by giving you a promotion/money and THEN you proved your value (in that position/role), but such has not been the case for me, and I suspect that in the 21st century this is becoming SOP, especially after countless corporate scandals and the dot bomb!

So what does this mean for you and me?  On the entrepreneurship side, I'm sorry to say that this translates to build your product/service offering FIRST, gain customers/revenue, and THEN [maybe] receive backing from a VC.  I know, ironic isn't it?  But you can't argue that it reduces risk!  ;^)

On the business side, it means that if you wanna be VP at a given organization then you must research what the roles and responsibilities of that position are and then do them AS WELL AS your currently assigned tasks.  Eventually, with a little luck/providence and perseverance, you may just receive what you want.  Receiving what you want leads me to my second insight in fact... so stay tuned!

February 09, 2006 in Entrepreneurship | Permalink | Comments (0) | TrackBack (0)

Entrepreneurship - The Introduction

While I don't consider myself an expert in entrepreneurship, there are a number of insights that have either come to light or that have been validated for me thus far on this journey that I feel are worth sharing with those of you just starting out.  This series of Entrepreneurship posts will detail my findings (and ongoing questions) in this regard.

I personally got into entrepreneurship back in November of 2002 when I finally decided to pursue my vision of making information available to folks at-a-glance through aesthetically pleasing metaphors (i.e., pretty pictures) ;^).  I had recently read an article in PC Magazine about this company called Ambient Devices that was creating 'glanceable' objects that displayed information at a glance.  I had had a similar idea, though software-based versus hardware-based, back in December of 2001 and had sat on it (as usual).  You see, I'm not what I would consider to be a 'natural-born' entrepreneur/businessman; I didn't have my own newspaper route or lemonade stand or side business in high school/college.  Not only that, but I am not even outgoing - in fact, I pegged the scale for introversion on the Myers-Briggs personality assessment test!  I am much more inclined to reside in my own little world than to attempt to foist my views (or products) on the world at large.  Even so, I surmised that I needed to give this a shot rather than wonder about what might have been...

"It is not the critic who counts: not the man who points out how the strong man stumbles or where the doer of deeds could have done better. The credit belongs to the man who is actually in the arena, whose face is marred by dust and sweat and blood, who strives valiantly, who errs and comes up short again and again, because there is no effort without error or shortcoming, but who knows the great enthusiasms, the great devotions, who spends himself for a worthy cause; who, at the best, knows, in the end, the triumph of high achievement, and who, at the worst, if he fails, at least he fails while daring greatly, so that his place shall never be with those cold and timid souls who knew neither victory nor defeat."     --Theodore Roosevelt

February 02, 2006 in Entrepreneurship | Permalink | Comments (0) | TrackBack (0)

Intellectual Property - The Outsourcing Of

Many in the IT industry are fond of outsourcing if not offshoring in today's hypercompetitive, global economy.  I say this is well and good so long as it doesn't involve your core competency.  However, what is surprising to me is the number of folks I talk to who even advocate outsourcing that.  Specifically, I know of a number of software startups that are either using temporary contract workers or who are offshoring.  Perhaps it comes down to what exactly is getting outsourced.  If these companies have software architects that are developing detailed specifications as to what exactly should be coded and then the outsourcees simply execute that plan, then that is bad but maybe not disastrous.   What's the big deal?  Knowledge is gained, lessons are learned, and decisions are made during the creative exercise of birthing an application, and whoever is physically doing the work gains significantly more know-how than anyone else.  So if these companies are outsourcing the whole kit and caboodle, then I think they are on thin ice because not much intellectual property is retained in-house; of course, whoever did the work makes out pretty well and could even market that domain knowledge to other potential clients... maybe even a given company's competitors!

January 05, 2006 in Business | Permalink | Comments (0) | TrackBack (0)

Attention - The Shortage

It seems ironic that in this current age of convenience and automation and computerization that we have less time and not more.  We rush from activity to activity and seem to have little time to stop and "smell the roses", not to mention spending some quality time with our friends and families!  Perhaps this is a result of expectations being raised for personal productivity due to these modernizations along with the increasingly competitive world market.  Whatever the cause, we find ourselves with an attention shortage as a result.  As the amount of stuff we deem important to track/consume continues to increase, we are reduced to a frenzied, multi-tasking state where we are never fully engaged with what we are currently doing *now* because we are constantly thinking about three other things at the same time! 

So what do we do to combat this growing attention/time shortage?  It may not be rocket science, but I recommend the following tactics:

  1. SIMPLIFY/SHOW RESTRAINT: Do you really need to keep up with every episode of your favorite show(s)?  Do you really need to consume every X gadget that Y produces?  We need to pick our battles (attention targets) wisely and not become embroiled in trivial things that don't make a difference in the eternal scope of things.
  2. DELEGATE: Are you a control freak?  Do you feel like you are humanity's last great hope?  Get over it!  We are only going to make it through this together.  Distribute your load throughout a team, although preferably one with congruent goals and desires.
  3. AGGREGATE: Use tools and techniques to allow for you to be "abstracted" away from the line-by-line details.  Instead of constantly trying to monitor everything you care about yourself, invoke some intelligence agent/pundit to do it for you, which in turn will provide you with a distillation of the material in question.

With regard to #3, this is where we hope to make a difference at Grimaldi Productions.  We are building a product called Mentations that will be able to "learn" what is important to you (i.e., what you think about... your mentations) and monitor these things for you, providing you information at a glance through dynamic pictures (a net-driven dashboard of sorts) which visually summarize your status with regard to these categories.  We'd love to get your feedback on our progress so far - you can download our work-in-progress from www.mentations.com!

November 10, 2005 in Life, Web/Tech | Permalink | Comments (0) | TrackBack (0)

Software Development Stage Labeling - The Deficiency

The emergence of Application Service Providers, otherwise known as Software-as-a-Service, has made the notion of having formal software development stages somewhat deficient as applied to this form of software deployment.  Is it meaningful to label something as Alpha, Beta, Release Candidate, or General Availability Release (GAR)??  I say no.  Why?  Because as a service, the latest software build is constantly being delivered to end-users.  In other words, to say that your software is 'alpha' means little to someone who is actively using this version.  To them, this is your product as it currently exists, i.e. GAR.  I would maintain that simply giving your software service a numerical version designation says enough.  For instance, something that is version 0.5 connotes one thing versus something that is version 9.0.  The former says that the software service is fairly immature and potentially unstable versus the latter which indicates maturity.  Each major addition of functionality/milestone would increment the version number by 1 whole number versus a minor release to address bugs, etc. which would increment the version by 1 decimal number.  As an example, version 1.0 would change to 2.0 for a major change in functionality versus 1.1 for a minor release to address bugs.  In summary, in the software service world, giving something the designation of 'alpha' or 'beta' is a bit of a misnomer since presumably, as a service, your software will be constantly evolving with enhancements being periodically if not frequently delivered to end-users.

October 13, 2005 in Web/Tech | Permalink | Comments (0) | TrackBack (0)

Next »

About

Recent Posts

  • Report Writing Tips using COT
  • Code On Time (COT) versus ASP.NET MVC (and also Dynamic Data)
  • Mentations - The Progress Made Thus Far
  • Entrepreneurship - Insight #2
  • UMPC/Origami - The Killer App
  • Entrepreneurship - Insight #1
  • Entrepreneurship - The Introduction
  • Intellectual Property - The Outsourcing Of
  • Attention - The Shortage
  • Software Development Stage Labeling - The Deficiency

Archives

  • June 2013
  • July 2012
  • December 2006
  • August 2006
  • April 2006
  • February 2006
  • January 2006
  • November 2005
  • October 2005
  • September 2005
Subscribe to this blog's feed