#tantek16:51 gRegor` "interested in seeing vouching implemented. I think it will help me understand it better." indeed, implementation will help illustrate. so will a UX flow.
#KevinMarks_In a sense this vouch idea is reviving the early LinkedIn model
#KevinMarks_Though there they had the person vouching review the message
#tantekKevinMarks - you're making the same mistake KartikPrabhu did with email.
#tantekLinkedIn and email require all steps to be manual
#tantekwhereas by actually using the web, likely all steps of vouching can be automated
#tantekvouching uses existing publishing behaviors and linking patterns
#tanteknone of this explicit awkward "Connect with me on Linked in!" crap
#LoqiKevinMarks_ meant to say: I mean the part of LinkedIn where it would show the social connection between you and a person and you choose a person to vouch for you
#tantekand then it would bug them to do so - again, socially awkward, and too many steps
#tantekvouch protocol has no such nonsense - the intermediary is not bothered one bit
#LoqiKartikPrabhu: kylewm left you a message 15 minutes ago: and then it marked "last activity id" as that id, and didn't go back to look for mentions from before then
#KartikPrabhuif I write a post saying " troll.com has been bothering me and so I blocked them " can troll.com use it as a vouch?
j12t, jjuran_ and parzzix joined the channel
#GWGOn 9/28/14 at 6:58pm, {suser:saracen1187} wrote:
#GWG> Hi, if anyone send a message criticizing what you wrote in my story, don't take it to
#GWGI guess I'll get my webcam and talky in from the woods.
#ben_thatmust_if our house remodel was finished I'd offer up a free stay top the chat
#GWGNext time. It is, as I said, a busy time of year. I have absolutely nothing after that confirmed.
#GWGben_thatmust_: I think I fixed the HTML problem, by the way. Still holding off on the time problem as it appears to be more complicated and I want to understand why.
#KartikPrabhukylewm: yeah it is annoying. even retrieving the actual tweet object only shows a fav/retweet count and not the actual people doing it :|
#tantekpretty sure that barnabywalters wrote a parsing shim to get reply-chain info from a tweet
#KartikPrabhure: blacklists the Twitter API also allows to add/remove blocked/mutes users so a local blacklist can then be propagated to Twitter so you never get mentions from them via Twitter
#tantekthere we go - /storage now links to /file-storage and individual database pages, and the indieweb examples for each have been moved to the specific pages
gr0k joined the channel
#tantekooh actually I still need to add more of the flat file examples to file-storage
#GWGKartikPrabhu: I recently redefined Bookmark on my site as the equivalent of Sharing a Link to an article, with or without comment, in other venues.
#KartikPrabhuthere we go "PC will solve the own you own data" problem ^^
#KartikPrabhuGWG: if that is what you want "bookmark" to be then sure
#KevinMarksThe different valence of star vs heart is tricky with favourite/like
#tantekKevinMarks: valence? what do electrons have to do with it?
#GWGKevinMarks: Where are the yellow moons and the green clovers?
#tantekanyone know how to just block all *.google.com 3rd party embeds? I'm getting tired of Google server slowness / bad latency slowing down page loads across the web. just want to block the entirety of all *.google.com embedding of any form
#acegiakSo last night I rewrote my brainstorming engine and, thinking of the whole antipattern controversy, realised I didn't need a database for this project
jjuran, cweiske, fmarier, ShaneHudson and fabiok joined the channel
#petermolnarfor css background, sprites, yes, not for large, photo-like pictures
#Mark87my only thought is that since what i'm developing has longevity as one of its core goals, what could be more time-safe than embedding the images?
#Mark87over time who knows what could happen to the images. maybe they get separated somehow over moves and copies over the years
eburcat, brianloveswords, davidmead, squeakytoy, emmak, npdoty, loic_m, gr0k and modem joined the channel
#@hackrdie indieweb-crowd lässt l. schon wieder jede mögliche lektion aus ello aus; langsam verl. ich die hoffnung (nicht ans indie, an die crowd) (twitter.com/_/status/516619823900786688)
petermolnar, PierreO1, yakker and jet_ joined the channel
#TysonBrooksCaught a glimps of it on leoville.net while leo was doing the radio show on Sunday.
#ShaneHudsonAh nice! I meant to say what do you think of it? Are you enjoying it?
#TysonBrooksI've just done one post with it so far. I'd like to host a number of them. I've even thought about making an installer so when someone purchases hosting through me that they could get it auto installed onto their own accounts.
#TysonBrooksBut for starters I'd like to host at least two instances one for my business site to use it for the socail media stream, a hub of communications from the two popular networks (Facebook & Twitter). Then another one for my personal uses. The personal one is the one launched right now.
#TysonBrooksI seen Ben commenting to Bluehost to see if they'd work with him on doing an easy installer. Which is what got me thinking about it. If I can make it work I might contact him and show him what I've worked out.
#ShaneHudsonDefinitely. He often drops by on here (although less since working on Known) so I'm sure he would be willing to talk about it.
#tantekShaneHudson: benwerd posts and werd.io all the time, just pick "All content" from the "Filter content" menu at the top. E.g. a note 6 minutes ago!
#danlykeMine is quickly growing beyond that, and I haven't really cleaned it up for publication, but if you're into C++ the system currently running Flutterby.net is at https://github.com/danlyke/FlutterbyNetCPP (and personal repos if you prefer to not participate in the Github silo)
#LoqiJekyll is Ruby software that helps you create "Simple, blog-aware, static sites" suitable for static domain hosting http://indiewebcamp.com/Jekyll
#tantekerlehmann: re: so why not use that for all content, is there some drawback? [to Atom] - answer: yes, it's easier to write posts in HTML than Atom. Plus then you're done with having something browser viewable/editable.
#LoqiA feed reader is an application (local or on the web, like the defunkt Google Reader) that subscribes to feeds (typically legacy Atom & RSS) and presents them in an interface for reading http://indiewebcamp.com/feed_reader
#erlehmanntantek i currently write posts in html, plain text / whatever and generate an atom file from the information in the git repo.
#tantekre: how do you people store Atom ids in flat file backends? Not sure anyone needs Atom ids. We do store permalinks.
#erlehmanntantek do you know of blog software with MIME storage backends? after all, everyone holds on to their emails and can edit them from every device
#ben_thatmustbemeI'm thinking I will investigate just having posts rendered out to a storage folder on updates. Not sure I want to go fully flat file for storage, but rendering the data thats nice to keep around is probably a good idea
#ben_thatmustbemethen i start having to manage my own indexes and such, which gets rather messy. Plus indexes aren't something i care about storing for the future. its only content. So just redering out bodies of posts, etc, is really all I care about
#tantek!tell danlyke what is the name of the software you use to run your site?
#ben_thatmustbemei guess i somewhat already do this, as my queries are cached out to disk
#ben_thatmustbemeerlehmann, yes, if I want to grab only articles, if I don't want to loop through all files on disk, i need some list of entries by type
#ben_thatmustbemeif i organized on disk by type, then i'd have the same issue grabbing something by date, etc
#ben_thatmustbemeright now I store everything in the DB, but since queries are much slower than disk access, I have timestamped caches of search results in files on disk. As long as I make sure that everything that could possibly effect those cached queries is set to update the cache, I could drop the requirement that queries have a finite cache time. and just keep then indefinitely.
#ben_thatmustbemeright now i'm trying to get the MP client developed enough where I can completely throw away the admin interface. I basically have abandoned it already
#ben_thatmustbemethere may be a few things that will not be done with MP, like editing rel=me links and such, those may need a minor interface, and I'm hesitant to have those accessed by indieauth
#tantekkylewm: no problem. we should document the current state of the community, whatever that is, in addition to past experiences and future aspirations.
#tantekgRegor`: would be better to have those individual projects have the opinions stated, rather than on the MySQL and PostgreSQL pages
#tantekso yes, document how your project does its Datastore / Storage format (take your pick) and add any additional opinions there that informed your design
#gRegor`Hm. I kind of like being able to skim down /PostgreSQL and read the opinions on database-antipattern though
#gRegor`Guess they can remain there and on the project pages, of course.
#tanteksure - we can leave that up to the individual project maintainers
#tantekthough in the example of /PostgreSQL - the opinions are offered detached from a particular project
#mkoSo... on the database-antipattern, most of those arguments don't apply to MongoDB since MongoDB is actually storing everything as .bson files on the file system. It is technically a "flat file representation" of the files. My entire MongoDB dump looks like nothing but JSON representations of h-entry almost identical to that which pin13.net spits out (but currently without all the arrays for things that I know are only going to ever be a
#gRegor`I think Facebook changed something regarding the image preview when you put a URL in your status. Instead of my logo, it just picked up the avatar of one of the comments first.
#gRegor`tantek: What is "big enough"? Is this documented somewhere?
#ben_thatmustbemeah yeah, i need to create those, I always forget what the filename apple looks for is
#gRegor`ben_thatmustbeme: I use rel=apple-touch-icon
#KevinMarks__it's documented on facebook's page, yes
#danlykeKevinMarks, interesting article, especially since I just got to the "WordPress Plugins" section, and how they block WordPress clients because of botnets using Pingbacks for "sustained attacks", and thought about WebMention.
#KartikPrabhugRegor`: looks like we don't have a page for "big enough" ;)
#Loqidanlyke: tantek left you a message 1 hour, 8 minutes ago: what is the name of the software you use to run your site?
#KevinMarks__right dan, interesting on that front too -
#gRegor`KevinMarks: nooo, don't make me look at FB documentation. ;)
#mkoKartikPrabhu: No argument there. It counts as db-tax, but I would argue that the file-storage pattern has just as many (if not more) "taxes" for long-term usability. Assuming you improve the display or methods of access of your content over time, it's very possible you would need to go back and reformat all of your files to support these new displays or methods of access.
#LoqiThe database antipattern is the use of a database for primary long-term storage of posts and other personal content (like on an indieweb site), and is an anti-pattern due to the additional maintenance costs, uninspectability, platform-dependence, and long-term fragility of databases and their storage files http://indiewebcamp.com/DBA_tax
#danlyketantek, don't have any good name, internally it's "fby", in the svn repo it's FlutterbyNetCPP, if I'm going to distribute it I really need to package it differently from "git commit -a; git push github master".
#KartikPrabhumko: unlikely if they are stored as HTML anyway
#danlyketantek also going to split the git repo into a general purpose library and the blog/wiki portion shortly.
#ben_thatmustbemeSo those that sore in files, how do you store comments? as a separate file for each, one comments file per post, or at the end of the file they are commenting on?
#tanteksame with Google's rich snippets validators, have to wait to be blessed, and even then you have no idea what markup they'll actually bother to do anything with.
#tantek.comedited /database-antipattern (+30) "sort projects, keep only those live on actual indie web community member sites, note multiple and put those first in lists" (view diff)
#KevinMarks__doesn't need approval like twitter either
#TysonBrooksKevinMarks, if you're the one who told leo about withknown, thank you!
#KevinMarks__I did, but benwerd and erinjo came on the show too
#TysonBrooksAs soon as its compatible with subdirectories I'll be using it for my business as well.
#tantek.comedited /database-antipattern (+0) "bumping plain HTML files (multiple) to top of list as at least 2+ independents currently doing that, and some have in the past." (view diff)
#mkoHonestly, I think /database-antipattern is one of the most caustic disagreements in the IndieWeb. If I get some time, I'll try to further articulate why I feel that way, but the short answer is that it's an argument about plumbing that tries to shame people who disagree.
#crjust as an example, POSIX only has local usernames, if you want to allow the web at-large to have UNIX-style permissions to read/write on your website, you have to build your own access-control layer
jet_ joined the channel
#tantekwhere do you post content like blog posts on your personal domain?
#crmy server has a special handler on /news, which so far is just aggregated/reblogged content
#tantekinteresting use of subdomains for that stuff which is all from the same individual - I don't think we have anyone else here doing that - typically people use paths for that
#KevinMarks__it is easier and good practice with different software; I'm not religious about it either way
#tantekKevinMarks: interesting. as I'd think from wanting to keep permalinks working, that fewer URL patterns (where stuff is posted) would be less work to maintain longer term.
#KevinMarks__tantek: does using git to store your site count as file storage or a db?
#snarfedthe biggest new part i learned was the distinction between personal indie websites and larger apps/systems. i originally interpreted it as an argument as an antipattern for both, but it's clearer now that it's primarily an antipattern for the former, which i agree much more with
#kylewmjonnybarnes: thanks! as of this weekend, they’re stored in the SQLite database along with everything else. there is a Contact table and a Nick table
#jonnybarneswhich just points to the first line of the logs for me
#ben_thatmustbemei thought it was going to be saying "What's the Use Case?" to stop people in their tracks and force them to think things through again.
#ben_thatmustbemewonders if he should find a spot in the wiki to describe fully his context-tread implementation or do it as an article on his site
#davidmeaddoes anyone know if self-hosted WP can handle micropub’s?
#gRegor`davidmead: It's certainly possible, though I don't know if anyone has made a micropub plugin for WP yet. I think GWG and acegiak have talked about it.
#LoqiA reply thread (AKA reply chain) is a threaded list of replies, and replies to those replies, displayed under the original post, sometimes as part of a reply-context http://indiewebcamp.com/context-thread
#kylewmtantek: garvin has been in the IRC a couple of times and Adam Brault came to IWC SF…
daf, joshwnj, brianloveswords, tantek and ShaneHudson joined the channel
#danlyke`digging through microformats docs and finding no love: Putting aside my loathing for WebMention right now, if I wanted to RSVP to the October 22nd Homebrew Website Club via either my RSS feed or my status update microformats feed, how would I do that?
#gRegor`danlyke`: Have you seen the conversation recently about antispam measures with webmention?
#tantekgRegor`: that was the old method of posting indie events. the new method is "get KevinMarks to do it for SF"
#gRegor`Re: Feedburner "But most people were actually using it as an online penis enlargement tool, displaying the subscriber counter button on their Web site." haha
#tantekdanlyke - you can always only *send* webmentions for now, and postpone receiving until there's an anti-spam approach that works for you.
#tantekoh dear - I see neuro` has gone a bit overboard with the click-bait titling
#gRegor`Whoa. "I was surprised to notice Feedburner was throwing a 400 Bad Request error. Despite Google guidelines promoting the use of HTTPS, Feedburner, a Google service is unable to handle it."
#tantekgRegor`: yeah, acquisition neglect. typically precedes acquisition shutdown.
#danlyke`tantek, my concern with WebMentions is as much that if we collectively generate an additional installed huge base of DDOS platforms (along-side Pingback), we're not doing any good. But I'll ping 'em for now. Sigh.
#tantekdanlyke, as you know I agree with your concerns. Let's still play with webmention while it's small and we can figure out UX issues before the spamhordes arrive
paulfitz joined the channel
#danlyke`tantek, Yeah. It's one of those "well, may as well at least manually invoke requests... for now." things.
snarfed joined the channel
#dafI think part of the implicit silo bargain is that they deal with that stuff for you; control for convenience
#tantekdanlyke, I have been putting some time into thinking/designing about the webmention (expected) spam problem BTW - I'd be very interested in your thoughts on the proposed "vouch" protocol extension to webmention: http://indiewebcamp.com/irc/2014-09-28#t1411927207068
#danlyke`tantek, so the notion is that I, B, have a record of C linking to A and thus don't have to retrieve C's record? Else we have a current Pingback amplification potential.
#tantekright, wasn't trying to solve the amplification problem, just the spam one for now
#danlyke`yeah, the spam one isn't nearly as interesting to me, that's something we have many potential filtering mechanisms for. No solutions, but email is still usable and we don't have a solution to that either.
#tantekI don't consider email really usable any more - not for realtime notifications.
#dafthis seems sort of like a decentralised trust problem, but I think most distributed web problems are distributed trust problems
#tantekit's a work task. I pretty much don't do it unless being paid to.
#tantekdaf - hoping to not generalize to "trust" - which I think is unnecessary for this use-case.
#tantekthat is, it's similar but not the same, nor even same scope
#dafyeah, I don't mean the problem of making reliable "Alice trusts Bob" assertions
#dafI think trust assertions have to always be contextual
#daf"I assert that I think this book is worth reading"
#reedstrmThe general cross-social-domains organizational problem still defaults to lowest common denominator communication: email. Just attended my kid's orchestra Parent's organization group. Everythings done via email. And I'm glad: it could be a 'join our Facebook Group' instead ...
#reedstrm@tantek like I said - hasn't reached me yet, and I'll fight it with my dying breath ...
#barnabywalterstantek: heh, yeah that’s a particularly bad example
#reedstrmwell, I'll seem dead to them, at least :-)
#dafanother way of thinking about it is that Google made linking tantamount to approval, and the rest of the web has sort of gone along with it
#danlyke`I'm with rascul. I'm also a square dancer, and recently saw some heavy Facebook adopters in that space discover that they were losing most of their target audience when they moved to Facebook groups and Facebook-only promotion (Was actually somewhat surprised by how much they lost).
#tantekdaf - rather, Google took advantage of the fact that linking already *was* a very lightweight form of tacit approval.
#tantekwhereas the text-entity PhD analysts at AltaVista thumbed their noses at determining anything from markup.
#dafGoogle was very very good before people started gaming it
#barnabywaltersI remember asking when we were discussing it last and not getting any particularly certain response
#tantekdanlyke - anyway - let me know when you've read through yesterday's log re: vouch and if you have any more comments / questions.
#npdotytantek, I think "block" and "mute" are most important for the reader side of things, rather than the publishing side. though for inline publishing/linking to comments/responses, you'd want "block" to remove responses from your own site
#tanteknpdoty: half-agreed. mute is important for the reader side. block is *more* important for the publishing side.
JohnDuh joined the channel
#tantekblock is about stopping *all* interactions someone can have/do with your published content.
#daftantek: on the other hand, email spam filtering went in the other direction, from overcomplicated spamassassin type stuff to simple word frequency analysis
#tantekdaf, and even the best at it (gmail?) still suck at it and I have to delete several pieces a day.
#dafI have weeks where I don't have to delete spam, but point taken
#danlyke`tantek, aside from the amplification attack: When we say "B vouched for A", do we mean that B has vouched for a URL that matches A's URL up to the last slash in the URL B vouched for?
#dafbtw, I live in Cambridge so perhaps I'll run into some of you this weekend
#npdotytantek, indieweb has the limitation that Block can't prevent an abusive user from responding to what you post, only to limiting where those replies are linked/syndicated/re-published
#tantekdaf are you coming to IndieWebCampCambridge?
#dafit sort of feels more like IndieWeb is coming to me
#tanteknpdoty, if you mean, anyone on the web can link to anything, sure. that's the nature of the web and HTML and URLs.
#npdotytantek, a silo could delete comments the abuser posted about the abused.
#npdotytantek, yeah, I'm not actually saying it's a problem, I agree that this is exactly how the Web should work. but it's a reason that Web approaches to abuse are likely to focus on the mute side of things
#tanteknpdoty - two examples. on Flickr, blocking someone deletes all comments they made on any of your stuff. On Twitter, blocking someone does not delete *anything*, nor does it stop their @-replies from showing up on your tweets when *others* view your tweets.
#danlyke`tantek, one additional problem: how does C know which B to present as vouching? This'd have to be a manual thing by the poster...
#tantekdanlyke - I think you're using those letters differently from the scenarios I've described.
#tantekA sends a webmention to B, using a (perma)link URL of C as a vouch.
chrissaad joined the channel
#danlyke`tantek Ugh. Got my Bs and Cs mixed: "A sends along a third parameter, let's say "voucher=" ... that includes a URL to C", this means that A has to know that B trusts C.
#tantekdanlyke, not *trusts*, but just that B has *linked to* C *sometime in the past*
#npdotytantek, right, so for Flickr-like block functionality, an indieweb publisher can delete links to comments written by the blocked user so that they don't appear on your own site, but only readers can handle the functionality of hiding those comments for others
#npdoty... and I'm not sure if we want to call that publisher feature (don't link to/syndicate interactions from user X, Y or Z) "block" or rather "mute"
#danlyke`tantek, ah, okay, so A knows C has linked to A, scans B for links to a C which A knows has lined to A, and then notifies B with that C as a voucher.
#tantekcorrect. and yes it is by design that this additional "work" is placed on the *sender* of the webmention. in "good actor" cases it is expected to be trivial, and in "bad actor" (spammer, abuser) cases it is expected to be non-trivial. it is designed to be *hard* or *difficult* in the abstract
#danlyke`So A's knowledge of C actually has to be pretty comprehensive, and if we have sites knowing that much about other sites in their ring of trust, we can almost suspect that B doesn't have to poll C again to tell that C has linked to B.
#danlyke`(Need to map out the necessary *cough* database *cough* schema for implementing such a protocol fairly robustly...)
#tantekthat reasoning doesn't follow, because it is conflating first and second degree
#tantekdanlyke - no database schema needed - just a user flow ;)
#tantekA's knowledge of C does not have to be comprehensive at all - it's expect that if you are in each others second degree then it is trivial to find such a link
#tantekto make this easier, sites software could cache (e.g. in database cache ;) ) *just* the one-degree in-bound webmention links and outbound links from content.
#danlyke`tantek, yeah, that's kind of what I'm thinking: I'm already scanning RSS feeds from my OPML (and from /irc-people), will probably add Microformats shortly. If I track which of those entries link elsewhere, then when A says "C vouches for me at entry [URL]", I can make a "yes" or "no" determination from my local knowledge of links.
#tantekright - for you it will be trivial to implement I expect
#tantekin general the implementation of receiving / verifying a vouch should be trivial
#bretdaf: ikiwiki! Cool! Have been eying it for a while
#danlyke`tantek yeah, my robustness is mostly just about potential race condition between "haven't checked C recently, A sends mention, I may need to store that until my next C check to verify".
#gRegor`tantek: So when I receive a webmention + voucher, my verification process is to confirm I have linked to that voucher URL before and ... what else? Or is that it?
#bretdaf: can you git clone [url to ikiwiki wiki repo] ?
#danlyke`gRegor: That you have linked to the *domain* of the voucher URL, and that the entry that the voucher URL links to has a link to the domain of the WebMention requestor.
#danlyke`ie: A finds a link on B/123 to C/456, and knows that C/789 links to A/012. So A mentions B/345 on A/678, and sends B a WebMention to B/345 with [A/678, C/789].
#tantekdanlyke - then B verifies (by whatever internal mechanism it wants) that it has linked to C (blogroll, whitelist, Twitter followings, nicknames cache, outbound link cache)
#tantekand retrieves C/789 and verifies it links to A
#danlyke`tantek: right. A third parameter might be the page on B that links to C. That removes an index requirement from B.
#Loqitantek meant to say: no abstract notion of "known" or "trust" needed
#danlyke`tantek, true, but my blog has 20k entries, and I don't right now have any index of outbound links to index ID. If the WebMention request can tell me which of those 20k entries links out to the voucher, that'd help.
#tantekdanlyke - however the initial webmention won't either, so you need some mechanism like that in the first place to even start the process of rejection
#danlyke`(I mean, in practice I should index those outbound links anyway because I need to be tracking which of those are now spam farms, and which are 404, etc)
#tantekunless you're just going to reject all plain webmentions ;)
#danlyke`tantek, or put them in a queue util I can authenticate them somehow, and only to the request back to A when I actually have a notion of A's legitimacy.
#npdotyare all the implementations that send webmentions trying to send webmentions to every link in the post?
#kylewmGWG: was I correct earlier when I said that Wordpress peeps seemed less interested in Micropub since they already have a posing API?
#npdotydoes that create any spurious or annoying webmentions? do any implementations try to limit to only the in-reply-to link?
KevinMarks_ joined the channel
#kylewmnpdoty: even if you tried to pare down which wm's you actually send, someone else could come along and send them "on your behalf". the onus is on the webmention receiver to decide what's annoying/spurious.
#gRegor`GWG: I really liked the idea of a more magazine-like format with a single article on a single page. It lends itself well to minimalism, too, which I really wanted.
#kylewmnpdoty: there have been examples where someone sent a webmention with source=http://waterpigs.co.uk ... not a permalink page but the feed itself
#gRegor`GWG: I also questioned how valubable a stream of the most recent X blog posts was, given the heavier use of feed readers and short attention spans.
#gRegor`I wasn't clear in the context of "heavier use of feed readers" - my design is from 2008, iirc
#gRegor`feed readers were never that mainstream, true, but a lot of my readers used them at the time (most of my friends were on Google Reader and we loved it)
grantmacken joined the channel
#gRegor`GWG: thanks, glad you like it. :) I'm just happy I have enjoyed it for so long.
#gRegor`In the past I've spent so long working on new layouts that by the time I'm satisfied and launch it, I'm ready to change it.
#GWGgRegor`: I've been doing that. But I've been using it to learn a lot.
KartikPrabhu joined the channel
#GWGkylewm: There is a posting API, but there are limits to it.
#gRegor`What are the advantages of using WordPress JSON RPC (or whatever) over a plugin that just uses the core WordPress functions like wp_insert_post?