The Cobblers Shoes

The other day I was pointing out my Corporate web site to a person I was having a conversation with. When looking at this site I was completely embarrassed being a developer and focusing on quality. This site I whipped together on a Sunday afternoon to give my company a presence. This was done more then a year ago and I have been vowing to update the site and do it ‘Right’. The time is coming up to put in the time and effort to get it up to date using the corporate branding and technologies that we use here day to day. I have decided to go down the path of ASP.net MVC for the core page handling technology for the update and hope to create a more interactive site that will contain more ‘good’ bits including downloads and development papers. This of course will take some time as I must continue to focus on client engagements, but I would definitely like to get a first pass up before Insights in Nashville, April 10th. The state of the website reminds me of the quote of the Cobblers shoes, where the worst shoes belongs to the cobbler who has the talent and capability to fix his own shoes. I hope through the next few months that I will feel more proud of the web site then I do now.

Mark

Successful Developer

Rich Eaton who works for Sage in the PSG group has started blogging. You can find his blog here. Rich’s most recent post is about what it would take to be a successful web developer and he will be providing some insight at ‘Insights’ on the attributes of running a successful web dev based consultancy. Rich and I have talks from time to time and he is a really nice guy with some good insight into things. Its worth adding him to your blog list.

With regards to his latest post, its easy to understand the tangibles. The checklist of capabilities one must have.. CSharp .. Check, ASP.net … Check, JavaScript … Check …however I believe there are additional traits you need to ensure that you are successful.

The capability to Gut, Prune and Discover

Lightly put much of what we do now is ‘Groking’ new tech. This will change over time as the platforms change but the pure nature is to dig deep into the guts of things and understand how to accomplish the given task. Those who are truly long term will have a desire to get in a break things apart to see how they work. As you can imagine this information is invaluable for delivering end solutions build on the web platform

A Community Spirit

There is small number of Developers that are working on the Web Platform and of them a portion know it really well. As Rich mentioned there are places to obtain information such as Sage Training, Slx Developer, and Google. I really believe to build up the developer community for the web platform we will need to be even more community focused. I believe in the Past there may have been a fairly insular approach to knowledge sharing. I hope that is a thing of the past though I do believe that there are still those partners that take without contribution.

Energy, and flexibility

Honestly taking on the web platform can take some real investment in time and effort. This is not the old way of doing things. There are new practices, procedures and Technologies that will take time. There can be days as a developer that you will walk away and think I Just do not get it, but with time it will start to piece together nicely. In regards to flexibility, I think it is easy to fall into the trap of trying to code something in the way we did it in the past. Such as data access in the Lan vs. NHibernate in the web. We have to be open to the new ways, but and I say this with a big BUT we also have to be able to make decisions on the right tech for the implementation at hand.

Do not be afraid to Ask, but …

This is a journey that all of us must take if we want to develop for the web. Its ok to ask for help in the various forums. If someone is nice enough to help, say thank you, and maybe even make a comment on their blog, or on the forum. Also understand that (I suspect) that most help will come in the form of direction/details on how to resolve the issue yourself. Do not expect full coded examples as very few have time to come up with working code (unless they already have one)

I tend to read a lot, usually when I am done working for the day and I head to watch some TV. I generally have a book in my hand. I think the single biggest trait of a successful developer is the desire to learn.

The Sprit, my Thoughts

Loved the movie Sin City, so I thought I would watch the Spirit yesterday night. I really thought that this movie was  a waist of valuable time. Really stupid dialog, really stupid story and it looked as if it was trying to rely on the effects that for me were flat.

On a another note, while developing some smart parts in SalesLogix web there comes a time that the part has to become custom. That is the level of functionality exceeds the capability of the designers and/or the it serves better to work on the control in visual studio (my favorite environment). When the part is generated inside of AA an interface is created that represents the UI. When you convert it to a smart part you are effectively taking it out of the generation process and this interface will never be created. So when the site is deployed, if you do not clean the reference code in your smart part you will get a compile error when the page is accessed.

I also have gotten into the pattern of splitting out the code from the ascx file so that I can work on them as separate items. So when I convert a smartpart to custom (assuming I create it in AA first) I do the following steps.

1. Deploy and load the site into VS

