Wedding Cakes in Culver City, CA (2024)

Skip to Content Toggle Nav

Search

My Account

My Cart

"); } if (fulfillment[i] == "curbside") { $("#curbside").html("

Curbside

"); } if (fulfillment[i] == "pickup") { if (bakery_session_data.isKosher == 1) { if (bakery_session_data.kosherMessage) { } if (bakery_session_data.kosherImage) { $("#pickup").html("

Wedding Cakes in Culver City, CA (22)

"); } else { $("#pickup").html("

Kosher

"); } } } } } var address2 = ''; var address2_url = ''; if (bakery_session_data.street2) { address2 = bakery_session_data.street2; address2_url = encodeURIComponent(bakery_session_data.street2) + "+"; } $("#store-address").html("" + bakery_session_data.street + "" + address2 + "" + bakery_session_data.city + ", " + bakery_session_data.regionId + " " + bakery_session_data.postcode + ""); var date = new Date(); var timezone = bakery_session_data.timeZone; var dayName = date.toLocaleString("en-US", { timeZone: timezone, weekday: 'long' }); var today = dayName.toUpperCase(); var timezoneDate = date.toLocaleString("en-US", { timeZone: timezone }); var currentDate = getCurrentdate(timezoneDate); var currentTimeStamp = new Date(timezoneDate).getTime() / 1000; var bakeryOpenTimeStamp = null; var bakeryCloseTimeStamp = null; let shopOpenStatus = ""; if (bakery_session_data.businessHours) { var bakeryContentAppend = ""; if (isOpened) { var business_hours = JSON.parse(bakery_session_data.businessHours); for (k = 0; k < business_hours.length; k++) { if (today == business_hours[k].dayofWeek) { shopOpenStatus = shopOpenStatusRenderer( business_hours[k].open, business_hours[k].openTime, business_hours[k].closeTime, currentDate, currentTimeStamp ); break; } } bakeryContentAppend += "

