Sitecore Doc

Sitecore solutions can become large and unweildy. Recently I was tasked with the following: Find out which page each of these service methods (40-50) are called. With how .NET and Sitecore applications (generally all good applications) are written, a service method call would be written within a component, but that component could be put on any page!

Luckily these components manifest themselves in Sitecore as "renderings". They can have data sources and parameters. And code, which is what leads us to this mess in the first place ;)

First we'd need a way to map these renderings to service calls. I came up with a generic "info" data field to do that in a JSON file which defines all of the renderings we're interested in. On a side note, I only provide those that we're interested in, this current project would yield a 4-5 MB result file which would be ridiculous if it included everything. That JSON looks like this:

 

{
    "includeUndefined": false,
    "renderings": [
        {
            "id": "6A8BB729-E186-45E7-A72E-E752FDEC2F48",
            "name": "AccountBalancePurgeSublayout",
            "info": [
                "CustomerInformationService.GetCardStatusV4(authHeader, accountId)",
                "CustomerInformationService.GetPurgeInfo(authHeader, accountID)"
            ]
       }
}

Using my (recently updated to accommodate this request) Go Sitecore API, I was able to take that information and map it against every page renderings (or standard values renderings) and produce a file that is filled with every page and their (eventual) calls into service methods. These aren't directly called within the page code (usually), and there's heavy caching going on as well. Here's what the output looks like:

 

    Name:     booking-calendar
    ID:       f1837270-6aca-4115-94bc-08d1a4ed43ad
    Path:     /sitecore/content/REDACTED/booking-calendar
    Url:      https://www.REDACTED.com/booking-calendar
    Renderings:
            Default
                CalendarBooking   
                    Path:         /layouts/REDACTED2013/REDACTED/SubLayouts/Booking/Calendar/CalendarBooking.ascx
                    Placeholder:  content 
                    Info:
                                  ReservationService.GetAllRoomTypesV2()
                                  ReservationService.GetCashCalendarV3(GetAuthHeader(),promoCode,startDate,endDate,isHearingAccess,isMobilityAccess, isWeb)
                                  ReservationService.GetCashCalendarWithArrivalV3(GetAuthHeader(), promoCode, roomType, arrivalDt, numNights, isWeb)
            Mobile
                CalendarBookingMobile   
                    Path:         /layouts/REDACTED2013/REDACTEDMobile/SubLayouts/Booking/Calendar/CalendarBookingMobile.ascx
                    Placeholder:  content 
                    Info:
                                  ReservationService.GetAllRoomTypesV2()
                                  ReservationService.GetCashCalendarV3(GetAuthHeader(),promoCode,startDate,endDate,isHearingAccess,isMobilityAccess, isWeb)
                                  ReservationService.GetCashCalendarWithArrivalV3(GetAuthHeader(), promoCode, roomType, arrivalDt, numNights, isWeb)

This was very useful for this specific task, however it's written in a way that will be very useful going forward, to provide insights into our Sitecore implementations and how the content is structured.

This app will see updates (sorry the code isn't available for now) so that it will show usages among different renderings, unused ones or broken (exists in a renderings field but not as an actual item in sitecore [was deleted or not imported]), and other stuff that I can think of. This binary is named "scdoc" as I like to keep my names short :)  The Sitecore Code Generation tool I wrote is simply "scgen".

Check out that Go Sitecore API though if you want to easily query your Sitecore database!  Happy Coding :)

Goals for the Summer

Goals for the summer... I've written a few of these in my life, it'd be nice to not have to do them again.

#1 - Code generator that generates code generators.
#2 - ORM which, based on inputs, will map the appropriate choice of ORM to my current needs. An ORM Mapper.

https://twitter.com/jasontconnell/status/989965266141569025

More null than null

// no value which is more null than null in this case.

A comment in my code just now. I highly enjoy implying degrees of things which have no degrees. Binaries. It is now more perfect code with this comment in there.

https://twitter.com/jasontconnell/status/989926649465638912

Statistically Hilarious

"Trying to determine a good base average for what I spend every month. But every month is an outlier"

Statistically speaking, that joke is hilarious.

https://twitter.com/jasontconnell/status/989237488651767808

My nail maintenance by necessity

my nails would not be considered "long" by any stretch, but once they get to a certain point, like millimeters, i basically can't type anymore

https://twitter.com/jasontconnell/status/988480972722200576

Royal Family News

Is there a way to turn off Royal family news? I managed to go years without knowing anything and I'd like to keep it that way

https://twitter.com/jasontconnell/status/988394646823895040

Gulp Coffee

compiling coffee script with gulp

"i can just do gulp coffee it looks like.
which is what i do all day anyway."

https://twitter.com/jasontconnell/status/986275775916773376

Philadelphia Sports 2018

I just need the Flyers, Phillies, Villanova, and the Sixers to win Championships this year then I'll be satisfied.

https://twitter.com/jasontconnell/status/980961145271005184

Too bad the Flyers are out of it though.

Brain Bending Stuff

I work on some pretty brain bending stuff, but today I was amazed when I went downstairs and when I got down there I remembered what I went down for :)

https://twitter.com/jasontconnell/status/979879776151318528

Flurry of Posts

I will be making a series of posts. Basically, I find the stuff I write on twitter is hilarious :D And it's only available on twitter.

Also, I was working on a guitar project. I am a huge fan of The Kinks. So I recorded myself playing guitar along with the entire Kinks - We Are The Village Green Preservation Society album. It's my favorite. The project was: Record myself playing guitar, figure out the songs that same day (usually, I did know a few already), it would have to be recorded on my cell phone, and mistakes are allowed!

So generally, the quality is bad and the playing is ok. The music is still great though. Here it is, the Village Green Office Sessions

For twitter posts, I'd probably like to write something that scans twitter for my posts tagged with a certain tag and import them automatically as posts. But I'm in a transition period on this site. Basically I want to learn Google's Cloud suite of tools and rebuild it there. So updates will have to wait.