Kind of bummed today - my coding day was pretty terrible. I feel like I banged my head against a wall all day. And then it slowly became clear that a ton of people got food poisoning at my wedding reception on Saturday. That is really not fun and kind of puts a damper on the day.
Without the food poisoning it sure was fun though.
Tuesday, February 26, 2013
Thursday, February 21, 2013
For some reason, loml decided to go back to the very beginning of this blog and read every post over the last few days. He had questions. And his reading forced me to go back and revisit some of those times. I started this blog nine years ago. NINE! What do I think I've learned in nine years?
I think I've grown up. Possibly in a sad way depending on who you are, but in a way I don't regret or wish were different at all. I don't think I have such silly tangential thought processes anymore. A lot of my brain power is going toward planning for the future and work. I think about code a lot when I'm not actually at work; sometimes even just in the periphery of my brain (I solve coding problems or prove my code bad at home in the evening without even looking at it). If we should decide to have kids, I think the little time I do devote to silly thoughts will probably dry up altogether. But I don't feel badly about it. And I kind of expect to get it back in 20-30 years when I retire.
I spent a lot of time, when I was single, being lonely and trying to justify it. I still think I did the best I could for myself at the time. But I don't think I learned as much from it as I should have. I'm still learning from it. And I'm sorry to my single friends if I bring up dating too much, that's unfair. Katie from the past is annoyed with attached Katie. Being in a relationship isn't the most important thing.
I am so lucky to have found a job that challenges me. Phew.
Being a homebody is different than being a loner which is different from being antisocial. I need social interaction but I love my house.
I'm sure there's more. But right now I have to go finish packing some hotel favor bags - I've got a wedding reception to pull off this weekend. Bite me winter storm Q (stupid name for a storm anyway).
I think I've grown up. Possibly in a sad way depending on who you are, but in a way I don't regret or wish were different at all. I don't think I have such silly tangential thought processes anymore. A lot of my brain power is going toward planning for the future and work. I think about code a lot when I'm not actually at work; sometimes even just in the periphery of my brain (I solve coding problems or prove my code bad at home in the evening without even looking at it). If we should decide to have kids, I think the little time I do devote to silly thoughts will probably dry up altogether. But I don't feel badly about it. And I kind of expect to get it back in 20-30 years when I retire.
I spent a lot of time, when I was single, being lonely and trying to justify it. I still think I did the best I could for myself at the time. But I don't think I learned as much from it as I should have. I'm still learning from it. And I'm sorry to my single friends if I bring up dating too much, that's unfair. Katie from the past is annoyed with attached Katie. Being in a relationship isn't the most important thing.
I am so lucky to have found a job that challenges me. Phew.
Being a homebody is different than being a loner which is different from being antisocial. I need social interaction but I love my house.
I'm sure there's more. But right now I have to go finish packing some hotel favor bags - I've got a wedding reception to pull off this weekend. Bite me winter storm Q (stupid name for a storm anyway).
Tuesday, February 19, 2013
Making SharePoint Responsive Starting with the MasterPage
Let's start making a sharepoint site responsive! We'll start with modifications to the masterpage. Kyle Schaeffer has done a lot of groundwork and was a jumping off point for us. But we have slowly added in server side controls to help us with our payload.
As a cautionary note, none of this work on responsive is live on the internets yet, we're still building and changing things. I will come back and update any code pages with things we learn in the future. For newbies, start with Kyle, he's great. There are some custom controls in use that are live and I'll be sure to note that when I got into them in depth.
This is a huge and ugly paste. But see below for what we have come up with so far. Summary: we're rewriting the navigation control to output minimal markup. We're restricting the form from rendering any of the sharepoint javascript/css/items for anonymous users (as we use sharepoint for our front facing publishing sites). We are concatenating and minifying all of the javascript and CSS we are including. For each custom control on this page, I'll write a blog post specifically covering it. There was one other developer heavily involved at the beginning of this project(who has since moved to another place of employment) so it's possible that I'm missing some attribution (at least on the restricted render form). I apologize to those SharePointers on the web who we may have borrowed from and not attributed the work to. I worry about this.
We have a project called XXX.Optimization that includes a bunch of controls and handlers to format sharepoint's markup and rendering. I'm going to be walking through that project and sharing the work we did there. I will throw the whole thing up on git at some point shortly. And, as I figure out how blogspot deals with code chunks, hopefully the formatting will improve. Check back next time for the restricted render form.
The masterpage in it's glory.
As a cautionary note, none of this work on responsive is live on the internets yet, we're still building and changing things. I will come back and update any code pages with things we learn in the future. For newbies, start with Kyle, he's great. There are some custom controls in use that are live and I'll be sure to note that when I got into them in depth.
This is a huge and ugly paste. But see below for what we have come up with so far. Summary: we're rewriting the navigation control to output minimal markup. We're restricting the form from rendering any of the sharepoint javascript/css/items for anonymous users (as we use sharepoint for our front facing publishing sites). We are concatenating and minifying all of the javascript and CSS we are including. For each custom control on this page, I'll write a blog post specifically covering it. There was one other developer heavily involved at the beginning of this project(who has since moved to another place of employment) so it's possible that I'm missing some attribution (at least on the restricted render form). I apologize to those SharePointers on the web who we may have borrowed from and not attributed the work to. I worry about this.
We have a project called XXX.Optimization that includes a bunch of controls and handlers to format sharepoint's markup and rendering. I'm going to be walking through that project and sharing the work we did there. I will throw the whole thing up on git at some point shortly. And, as I figure out how blogspot deals with code chunks, hopefully the formatting will improve. Check back next time for the restricted render form.
The masterpage in it's glory.
1: <%@ Master language="C#" %>
2: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3: <%@ Import Namespace="Microsoft.SharePoint" %>
4: <%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
5: <%@ Register Tagprefix="WebPartPages" Namespace="Microsoft.SharePoint.WebPartPages" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
6: <%@ Register TagPrefix="wssuc" TagName="Welcome" src="~/_controltemplates/Welcome.ascx" %>
7: <%@ Register TagPrefix="wssuc" TagName="MUISelector" src="~/_controltemplates/MUISelector.ascx" %>
8: <%@ Register Tagprefix="PublishingWebControls" Namespace="Microsoft.SharePoint.Publishing.WebControls" Assembly="Microsoft.SharePoint.Publishing, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111blorp" %>
9: <%@ Register Tagprefix="PublishingNavigation" Namespace="Microsoft.SharePoint.Publishing.Navigation" Assembly="Microsoft.SharePoint.Publishing, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce1blorp" %>
10: <%@ Register Tagprefix="xxx" Namespace="XXX.SharePoint.WebControls" Assembly="XXX.SharePoint.WebControls, Version=0.9.0.5, Culture=neutral, PublicKeyToken=fe920e10blorp"%>
11: <%@ Register Tagprefix="xxxOpt" Namespace="XXX.SharePoint.Optimization" Assembly="XXX.SharePoint.Optimization, Version=1.0.0.0, Culture=neutral, PublicKeyToken=a667f938c10blorp"%>
12: <%@ Register Tagprefix="xxxNav" Namespace="XXX.SharePoint.Navigation" Assembly="XXX.SharePoint.Navigation, Version=1.0.0.0, Culture=neutral, PublicKeyToken=a80c4cc1e1blorp"%>
13: <!DOCTYPE html>
14: <html lang="en">
15: <head runat="server">
16: <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
17: <meta name="viewport" content="width=device-width"/>
18: <SharePoint:RobotsMetaTag runat="server"/>
19: <title><xxx:MetaTitle runat="server" ID="titleControl" __designer:Preview="Library" __designer:Values="<P N='ID' T='titleControl' /><P N='Page' ID='1' /><P N='TemplateControl' ID='2' /><P N='AppRelativeTemplateSourceDirectory' R='-1' />"/></title>
20: <link type="text/css" rel="stylesheet" href="http://fonts.googleapis.com/css?family=Source+Sans+Pro:400,600,400italic,600italic|Open+Sans+Condensed:300,700,300italic"/>
21: <SharePoint:SPSecurityTrimmedControl runat="server" AuthenticationRestrictions="AuthenticatedUsersOnly">
22: <SharePoint:CssLink runat="server" Version="4"/>
23: <SharePoint:Theme runat="server"/>
24: <SharePoint:ULSClientConfig runat="server"/>
25: <script type="text/javascript">
26: var _fV4UI = true;
27: </script>
28: <SharePoint:ScriptLink language="javascript" name="core.js" OnDemand="true" runat="server"/>
29: <SharePoint:CssRegistration name="<% $SPUrl:~sitecollection/Style Library/XXX/responsive.css %>" After="corev4.css" runat="server"/>
30: <SharePoint:CustomJSUrl runat="server"/>
31: <SharePoint:SoapDiscoveryLink runat="server"/>
32: <asp:ContentPlaceHolder id="PlaceHolderAdditionalPageHead" runat="server"/>
33: <SharePoint:DelegateControl runat="server" ControlId="AdditionalPageHead" AllowMultipleControls="true"/>
34: <SharePoint:SPShortcutIcon runat="server" IconUrl="/_layouts/images/favicon.ico"/>
35: <asp:ContentPlaceHolder id="PlaceHolderBodyAreaClass" runat="server"/>
36: <asp:ContentPlaceHolder id="PlaceHolderTitleAreaClass" runat="server"/>
37: <SharePoint:SPPageManager runat="server"/>
38: <SharePoint:SPHelpPageComponent Visible="false" runat="server"/>
39: <style type="text/css">html {overflow:hidden;}</style> </SharePoint:SPSecurityTrimmedControl>
40: </head>
41: <body onload="if (typeof(_spBodyOnLoadWrapper) != 'undefined') _spBodyOnLoadWrapper();" class="v4master no-js theme-xxx-blue1">
42: <xxxOpt:RestrictedRenderForm runat="server" onsubmit="if (typeof(_spFormOnSubmitWrapper) != 'undefined') {return _spFormOnSubmitWrapper();} else {return true;}" ControlsToRender="workspace"><asp:ScriptManager id="ScriptManager" runat="server" EnablePageMethods="false" EnablePartialRendering="true" EnableScriptGlobalization="false" EnableScriptLocalization="true" /><WebPartPages:SPWebPartManager runat="server"/>
43: <SharePoint:SPNoScript runat="server"/>
44: <SharePoint:DelegateControl runat="server" ControlId="GlobalNavigation"/><!-- **************************************************************** --><!-- BEGIN RIBBON --><div id="s4-ribbonrow" class="s4-pr s4-ribbonrowhidetitle"><div id="s4-ribboncont">
45: <SharePoint:SPRibbon runat="server" PlaceholderElementId="RibbonContainer" CssFile=""><SharePoint:SPRibbonPeripheralContent runat="server" Location="TabRowLeft" CssClass="ms-siteactionscontainer s4-notdlg"><span class="ms-siteactionsmenu" id="siteactiontd"><SharePoint:SiteActions runat="server" accesskey="<%$Resources:wss,tb_SiteActions_AK%>" id="SiteActionsMenuMain" PrefixHtml="" SuffixHtml="" MenuNotVisibleHtml="&nbsp;"><CustomTemplate>
46: <SharePoint:FeatureMenuTemplate runat="server" FeatureScope="Site" Location="Microsoft.SharePoint.StandardMenu" GroupId="SiteActions" UseShortId="true">
47: <SharePoint:MenuItemTemplate runat="server" id="MenuItem_EditPage" Text="<%$Resources:wss,siteactions_editpage%>" Description="<%$Resources:wss,siteactions_editpagedescriptionv4%>" ImageUrl="/_layouts/images/ActionsEditPage.png" MenuGroupId="100" Sequence="110" ClientOnClickNavigateUrl="javascript:ChangeLayoutMode(false);"/>
48: <SharePoint:MenuItemTemplate runat="server" id="MenuItem_TakeOffline" Text="<%$Resources:wss,siteactions_takeoffline%>" Description="<%$Resources:wss,siteactions_takeofflinedescription%>" ImageUrl="/_layouts/images/connecttospworkspace32.png" MenuGroupId="100" Sequence="120"/>
49: <SharePoint:MenuItemTemplate runat="server" id="MenuItem_CreatePage" Text="<%$Resources:wss,siteactions_createpage%>" Description="<%$Resources:wss,siteactions_createpagedesc%>" ImageUrl="/_layouts/images/NewContentPageHH.png" MenuGroupId="200" Sequence="210" UseShortId="true" ClientOnClickScriptContainingPrefixedUrl="if (LaunchCreateHandler('Page')) { OpenCreateWebPageDialog('~site/_layouts/createwebpage.aspx') }" PermissionsString="AddListItems, EditListItems" PermissionMode="All" />
50: <SharePoint:MenuItemTemplate runat="server" id="MenuItem_CreateDocLib" Text="<%$Resources:wss,siteactions_createdoclib%>" Description="<%$Resources:wss,siteactions_createdoclibdesc%>" ImageUrl="/_layouts/images/NewDocLibHH.png" MenuGroupId="200" Sequence="220" UseShortId="true" ClientOnClickScriptContainingPrefixedUrl="if (LaunchCreateHandler('DocLib')) { GoToPage('~site/_layouts/new.aspx?FeatureId={00bfea71-e717-4e80-aa17-d0c71b360101}&ListTemplate=101') }" PermissionsString="ManageLists" PermissionMode="Any" VisibilityFeatureId="00BFEA71-E717-4E80-AA17-D0C71B360101" />
51: <SharePoint:MenuItemTemplate runat="server" id="MenuItem_CreateSite" Text="<%$Resources:wss,siteactions_createsite%>" Description="<%$Resources:wss,siteactions_createsitedesc%>" ImageUrl="/_layouts/images/newweb32.png" MenuGroupId="200" Sequence="230" UseShortId="true" ClientOnClickScriptContainingPrefixedUrl="if (LaunchCreateHandler('Site')) { STSNavigate('~site/_layouts/newsbweb.aspx') }" PermissionsString="ManageSubwebs,ViewFormPages" PermissionMode="All" />
52: <SharePoint:MenuItemTemplate runat="server" id="MenuItem_Create" Text="<%$Resources:wss,siteactions_create%>" Description="<%$Resources:wss,siteactions_createdesc%>" MenuGroupId="200" Sequence="240" UseShortId="true" ClientOnClickScriptContainingPrefixedUrl="if (LaunchCreateHandler('All')) { STSNavigate('~site/_layouts/create.aspx') }" PermissionsString="ManageLists, ManageSubwebs" PermissionMode="Any" />
53: <SharePoint:MenuItemTemplate runat="server" id="MenuItem_ViewAllSiteContents" Text="<%$Resources:wss,quiklnch_allcontent%>" Description="<%$Resources:wss,siteactions_allcontentdescription%>" ImageUrl="/_layouts/images/allcontent32.png" MenuGroupId="300" Sequence="302" UseShortId="true" ClientOnClickNavigateUrl="~site/_layouts/viewlsts.aspx" PermissionsString="ViewFormPages" PermissionMode="Any" />
54: <SharePoint:MenuItemTemplate runat="server" id="MenuItem_EditSite" Text="<%$Resources:wss,siteactions_editsite%>" Description="<%$Resources:wss,siteactions_editsitedescription%>" ImageUrl="/_layouts/images/SharePointDesigner32.png" MenuGroupId="300" Sequence="304" UseShortId="true" ClientOnClickScriptContainingPrefixedUrl="EditInSPD('~site/',true);" PermissionsString="AddAndCustomizePages" PermissionMode="Any"/>
55: <SharePoint:MenuItemTemplate runat="server" id="MenuItem_SitePermissions" Text="<%$Resources:wss,people_sitepermissions%>" Description="<%$Resources:wss,siteactions_sitepermissiondescriptionv4%>" ImageUrl="/_layouts/images/Permissions32.png" MenuGroupId="300" Sequence="310" UseShortId="true" ClientOnClickNavigateUrl="~site/_layouts/user.aspx" PermissionsString="EnumeratePermissions" PermissionMode="Any"/>
56: <SharePoint:MenuItemTemplate runat="server" id="MenuItem_Settings" Text="<%$Resources:wss,settings_pagetitle%>" Description="<%$Resources:wss,siteactions_sitesettingsdescriptionv4%>" ImageUrl="/_layouts/images/settingsIcon.png" MenuGroupId="300" Sequence="320" UseShortId="true" ClientOnClickNavigateUrl="~site/_layouts/settings.aspx" PermissionsString="EnumeratePermissions,ManageWeb,ManageSubwebs,AddAndCustomizePages,ApplyThemeAndBorder,ManageAlerts,ManageLists,ViewUsageData" PermissionMode="Any" />
57: <SharePoint:MenuItemTemplate runat="server" id="MenuItem_CommitNewUI" Text="<%$Resources:wss,siteactions_commitnewui%>" Description="<%$Resources:wss,siteactions_commitnewuidescription%>" ImageUrl="/_layouts/images/visualupgradehh.png" MenuGroupId="300" Sequence="330" UseShortId="true" ClientOnClickScriptContainingPrefixedUrl="GoToPage('~site/_layouts/prjsetng.aspx')" PermissionsString="ManageWeb" PermissionMode="Any" ShowOnlyIfUIVersionConfigurationEnabled="true" />
58: </SharePoint:FeatureMenuTemplate>
59: </CustomTemplate>
60: </SharePoint:SiteActions></span><asp:ContentPlaceHolder id="PlaceHolderGlobalNavigation" runat="server"><SharePoint:PopoutMenu runat="server" ID="GlobalBreadCrumbNavPopout" IconUrl="/_layouts/images/fgimg.png" IconAlt="<%$Resources:wss,master_breadcrumbIconAlt%>" IconOffsetX=0 IconOffsetY=112 IconWidth=16 IconHeight=16 AnchorCss="s4-breadcrumb-anchor" AnchorOpenCss="s4-breadcrumb-anchor-open" MenuCss="s4-breadcrumb-menu"><div class="s4-breadcrumb-top">
61: <asp:Label runat="server" CssClass="s4-breadcrumb-header" Text="<%$Resources:wss,master_breadcrumbHeader%>" /></div><asp:ContentPlaceHolder id="PlaceHolderTitleBreadcrumb" runat="server"><SharePoint:ListSiteMapPath runat="server" SiteMapProviders="SPSiteMapProvider,SPContentMapProvider" RenderCurrentNodeAsLink="false" PathSeparator="" CssClass="s4-breadcrumb" NodeStyle-CssClass="s4-breadcrumbNode" CurrentNodeStyle-CssClass="s4-breadcrumbCurrentNode" RootNodeStyle-CssClass="s4-breadcrumbRootNode" NodeImageOffsetX=0 NodeImageOffsetY=353 NodeImageWidth=16 NodeImageHeight=16 NodeImageUrl="/_layouts/images/fgimg.png" RTLNodeImageOffsetX=0 RTLNodeImageOffsetY=376 RTLNodeImageWidth=16 RTLNodeImageHeight=16 RTLNodeImageUrl="/_layouts/images/fgimg.png" HideInteriorRootNodes="true" SkipLinkText="" /></asp:ContentPlaceHolder></SharePoint:PopoutMenu><div class="s4-die"><asp:ContentPlaceHolder id="PlaceHolderGlobalNavigationSiteMap" runat="server" Visible="false"/></div></asp:ContentPlaceHolder><SharePoint:PageStateActionButton id="PageStateActionButton" runat="server" Visible="false" /></SharePoint:SPRibbonPeripheralContent><SharePoint:SPRibbonPeripheralContent runat="server" Location="TabRowRight" ID="RibbonTabRowRight" CssClass="s4-trc-container s4-notdlg"><SharePoint:DelegateControl runat="server" ID="GlobalDelegate0" ControlId="GlobalSiteLink0" /><a href="#" tabindex="-1" style="display:none"></a><a href="#" tabindex="-1" style="display:none"></a><div class="s4-trc-container-menu"><div><wssuc:Welcome id="IdWelcome" runat="server" EnableViewState="false"/><wssuc:MUISelector ID="IdMuiSelector" runat="server"/></div></div><SharePoint:DelegateControl ControlId="GlobalSiteLink2" ID="GlobalDelegate2" Scope="Farm" runat="server" /></SharePoint:SPRibbonPeripheralContent></SharePoint:SPRibbon></div><div id="notificationArea" class="s4-noti"></div><asp:ContentPlaceHolder ID="SPNavigation" runat="server">
62: <SharePoint:DelegateControl runat="server" ControlId="PublishingConsole" Id="PublishingConsoleDelegate"/></asp:ContentPlaceHolder><div id="WebPartAdderUpdatePanelContainer"><asp:UpdatePanel ID="WebPartAdderUpdatePanel" UpdateMode="Conditional" ChildrenAsTriggers="false" runat="server"><ContentTemplate>
63: <WebPartPages:WebPartAdder ID="WebPartAdder" runat="server"/>
64: </ContentTemplate><Triggers>
65: <asp:PostBackTrigger ControlID="WebPartAdder" />
66: </Triggers>
67: </asp:UpdatePanel></div></div><!-- END RIBBON --><!-- **************************************************************** -->
68: <asp:Panel runat="server" ID="workspace">
69: <div id="s4-workspace">
70: <!-- IGNORE. Sharepoint Div-->
71: <div id="s4-bodyContainer">
72: <!-- IGNORE. Sharepoint Div-->
73: <div id="MSO_ContentDiv" runat="server">
74: <!-- IGNORE. Sharepoint Div-->
75: <sharepoint:spsecuritytrimmedcontrol runat="server" authenticationrestrictions="AuthenticatedUsersOnly"><div id="s4-statusbarcontainer"><div id="pageStatusBar" class="s4-status-s1"></div></div><SharePoint:VisualUpgradePreviewStatus runat="server" /></sharepoint:spsecuritytrimmedcontrol>
76: <!-- NOTE to discuss - any reason we're not using html5 header element?-->
77: <!-- Skip links for accessing page sections quickly on AT -->
78: <ul class="hide">
79: <li><a href="#main-content" title="Skip to right column">Skip main content</a></li>
80: <li><a href="#primary-navigation" title="Skip to main navigation">Skip to site navigation</a></li>
81: <li><a href="#secondary-navigation" title="Skip to left column">Skip to section navigation</a></li>
82: <li><a href="#xxx-shortcuts" title="Skip to campus shortcuts">Skip to XXX shortcuts</a></li>
83: <li><a href="#search" title="search">Skip to search</a></li>
84: </ul>
85: <!-- /skiplinks -->
86: <!-- Hidden xxx Shortcuts which appear when "XXX Shortcuts" is clicked. -->
87: <div class="xxx-shortcuts-drawer" id="sliding-drawer" style="display: none;">
88: </div>
89: <!-- /tactical-drawer -->
90: <!--Slider for small screen navigation-->
91: <nav class="unit size1of5" id="nav-slider" style="display:none;">
92: <span class="unit size3of5">
93: <a name="search"></a>
94: <!--TO DO MAKE THIS SEARCH BOX WORK-->
95: <input class="unit search-input" id="search_input_slider" name="search_input_slider" type="text" onkeypress="javascript:XXX.SearchBox.KeyPress(event);" /><input name="search_submit" class="unit search-btn" type="button" onclick="javascript:XXX.SearchBox.Search();" />
96: </span>
97: <ul class="tab-titles">
98: <li class="site-menu-title"><a class="tab-toggle">Site Menu</a></li>
99: <li class="xxx-shortcuts-title"><a class="tab-toggle">xxx Shortcuts</a></li>
100: </ul>
101: <div class="tab nav-tab">
102: <xxxNav:CustomNavigation runat="server" NavigationProvider="CurrentNavSiteMapProvider" LevelDepth="3" HighestParentActiveOnly="false" CSSClass="unstyled" NavigationID="slider-nav" IncludeUniqueIdentifiers="FALSE" IncludeRootHeader="FALSE"></xxxNav:CustomNavigation>
103: </div>
104: <div class="tab shortcuts-tab">
105: <xxx:XXXResponsiveShortcuts ID="shortcutsSliderControl" runat="server"></xxx:XXXResponsiveShortcuts>
106: </div>
107: </nav>
108: <!-- /slider-->
109: <div class="body-content">
110: <div class="line masthead">
111: <div class="unitRight size2of5">
112: <a name="xxx-shortcuts" class="unit xxx-shortcuts">XXX Shortcuts</a>
113: <span class="unit xxx-search">
114: <a name="search"></a>
115: <asp:ContentPlaceHolder id="PlaceHolderSearchArea" runat="server">
116: <input class="unit search-input" id="search_input" name="search_input" type="text" onkeypress="javascript:XXX.SearchBox.KeyPress(event);" /><input name="search_submit" class="unit search-btn" type="button" onclick="javascript:XXX.SearchBox.Search();" />
117: </asp:ContentPlaceHolder>
118: </span>
119: <nav class="off-canvas-navigation">
120: <a class="menu-button" href="#nav-slider">Pretty icon of horizontal lines</a>
121: </nav>
122: </div>
123: <div class="unit size5of5 xxx-logo">
124: <a class="unit logo-short" href="#">XXX University</a> <a class="unit h1 site-title"
125: href="#">Responsive (TODO! Dynamic name)</a>
126: </div>
127: </div>
128: <!-- /line /masthead -->
129: <nav class="line">
130: <xxxNav:CustomNavigation runat="server" NavigationProvider="GlobalNavSiteMapProvider" LevelDepth="2" HighestParentActiveOnly="true" CSSClass="unit size1of1 nav-primary" NavigationID="global-nav" IncludeUniqueIdentifiers="TRUE" IncludeRootHeader="FALSE"></xxxNav:CustomNavigation>
131: <div class="quick-links" style="display:none">
132: <xxx:ReusableContent runat="server" ID="navQuickLinks" ReusableContentListItemTitle="Quick Links"/>
133: </div>
134: </nav>
135: <!-- /section /line -->
136: <div class="line content-body">
137: <asp:ContentPlaceHolder ID="PlaceHolderLeftNavBar" runat="server">
138: <nav class="unit size1of5" role="navigation" id="nav-secondary">
139: <xxxNav:CustomNavigation runat="server" NavigationProvider="CurrentNavSiteMapProvider" LevelDepth="3" HighestParentActiveOnly="false" CSSClass="unstyled nav-secondary" NavigationID="left-nav" IncludeUniqueIdentifiers="FALSE" IncludeRootHeader="FALSE"></xxxNav:CustomNavigation>
140: </nav>
141: </asp:ContentPlaceHolder>
142: <!-- NOTE to discuss - place article in masterpage or place that in page layouts?-->
143: <asp:ContentPlaceHolder ID="PlaceHolderMain" runat="server" />
144: </div>
145: <!-- /content-body -->
146: <div class="line footer-socialicons">
147: <div class="unitRight size1of5">
148: <a class="unit icon-twitter-sm" href="#" title="Facebook">Facebook</a> <a class="unit icon-vimeo-sm"
149: href="#" title="LinkedIn">LinkedIn</a> <a class="unit icon-youtube-sm" href="#" title="Twitter">
150: Twitter</a> <a class="unit icon-smashup=sm" href="#" title="Social Media Smashup">RSS</a>
151: </div>
152: </div>
153: <!-- /line /footer-socialicons -->
154: <!-- TODO make footer reusable content somehow...make easy for CE's?-->
155: <div class="line footer">
156: <!-- /line -->
157: <div class="hiddenShortcuts" style="display:none;">
158: <xxx:XXXResponsiveShortcuts ID="shortcutsControl" runat="server"></xxx:XXXResponsiveShortcuts>
159: </div>
160: </div>
161: <!-- /line /footer -->
162: <div class="line copyright">
163: </div>
164: <!-- /line /copyright -->
165: </div><!-- /slider-->
166: </div>
167: <!-- IGNORE. /MSO_ContentDiv -->
168: </div>
169: <!-- IGNORE. End of SP Div, /s4-bodyContainer-->
170: </div>
171: <!-- IGNORE. End of SP Div, /s4-workspace-->
172: </asp:Panel>
173: </xxxOpt:RestrictedRenderForm>
174: <asp:Panel runat="server" Visible="false">
175: <!-- s4-titlerow PlaceHolders -->
176: <asp:ContentPlaceHolder id="PlaceHolderPageTitle" runat="server"/>
177: <asp:ContentPlaceHolder id="PlaceHolderSiteName" runat="server"/>
178: <asp:ContentPlaceHolder id="PlaceHolderPageTitleInTitleArea" runat="server" />
179: <asp:ContentPlaceHolder id="PlaceHolderPageDescription" runat="server"/>
180: <asp:ContentPlaceHolder id="PlaceHolderHorizontalNav" runat="server"/>
181: <!-- s4-leftpanel PlaceHolders -->
182: <asp:ContentPlaceHolder id="PlaceHolderLeftNavBarDataSource" runat="server"/>
183: <asp:ContentPlaceHolder id="PlaceHolderCalendarNavigator" runat="server" />
184: <asp:ContentPlaceHolder id="PlaceHolderLeftActions" runat="server"/>
185: <asp:ContentPlaceHolder id="PlaceHolderLeftNavBarTop" runat="server"/>
186: <asp:ContentPlaceHolder id="PlaceHolderQuickLaunchTop" runat="server"/>
187: <asp:ContentPlaceHolder id="PlaceHolderQuickLaunchBottom" runat="server"/>
188: <!-- s4-ca PlaceHolders -->
189: <asp:ContentPlaceHolder id="PlaceHolderPageImage" runat="server"/>
190: <asp:ContentPlaceHolder id="PlaceHolderTitleLeftBorder" runat="server"/>
191: <asp:ContentPlaceHolder id="PlaceHolderMiniConsole" runat="server"/>
192: <asp:ContentPlaceHolder id="PlaceHolderTitleRightMargin" runat="server"/>
193: <asp:ContentPlaceHolder id="PlaceHolderTitleAreaSeparator" runat="server"/>
194: <asp:ContentPlaceHolder id="PlaceHolderLeftNavBarBorder" runat="server"/>
195: <asp:ContentPlaceHolder id="PlaceHolderBodyLeftBorder" runat="server"/>
196: <asp:ContentPlaceHolder id="PlaceHolderBodyRightMargin" runat="server"/>
197: <!-- body PlaceHolders -->
198: <asp:ContentPlaceHolder id="PlaceHolderUtilityContent" runat="server"/>
199: </asp:Panel>
200: <footer>
201: <script type="text/javascript">
202: $('body').removeClass('no-js').addClass('js');
203: </script>
204: <xxxOpt:QuickConcat runat="server" JSFiles="local/jquery-1.7.2.min.js;local/jquery.touchSwipe.min.js;local/jquery.pageslide.js;local/XXX-responsive.js;local/XXX-standard.master.js" CSSFiles="local/responsive.css" AlwaysRecreateFile="true"></xxxOpt:QuickConcat>
205: <asp:ContentPlaceHolder id="PlaceHolderNavSpacer" runat="server">
206: </asp:ContentPlaceHolder>
207: </footer>
208: </body>
209: </html>
Thursday, February 14, 2013
Two post wedding thoughts
- In terms of rolling off the tongue, husband is far superior to fiance. However, just calling him husband sometimes feels a little...hypocritical. If he bellowed wife from another room, my hackles might rise. I'm going to try to get over it so that I can freely yell husband at him from across the house.
- As I'm aging, my emotions are softening like pudding. I am a happy crier now. It's happened twice in the past two weeks. And this particular breed of tears seems to stop me from speaking without fully breaking down in to real sobs. So I become a mute or rush words. It's a weird phenomenon. Watch out world, I'm capable of crying in any situation at this point in life.
Tuesday, February 12, 2013
married
I married loml. Who knew when I nicknamed him that (on his own joke) that it would end up this way. It was fun, relaxing and laid-back: perfect for us. I was only nervous for about three hours day of...I think if we'd had the massive, everyone included wedding here I would have been nervous for days. And then it would have been especially mortifying when I started to cry during my vows. And by cry I mean warble into tears into full on shaking gaspy breaths. I can't wait to see those pictures. Happy tears - so happy. And the vows were really solid for us. Said vows:
I'm not much of a documenter so honestly instagram has been kind of good for me. It prods me to take pictures when I normally wouldn't. It makes me realize that I always have a camera with me in my phone. I think without it, I might have zero pictures instead of the 20 I have (only 9 posted). If you'd like to see a few pics of Hawaii and one or two of us, check them out here: http://instagram.com/kateromoo
Back to real life/work tomorrow. And getting down to the business of finalizing everything for the Chicago wedding reception.
I, Katie, take you loml to be my husband, knowing in my heart that you will be my
constant friend, my faithful partner and my true love. I promise always to be openhearted
and honest with you and to stand by you and encourage you. I will hold you in my heart
and share our life and dreams together.
I'm not much of a documenter so honestly instagram has been kind of good for me. It prods me to take pictures when I normally wouldn't. It makes me realize that I always have a camera with me in my phone. I think without it, I might have zero pictures instead of the 20 I have (only 9 posted). If you'd like to see a few pics of Hawaii and one or two of us, check them out here: http://instagram.com/kateromoo
Back to real life/work tomorrow. And getting down to the business of finalizing everything for the Chicago wedding reception.
Tuesday, January 29, 2013
Thursday, January 24, 2013
Crafting update! So I made a few handmade gifts for Christmas this year. Next year I'd like to ramp it up, maybe make some ornaments for everyone. I need to start this summer though if I truly have a shot in hell of doing it.
For my sister, I finished up some pot holders. Hopefully she's getting real use out of them. That's my second (or my eighth if you count them all individually) completed quilting project. Here's a front shot and a back shot for your viewing pleasure.
And now, no more potholders. I have all the supplies to make my first full size quilt. It's intimidating and exciting. And I hope to start cutting some time in March. You may see some posts of me just showing cutting/laying progress along the way. A full quilt is going to be a huge project.
It's funny, looking at that pic it seems really gold heavy, but it really won't be. The main color of the quilt is a cream color. The gold swirly one will be the backer fabric (so you could argue it's gold friendly but on the underside). There are actually far more options of other colors than there are gold on the actual front of the quilt. But we'll all have to see as it gets closer.
I also made a dog scarf and dog leg warmers as a Christmas gift. It's kind of a joke? My sister got a dog and the dog has a coat (since it gets so cold here). And now the dog has accessories as well.
I am definitely not going to be winning any photography awards any time soon. But that's how I wrapped up 2012 - crafting a few gifts and preparing for my next adventure. I'm also busy embroidering this. Weird truth: I use way more embroidery floss than this seller thinks I will need. I made one of these last year and also ran out. I'm on par to run out again this year. Shrug?
For my sister, I finished up some pot holders. Hopefully she's getting real use out of them. That's my second (or my eighth if you count them all individually) completed quilting project. Here's a front shot and a back shot for your viewing pleasure.
And now, no more potholders. I have all the supplies to make my first full size quilt. It's intimidating and exciting. And I hope to start cutting some time in March. You may see some posts of me just showing cutting/laying progress along the way. A full quilt is going to be a huge project.
It's funny, looking at that pic it seems really gold heavy, but it really won't be. The main color of the quilt is a cream color. The gold swirly one will be the backer fabric (so you could argue it's gold friendly but on the underside). There are actually far more options of other colors than there are gold on the actual front of the quilt. But we'll all have to see as it gets closer.
I also made a dog scarf and dog leg warmers as a Christmas gift. It's kind of a joke? My sister got a dog and the dog has a coat (since it gets so cold here). And now the dog has accessories as well.
I am definitely not going to be winning any photography awards any time soon. But that's how I wrapped up 2012 - crafting a few gifts and preparing for my next adventure. I'm also busy embroidering this. Weird truth: I use way more embroidery floss than this seller thinks I will need. I made one of these last year and also ran out. I'm on par to run out again this year. Shrug?
Tuesday, January 22, 2013
I have officially lost my mind. It's in the wind somewhere, possibly in Hawaii where I will be in a week's time. I know I promised a coding post and perhaps I'll get to it on Thursday. But I am spending so much time just trying to keep my head on, my phone in my purse and my keys located not to mention actual work. It's about my limit. It is my limit.
But that being said, I'm finally excited about getting married. In a week and a half I'll be a Mrs. Mrs. Loml. I'll be in Hawaii and relaxing. Not worrying about a thing. I cannot wait.
I hope to manage some posts while in Hawaii. Perhaps just an image or two. I promise not to rub it in too much.
But that being said, I'm finally excited about getting married. In a week and a half I'll be a Mrs. Mrs. Loml. I'll be in Hawaii and relaxing. Not worrying about a thing. I cannot wait.
I hope to manage some posts while in Hawaii. Perhaps just an image or two. I promise not to rub it in too much.
Thursday, January 17, 2013
Coding introduction
I realize I shouldn't just splat: start in with a coding post. So here's my introduction of who I am and how and what I develop. I'm Katie. I had a quarter life crisis at 23 and decided to get a grad degree in "computers". My only knowledge of "computers" was because of this here blog. In fact, I just got distracted going back to the archives in 2005 to read about my decision to go to grad school and quit my job (I was a much better writer back then and so confused about life). Grad school showed me I love coding. I got a student job when someone took a chance on me and I've been coding ever since.
My first language was java. My second C#. After that I was working in legacy VB and old ASP. Some asp.net and C# when it was available. My student intern gig was promoted to full time. My department reorganized and I was a nobody floating in a sea of peoplesoft and .net developers. SharePoint was picked as our new CMS and 10 sites were slotted to beta in 2007...no one else wanted to do it so it fell on me. And I've been a SharePoint developer ever since. I think you could say my sharp languages are currently javascript, C#, XSL and HTML at this point. And the SharePoint crap. Aside: i've dabbled in ruby on rails and python for funsies.
We use SharePoint at my organization in two main ways: front end websites and collaboration team sites. The team sites are cut and dry - no one really does much to them, development-wise. But the front end stuff is highly customized. We're in the process of reworking our front-end framework to be responsive. It is a challenge - not only is it hard to design a responsive site, but it's even harder to force SharePoint to respond in the way it should. Speed has to be fast (so that mobile devices with a bad connection have a great experience). We need the SharePoint editing tools themselves to still work, but at the same time to be creating HTML5. We need so much to be different than what SharePoint provides. Aside number two, I have a coworker who does all of the design work while I work with all the code doing fun stuff like minimizing HTTP requests and tricking SharePoint into not formatting pages by using tables. He writes CSS but no javascript, so that front-end dynamism is my bag too.
So what I'm going to be putting on this blog is weird stuff I've found in SharePoint as I've gone along. Stuff we've coded that I haven't been able to blatantly rip off of the internet (most development issues/questions are answered by google and Stack Overflow). And I'm going to try to start building a git profile for myself. We do interesting things and we should share them with the world.
If you don't know what any of this stuff I'm saying means, but you want to, let me point you to a few places. If you don't know what it means and don't want to, well, why are you still reading?
Responsive design, to me, is synonymous with Ethan Marcotte. Go to his site or read his book. I own it if you want to borrow it.
SharePoint is...a beast of a CMS. Oh, I guess I should say, a CMS is a content management system. I spend a lot of time on msdn most days, so I might as well link there.
GitHub is a collaborative code sharing community. I've used a lot of git stuff in my life. Probably the first code sample I'll share with you is inspired by a PHP git.
HTML5 and CSS3 are really what makes this responsive stuff possible. New standards that we developers live by. Not sure where to link for those except, you should just go read all of the A Book Apart books. Have them all, will loan.
Stack Overflow is a development help site/forum/thingy. Can be troll-y but usually is super helpful. Example question.
My first language was java. My second C#. After that I was working in legacy VB and old ASP. Some asp.net and C# when it was available. My student intern gig was promoted to full time. My department reorganized and I was a nobody floating in a sea of peoplesoft and .net developers. SharePoint was picked as our new CMS and 10 sites were slotted to beta in 2007...no one else wanted to do it so it fell on me. And I've been a SharePoint developer ever since. I think you could say my sharp languages are currently javascript, C#, XSL and HTML at this point. And the SharePoint crap. Aside: i've dabbled in ruby on rails and python for funsies.
We use SharePoint at my organization in two main ways: front end websites and collaboration team sites. The team sites are cut and dry - no one really does much to them, development-wise. But the front end stuff is highly customized. We're in the process of reworking our front-end framework to be responsive. It is a challenge - not only is it hard to design a responsive site, but it's even harder to force SharePoint to respond in the way it should. Speed has to be fast (so that mobile devices with a bad connection have a great experience). We need the SharePoint editing tools themselves to still work, but at the same time to be creating HTML5. We need so much to be different than what SharePoint provides. Aside number two, I have a coworker who does all of the design work while I work with all the code doing fun stuff like minimizing HTTP requests and tricking SharePoint into not formatting pages by using tables. He writes CSS but no javascript, so that front-end dynamism is my bag too.
So what I'm going to be putting on this blog is weird stuff I've found in SharePoint as I've gone along. Stuff we've coded that I haven't been able to blatantly rip off of the internet (most development issues/questions are answered by google and Stack Overflow). And I'm going to try to start building a git profile for myself. We do interesting things and we should share them with the world.
If you don't know what any of this stuff I'm saying means, but you want to, let me point you to a few places. If you don't know what it means and don't want to, well, why are you still reading?
Responsive design, to me, is synonymous with Ethan Marcotte. Go to his site or read his book. I own it if you want to borrow it.
SharePoint is...a beast of a CMS. Oh, I guess I should say, a CMS is a content management system. I spend a lot of time on msdn most days, so I might as well link there.
GitHub is a collaborative code sharing community. I've used a lot of git stuff in my life. Probably the first code sample I'll share with you is inspired by a PHP git.
HTML5 and CSS3 are really what makes this responsive stuff possible. New standards that we developers live by. Not sure where to link for those except, you should just go read all of the A Book Apart books. Have them all, will loan.
Stack Overflow is a development help site/forum/thingy. Can be troll-y but usually is super helpful. Example question.
Tuesday, January 15, 2013
Things on my mind today:
- How do I make it easy for normal people to insert an image using sharepoint that is also captioned and responsive?
- Suits & Ties and Justin Timberlake
- Career. Coding. Coding. Career. Management. Career. Frown face.
- How can i get myself to drink more water during the day?
- Will i have a massive pimple on my wedding day? I'm close to breaking out...it seems an unfortunate possibility...
- Bane's voice is dumb. So is Batman's. But catwoman is hot (will she bang batman? Is Joseph Gordon Levitt Robin?). We're watching Dark Knight Rises right now, perhaps I'll have these answers before the end?
- Hawaii, 15 days! Screee!
- First coding post on Thursday? I'm thinking about it...
Thursday, January 10, 2013
I'm in love with my fitbit. I received an ultra for Christmas and it is AWESOME. Basically it's a little step counter that I wear at my waist. And actually I'm a first adopter because they just announced a wrist band instead of a little clippy guy. I hear the wrist band doesn't show a step count actively and I need that step count on the click of a button to spur me to take more steps. But listen - it might be the gamer in me - I have started walking at lunch because my step count is below what I feel it should be. Fitbit automatically sets a goal of 10,000 steps a day...and my first day back in the real world I only hit 6,000 (holiday/vacation days don't count as I am a motionless lump). After walking a bit every day at lunch I'm getting closer to 10, though to be fair, even with a 20 minute walk I'm currently at 8512 steps.
It also tracks my sleep - I can wear it on my wrist and it tells me how often I'm highly active every night (the answer is about 5 times on a good night...more on a really tossing/turning night). The night before I got sick (we had a touch of the flu in the house) it cataloged my really poor sleep for me. At this point I'm not wearing it to bed every night - it was interesting for a few nights and then it was basically the same. I will admit that it was a fun measure of what time loml gets in bed every night.
So yes, tracking my steps has been awesome. And maybe even neater for me is my fitbit scale. That's right, my scale - my weight and fat percentage is beamed via my fancy wifi scale to my fitbit account and I can track my progress online. See how active I am, what my weight is, how many steps I climbed. All with little to no effort on my part (I clip my fitbit on every day. That is the extent of my effort).
I have a streak of statistical mathy nerd in me - charts and percentages really make me happy (you should see my RSVP document for our wedding, it calculates all kinds of things, for fun). So the fitbit is right up my alley. Do recommend.
It also tracks my sleep - I can wear it on my wrist and it tells me how often I'm highly active every night (the answer is about 5 times on a good night...more on a really tossing/turning night). The night before I got sick (we had a touch of the flu in the house) it cataloged my really poor sleep for me. At this point I'm not wearing it to bed every night - it was interesting for a few nights and then it was basically the same. I will admit that it was a fun measure of what time loml gets in bed every night.
So yes, tracking my steps has been awesome. And maybe even neater for me is my fitbit scale. That's right, my scale - my weight and fat percentage is beamed via my fancy wifi scale to my fitbit account and I can track my progress online. See how active I am, what my weight is, how many steps I climbed. All with little to no effort on my part (I clip my fitbit on every day. That is the extent of my effort).
I have a streak of statistical mathy nerd in me - charts and percentages really make me happy (you should see my RSVP document for our wedding, it calculates all kinds of things, for fun). So the fitbit is right up my alley. Do recommend.
Tuesday, January 08, 2013
Umba! Remember when I was chronicling the monthly handmade goodies I received? Lo 6 months ago? We're back - and sadly, those packages in between are lost to you forever. Things I remember getting: picture album (for instagram pics), weird magnet vase (that has since been donated) and clothespin magnets (on the fridge). I can't remember what else. But forget all those missing months, what did I get this month?
Pear cobbler chapstick!
This stuff has a pretty strong smell - of like...creme brulee? It feels nice, but I'm not sure about the smell. From Live Beautifully.
Coaster desk calendar!
I unabashedly love and am delighted by this calendar. I generally like calendars - I have one hanging in my cube (of pictures by my brother in law of our family trip to Canada) already but needed a desk size calendar. And it came in the mail as a surprise! Bonus! Happy 2013 Umba! By Sugarcube Press.
Pear cobbler chapstick!
This stuff has a pretty strong smell - of like...creme brulee? It feels nice, but I'm not sure about the smell. From Live Beautifully.
Coaster desk calendar!
I unabashedly love and am delighted by this calendar. I generally like calendars - I have one hanging in my cube (of pictures by my brother in law of our family trip to Canada) already but needed a desk size calendar. And it came in the mail as a surprise! Bonus! Happy 2013 Umba! By Sugarcube Press.
Thursday, January 03, 2013
These last few weeks, besides being on holiday, I've also been tying up all of the loose ends for two weddings (a ceremony + dinner in Hawaii and a party in Chicago). I have planners for both, so I know I'm super lucky and a lot less busy than some brides/grooms. Loml is also OK about helping (though often he does it grudgingly and without opinions). For some things I don't really have opinions either. I want to have a fun party - but the details are less important to me than I expected them to be. I really thought I would be super opinionated about flowers and linens and look/feel - maybe a baby bridezilla with that stuff. But it turns out I don't care that much. Hopefully it'll turn out great.
And while that's a lot of big words, I am trying to coach myself that if something isn't like I imagined it..to not freak out. On the day of my wedding and the day of my wedding reception, I want to just be happy and ready to party. And worrying about being social rather than details (as in, I don't really like crowds and especially crowds where I am the center of attention. Groan). I already am prepared to not really talk to anyone for any length of time in Chicago. Five hours with 300 people = very little time for talking to any one of them..
Wednesday, January 02, 2013
2013
Do I say this every year? I'm not sure, but I'd very much like to commit to writing a blog post twice a week this year. I often will have nothing to say - but in the absence of content, perhaps I can find silliness here again. Do I even have any readers? Debatable. Currently I'm planning on a Tuesday/Thursday schedule. See you again tomorrow!
This year I also want to start blogging about actual code. I am a developer for a living and sometimes we actually do cool things. Eventually I'd like to move any content to a coding blog, but I'm not convinced I am disciplined enough to write about code often enough to actually have a dedicated coding blog. So there will be a trial run or two here.
I'm currently home sick - I was actually bragging about how I rarely get sick to a friend a few weeks ago. I guess I deserve this uncomfortable cold? Lots of snot and hot/tired eyes over here today. Day 5 of this cold - hopefully the last.
This year I also want to start blogging about actual code. I am a developer for a living and sometimes we actually do cool things. Eventually I'd like to move any content to a coding blog, but I'm not convinced I am disciplined enough to write about code often enough to actually have a dedicated coding blog. So there will be a trial run or two here.
I'm currently home sick - I was actually bragging about how I rarely get sick to a friend a few weeks ago. I guess I deserve this uncomfortable cold? Lots of snot and hot/tired eyes over here today. Day 5 of this cold - hopefully the last.
Tuesday, July 10, 2012
Umba time! This month I received two handmade goodies. I already wore one today to see if I liked it/could pull it off (I think it went OK).
The bracelet is actually a double length, but in this color. By the pink ruffle. You should know that this bracelet is super soft. Like, insanely soft. Yellow isn't my favorite, but I think I will find uses for this every now and again.
Sadly for you, my next goody isn't represented on the web. So this picture is straight out of my phone. Sorry for the quality.
Six key notecards! Very delightful addition to my stationery collection. From Fourteen-Forty.
Solid, usable month. Umba love.
The bracelet is actually a double length, but in this color. By the pink ruffle. You should know that this bracelet is super soft. Like, insanely soft. Yellow isn't my favorite, but I think I will find uses for this every now and again.
Sadly for you, my next goody isn't represented on the web. So this picture is straight out of my phone. Sorry for the quality.
Six key notecards! Very delightful addition to my stationery collection. From Fourteen-Forty.
Solid, usable month. Umba love.
Subscribe to:
Posts (Atom)