"; bakeryContentAppend += "

    "; var days = ['MONDAY', 'TUESDAY', 'WEDNESDAY', 'THURSDAY', 'FRIDAY', 'SATURDAY', 'SUNDAY']; var business_hours = jQuery.parseJSON(bakery_session_data.businessHours); var business_hours_override = jQuery.parseJSON(bakery_session_data.businessHoursOverride); var todayIndex = days.indexOf(today); var nextdays; if(todayIndex == 3){ nextdays = 3; } else{ nextdays = (days.length-1) - todayIndex; } var daysTmp = []; var j = 0; for(var i = todayIndex; i < days.length; i++){ daysTmp[j] = days[i]; j++; } for(var i = 0; i < todayIndex; i++){ daysTmp[j] = days[i]; j++; } days = daysTmp; todayIndex = days.indexOf(today); if(todayIndex == 3){ nextdays = 3; } else{ nextdays = (days.length-1) - todayIndex; } for (j = 0; j < days.length; j++) { for (k = 0; k < business_hours.length; k++) { if (days[j] == business_hours[k].dayofWeek) { if (today == business_hours[k].dayofWeek) { var overrideMessage = ""; var openTimeStr = business_hours[k].openTime; var closeTimeStr = business_hours[k].closeTime; var isBakeryOpen = business_hours[k].open; if (business_hours_override) { for(var x = 0; x < business_hours_override.length; x++){ let overrideDate = business_hours_override[x].overrideDate.split('/'); overrideDate = overrideDate[2]+"/"+overrideDate[0]+"/"+overrideDate[1]; if (currentDate == overrideDate) { if ('message' in business_hours_override[x]) { overrideMessage ="

    "+business_hours_override[x].message+"

    "; } isBakeryOpen = !business_hours_override[x].close; shopOpenStatus = shopOpenStatusRenderer( isBakeryOpen, business_hours_override[x].openTime, business_hours_override[x].closeTime, currentDate, currentTimeStamp ); if (isBakeryOpen) { openTimeStr = business_hours_override[x].openTime; closeTimeStr = business_hours_override[x].closeTime; } } } } if (isBakeryOpen == true) { bakeryOpenTimeStamp = new Date( currentDate + ' ' + timeToHHmm(openTimeStr) ).getTime() / 1000; bakeryCloseTimeStamp = new Date( currentDate + ' ' + timeToHHmm(closeTimeStr) ).getTime() / 1000; var splitDay = business_hours[k].dayofWeek.substring(0, 3); var dayofWeekStr = titleCase(splitDay); var openTimeStr = titleCase(openTimeStr); var closeTimeStr = titleCase(closeTimeStr); if ((bakeryOpenTimeStamp < bakeryCloseTimeStamp && currentTimeStamp >= bakeryOpenTimeStamp && currentTimeStamp <= bakeryCloseTimeStamp) || (bakeryOpenTimeStamp > bakeryCloseTimeStamp && (currentTimeStamp >= bakeryOpenTimeStamp || currentTimeStamp <= bakeryCloseTimeStamp))) { bakeryContentAppend += "
  • " + dayofWeekStr + "" + openTimeStr + " - " + closeTimeStr + "
  • "+overrideMessage; } else { bakeryContentAppend += "
  • " + dayofWeekStr + "" + openTimeStr + " - " + closeTimeStr + "
  • "+overrideMessage; } } else { var splitDay = business_hours[k].dayofWeek.substring(0, 3); var dayofWeekStr = titleCase(splitDay); bakeryContentAppend += "
  • " + dayofWeekStr + "Closed
  • "+overrideMessage; } } else { var overrideMessage = ''; var openTimeStr = business_hours[k].openTime; var closeTimeStr = business_hours[k].closeTime; var isBakeryOpen = business_hours[k].open; if (days.indexOf(business_hours[k].dayofWeek) > todayIndex && business_hours_override) { for (var x = 1; x <= nextdays; x++) { let nextDate = getCustomdate(timezoneDate,x); for (var y = 0; y < business_hours_override.length; y++) { let overrideDate = business_hours_override[y].overrideDate.split('/'); overrideDate = overrideDate[2]+"/"+overrideDate[0]+"/"+overrideDate[1]; if ( nextDate == overrideDate && business_hours[k].dayofWeek == days[todayIndex+x] ){ if ('message' in business_hours_override[y]) { overrideMessage = "

    "+business_hours_override[y].message+"

    "; } isBakeryOpen = !business_hours_override[y].close; if (isBakeryOpen) { let override = business_hours_override[y]; openTimeStr = override.openTime; closeTimeStr = override.closeTime; } } } } } if (isBakeryOpen) { var splitDay = business_hours[k].dayofWeek.substring(0, 3); var dayofWeekStr = titleCase(splitDay); var openTimeStr = titleCase(openTimeStr); var closeTimeStr = titleCase(closeTimeStr); bakeryContentAppend += "
  • " + dayofWeekStr + "" + openTimeStr + " - " + closeTimeStr + "
  • "+overrideMessage; } else { var splitDay = business_hours[k].dayofWeek.substring(0, 3); var dayofWeekStr = titleCase(splitDay); bakeryContentAppend += "
  • " + dayofWeekStr + "Closed
  • "+overrideMessage; } } } } } bakeryContentAppend += "

"; bakeryContentAppend += "

"; } else { bakeryContentAppend += "Hours: Coming Soon!"; } bakeryContentAppend += "

" + shopOpenStatus + bakeryContentAppend; $("#businessHours").html(bakeryContentAppend); if ($('#product-addtocart-button-top').length > 0) { if ($('#product-addtocart-button-top span').html() != 'Out Of Stock') { $('#product-addtocart-button-top').attr('disabled', false); } } else if ($('#product-updatecart-button-top').length > 0) { if ($('#product-updatecart-button-top span').html() != 'Out Of Stock') { $('#product-updatecart-button-top').attr('disabled', false); } } $('.cart-qty-minus').attr('disabled', false); $('.cart-qty-plus').attr('disabled', false); $('.quantity-minus').attr('disabled', false); $('.quantity-plus').attr('disabled', false); } console.log('bakery_session_data', bakery_session_data); console.log('bakery_session_data.closeExceptions', JSON.parse(bakery_session_data.closeExceptions)); console.log('currentTimeStamp', currentTimeStamp, new Date(currentTimeStamp * 1000)); var showcloseMessage = false; if (bakery_session_data.closeExceptions && isOpened) { let close_exceptions = JSON.parse(bakery_session_data.closeExceptions); for (l = 0; l < close_exceptions.length; l++) { let message = close_exceptions[l].message; let startTimeStamp = new Date(changeToCurrentDate(close_exceptions[l].startDate) + ' ' + timeToHHmm(close_exceptions[l].startTime)).getTime() / 1000; let endTimeStamp = new Date(changeToCurrentDate(close_exceptions[l].endDate) + ' ' + timeToHHmm(close_exceptions[l].endTime)).getTime() / 1000; console.log('startTimeStamp', startTimeStamp, 'endTimeStamp', endTimeStamp); if ((startTimeStamp < endTimeStamp && currentTimeStamp >= startTimeStamp && currentTimeStamp <= endTimeStamp) || (startTimeStamp > endTimeStamp && (currentTimeStamp >= startTimeStamp || currentTimeStamp <= endTimeStamp))) { $("#close-exceptions-message").html('