2. Split the smart part to the Markup and Code files (add a new file with the same name smartpart.ascx.cs)

When this happens VS will ask me if I would like to put the code in the App_Code folder. Say no so that the file stays with the markup file.

3. Cleanup the markup (its not pretty in there).

I take a moment to cleanup and property indent the markup. This makes it easier for editing at a later date.

4. Make the coding changes required

I will make the changes required, including any refactoring required to simplify the smart part. I will also determine usage of the functionality inside and decide if some of the code should be promoted to common library

5. Test

Since I am in VS, I do both a build to determine any compile time errors and a run through the the functionality. This ensures that before I add it back to the support files for the portal its working as expect

6. Add as a support file(s)

I always work off a filebased VFS which has an extra benefit. I can basically just copy the changed files into the model in the appropriate directory location. This saves me from going to AA and doing the Add Folder … Add File steps which can take quite a long time.

Make sure to add the markup file (ascx), the code file and if available the App_LocalResource file as well.

7. Remove the smart part from the entity model

Once the support files  have been added, I go to the entity model and locate the smart part that I started with and delete it. This ensures that it does not get deployed instead of my new updated custom smart part.

That’s it for now. Hope the steps help someone.

Mark

Spring Cleaning

When you work at a home office it is easy to fall into a rut, where daily activities that just suck up time and energy and give nothing back intrude on quality of life. I am doing a personal audit of late and have noticed for me at least, a disturbing reality that my online life has overtaken my offline world. With Blackberry in hand, Email, IM, Twitter, Facebook and LInkedin  the number of disconnected interactions has only grown over the last year.

I totally get the stay connected thing but looking at the results of the being connected through these sites, I cannot see a distinctive benefit that has arisen. Whats worse for me is reflecting back and seeing that the amount of personal growth and family time has actually gotten smaller, and the times when I am away from the computer(s) I have found it difficult, feeling that I needed to be working or connected, as I might be needed or missing something important. There are things that are truly important such as this Blog, and my work email, however I am starting to understand that Facebook and Twitter have become for me at least a destroyer of what little extra time I have. Twitter, is like being a fly on the wall, listening into someone’s conversation and if you are lucky being able to inject yourself in and get a response. Facebook, while it is nice to be connected with old friends, family, co-workers and the like in a central place, the amount of visual ‘shit’ is overwhelming. Honestly each day that I log in I see changes, I get bombarded with play this, do that, take this survey, check out your IQ … Its this kind of white noise, over the top crap that just sucks the life out of me. Facebook has become a central aggregator or everything that is bad on the net. For the good parts of the site (stay connected) there (for me) is a lot of bad. I can understand the reasoning that the fine people at Facebook are throwing the stuff at the audience since they are still determining a business model, but Yuck! Some days it feels like a boot to the head.

So for me, Twitter is gone, not going to waist anymore time on it. I rather take the time that was committed to it and read, or get off my Ass and go for a walk. I say good bye to the constant notification that someone, somewhere posted something up. I say good bye to the need to verify that indeed what was posted had no meaning to me and I say good bye to the morning ritual of trying to catch-up to hundreds of non-contextual messages.

I spoke with a friend last week, and she had noted my status’s  in Facebook had/are pretty dull (I am here, or there, gonna watch a movie, or out with the family having desert). I reflected on that and looked over the status’s of my friends and noticed that they were in line. What I noticed more, what what has become news worthy which are the mundane actions, and lifestyles that many of us lead. If you dig, and not too deep forsure what we do from day to day is little more then getting up and putting in time. Its a sad state of affairs where the highlight is going out for a coffee, or a piece of cake is the highlight of ones days. Given the fact that I rarely have anything exciting to post I have decided to not post, to also reduce my ‘Facebook’ time to 15 minutes per week for managing my relationships.

I am hoping to further reduce my ‘computer social time’ to get out of this rut I have been in, spending more time with the computers then real people.

Do you find your time being negatively effected by these technological ways of staying connected.

Mark

Dell for a week

I have had my new notebook for a week now and I have to say I am quite happy with it so far. Except for the OS issue (that was quickly resolved) its quite pleasing to work with. Having a notebook with 8gb of memory does make a world of difference on the amount of work that can be managed. An considering I am a developer that has multiple copies of VS, Application Architect, and SQL enterprise manager open its good to still have snappy performance. We will see how it goes from here but not being tethered to a desk to have a good developer experience is a definite win in my books. I have also been getting into JQuery over the last week or so and really like what I see when it comes to the ease of the framework. I think every SalesLogix web developer should have some good strong knowledge of this library.

