Another subscriber! Thanks qubit!
I've officially made vietlq a featured user for writing great posts. I should have done so 4 months ago. I also fixed a bug where some old posts were causing 500's due to depending on all the code I deleted in the last update.
I'm currently pulling an all nighter for a problem set. Ethereum from scratch will have to wait until this weekend.
Many thanks to user syuan100 for being my first customer(!) (besides habibalamin) and waking me up. Today I finished up the accounting system I was working on last time. Now I have a system that checks the books up and down and alerts me if any of several identities don't hold. I also deleted thousands of lines of code on the backend that use to handle the relationship with Stripe. All tests pass, and I wrote a lot of them. What this means is that I'm now satisfied with Ocalog as a minimum-viable-product and will focus on writing the Ethereum from Scratch series.
I had a nice two week break from grad school - it made me realize how much I miss working on this site full time. Anyways - the Ethereum payment system works now! Ocalog is fully operational!
I'm not going to make a big deal out of it because there are still a bunch of user interface issues I need to clean up. It feels good to get that done. A big monkey off my back.
Using the Ethereum test environment I set up, I'm now able to create new accounts upon new user creation, interface in general with the local Ethereum client from python, and I've set up a subscribe form which takes Ethereum payments.
I didn't get as much time in this week to work on Ocalog as I would like. Will do better this coming week.
- [X] create new ether accounts upon new account creation - [X] build an interface with local ethereum client - [X] set up Ethereum subscription payment form - [ ] track ethereum price - [ ] make upvotes transfer ethereum - [ ] set up Ethereum withdrawl form
Paypal was taking a while to get back to me, so I started building an Ethereum payment processing system and I've like it so much that I've decided to ditch Paypal entirely and just use Ethereum. It's just so much more convenient to have full control. No need to apply for "payout approval" and wait for a response, no waiting in fear that they will turn around and decide to change their mind - burning months of work, no need to fill in the gaps of their crummy documentation, no need to implement webhooks, the list goes on and on.
I've set up an Ethereum test network that works great. I have a mining node that can set up all my tests and process all payments. I have a client node that acts as Ocalog's local node, integrated with the website. I can turn them on/off, retrieve information, and send transactions all from Python using RPC calls. All that remains is to plug the current forms of the website into this format.
- [X] make an Ethereum wallet for Ocalog - [X] create Ethereum test environment - [ ] set up Ethereum subscription payment form - [ ] set up Ethereum withdrawl form
I've set up a PayPal subscribe button that creates a BillingAgreement and charges the user 5 bucks a month. It took quite a lot of wading through unclear documentation, but the final product works fine. I still have to set up a reconciliation system to make sure Paypal and Ocalog are in agreement on which subscriptions are active, and I need to test failure cases, add hooks that suspend and a page for reactivating subscriptions.
I've also put in an application for Stripe Payouts, which should be easier to implement than Stripe Connect because there isn't a requirement to map payouts to subscription payments, which was a pain. I hope they accept.
- [X] create a billing agreement using PayPal python SDK - [X] sign up for Paypal payouts - could be trouble? - [ ] test cancelling, reconciling Paypal billing agreements - [ ] make an Ethereum wallet for Ocalog - [ ] engineer an ethereum subscription payment confirmation system
I've read enough of the PayPal documentation that I can put a simple button in the subscribe area, and I've been able to set up their Python SDK. Hopefully tomorrow or the next day I'll work out how to create a billing agreement. After that, the real challenge will be figuring out how to test it, and how to wire in PayPal's web hooks and test them. Judging by Paypal's "testing documentation", which advises to manually create sandbox accounts and click through the implementation, setting up tests is not going to be a fun experience.
I also need to sign up for PayPal Payouts, which I need in order to pay writers on Ocalog. Hopefully they will reply positively. If not, I should really start working on Ethereum payments.
I managed to find someone else who was not able to ping the Ethereum Foundation bootnodes. It could be the case that they are just down, and the bootnodes listed in the bootnodes.go file are no longer accurate. This would mean I just need to find a working bootnode. I just received a list from someone who claims they are all working bootnodes so I have some hope.
- [X] figure out why EF bootnodes are not responding - [X] make a paypal button in the subscribe page - [ ] sign up for Paypal payouts - could be trouble? - [ ] create a billing agreement using PayPal python SDK - [ ] test creating, cancelling, reconciling Paypal billing agreements - [ ] make an Ethereum wallet for Ocalog - [ ] engineer an ethereum subscription payment confirmation system
Today I began looking at PayPal. My approach is going to be to use as little functionality as possible, even if I end up paying double the fees. I don't want this to take 3 months to integrate, especially in the case where they drop me like Stripe did.
Spent the day today reading through PayPal's documentation, which is a real trip to be honest. PayPal's documentation seems like it's been written by several independent groups, both using the same terms but for different things that solve the SAME problem, which is probably exactly how it was written and it's very confusing. For example, to test the integration, you need to use something called "Sandbox", but there are at least two "sandboxes": one sandbox is the site sandbox.paypal.com and one is the Sandbox API. They work completely differently. I assume the website is the old version of the testing framework, because it's insanely terrible - you literally have to create a new, parallel account on the sandbox website and make sure that you create your buttons in the exact same way as on the live site if you want your tests to replicate what you would see live. The sandbox API is similar to how Stripe does it - different access tokens are used for test vs live. At least I think that's how it works..
I wasn't able to check out why the bootnodes aren't responding to me. I need to do a simple test to see if it works if I try to ping from another machine. I'll try to do that tomorrow.
- [X] sign up for paypal merchant - [ ] implement PayPal Express checkout, Server-side REST integration - [ ] figure out why EF bootnodes are not responding - [ ] make an Ethereum wallet for Ocalog - [ ] engineer an ethereum subscription payment confirmation system
I'm back again. Getting reacquainted with where I've left off. For some reason the Ethereum Foundation bootnodes aren't responding to my pings, but when I run a bootnode locally using go-ethereum I experience no issues. This has proven to be a tedious thing to resolve since they (EF) have been slow to respond.
I've toyed with the idea of using Ethereum for payments. I am going to try it as well as Paypal. They have a new mass payment system that could be a good solution for Ocalog. I think it's good to do both because credit card payments give access to a much wider market than cryptocurrency, but I've been hurt before so I'll definitely use Ether as a backup.
- [ ] figure out why EF bootnodes are not responding - [ ] sign up for paypal merchant - [ ] make an Ethereum wallet for Ocalog - [ ] engineer an ethereum subscription payment confirmation system
I've rewritten some of the code to part 5 out of necessity. I have a decent chance of finishing the article by the end of this weekend. As far as the code goes we are essentially done with the discovery protocol and can move on to downloading the blockchain.
Finishing Part 5 by the end of today was indeed too ambitious. I will try to finish it this week.
Did some writing for part 5 today. I want to redo the front page UI again. The user bar looks terrible and the alignments of all the titles are off. Will add that to the list of todos after part 5 is done.
Finished up reading the old sections and have a picture of where I left off. It is definitely interesting to reread the whole series again because of all the long-term design errors that end up popping up due to the "live" nature of the writing. I have some ideas for rewriting the previous sections so that it all goes smoother, but I'll probably do that after I finish part 5.
I am still waiting to hear back from Stripe. Today I fixed a couple internal things, got rid of the landing page - which I think just decreased the rate at which people saw the front page, and made the comment number show up below featured posts.
I also started back up on the Ethereum from scratch series. I am sufficiently removed from the last time I was working on it that I need to review some of my old posts before I start completing part 5. Did that today as well. I hope by this weekend I can maybe get a new post out, though that is ambitious.
Update on AML system progress: I have handed off the document to a lawyer I hired from LegalZoom, who is looking over it now. We will meet tomorrow to discuss.
I'm finished with the AML stuff with the exception of some polish. I will probably touch it up tomorrow and then finally reach out to Stripe at the end of the day. I have high hopes. Like I said, this is probably not going to work if Stripe does not approve me.
Things are coming together. I should be able to finish the AML stuff by tomorrow, and then have a lawyer look it over, just to make sure.
I've finished the AML code. Now I just need to finish the write up for Stripe. I have confidence that the system I built does a reasonable effort in addressing any potential money laundering on my platform. Hopefully I can complete the write up by tomorrow night, though it could take me until Thursday, depending on anything I feel needs to be added, and of course making sure that it is an impeccably correct description of our process.
Wrote more code and tests. Seeing the finish line on the coding part of the AML system. I probably need one more day.
Made progress on the AML system today, wrote a significant amount of code. Can't get into specifics of course. Hoping I will be done by the end of this weekend. That might be a little too ambitious though.
I'm back. Still working on the anti-money-laundering system. This time I have a good amount of time to work on it (a week or two). I believe I should be able to finish within the next two weeks. The big hope: get Stripe back. If I could do that, then I would instantly have a working payment system and I could also incorporate with Atlas, which would fix a lot of things. If I can't convince Stripe that I can enforce anti-money-laundering, then it is very likely that this website will stay as a demo for the next several years, as I simply do not have the free time at this point to implment a new payment system.
Part 5 of Ethereum from Scratch is still in the works! I have something, but I really need to polish it. This is second on my priority list due to the limited amount of time I have.
Here's hoping that I can actually make some progress.
I've begun building an anti-money laundering system for this site. It's something that's important for any online payment system and something that Venmo has had regulatory trouble for not getting right. It's also something that you need to have worked out in order for institutions like banks to be okay with getting involved with you. Luckily, there are some good government guidelines for developing AML systems, so I'm reading those and adapting them to Ocalog.
I updated the front page so it looks better on mobile, and added "Featured" series section. I should be able to get a payment processing system working if I can get some good work in the next couple weeks. Part 5 of Ethereum series coming.
I updated the index view so that content is displayed in 10 rows of 4, for a little better density. I've also moved the user bar to the top instead of being at the side. I added a readout of the number of credits the user has, and also a list of links to track pagination at the bottom, even though that is not needed yet. I also added a link to unsubscribe to subscription emails just in case someone subscribes but then decides the content is not for them.
I think the next thing I will tackle is figuring out how to market the site. Making good content works, but it wears out quickly and it's slow to make. We'll see what I find.
I'll also start again on part 5 of the Ethereum series.
- [ ] find a way to market - [ ] write part 5 of Ethereum series
Credit system added, Faq added, test cases fixed. However, UI changes to account for credit system have not been implemented, and I have a new plan for the index page UI in general. I will implement that next, and a link to unsubscribe in the user-subscription linked emails.
- [ ] redo index page UI - [ ] add unsubscribe button to user-subscription email
I've been spending the days at this Caltech bootcamp for grad school with little time to improve the site. However, I am aware of a great need for an FAQ section, which I will begin building today.
I want to finish that and then get on to a sort of credit system where you can write articles to view articles. That will perhaps hold the site over until I can find a new payment system.
Also, now that Stripe kicked me out, a lot of test cases fail due to their API rejecting me. I have to fix those.
- [ ] write FAQ - [ ] write credit system - [ ] fix test cases
I'm back. It's been a tough move across the country. Today I filled out paperwork for incorporation and for paymentcloud and I'm in the middle of sketching out the "best case scenario" for Ocalog, just so I can have an idea of my own upper bound.
I'm worried that it might be low. I am about to start grad school at Caltech, and my time to work on things is going to catastrophically decrease. But I'm going to try to figure things out. This requires figuring out what I want to happen, which is hard.
Began work on the next part of the Ethereum series. Unfortunately I'm going to have to tune out for a week, as I have a lot of personal stuff going on. Hopefully I'll be back in business by next Thursday or Friday. Until then.
Today I talked to a guy from Paymentcloud and he was able to fill me in on the problem with Stripe much more clearly. Apparently subscription-type businesses face higher numbers of chargebacks than other businesses. A small percentage of people commit "friendly fraud" which is where they subscribe to a service, receive that service, and then chargeback the subscription fee for a refund. Financial services like banks and payment gateways will ban services with >2% chargebacks and platforms like Stripe ban subscription services outright. I'm not sure why Stripe wasn't willing to explain this to me. Interesting that the problem is so wide-spread.
I've decided to do part 5 of the Ethereum series I've been writing.
- [ ] Ethereum series part 5 - [ ] implement credit system - [ ] find new payment system
I now have a very basic profile picture/avatar system. I'm definitely going for more of Github and Stackoverflow's approach to profiles than Facebook's.
I also implemented a "save draft" button in place of an autosave system. I felt that it was better to have more control. Posts now have a "draft" mode where they won't be visible to anyone but the user. You can "publish" these drafts when they are ready to post. I found that this was very much needed when writing articles and would always "manually" save drafts using emacs.
I have two changes I want to make to how the system of Ocalog works:
First off I'm going to lower the monthly subscription from $13.50 for 10 upvotes to $5.00 for 3 upvotes. There's not enough content on the site as it is to really justify 10 upvotes per month, per user.
Secondly, while there is currently no way to subscribe I thought I'd come up with a way to see subscription-only content without paying. I've come up with this: if a user writes a subscription-only post of sufficient quality, I will credit them some amount of "unlocks" to see subscription-only posts. I haven't decided how many credits will be awarded per written post, could be 1, 3, or 5. By "sufficient quality" I mean that I'm going to be moderating the posts to make sure they're not just low-effort "hacks" to get free credits. I plan on being pretty lenient for any post that shows a sincere effort.
I'm talking to Paymentcloud and Braintree to replace Stripe. We'll see how that goes. I feel like Paymentcloud is going to charge me a bigger margin since I've been given the "high risk" scarlet letter (somehow) by their business partner Stripe.
I thought about moving to Ethereum or Bitcoin. It is very tempting: compliance costs gone away, international payments in an instant. However, I'm afraid my audience will shrink a lot if I move to them. It would be great to do a mix of dollars and cryptocurrency, but whenever you have a currency interface like that you have to hire a seriously expensive law firm for compliance due to money laundering laws. It's really tough. If I end up having no other option, I will move to them. However, making that move will limit my own perception of the growth potential of Ocalog.
I guess my concrete todos going forward are to write more posts, get more exposure.
- [ ] write more - [ ] implement credit system - [ ] find new payment system
About Stripe. They have, without warning, decided that my business model is "high-risk" in some way and have given me 14 days to get off. This is absurd and disastrous to me. I've built my site around Stripe from the beginning, and this site is totally crippled without it. Tomorrow I need to disable all payment forms and refund everyone's upvote balance if I can. Basically, Ocalog is going into hibernation until I can find a different payment service provider. Not that anyone cares at this point, but it is very disappointing to me. I guess this is why cryptocurrencies are a thing right?
- [ ] finish profile pictures - [ ] autosave view
Moved comments view to post view. Lined up several peices of the UI as well.
Got really bad news from Stripe today. I'll give more color tomorrow... still trying to get all the info, figure out what's going to happen.
- [ ] autosave view - [ ] add profile pics
Made a landing page and formatting help modal in submit text view today. Also changed color of nav bar to blue.
I'm looking for a way to get payments working in all English speaking countries, including India. Waiting for Stripe to get back.
- [ ] see if I can get payments working in UK, EU. Canada? Aus? Nzl? India? - [ ] move comments to post view - [ ] autosave view - [ ] add profile pics
Wrote a softer content post as you can see on the front page. Not a hit, hasn't received much attention. There's not much to upvote to be honest.
Trying to think of different knobs I can adjust. There's topic of post, there's the technicality. Perhaps next post I'll shoot for middle of in-depth technical tutorial and just an essay.
I also realize now that I should err on the side of more technical, less accessible content because it seems "higher quality" to redditors and less likely to go against Reddit self promotion rules and therefore be flagged as spam. My softer content was flagged as spam today, which has not happened to me before. Reddit's self promotion rules are basically: "EAT SHIT NEW CONTENT CREATORS!!!!!". I'm actually really frustrated by it. However, their hostility will be a boon to me provided that I can ever get this site off the ground.
I've also made it so you can log in with email and that you can do github-style fenced code blocks, tables, and footnotes. I plan on adding a "formatting help" modal to the "submit text" view.
I'm also going to make a landing page to explain the site.
- [ ] add formatting help - [ ] add landing page - [ ] autosave view - [ ] add profile pics
Fixed some annoyances with my front end, made it behave a slight bit better on mobile (in my opinion).
Started trying to build some "softer" content, but that's so much harder for me for some reason.
- [ ] add login with email - [ ] enable github-style enhanced markdown - [ ] polish UI - [ ] update "how to use this site" - [ ] write soft post - [ ] autosave view - [ ] add profile pics
Finished and submitted part 4 of the Ethereum series. No upvotes on Hacker News, 1 upvote on reddit. I need to adjust to the fact that I'm spending 24 work hours on things no one is interested in. It makes sense: for someone just viewing part 4 without reading any of the other parts, it's probably impenetrable, useless. I still think the posts have value, but only for the .1% of viewers that are actually seriously interested in implementing their own cryptocurrency. To those people it's probably really valuable. They might even be willing to pay for it. But I'm approaching this wrong because I've made the posts free.
There are probably two types of demand for my content, one I'll call hard demand, the other I'll call soft demand.
Hard demand is what I describe above, engineers who are serious about implementing their own cryptocurrency, who would normally buy a book on the subject. These people actively look for my content and would be willing to pay for it.
Soft demand are the general people browsing hacker news and reddit. They are 1000x more prevalent than the hard demand people. They get excited about concepts and technology, but they don't want content that makes them work. This is not an insult, it's pretty normal. 99% of the time I'd consider my own demand for content to be soft demand. I rarely read posts with code in them, unless I'm looking to solve a specific problem. I just don't have the time.
My mistake is that I've been making content for hard demand people and making it free. I should make content for soft demand people and make it free, and then when I have a reputation I'll make content for hard demand people and make it subscriber-only. The main problem going forward is that I have no idea how to make content for soft demand people. You would think it would be simple. Work less. But I don't think it will be that easy.
I think the immediate changes I want to make is make seed user stuff go away. Everyone that is already a seed user will keep their status, but no new ones will be made. All I have I will also make my Ethereum series subscriber-only going forward (old posts stay free). I should make an updated "how to use this site".
- [ ] add login with email - [ ] enable github-style enhanced markdown - [ ] polish UI - [ ] update "how to use this site" - [ ] write soft post - [ ] autosave view - [ ] add profile pics
Dropped part 3 and began part 4 of the Ethereum series. Not as much buzz on this last one. I think I made the mistake of posting Hacker News at noontime, when it only took 15 minutes to be swept off the "new" page. I don't think a single person saw it, and I'd rather not repost in case I get marked as spam. Got decent upvotes on reddit though (12). Thanks guys.
- [ ] write part 4 - [ ] polish UI - [ ] autosave view - [ ] add profile pics
All the test cases for the new identity model pass, including a new test case where I made a payout option, upvote, make a new payout option upvote, and then withdraw $2. Didn't work before. Works now.
Wrote some cron jobs this morning for maintanence. Added a subscription button. Added a comment system. If the comment system seems robust (which it does), I think I'm good to go to start publishing articles again. I've got implemented all the main features I wanted to implement. Feels good to get to this point.
- [ ] drop part 3 - [ ] autosave view - [ ] add profile pics
Added a subscription renewal cron job. Added emails to myself at several points in the code, just so I can keep track of when people are posting, making new accounts. I refactored my refactor a little: I was treating individual Stripe Accounts as payout options, when I should have been using Stripe Bank Accounts as payout options, underneath one stripe account. If I used different accounts as different payout options I wouldn't have been able to withdraw the funds from to the other, but with one account at the top all the money goes there and can be withdrawn from any bank account (in the US at this point).
Need to make test cases pass after that, and continue on my list
- [ ] made test cases pass - [ ] add comments - [ ] add some sort of subscription button - [ ] drop part 3 - [ ] autosave view - [ ] add profile pics
Finally finished and deployed the refactor of the user view and payment system. You can now add and store payment and payout options, choose which ones to use when buying upvotes and withdrawing, and activate/deactivate your subscription. Took a very long time to work through all the broken test cases but now that is done. UI changes as well.
I'm at the point where I feel like I could publish the next article (and continue uninterrupted) but there's one more thing I want to take a look at (that I won't name for security reasons). I still need to add commments and subscription button, and several crons for system maintanence.
- [ ] add cron jobs - [ ] add comments - [ ] add some sort of subscription button - [ ] drop part 3 - [ ] autosave view - [ ] add profile pics
Continued to refactor payment option stuff. You can now add new payout methods, delete them. I updated withdraw view so you can choose the payout method to use. I added an "extra upvotes" view, you can choose the payment method. Not quite done with the refactor to publish. Still have to make the test cases pass. One more day.
- [ ] finish payment option storage/UI refactor - [ ] update user views - [ ] add cron jobs - [ ] add comments - [ ] add some sort of subscription button - [ ] drop part 3 - [ ] autosave view - [ ] add profile pics
Today I began a refactor of the user view, which made me decide I need to refactor the way I store payment and payout options. This refactor is necessary, but it causes a fundamental change of my Stripe interface, which causes many test cases to fail, so it's going to take probably another day to make sure this is all going okay.
I'm getting a little bit antsy about not publishing part 3 of the ethereum series. It's getting to be a little while. I will probably take a look tomorrow afternoon. I wanted to wait to publish it until the infrastructure of this website is stable. Things should be pretty stable by then.
- [ ] finish payment option storage/UI refactor - [ ] update user views - [ ] add cron jobs - [ ] add comments - [ ] add some sort of subscription button - [ ] drop part 3 - [ ] autosave view - [ ] add profile pics
Sorry for the long haitus, it was basically a sequence of old project, then traveling home and back for my birthday, and finally moving. Tough week for productivity. I just noticed that in that time, someone bought upvotes.
Thank you user habibalamin for being the first person to buy upvotes!!
I've had part 3 of the Ethereum series written for about a week, but I'm in the middle of firming up the site before I start getting any more users. The large amount of attention my first post got exposed a lot of problems with this site, and I'm working on fixing all of them before I post.
Today I put in place a new email system. Before I was using free tier Google SMTP, so basically I was being rate limited and spam blocked after just 50 emails. Now I have set up Amazon SES, with an SPF record so that I don't get bounced. Seems to be working smoothly enough so far.
I changed my model of enabling payouts, now there is a "pending" state which there needed to be before. I've also made it so that upvotes can only happen if someone has enabled payouts in order to avoid the awkward situation where someone has earned money on this site, but it turns out that I can't pay them using my payments system.
I cleaned up the enable payouts form. It could be better, but now it's at least in a reasonable state. I fixed various problems related to the validation of this form.
I want to make a much better user view, where the subscription model is much clearer and which displays the full state of the user. I also need to cron a bunch of recon jobs and activity summary emails to myself so I can keep tabs on the integrity of this system. I still need to add comments and post subscriptions. Once all that is ready I think I'll be ready to drop part 3.
- [ ] add cron jobs - [ ] add comments - [ ] update user views - [ ] add some sort of subscription button - [ ] drop part 3 - [ ] autosave view - [ ] add profile pics
- [ ] finish part 3 - [ ] add comments - [ ] update user views - [ ] add some sort of subscription button - [ ] autosave view - [ ] add profile pics
Lots to do.
Wow. So. Today I posted part 1 of the Ethereum series to Hacker News, and it's gotten 320 upvotes so far and was the top link for several hours. I am honestly very suprised at the attention it's gotten, and it might mean I have to change my approach. I was planning for a month before anyone would take an interest and sort of "get" what I was trying to do. Now I have 75 users. (Thank you!)
The fact that I do have users now means I probably need to switch priorities towards filling in all the blanks in the UI that exist right now. For example there is no edit view and several new users submitted posts they intended to be free as subscriber-only and I had to email them and ask them if they wanted to change (they all did). Multiple users requested a subscribe button. Still need to do autosave. I need to make an emailer. I should implement stickies.
I had an edit view working for everything except the quill ('submit text') editor this morning, and I was actually planning on scrapping that editor but now some users have made posts using it. I might still scrap it but leave the posts.
- [ ] finish part 2 article - [ ] finish/test edit view - [ ] make sure stripe integration is still working - [ ] add some sort of subscription button - [ ] autosave view - [ ] stickies - [ ] add comments - [ ] add profile pics
Finished the intro blog post to the Ethereum series, took a lot longer than I had hoped to write, like 3 work days. Also an old commitment came up out the past that I have to take care of along side this project, so that will be some work. The next posts in the series have to be bite sized, it's better for me and better for the reader - who has time to read a 10-page report, especially if it's technical? Next posts should be a maximum of two-pages.
Writing this post has made me realize I desperately need an autosave function, as well as an edit view. I will be working on those tomorrow.
- [ ] autosave view - [ ] edit view - [ ] stickies - [ ] add comments - [ ] add profile pics
Deleted rss links. Deleted plain text posting. Added markdown posting with previews. Excited about that. Submitted the voice separation post via the rss link mechanism, huge failure with code formatting, got 75% downvotes on reddit, ouch. People don't like negative results. Deleted the post due to formatting problems. No more links.
Now that I have a means to write the posts, I'll start the Ethereum miner series. I might do something where I cover the essentials in a series of free posts, and then put more detailed, niche behind the paywall. I'm sure that will piss some people off, so I'll err on the side of giving away more things for free, but I need something there. I hope this will become a use case for people that put a lot of effort into making great tutorials for little concrete gain. For example Zed Shaw, author of "Learn Python 3 the Hard Way" recently wrote a post on how he could do "so much more" if he charged for his books, but he feels very strongly for helping people for free. I *hope* that Ocalog becomes a good compromise.
Other improvements I could make: adding comments, profile pictures, social stuff everybody seems to like.
- [ ] start ethereum miner series - [ ] add comments - [ ] add profile pics
I've decided that RSS "links" are stupid, despite making it really easy for people to cross publish on this site. Why not just have links to the original webpage, instead of partially copying the html, with all these problems with stylesheets and security issues with scripts...? I will probably get rid of that...
I'm on the fence as to whether allowing people to submit links is a good idea or not. On one hand it allows sort of nice Patreon-like functionality where people can help support the creators for stuff they've already made, and without requiring much effort on their part. On the other hand I'm worried about becoming "just another" link aggregator. This site should be primarily for original content, made on this site. Also it might be harder to police people presenting other people's work as their own w/links.
Why have a plain text editor and a rich text editor? Will collapse... I also want to make it easier to write code and do math.
Completed a post on the voice separation negative result. Will publish both here and on the blog using RSS link and then will probbaly remove rss link feature.
- [ ] start ethereum miner series - [ ] make better editor for code/math writing - [ ] get rid of "plain text" editor
Today I straighted out the front page list formatting. Then I confronted the following problem: small formatting changes aren't what makes the website worth anything, the content on the website gives it its worth. However, there's no incentive for creators to post on my website if I don't have users there to upvote them, and there's no incentive to subscribe if there isn't great content. Therefore I have this chicken-egg problem where it's likely I'll only be able to solve it by creating great content myself, although I wouldn't consider myself a "great" content creator. This will probably be the most painful part of the website's development. If I make it out, I make it out and there's a nice positive feedback cycle that's the opposite of the chicken-egg problem. If I don't make it out, that's fine. I've learned a lot from this project.
The "great content" I worked on today was basically a program to solve the "cocktail party problem" where you have several voices on an audio tape, you want to seperate it into the individual voices. I ran into some trouble. Turns out it's this hard problem in signal processing. I'm working on some adjustments to my approach to see if I can ram my way through, but I might table it if there are further difficulties because I think quantity is rewarded more than quality at this point.
One idea I have for a series of posts is building an ethereum miner. That has a couple qualities that I like: it's technical, therefore it's useful and I'll enjoy learning it, it's a buzzword and people will like it because it's inherently cool, and I could probably split it into a series, basically learning while I write the post, and that will give me the quantity that I'm chasing after. We'll see if it works out if I can't get this audio stuff working.
- [ ] try to finish audio seperation - [ ] write ethereum miner post - [ ] link ocalog to michaeljflynn.net
Today I started a re-skin of the site using bootstrap. Made some progress, not all the way where I want it to be.
Besides proceeding with the re-skin, I want to link ocalog to my personal blog's rss.
- [ ] polish, polish UI - [ ] link ocalog to michaeljflynn.net - [ ] make an actual terms of service
Today, I decided I just wanted some peace of mind and got all the test cases passing. I had rougly 2500 lines of test cases, and I've made significant changes to the logic in the back-end, so it took a while. Tomorrow I'll start on the re-skin of the website.
Haven't gotten any responses from people to create on this platform yet, so tomorrow I'll probably try posting my own content to populate the home page.
Contemplating making a sort of landing page to explain everything. I'll do that after I finish the re-skin.
- [ ] start redoing front end UI - [ ] make an actual terms of service - [ ] submit content to site.
Today I solidified the RSS links. Now I have a database model of the link to the RSS feed, a method to create new posts from the RSS feed, and I've set up a cron job to check the RSS feeds for new posts every hour. Now that's all straightened away it should be really easy for people to cross publish on this platform.
Emailed some potential creators today. Hopefully that will turn up something, it's at least a free couple bucks for them as I alone meekly upvote the few users of my site.
I wrote a quick introduction to the site so that people know what they're looking at. I realized the favicon I've chosen looks like an ear or a copyright symbol... might want to make a new one.
I think it's time I started polishing the site up instead of making new features. Polish comes in two forms, backend polish, with test cases and whatnot, and front-end polish. I've spent very little time on front end polish so far, so that's probably what I'm going to focus on tomorrow. I've been wanting to redo the site using bootstrap because it just looks better and comes with mobile optimization already done, which solves a huge pain point. So, on the todo list for tomorrow is:
- [ ] start redoing front end UI - [ ] check test cases - [ ] make an actual terms of service - [ ] contact more content creators.
Happy 4th! Got a good amount of stuff done today: made a favicon, added email confirmation, added password reset functionality, restricted accounts to one per email, fixed a server error after logins due to email validation bug, introduced seed users, which are basically people who don't have to buy a subscription to view posts, first 1000 people to sign up are those, and I made it so that you don't have to enter your bank account information to post, just to withdraw, I thought that would be a large and unneccesary barrier to making new posts.
I still need to make an actual terms of service document and contact some creators. I kind of want to get all my test cases straightened out before I show off the site to anyone, but I also want to get moving fast. I definitely need to get the rss link feature working before the "wiring in" process is seamless, so I'll take care of that tomorrow.
So yeah, agenda for tomorrow:
- [ ] solidify rss links - [ ] make an actual terms of service - [ ] contact a few content creators.
Today finally got Certbot to give me a certificate, was having some trouble with a currently unsupported OS (Amazon Linux) and a non-standard installation of apache. Did it though. And now Ocalog is running exclusively on SSL, if you request standard http it will redirect. This means that stripe will work, they require everything to be done using TLS. Which means that I can officially consider Ocalog to be "deployed", most of the minimum business logic works. The only logic left to implement is consuming updates from Stripe, pending balance to available balance, pending identity verification to identity verified, etc. Going forward, I hope to wire in a few real, established content creators by making it really easy for them to cross publish on this platform. I hope to start contacting them tomorrow.
Other stuff got done: set up a deployment system using git, now that I have seperate production and development servers, refactored all views that reference test or fake data, refactored the enable_payouts form to actually upload the identity documents, added PaymentMethod model to keep track of bank accounts (was doing that all via stripe before).
I also added this blog, I hope that it will motivate me and keep my thought process contiguous. On that note, tomorrow I should:
- [ ] make an actual terms of service, - [ ] add a favicon, - [ ] set up email confirmation / password reset, - [ ] contact a few content creators.