' + message + '

'); showcloseMessage = true; } } } if (bakery_session_data.globalMessage && isOpened && showcloseMessage === false) { let startTimeStamp = new Date(changeToFullCurrentDate(bakery_session_data.globalMessageStartTime)).getTime() / 1000; let endTimeStamp = new Date(changeToFullCurrentDate(bakery_session_data.globalMessageEndTime)).getTime() / 1000; console.log('globalMessageStartTime', changeToFullCurrentDate(bakery_session_data.globalMessageStartTime)); console.log('globalMessageEndTime', changeToFullCurrentDate(bakery_session_data.globalMessageEndTime)); console.log('globalMessageStartTimeStamp', startTimeStamp); console.log('globalMessageEndTimeStamp', endTimeStamp); if ((startTimeStamp < endTimeStamp && currentTimeStamp >= startTimeStamp && currentTimeStamp <= endTimeStamp) || (startTimeStamp > endTimeStamp && (currentTimeStamp >= startTimeStamp || currentTimeStamp <= endTimeStamp))) { $("#global-message").html('

' + bakery_session_data.globalMessage + '

'); } } let tracking = Tracking(); let bakeryData = { 'bakeryinfo': bakery_session_data.location_code + " - " + bakery_session_data.location }; if ($.cookie('fireChangeBakery') == '1') { tracking.setBakeryChange(bakeryData); let localLifeTime = parseInt(localStorage.getItem("cookie_session_life_value")); let cookieTime = new Date(); let cookiemins = localLifeTime * 60; cookieTime.setTime(cookieTime.getTime() + (cookiemins * 60 * 1000)); $.cookie('fireChangeBakery', '0', { expires: cookieTime, path: '/', domain: "."+window.location.host }); } else { tracking.setBakeryInfo(bakeryData); } window.IsBakerySession = true; } else { if (isEnableApiAddress == 0 && isEnableApiAddressJs) { getLocationByIP(); } window.IsBakerySession = false; $('#product-addtocart-button-top').attr('disabled', true); $('#product-updatecart-button-top').attr('disabled', true); $('.cart-qty-minus').attr('disabled', true); $('.cart-qty-plus').attr('disabled', true); $('.quantity-minus').attr('disabled', true); $('.quantity-plus').attr('disabled', true); $("#find-a-bakery").css("display", "block"); if (isEnableApiAddress) { $("#current-bakery-popup-top").css("display", "none"); } window.localStorage.removeItem('bakery_id'); window.localStorage.removeItem('bakery_methods'); window.localStorage.removeItem('bakery_pre_order_day'); } } /*NEW CODE END*/ customerData.get('bakery-current').subscribe(updateMenuBakery.bind(this)); var bakeryModalConfigSection = customerData.get('bakerymodal_config'); var urlParams = new URLSearchParams(window.location.search); actualizeCurrentBakery.actualize($.Deferred(), actualizeCurrentBakery.CURRENT_BAKERY_NAME) function formatPhone(phone) { format_phone = phone.replace(/\D+/g, '') .replace(/(\d{3})(\d{3})(\d{4})/, '($1) $2-$3'); return format_phone; } function showPosition(position) { let tracking = Tracking(); let locationData = {}; navigator.permissions && navigator.permissions.query({ name: 'geolocation' }) .then(function (PermissionStatus) { locationData = { state: PermissionStatus.state } tracking.setLocationPermission(locationData); }) var latitude = position.coords.latitude; var longitude = position.coords.longitude; $.ajax({ url: "/find-a-bakery-api/api/nearbybakery", data: { 'latitude': latitude, 'longitude': longitude, 'radius': 30, }, type: 'POST', success: function (data) { console.log('IP FALLBACK'); if (data.length > 0) { setCookie('latitude', latitude, 1); setCookie('longitude', longitude, 1); setCookie('locationEnabled', 1, 1); setCookie('location_enabled_latitude', latitude, 1); setCookie('location_enabled_longitude', longitude, 1); $('#loadedlocation').val('New Value'); let location_code = data[0].location_code; let time_zone = data[0].timezone; let d = new Date(); d.setTime(d.getTime() + (30 * 24 * 60 * 60 * 1000)); let expires = 'expires=' + d.toUTCString(); let maxAge = 'max-age=' + window.xBakeryLifeTime; let path = 'path=/'; let domain = 'domain=' + $.mage.cookies.defaults.domain; document.cookie = "x-bakery=" + location_code + "; " + expires + "; " + maxAge + '; ' + path + '; ' + domain + '; secure;'; document.cookie = "x-bakery-timezone=" + time_zone + "; " + expires + "; " + maxAge + '; ' + path + '; ' + domain + '; secure;'; window.location.reload(); } } }); } function shopOpenStatusRenderer(isShopOpen, openTime, closeTime, currentDate, currentTimeStamp) { let shopOpenStatus = ""; let bakeryOpenTimeStamp; let bakeryCloseTimeStamp; if (isShopOpen) { bakeryOpenTimeStamp = new Date(currentDate + ' ' + timeToHHmm(openTime)).getTime() / 1000; bakeryCloseTimeStamp = new Date(currentDate + ' ' + timeToHHmm(closeTime)).getTime() / 1000; if ((bakeryOpenTimeStamp < bakeryCloseTimeStamp && currentTimeStamp >= bakeryOpenTimeStamp && currentTimeStamp <= bakeryCloseTimeStamp) || (bakeryOpenTimeStamp > bakeryCloseTimeStamp && (currentTimeStamp >= bakeryOpenTimeStamp || currentTimeStamp <= bakeryCloseTimeStamp))) { shopOpenStatus = "" + "Hours: Open Now" + ""; } else { shopOpenStatus = "" + "Hours: Closed Now" + ""; } } else { shopOpenStatus = "" + "Hours: Closed Now" + ""; } return shopOpenStatus; } function showError(error) { let tracking = Tracking(); let locationData = {}; navigator.permissions && navigator.permissions.query({ name: 'geolocation' }) .then(function (PermissionStatus) { locationData = { state: PermissionStatus.state } tracking.setLocationPermission(locationData); }) switch (error.code) { case error.PERMISSION_DENIED: var ip_api_config = "1"; if (ip_api_config == 1) { getLocationByIP(); } console.log("User denied the request for Geolocation."); break; case error.POSITION_UNAVAILABLE: console.log("Location information is unavailable."); break; case error.TIMEOUT: console.log("The request to get user location timed out."); break; case error.UNKNOWN_ERROR: console.log("An unknown error occurred."); break; } } function getLocationByIP() { console.log('getLocationByIP'); var GOOGLE_API_KEY = "AIzaSyCEuMMkjCv8kMN3dB8yysNP4aoRCo1mQ8k"; $.ajax({ url: 'https://www.googleapis.com/geolocation/v1/geolocate?key=' + GOOGLE_API_KEY, data: JSON.stringify({ "considerIp": "true" }), type: 'POST', async: true, contentType: 'application/json', success: function (data) { if (data.location) { var latitude = data.location.lat; var longitude = data.location.lng; $.ajax({ url: "/find-a-bakery-api/api/nearbybakery", data: { 'latitude': latitude, 'longitude': longitude, 'radius': 30, }, async: true, type: 'POST', success: function (data) { if (data.length > 0) { setCookie('latitude', latitude, 1); setCookie('longitude', longitude, 1); setCatagory(); let location_code = data[0].location_code; let timezone = data[0].timezone; let d = new Date(); d.setTime(d.getTime() + (30 * 24 * 60 * 60 * 1000)); let expires = 'expires=' + d.toUTCString(); let maxAge = 'max-age=' + window.xBakeryLifeTime; let path = 'path=/'; let domain = 'domain=' + $.mage.cookies.defaults.domain; document.cookie = "x-bakery=" + location_code + "; " + expires + "; " + maxAge + '; ' + path + '; ' + domain + '; secure;'; document.cookie = "x-bakery-timezone=" + timezone + "; " + expires + "; " + maxAge + '; ' + path + '; ' + domain + '; secure;'; window.location.reload(); } } }); } }, error: function (e) { console.log('error!', JSON.parse(e.responseText)); } }); } function setCatagory() { $.ajax({ url: "/find-a-bakery-api/api/catagoryProductUrl", data: { 'path': window.location.href, }, type: 'POST' }); } function setCookie(cname, cvalue, exdays) { var d = new Date(); d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000)); var expires = 'expires=' + d.toUTCString(); var maxAge = 'max-age=' + exdays * 24 * 60 * 60; var path = 'path=/'; document.cookie = cname + "=" + cvalue + "; " + expires + "; " + maxAge + '; ' + path; } function getCookie(cname) { var name = cname + "="; var ca = document.cookie.split(';'); for (var i = 0; i < ca.length; i++) { var c = ca[i]; while (c.charAt(0) == ' ') c = c.substring(1); if (c.indexOf(name) == 0) return c.substring(name.length, c.length); } return ''; } function titleCase(string) { return string.replace(/^(\w)(.+)/, (match, p1, p2) => p1.toUpperCase() + p2.toLowerCase()); } function getCurrentdate(timestamp) { let now = new Date(timestamp), y = now.getFullYear(), m = ("0" + (now.getMonth() + 1)).slice(-2), d = ("0" + now.getDate()).slice(-2); return `${y}/${m}/${d}`; } function getCustomdate(timestamp, day) { let now = new Date(Date.now(timestamp) + day*(3600 * 1000 * 24)), y = now.getFullYear(), m = ("0" + (now.getMonth() + 1)).slice(-2), d = ("0" + now.getDate()).slice(-2); return `${y}/${m}/${d}`; } function changeToCurrentDate(date) { let arr = date.split('/'); y = arr[2]; m = arr[0]; d = arr[1]; return `${y}/${m}/${d}`; } function changeToFullCurrentDate(fullDate) { let fullDateArr = fullDate.split(' '); let currentDate = changeToCurrentDate(fullDateArr[0]); return `${currentDate} ${fullDateArr[1]}`; } function changeToCurrentDate(date) { let arr = date.split('/'); y = arr[2]; m = arr[0]; d = arr[1]; return `${y}/${m}/${d}`; } function changeToFullCurrentDate(fullDate) { let fullDateArr = fullDate.split(' '); let currentDate = changeToCurrentDate(fullDateArr[0]); return `${currentDate} ${fullDateArr[1]}`; } function timeToHHmm(time) { var nums = time.match(/\d+/g); var am = /am/i.test(time); nums[0] = ('0' + ((nums[0] % 12) + (am ? 0 : 12))).slice(-2); return nums.join(':'); } }); });

