Telerik Forums
UI for ASP.NET AJAX Forum
1 answer
64 views
I have 2 radtreeview controls in a site, and want to copy one node the other tree control by drag/drop functionality but the source node is being deleted from the source node (cut/paste), I want to emulate the copy functionality, without deleting the node form the source.
Thanks in advance for the help.
Princy
Top achievements
Rank 2
 answered on 27 Mar 2012
1 answer
101 views
Hi,

i have a problem with the listview update function.
I'm using the CRUD Operations for the update.

My database looks something like:
fk1
fk2
id
...
...

fk1,fk2 and id are part of the primary key.

My listview can update every column, except columns belonging to the pk. Is this intended or am i doing something wrong?

Greetings

PS: I'm using a linqdatasource.


Antonio Stoilkov
Telerik team
 answered on 27 Mar 2012
4 answers
199 views
We are using RadScheduler and RadAjaxManager and it works for the first AJAX request (eg, change month) but the second request does nothing, no error message, no change to display at all.

This is a little complex to explain but the specifics of the problem are that the website it is used on is a content management system that does not have actual ASPX pages for content pages, instead it uses ASP.NET 4.0 page routing. A routing rule sends the page request to a specific ASPX page which works out the URL requested and displays the requested content.

The problem we are having only occurs on pages requested this way. Our RadScheduler/RadAjaxManager are in an ASCX custom control and if I add that control directly to an ASPX file and request it directly the problem does not happen.

This is the code from our ASCX control:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WsiEventCalendar.ascx.cs" Inherits="STAFF.PageTemplates.WsiEventCalendar" %>
<%@ Register TagPrefix="scheduler" TagName="AdvancedForm" Src="AdvancedForm.ascx" %>
<%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %>
  
<asp:Panel ID="pnlError" runat="server" Visible="false">
    Event not found.
</asp:Panel>
    <telerik:RadScriptManager ID="RadScriptManager1" runat="server">
        <Scripts>
         <asp:ScriptReference Path="AdvancedForm.js" />
            <%--Needed for JavaScript IntelliSense in VS2010--%>
            <%--For VS2008 replace RadScriptManager with ScriptManager--%>
            <asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.Core.js" />
            <asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.jQuery.js" />
            <asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.jQueryInclude.js" />
        </Scripts>
    </telerik:RadScriptManager>
    <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server" >
            <AjaxSettings>
                <telerik:AjaxSetting AjaxControlID="RadScheduler1">
                    <UpdatedControls>
                        <telerik:AjaxUpdatedControl ControlID="RadScheduler1" LoadingPanelID="RadAjaxLoadingPanel1" />
                    </UpdatedControls>
                </telerik:AjaxSetting>
            </AjaxSettings>
        </telerik:RadAjaxManager>
        <telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server" />
          
        <script type="text/javascript"
        //<![CDATA[
  
            // Dictionary containing the advanced template client object
            // for a given RadScheduler instance (the control ID is used as key).
            var schedulerTemplates = {};
  
            function schedulerFormCreated(scheduler, eventArgs) {
                // Create a client-side object only for the advanced templates
                var mode = eventArgs.get_mode();
                if (mode == Telerik.Web.UI.SchedulerFormMode.AdvancedInsert ||
                    mode == Telerik.Web.UI.SchedulerFormMode.AdvancedEdit) {
                    // Initialize the client-side object for the advanced form
                    var formElement = eventArgs.get_formElement();
                    var templateKey = scheduler.get_id() + "_" + mode;
                    var advancedTemplate = schedulerTemplates[templateKey];
                    if (!advancedTemplate) {
                        // Initialize the template for this RadScheduler instance
                        // and cache it in the schedulerTemplates dictionary
                        var schedulerElement = scheduler.get_element();
                        var isModal = scheduler.get_advancedFormSettings().modal;
                        advancedTemplate = new window.SchedulerAdvancedTemplate(schedulerElement, formElement, isModal);
                        advancedTemplate.initialize();
  
                        schedulerTemplates[templateKey] = advancedTemplate;
  
                        // Remove the template object from the dictionary on dispose.
                        scheduler.add_disposing(function () {
                            schedulerTemplates[templateKey] = null;
                        });
                    }
  
                    // Are we using Web Service data binding?
                    if (!scheduler.get_webServiceSettings().get_isEmpty()) {
                        // Populate the form with the appointment data
                        var apt = eventArgs.get_appointment();
                        var isInsert = mode == Telerik.Web.UI.SchedulerFormMode.AdvancedInsert;
                        advancedTemplate.populate(apt, isInsert);
                    }
                }
            }
              
        //]]>
        </script>
    <telerik:RadCodeBlock ID="RadCodeBlock1" runat="server">
        <script type="text/javascript">
            function Export(sender, e) {
                $find("<%= RadAjaxManager1.ClientID %>").__doPostBack(sender.name, "");
            }
        </script>
    </telerik:RadCodeBlock>
    <style type="text/css">
        .RadScheduler .rsExportButton
        {
            position: absolute;
            bottom: 0;
            right: 0;
            border: 0;
            height: 24px;
            width: 24px;
            background: url('/images/icons/Outlook.gif') no-repeat center center;
        }
        .RadScheduler .rsAllDayRow .rsExportButton
        {
            right: 20px;
            height: 16px;
            width: 16px;
            background: url('/images/icons/SmallOutlook.gif');
        }
    </style>