Vista version matters

I ordered a new notebook from Dell that arrived yesterday. After getting it setup and I started to do some development work and realized that I needed Digest Authentication on the IIS server. Well it seems that with Home Premium the authentication options are not available. I decided to head over to the local office depot and get the upgrade version of Vista and so far its taken more then 2 1/2 hours  (and still going) to upgrade the OS. Remember to have the right version of Vista depending on the development you are trying to do.

My Kung Fu is Strong

Ya, a goofy title, I agree.

This post is somewhat a rant and I hope that it is received well. I generally get many, many requests on how to do something on SalesLogix web platform, or coding in general. I have not really a problem with the questions that are directed as could you point me in the right direction, or what are your thoughts. I do however have a problem with the requests that come in for full working examples of functionality. The reason I have problems is that for the most part its pushing the development and and training effort on me. The fact that I may have the ability to create the solution quicker does not negate that there are real hard costs to making the solution work, generally of which the requester is working on a billing project. Creating this examples can take anywhere from an hour to many hours, I have even had request for work that would take days to provide a solution. For the most part those who also request are not supporters of the community and are only looking for a quick solution to something that is racking their brain.

This is where I remind those who request these working samples that software development is what I do. These things you request are things that I have personally had to learn and invest my time into. I am in no way compensated by Sage to support the community, there is no MVP program, or recognition system. I have to pay to be a partner, for my development software and all of the books that I read to ensure that I keep ahead of the curve. The other thing to keep in mind that I have work commitments like the rest of you to deliver code as expediently as possible and creating these samples pushes billable hours, and can encroach on the little family time left.

I have been toying with a couple of ideas, and would appreciate some feedback to what you dear reader think of the feasibility.

1. Create and distribute a monthly SalesLogix web Journal for a sum of $ per year (Good Idea, what would you be willing to pay)

2. Create a training video subscription that includes web, mobile, C#, debugging topics (Good Idea, what would you be willing to pay)

3. Developer on hand program. For those that only need a few hours per month a way to have direct access and get the coding samples you need but would pay for them

4. Fly on the Wall training. When doing an engagement having web ex meetings on specific items to have a developer watch and mentor around the most difficult parts to be delivered.

5. Architectural review and pre-engagement consulting

I really think that all 5 are advantages for any BP looking to be able to do more web business even if they do not have the core developer completely up to speed on the web development. It also allows you to tie the costs to a development and not have more bench time to finance.

Some of the other things I am trying to gauge and hopefully you can provide some feed back is around specific community needs.

1. Do you see a need for Mobile Development Book if so would you buy one and what would your expectation of price.

2. Do you see a need for more mobile training outside of what Sage provides.

3. Do you see a need for virtual events where several industry notables (Ryan Farley, Stephen Redmond, and Me ) provide special event training. Is this something you would attend?

4. What gaps do you see in tooling. documentation, training, support, and development do you see that would make your life much easier to deliver compelling solutions.

If something I provide helps you please also do send me a small email and let me know. Its always good to hear feedback.

Thanks for reading, If you have any thoughts please email me at mark.dykun@BITtelligentdev.com or give me a call at 519.260.0999. 

Handling Custom Grid Binding

Grid Binding with GetByMethod

So lately there have been questions on how do create a filtered datagrid using the Sage SalesLogix web platform. This is a valid question and the coding around it is somewhat trickier then just binding to a simple list data source. In trying to solve the problem most would go to the GetByMethod approach and find that it would not work based on the training sample. I believe that the functionality had changed between the 7.5 and 7.5.1 timeframe and really requires a bit more.

So we are going to do the method slightly different.

1. Create your business rule method as usual choosing to IList as the result out value

2.  Write your query code using projection based query. What I mean is that instead of having NHibernate return full entities we want just field values specific to the grids results.

3. Iterate through each row adding the result in to the list

The propertyPaths variable is there to define the fields in the object and their specific order. Order counts so make sure to line list to match your projections. You will be creating a ComponentView object for each row and initializing it with both the property path values and the data for the row.