Wedding Cakes in Culver City, CA (2024)

FAQs

What is the average amount for a wedding cake? ›

While wedding cake prices do vary depending on the size and style of your cake, the average cost of a wedding cake in the U.S. is around $500 with most couples spending between $300 to $700.

How many cakes should you have at a wedding? ›

A common calculation for wedding cake allows for one slice of bride's cake per guest and a half slice of groom's cake. So if you have 100 guests, you'd need 100 servings of bride's cake and 50 servings of groom's cake.

What percentage of people eat cake at wedding? ›

Typically, you can estimate the number of servings needed by approximating that 75 to 85 percent of your guests will enjoy a piece of cake. From there, determine if you'd like to have enough cake to feed every guest, whether you'd like to have cake leftover, and the size of the slice of cake you'd like to serve.

What to expect at a wedding cake consultation? ›

Every wedding cake consultation is slightly different, but you can expect to cover a few key topics: the cake maker's experience and business, your wedding colours and theme(s), wedding cake designs, cake flavours (including tasting some samples), cake setup on the day (venue, stand, timing), costs and payment.

How much wedding cake for 50 guests? ›

The average 12" wedding cake serves 40-60 people. The 10" cake on top of that serves 30-40 people and the 8" cake on top of that serves 20-25 people. So a classic 3-tier cake with 12, 10, and 8 inch layers serves about 100 people. Narrower cakes will be smaller, more affordable, and serve fewer people.