<asp:Panel ID="pnlForm" runat="server">
    <telerik:RadScheduler ID="RadScheduler1" runat="server" SelectedView="WeekView"
                TimeZoneOffset="00:00:00" DayStartTime="08:00:00" DayEndTime="18:00:00" OnAppointmentCreated="RadScheduler1_AppointmentCreated" 
                ProviderName="SchedulerData" EnableDescriptionField="True" AppointmentStyleMode="Default" OnAppointmentCommand="RadScheduler1_AppointmentCommand" 
            OnClientFormCreated="schedulerFormCreated" CustomAttributeNames="AppointmentColor,EventLocation">
            <AdvancedForm Modal="true" />
            <Reminders Enabled="false" />
            <AppointmentTemplate>
                <div class="rsAptSubject">
                    <%# Eval("Subject") %>
                </div>
                <%# Eval("Description") %>
                <div style="text-align: right;">
                    <asp:Button runat="server" ID="Button1" CssClass="rsExportButton" ToolTip="Export to iCalendar"
                    CommandName="Export" OnClientClick="Export(this, event); return false;" Style="cursor: pointer;
                    cursor: hand;" />
                </div>
            </AppointmentTemplate>
            <AdvancedEditTemplate>
                <scheduler:AdvancedForm runat="server" ID="AdvancedEditForm1" Mode="Edit" Subject='<%# Bind("Subject") %>'
                    Description='<%# Bind("Description") %>' Start='<%# Bind("Start") %>' End='<%# Bind("End") %>'
                    RecurrenceRuleText='<%# Bind("RecurrenceRule") %>' EventLocation='<%# Bind("EventLocation") %>'
                    AppointmentColor='<%# Bind("AppointmentColor") %>' AudienceID='<%# Bind("Audience") %>'
                    CategoryID='<%# Bind("Category") %>' />
            </AdvancedEditTemplate>
            <AdvancedInsertTemplate>
                <scheduler:AdvancedForm runat="server" ID="AdvancedInsertForm1" Mode="Insert" Subject='<%# Bind("Subject") %>'
                    Start='<%# Bind("Start") %>' End='<%# Bind("End") %>' Description='<%# Bind("Description") %>'
                    RecurrenceRuleText='<%# Bind("RecurrenceRule") %>' EventLocation='<%# Bind("EventLocation") %>'
                    AppointmentColor='<%# Bind("AppointmentColor") %>' AudienceID='<%# Bind("Audience") %>'
                    CategoryID='<%# Bind("Category") %>' />
            </AdvancedInsertTemplate>
            <TimelineView UserSelectable="false" />
            <TimeSlotContextMenuSettings EnableDefault="true" />
            <AppointmentContextMenuSettings EnableDefault="true" />
    </telerik:RadScheduler>
</asp:Panel>

And the code behind:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Telerik.Web.UI;
using System.Text;
using SharedDataAccess;
  