The business rule itself is done. The final piece of the puzzle is the setting of the EntityType property on the datasource. Since we are not returning a specific entity we need to change this value to return Sage.Platform.ComponentModel.ComponentView instead.

Once this is your custom grid is ready to go.

Custom Filtering

I am not going to give a full sample on this one but to point to what I perceive as right direction. Many SalesLogix web developers still shy away from breaking out visual studio and hand coding a smart part. For some of the more advanced methods of handling this functionality it really is the best solution. GetByMethod is great when you want to handle specific use cases but can be somewhat inflexible due to how the method is bound and invoked in the standard smart part. More specifically starting to add filter parameters in to the mix is not an easy thing to do. Other thoughts are to code several methods and just change them up, however if your query code is to be dynamic and allow users to enter a parameter you still have the problem of passing in extra data.

This is were I would advise breaking out the method, and adding the parameters required to meet the use case. Using a custom smart part I would handle the databinding and calling of the business rule myself removing the extra code/goo that would be generated.

Once the functionality was correctly tested in VS I would remove the old smartpart and import the new one into <portal>\Support Files\SmartParts\<Entity>\ making sure that it was available for deployment.

Mix and the future of the Web?

Mix starts in less then 45 minutes. Unfortunately I was unable to attend in person but will be watching the keynote and trying to follow as close as possible to the information that comes out of this event. I am not expecting to hear much that will have an impact on the development or design decisions I make today, but rather indications of the choices I will have to face in the near future. I would really like to see Silverlight get more traction and within the space of business applications become a more robust platform. Hopefully what we will see will be real, tangible feature sets and products that we as consultants, and development companies can take hold of and enrich our customers experiences with.

if your interested in the key note it starts at 9:00am (Vegas) and you can see it at http://live.visitmix.com

Just a little rant .. Move Along

Last night I watched John Stewart’s program where Jim Cramer of CNBC was put on the hot seat. Through this program the single thought that resonated within my mind is that Financial advice should be dull, boring and pragmatic. The culture of making important long term investment decisions should not be based on ranting, or entertainment but on solid fiscal information. I have to admit that I really enjoyed the grilling, and the pointing out of what seems to be the duality of the system of them and us. For the longest time ‘we’ as in the common hard working people have been sponsors of a lifestyle and attitude that determines benefit and bonus not through real world success, but through perceived success, over inflating, and manipulating the market.

The fact that Jim could come on and try to rebuff the accusations, and find himself falling completely short with capability. Jim was called out and from what I could see, rightly so. I would hope that others would also be called out to ensure that the people who watch and believe that what they are watching is information that is the best interest of the general population. However it seems to be targeted to the select few who fill their own internal coffers. I really believe it and expect that there is not easy path to getting wealthy. Its a mix of hard work, sweat, tears and pain that allows you to get ahead. If its easy then there is something that is amiss, if extraordinary promises are made chances  its not a real tangible and sustainable situation. I honestly do not watch CNBC much, I had through the presidential race, but I am starting to find that the reporting on most of these stations are biased one way or another. Simply put most reporting as gotten to the point of requiring the element of entertainment/sensationalism due to the ongoing pressures of advertising dollars. Splashy screens and over promising tag lines to prop up viewer ship seem to be the norm. These in my opinion are a misrepresentation of truthfulness.

I am in no way a journalist nor a financial expert . I spend my days punching on a keyboard and writing code. I will not speak of my personal methods of saving/investing because quite frankly it is personal. I do want to point out however that the advice that we see on TV does not provide the deep and pragmatic thought required to plan for the future. I would love to see a separation from the financial news and the organizations they cover, to ensure that there is no vested interest in the success of the underlying organizations. How really is it possible for these cable companies to offer unbiased information when they themselves have such a vested interest in the market, and their employees as well. I am not a fan of the SCC and its methodologies as I believe that entertainment should be managed by free speech and choice but I do think that any show that wants to say they are a Financial reporting show, should be regulated and have to follow rules of disclosure, and how they advertise themselves.

These are tough times, and the last thing we need is more of the same. Lets call out our financial experts and make them accountable to providing truthful evaluations. To stop the marketing of a brand and to give real world advice that benefits everyone.