Who should pay for the wedding cake? ›

The bride's parents traditionally pay for the wedding cake, along with the rest of the wedding reception costs, but you don't have to follow this historical precedent. Many couples today may choose to pay for their own cake, or the two families may split costs for the cake and other desserts.

What is the most traditional wedding cake? ›

Memorable: Vanilla cake is a timeless and memorable choice for a wedding cake. It is a classic flavor that will never go out of style, and your guests are sure to remember the delicious cake from your special day.

Are most wedding cakes 2 or 3 layers? ›

The most popular size of wedding cake I'm asked to make is a three tier, with a base tier of 10in diameter and a top tier of 6in diameter. Each tier is around 5in tall, and the whole cake yields 100-110 generous servings. Couples expecting 150 guests often opt for a four tier cake, but with two dummy top tiers.

What size cake for 100 guests? ›

Ready to slice your decision? If you're after those delicate bites, a three-tier cake with 12-inch, 10-inch, and 8-inch layers will serve all 100 guests with the standard portion size. Feeling generous? Opt for a four-tier cake with slightly smaller layers (10″, 8″, 6″, and 4″) to offer those bigger slices.

Do guests care about wedding cake? ›

As a wedding DJ for over 10 years, I can tell you: yes, they do! Maybe not everyone will — some people might be trying to diet, others might have food allergies, and some might not particularly care for whatever flavor the cake is. But you usually can't go wrong with a plain yellow/vanilla or a plain chocolate cake.