namespace STAFF.PageTemplates
{
    public partial class WsiEventCalendar : System.Web.UI.UserControl
    {
  
        protected void Page_Load(object sender, EventArgs e)
        {
  
        }
        protected void RadScheduler1_AppointmentCreated(object sender, AppointmentCreatedEventArgs e)
        {
            e.Appointment.ToolTip = e.Appointment.Subject + ": " + e.Appointment.Description;
  
            //showing the recurring icons
            if (e.Appointment.RecurrenceState == RecurrenceState.Master || e.Appointment.RecurrenceState == RecurrenceState.Occurrence)
            {
                Panel recurrenceStateDiv = new Panel();
                recurrenceStateDiv.CssClass = "rsAptRecurrence";
                e.Container.Controls.AddAt(0, recurrenceStateDiv);
            }
  
            if (e.Appointment.RecurrenceState == RecurrenceState.Exception)
            {
                Panel recurrenceStateDiv = new Panel();
                recurrenceStateDiv.CssClass = "rsAptRecurrenceException";
                e.Container.Controls.AddAt(0, recurrenceStateDiv);
            }
  
        }
  
        protected void RadScheduler1_AppointmentCommand(object sender, AppointmentCommandEventArgs e)
        {
            if (e.CommandName == "Export")
            {
                WriteCalendar(RadScheduler.ExportToICalendar(e.Container.Appointment));
            }
        }
  
       
        private void WriteCalendar(string data)
        {
            HttpResponse response = Page.Response;
  
            response.Clear();
            response.Buffer = true;
  
            response.ContentType = "text/calendar";
            response.ContentEncoding = Encoding.UTF8;
            response.Charset = "utf-8";
  
            response.AddHeader("Content-Disposition", "attachment;filename=\"WsiEventExport.ics\"");
  
            response.Write(data);
            response.End();
        }
  
    }
}

Any idea why this problem is happening only in these circumstances?
John
Top achievements
Rank 1
 answered on 27 Mar 2012
1 answer
117 views
Hi,

I am facing Dock floating issue in my project. I implemented telerik Raddock control under RadZone. Whenever i will drag the Dock to outside the Zone and leave same place then the Dock position has same where i left the Dock.

I want to force it so that items can never be floating windows. They should always be docked.

We should be able to move them between docks, but if you drop it out of a dock zone, it should return back to it's previous position automatically.

 I don't want ,the position of Dock can fix where i left the Dock. I want when i leave the Dock outside the Zone ,it should come to the same Zone or it will fix on particular zone which is nearer or wherever i am dropping in zone only.
This issue ,i am reporting because when i am leaving the Dock in different position then its not saving the particular Dock position in my database.
I attached screenshot for reference.

Please help me for this issue.

Thanks,
Rajesh
Rajesh
Top achievements
Rank 1
 answered on 27 Mar 2012
0 answers
113 views
I would like to remove the vertical scroll and preserve the landscape for the telerik radgrid of internet explorer 9 I have tried all ways but I can not always generate a vertical scroll when doing so does horinzontal scroll on page

this makes IE compatibility mode


in a first image is as it comes by default the grid in this case when you start the grid do not want to scroll vertically and therefore selected the seguna when a row is activated scrolling but both the grid such as the page
hugo arturo
Top achievements
Rank 1
 asked on 27 Mar 2012
5 answers
1.5K+ views
Hi,

I'm using the following grid:

<telerik:RadGrid 
    Width="350px" 
    Height="527px"
                         
    <MasterTableView  
        TableLayout="Fixed"
 
        <Columns> 
            <telerik:GridTemplateColumn> 
                <HeaderStyle Width="257px" /> 
            </telerik:GridTemplateColumn> 
 
            <telerik:GridBoundColumn> 
                <HeaderStyle Width="65px" /> 
            </telerik:GridBoundColumn> 
 
        </columns> 
    </MasterTableView> 
 
    <ClientSettings> 
        <Scrolling AllowScroll="True" ScrollHeight="475px" UseStaticHeaders="true" SaveScrollPosition="True"></Scrolling> 
    </ClientSettings> 
 
</telerik:RadGrid> 

(showing only parts related to sizing and scrolling).

