PageSourceSearch

https://bobaboard.com/_next/static/chunks/pages/blog/development-logs-1-2673cf1e5b848790.js

js bobaboard.com collected 2026-09-25 21:08:14 UTC 7,804 bytes, 1 lines download raw bytes

1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8741],{5275:function(e,s,n){"use strict";n.r(s),n.d(s,{meta:function(){return l}});var t=n(5893),i=n(1151),o=n(1664),r=n.n(o),a=(n(7294),n(6424)),l={title:"Development Logs 1 (4/18/20)",publicationDate:"4/18/20",tags:["development-logs"]},h=function(e){var s=e.children;return(0,t.jsx)(a.Z,{meta:l,children:s})};function d(e){var s=Object.assign({nav:"nav",ol:"ol",p:"p"},(0,i.ah)(),e.components);return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(s.nav,{className:"toc",children:(0,t.jsx)(s.ol,{className:"toc-level toc-level-1"})}),"\n",(0,t.jsx)("p",{children:(0,t.jsx)(s.p,{children:"These logs cover roughly the first month of development. Lot of progress, and\na few side trips: no matter how urgent getting a platform out of the door is,\nthere must always be time for a good April Fool's joke."})}),"\n",(0,t.jsxs)("ul",{children:[(0,t.jsxs)("li",{children:[(0,t.jsxs)(s.p,{children:[(0,t.jsx)("strong",{children:"[Frontend]"})," Released demo of a thread interface (see it at"," ","\n",(0,t.jsx)("a",{href:"https://test.boba.social/",children:"test.boba.social"}),"). You can refresh\nthe page multiple time to switch between different threads and see various\nexample of how things might end up working. Feedback is still being\ncollected."]}),(0,t.jsxs)("ul",{children:[(0,t.jsxs)("li",{children:[(0,t.jsxs)(s.p,{children:["Main request was for ",(0,t.jsx)("em",{children:"threaded comments"}),"."," "]}),(0,t.jsxs)("ul",{children:[(0,t.jsx)("li",{children:(0,t.jsx)(s.p,{children:'Given the restricted space available for comments (the website is\nbeing designed with a strong eye towards mobile), this might require\ngetting creative with the interface to "expand the conversation"\nafter a relatively-short exchange. I have some ideas in mind, but\nthe design might be rough for the first iterations.'})}),(0,t.jsx)("li",{children:(0,t.jsxs)(s.p,{children:["Threaded comments ",(0,t.jsx)("em",{children:"very potentially"})," moved to v0 given the\ninterest."]})})]})]}),(0,t.jsxs)("li",{children:[(0,t.jsxs)(s.p,{children:["A really big behind-the-scenes decision has been the choice of"," ","\n",(0,t.jsx)("a",{href:"https://quilljs.com/",children:"QuillJS"})," as a text editor. While it\nmight not seem such a big deal, the choice of editor impacts many\naspects of development in the longer term and I spent a fair amount of\ntime considering alternatives."]}),(0,t.jsxs)("ul",{children:[(0,t.jsx)("li",{children:(0,t.jsxs)(s.p,{children:["I was able to ",(0,t.jsx)("strike",{children:"hack around"})," expand Quill to produce\nan interface similar to Tumblr. I personally consider Tumblr's posts\ndesign very suited to the type of mixed media content I want\nBobaBoard to allow. If nothing else, they have more UX designers\nthan I do."]})}),(0,t.jsx)("li",{children:(0,t.jsx)(s.p,{children:"Quill's extensible interface makes it easy to program new formats\nfor text and embeds (e.g. images, videos). I predict the amount of\noptions to grow fairly quickly!"})}),(0,t.jsx)("li",{children:(0,t.jsx)(s.p,{children:'Of course, post options will also rapidly expand beyond text. Just\ntoday I spent a little leisure coding time "priming" the codebase\nfor what\'s to come.'})})]})]})]})]}),(0,t.jsxs)("li",{children:[(0,t.jsxs)(s.p,{children:[(0,t.jsx)("strong",{children:"[Backend]"})," We have a database schema!"]}),(0,t.jsx)("br",{}),(0,t.jsx)(s.p,{children:"This is a fundamental stepping stone for development. The database schema\ndefines how data is saved and retrieved by the platform, and impacts every\naspect of it: what data can be quickly accessed? How easy will it be to\nintroduce new features? How much will I hate myself in six months for the\nchoices I've made today?"}),(0,t.jsxs)("ul",{children:[(0,t.jsx)("li",{children:(0,t.jsxs)(s.p,{children:["A ",(0,t.jsx)("em",{children:"huge thank you"})," to my seasoned database developer friends for\nreviewing and improving my design. You know who you are <3"]})}),(0,t.jsx)("li",{children:(0,t.jsx)(s.p,{children:"Not pictured in the current schema: the tag blacklisting interface. This\nhas already been added, but I'm too tired to retake the snapshot. So\nyes, don't fear. It's there."})}),(0,t.jsx)("li",{children:(0,t.jsx)(s.p,{children:"Speaking of tags, I'm considering the support and implementation details\nof complex blacklisting for advanced users. This won't be in the v0: I'd\nrather take more time to study how people actually engage with\nBobaBoard, and attend to the needs for c
1ontent filtering as the website\nand userbase grows."})})]}),(0,t.jsxs)("figure",{children:[(0,t.jsx)("img",{src:"/blog/development-logs-1/db_er_diagram.png"}),(0,t.jsx)("figcaption",{children:"The database is the powerhouse of the web."})]})]}),(0,t.jsxs)("li",{children:[(0,t.jsxs)(s.p,{children:[(0,t.jsx)("strong",{children:"[April 1st Joke]"})," Please enjoy BobaBoard's very first April\n1st Joke (and cheer to many to come)."," "]}),(0,t.jsx)(r(),{href:"/bobafilters",children:(0,t.jsx)("a",{children:"Here."})}),(0,t.jsxs)("ul",{children:[(0,t.jsxs)("li",{children:[(0,t.jsxs)(s.p,{children:["While this was above all about having some silly fun, it allowed me to\nexperiment with creating open source libraries. Oh, yes, did I mention\nthe code is"," "]}),(0,t.jsx)("a",{href:"https://github.com/essential-randomness/boba-filters",children:(0,t.jsx)(s.p,{children:"free online for everyone to use"})}),(0,t.jsx)(s.p,{children:"?"})]}),(0,t.jsx)("li",{children:(0,t.jsx)(s.p,{children:"Someone asked if there's ever going to be silly image filters as an\nactual BobaBoard feature. To these people I say: who do you think I am?"})}),(0,t.jsxs)("li",{children:[(0,t.jsx)(s.p,{children:"Most of all, I just want you to witness this:"}),(0,t.jsxs)("figure",{children:[(0,t.jsx)("img",{src:"/april-fools-2020/bowsette.png"}),(0,t.jsx)("figcaption",{children:(0,t.jsx)(s.p,{children:"Imagine being paid to draw this. Ah, friendship. Best money I've\never spent."})})]})]})]})]}),(0,t.jsxs)("li",{children:[(0,t.jsxs)(s.p,{children:[(0,t.jsx)("strong",{children:"[Random]"})," It's has been an exceptionally busy month. I've\ntalked with a lot of people, met even more, made a bunch of technical\ndecisions, recruited volunteers, set up processes... This is not an easy\nendeavor, and the journey has just started."]}),(0,t.jsx)("ul",{children:(0,t.jsx)("li",{children:(0,t.jsx)(s.p,{children:"Let's not forget the most important milestone: set up a tiny blog for\ndevelopment logs."})})})]})]}),"\n",(0,t.jsx)("p",{children:(0,t.jsxs)(s.p,{children:[(0,t.jsx)("em",{}),"As usual, please feel free to use the ",(0,t.jsx)("a",{href:"https://docs.google.com/forms/d/e/1FAIpQLSfWsEhfOwcyiHNKcTWCNZxs-lB7C84BhwKJvb-HMi_vGPZMWg/viewform",children:"\nfeedback form\n"})," or send me an ",(0,t.jsx)("a",{href:"mailto:[email protected]",children:"\nemail\n"})," and let me know your opinions, ideas, desires, fears (or, more simply, say\nhi)! While I plan to use this new blog space to answer some of the most common\nquestions and discuss the future of fandom platforms at large, these initial months\nare more focused on setting the project up for success."]})}),"\n",(0,t.jsx)("p",{children:(0,t.jsxs)(s.p,{children:["Look, ",(0,t.jsx)("em",{children:"something"})," has to happen on 6/9. I can't yet promise anything,\nbut, as you can see, I'm working hard on it ;)"]})})]})}s.default=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,t.jsx)(h,Object.assign({},e,{children:(0,t.jsx)(d,e)}))}},5860:function(e,s,n){(window.__NEXT_P=window.__NEXT_P||[]).push(["/blog/development-logs-1",function(){return n(5275)}])}},function(e){e.O(0,[8031,5436,2283,6424,9774,2888,179],(function(){return s=5860,e(e.s=s);var s}));var s=e.O();_N_E=s}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.