What size is a normal wedding cake? ›

Typical 3 tier cakes are made up of a 10”, 8” and 6” cake, but going for an 8”, 6” and 4” gives you a 3 tier cake with smaller portions. Single tier cakes - don't think you have to have a multi-tiered showstopper of a cake. Single tiers or double tiers look just as beautiful.

Do I need enough wedding cake for everyone? ›

If you are not having other desserts, then the honest answer is that you should order cake for your guest count or at least 85-90% of your guest count. Why? Because the majority of guests will eat dessert on special occasions and do especially eat delicious cake. People eat food (including desserts) that taste good.

Do you tip bakery for wedding cake? ›

Tipping your wedding cake baker is optional, says Newman.

When should you start looking at wedding cakes? ›

We are now recommending that couples book their wedding cake 4-6 months in advance. If your wedding is in May, June or October, we recommend at least 6 months.

Does the maid of honor pay for the wedding cake? ›

Traditionally the bride's family pays for the wedding cake at the Reception.

How much cake for 150 people? ›

As a guide: 1 x two-tier cake serves 60 guests. 1 x three-tier cake serves 100 guests. 1x four-tier cake serves 150 guests.

How much does a 10 wedding cake feed? ›

10 in cakes can be sensibly served to up to 25 people with each slice measuring about 1 1⁄4 inches across the back or about the width of a teaspoon. As with the 8 inch cakes, 10 inch cakes can be served event style. Cut event style, a 10 inch cake can be served to as many as 39 people.

How much cake for 200 guests? ›

Wedding Cake Sizes Chart
Number Of GuestsTiersSize (Width of Tiers)
30-6028 in x 10 in
60-12036 in x 10 in x 14 in
120-20046 in x 8 in x 10 in x 12 in
200 or more58 in x 10 in x 12 in x 14 in x 16 in
1 more row
Oct 15, 2019

How much cake do I need for 25 guests? ›

Choose the right size of cake: Generally, a 6" cake serves about 12 people, an 8" cake serves about 24 people, a 10" cake serves about 36 people, and a 12" cake serves about 50 people.

Top Articles
Latest Posts
Article information

Author: Twana Towne Ret

Last Updated:

Views: 5513

Rating: 4.3 / 5 (64 voted)

Reviews: 95% of readers found this page helpful

Author information

Name: Twana Towne Ret

Birthday: 1994-03-19

Address: Apt. 990 97439 Corwin Motorway, Port Eliseoburgh, NM 99144-2618

Phone: +5958753152963

Job: National Specialist

Hobby: Kayaking, Photography, Skydiving, Embroidery, Leather crafting, Orienteering, Cooking

Introduction: My name is Twana Towne Ret, I am a famous, talented, joyous, perfect, powerful, inquisitive, lovely person who loves writing and wants to share my knowledge and understanding with you.