This code gives me the following result (table in red) :
   - when there are not enough items in the grid to require scrolling: screenshot
   - when there are enough items in the grid to allow scrolling: screenshot

I would like to have a vertical scrollbar on the right of this grid without having a horizontal one.

- If I set Width="100%" to my MasterTableView, then the 2 columns take all the table's width, which is nice when there's not enough items in the grid to allow scrolling. As soon as scrolling is needed, the vertical scrollbar shows up (at the correct location, i.e. "inside" the grid, so the grid width is still 350px - that's all the space I have). But because the vertical scrollbar takes like 15 (?) pixels in width, there's not enough space anymore for my 2 columns and this results in a horizontal scrollbar showing up.

- I would like either:
    a) have the vertical scrollbar ONLY shows up (no horizontal). In that case, I can hardly imagine how it would manage displaying my 2 columns with a correct width in both cases where scrolling is needed or not needed.
    b) have the vertical scrollbar ONLY always shown. In that case, my 2 columns width is the same whereas we need scrolling or not, only the scrollbar would get enabled or disabled. This is what I'm looking for.

Is it possible to achieve this?

Thanks
Nicolas


hugo arturo
Top achievements
Rank 1
 answered on 27 Mar 2012
3 answers
187 views
Issue: Social buttons (ShareThis) show up initially on load but on ajaxing on Tab Strip the ShareThis buttons disappear. Spent many hours trying to figure this out and tried all the forum suggestions but nothing seems to work. Pls advise fix. Thx 

Here is sample code (stripped down)

<telerik:RadAjaxPanel runat="server" ID="rjpFeatureDeal" LoadingPanelID="RadAjaxLoadingPanel1"
    ClientEvents-OnRequestStart="conditionalPostback" >
       <div class="subrub1">
                        <telerik:RadTabStrip ID="rtsUserDeal" runat="server" OnTabClick="rtsUserDeal_TabClick" Skin="Black">
                              
                        </telerik:RadTabStrip>
       </div>

 <asp:Panel runat="server" ID="pnlsocial" Width="100%" Direction="LeftToRight">
                                                   
                                                    <div id="divShareThis" runat="server">
                                                        <asp:Label ID="lblPageCustomURL" runat="server" Visible="false"></asp:Label>
                                                        <asp:Label ID="lblPageCustomTitle" runat="server" Visible="false" Text=""></asp:Label>
                                                    </div>

                                               <div id="divShareThisScript" runat="server">
                                                    </div> 

             <div id="ShareThisSmall" class="clsShareThis" runat="server">
                                                        
                    <span class='st_twitter' st_url="<%=lblPageCustomURL.Text%>" st_title="<%=lblPageCustomTitle.Text %>"></span>
                     <span class='st_linkedin' st_url="<%=lblPageCustomURL.Text%>" st_title="<%=lblPageCustomTitle.Text %>"> </span>
                      <span class='st_email' st_url="<%=lblPageCustomURL.Text%>" st_title="<%=lblPageCustomTitle.Text %>"></span>
                      <span class='st_sharethis' st_url="<%=lblPageCustomURL.Text%>" st_title="<%=lblPageCustomTitle.Text %>"></span>
                                                          
            </div>

</asp:Panel>
</telerik:RadAjaxPanel >


<!----ShareThis codebehind script -->

   public static string BuildShareThisScript(string PublisherID)
   {
       //   <!--ShareThis script:-->
       //<script type="text/javascript" src="http://w.sharethis.com/button/buttons.js"></script> 
       //  <script type="text/javascript"> 
       //   stLight.options({ 
       //           publisher:  'XXXXXXX',
       //   }); 
       //   </script> 

       string ShareThis = "<script type=\"text/javascript\" src=\"http://w.sharethis.com/button/buttons.js\"></script>";
       ShareThis += "<script type=\"text/javascript\">";
       ShareThis +=  "stLight.options({publisher:'" + PublisherID + "'});</script>";
       return ShareThis;

   }

 string scriptString = Social.BuildShareThisScript(ShareThisPublisherID);
  divShareThisScript.InnerHtml = scriptString;
                        


Pavlina
Telerik team
 answered on 26 Mar 2012
1 answer
77 views
Here I try Radupload with RadProgressArea in that facing some of issue 

1)  mention in AllowedFileExtensions & MaxFileSize is not validating at client side
2) RadProgressArea  primary progress always 100% not status update and the current file name which is up loding  is not geting
3) the file is saving at the target folder can not be customize with file name
 here i giving code that i used
//////////////////////design////////////////////////////////////
<table>
                <tr>
                    <td>
                        <telerik:RadProgressManager ID="Radprogressmanager1" runat="server" />
                        <table>
                            <tr>
                                <td>
                                    <telerik:RadUpload ID="RadUpload1" runat="server"
                                           Skin="Windows7" OverwriteExistingFiles="false"  InitialFileInputsCount="1"
                                                            MaxFileInputsCount="5" AllowedFileExtensions=".doc,.docx,.pdf,.xls,.xlsx,.xps,.txt,.rtf,.jpg,.jpeg,.png,.gif,.tiff"
                                                            
                                        MaxFileSize="5242880" ReadOnlyFileInputs="True" Width="340px">
                                                              
                                        
                                    </telerik:RadUpload>
                                    <asp:CustomValidator ID="Customvalidator1" runat="server" Display="Dynamic" ClientValidationFunction="validateFiletype"
                                        ValidationGroup="UP">
                    <span style="FONT-SIZE: 11px;">Invalid file extensions. Please select only doc,docx,pdf,xls,xlsx,xps,txt,rtf,jpg,jpeg,png,gif or tiff files.</span>
                                    </asp:CustomValidator>
                                       
                                </td>
                            </tr>
                        </table>
                        <div class="submitArea11">
                            <asp:LinkButton ID="SubmitButton123" runat="server" CssClass="greenbutton " TabIndex="18"
                                OnClick="SubmitButton123_Click"  ValidationGroup="UP" ToolTip="Click it to Save the File"><span>Upload files</span></asp:LinkButton>
                                
                        </div>
                        <telerik:RadProgressArea runat="server" ID="ProgressArea1" Skin="Windows7">
                            <Localization Uploaded="Uploaded"></Localization>
                        </telerik:RadProgressArea>
                    </td>
                </tr>
            </table>


/////////////////////////////////////// code////////////////////////////

  Public Function DesignAttachmenttable() As DataTable
        Dim dtattachment As New DataTable("Attachment")
        dtattachment.Columns.Add("Filename")
        dtattachment.Columns.Add("FilePath")
        Return dtattachment
    End Function

 Protected Sub Page_Load1(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If IsPostBack And RadUpload1.UploadedFiles.Count > 0 Then
                HandleUpload()
            End If
            If Not IsPostBack() Then
                If Not IsPostBack Then
                    ProgressArea1.Localization.UploadedFiles = "Completed Steps: "
                    ProgressArea1.Localization.CurrentFileName = "Step: "
                    ProgressArea1.Localization.TotalFiles = "Total Steps:"
                End If
End If
End Sub

Protected Sub SubmitButton123_Click(ByVal sender As Object, ByVal e As EventArgs)
        If RadUpload1.UploadedFiles.Count > 0 Then
            If Session("Attachment") Is Nothing Then
                dtAttachment.Clear()
                athgrv.DataSource = dtAttachment
                athgrv.DataBind()
            Else
                dtAttachment = Session("Attachment")
                athgrv.DataSource = dtAttachment
                athgrv.DataBind()
            End If
        End If
    End Sub

    Private Sub UpdateProgressContext(ByVal File As UploadedFile)
        Const total As Integer = 100
        Dim progress As RadProgressContext = RadProgressContext.Current
        progress.Speed = "N/A"


        For i As Integer = 0 To total - 1
            progress.PrimaryTotal = total
            progress.PrimaryValue = 1
            progress.PrimaryPercent = i


            progress.SecondaryTotal = total
            progress.SecondaryValue = i
            progress.SecondaryPercent = i
            progress.CurrentOperationText = File.GetName
            If Not Response.IsClientConnected Then
                Exit For
            End If
            progress.TimeEstimated = (total - i) * 100
            System.Threading.Thread.Sleep(100)
        Next
    End Sub

    Private Sub HandleUpload()
        For Each file As UploadedFile In RadUpload1.UploadedFiles
            Dim dt As String = DateTime.Now.ToString("MMddyyyy_hhmmss") + "_"
            Fname = dt + file.GetName
            Fpath = Server.MapPath("~/UploadedFiles/") + Fname
            file.SaveAs(Fpath)
            If Session("Attachment") Is Nothing Then
                Session("Attachment") = DesignAttachmenttable()
                dtAttachment = Session("Attachment")
            Else
                dtAttachment = Session("Attachment")
            End If
            Dim dr As Data.DataRow = Nothing
            dr = dtAttachment.NewRow
            dr("Filename") = Fname
            dr("FilePath") = Fpath
            dtAttachment.Rows.Add(dr)
            dtAttachment.AcceptChanges()
            Session("Attachment") = dtAttachment
        Next
    End Sub



 Kindly help with detail example
Richard
Top achievements
Rank 1
 answered on 26 Mar 2012
1 answer
176 views
Hi all,
I have bid a radgrid with entity data source object control and i was performing all operations like insert,edit, delete, filter, sorting, paging so all of these working fine but when i am jumping or navigate on last page and delete whole records of last page when last record is deleted than grid show message "No records to display." rather than navigate previous page so can any one please tell me how can i acheive this

Thanks,
Richard
Top achievements
Rank 1
 answered on 26 Mar 2012
0 answers
59 views
I am following the online sample located here loadondemand tabStrip. Version Q32011 is being used.

I receive two JS errors:
Microsoft JScript runtime error: 'this.ClientSettings.AllowKeyboardNavigation' is null or not an object
Microsoft JScript runtime error: 'undefined' is null or not an object

I believe the second one is a result of the first. Some have reported disabling the setting above has worked for them. This may not be an option for our clients and I need to know the root of the problem to have accessibility enabled.

I have checked the follow resources which did not resolve my issue:
  1. http://www.telerik.com/community/forums/aspnet-ajax/tabstrip/known-issues-and-breaking-changes-radtabstrip-and-radmultipage.aspx 
  2. https://www.google.com/search?rlz=1C1CHFX_enUS473US473&ix=sea&sourceid=chrome&ie=UTF-8&q=Microsoft+JScript+runtime+error%3A+'this.ClientSettings.AllowKeyboardNavigation'+is+null+or+not+an+object#hl=en&rlz=1C1CHFX_enUS473US473&sclient=psy-ab&q=telerik+Microsoft+JScript+runtime+error%3A+this.ClientSettings.AllowKeyboardNavigation+is+null+or+not+an+object&oq=telerik+Microsoft+JScript+runtime+error:+this.ClientSettings.AllowKeyboardNavigation+is+null+or+not+an+object&aq=f&aqi=&aql=&gs_l=serp.3...17338319l17343215l1l17343467l2l0l0l0l0l0l0l0ll0l0.llsin.&pbx=1&bav=on.2,or.r_gc.r_pw.r_cp.r_qf.,cf.osb&fp=49e91e21499bfe9d&ix=sea&biw=1600&bih=713

Please advise and thanks in advance.
Johnathan
Top achievements
Rank 1
 asked on 26 Mar 2012
Narrow your results
Selected tags
Tags
+? more
Top users last month
Jay
Top achievements
Rank 3
Iron
Iron
Iron
Benjamin
Top achievements
Rank 3
Bronze
Iron
Veteran
Radek
Top achievements
Rank 2
Iron
Iron
Iron
Bohdan
Top achievements
Rank 2
Iron
Iron
Richard
Top achievements
Rank 4
Bronze
Bronze
Iron
Want to show your ninja superpower to fellow developers?
Top users last month
Jay
Top achievements
Rank 3
Iron
Iron
Iron
Benjamin
Top achievements
Rank 3
Bronze
Iron
Veteran
Radek
Top achievements
Rank 2
Iron
Iron
Iron
Bohdan
Top achievements
Rank 2
Iron
Iron
Richard
Top achievements
Rank 4
Bronze
Bronze
Iron
Want to show your ninja superpower to fellow developers?
Want to show your ninja superpower to fellow developers?