

Show HN: Pen.io - feint
http://pen.io

======
ElbertF
Be careful with JavaScript and saving plain text passwords in cookies:

<http://cookie.pen.io>

I just stole your password. :)

    
    
        <img src="" onerror="alert(document.cookie.replace(/^.+pw=([^;]+);.+$/, '$1'));">

~~~
feint
sorry my mistake and thanks for picking it up. Passwords are now hashed and
working on the js now

~~~
JoachimSchipper
See <http://searchyc.com/bcrypt>. Really, you can't do crypto in Javascript -
see e.g. [http://rdist.root.org/2010/11/29/final-post-on-javascript-
cr...](http://rdist.root.org/2010/11/29/final-post-on-javascript-crypto/).

------
lordlarm
I wanted to test this and decided on the name "test", which was taken. I tried
"test1", then "test12" .. etc. My point: let me choose if I want a nice URL,
and if I decide, then tell me if it is taken. I the meantime I would have
enjoyed something like: pen.io/fjS7f Besides from that: great idea and nice
design.

~~~
feint
good point. I'll look at making a random URL function

~~~
aaronblohowiak
you can use [https://github.com/aaronblohowiak/Random-
ID/raw/master/uuid....](https://github.com/aaronblohowiak/Random-
ID/raw/master/uuid.js) \-- just call newId(4) to get four characters of b64uri
randomnes.. or newId(10), &etc.

------
aquadoctorbob
Reminds me of TidyPub, also featured on HN a few months back:

<http://news.ycombinator.com/item?id=1952882>

~~~
jacobolus
Or Jottit?

<http://jottit.com/>

<http://news.ycombinator.com/item?id=54977>

<http://news.ycombinator.com/item?id=48770>

<http://news.ycombinator.com/item?id=73049>

~~~
_sh
Or TiddlyWiki?

<http://www.tiddlywiki.com>

<http://news.ycombinator.com/item?id=3433> <\-- Check out the low id, '1432
days ago'

Such an awesome thing.

~~~
robee
Or Publ.ca

<http://publ.ca>

~~~
neilk
Or Google Sites. <https://sites.google.com/>

------
g00gle
Very nice site and well executed, however...

It doesn't support Unicode?

I created <http://namuna.pen.io/> with devnagari script and it shows garbled
text. I hope you know that ~2-3 billion people don't use Roman Script.

~~~
olalonde
Seems to work from Chrome... Would still be better to throw in a <meta
charset="utf-8"> for browser compatibility I guess.

~~~
g00gle
I am on FFox 4 beta 11 on WinXP and I tried it with IE7 also.

I get this on both: <http://imgur.com/q0PfT>

~~~
cookiecaper
You may not have correct fonts installed. I get this on Fx nightlies:
<http://imgur.com/w6s0t>

~~~
g00gle
I use Devanagari script extensively and have never faced the problem on other
sites (FB, GMail etc). I changed the default encoding to UTF-8 but no avail.

Can you pls tell me what I doing wrong?

------
caudipublius
How did you come with the concept?

Future update idea, if you could collate pages you've created. Instead of it
getting lost in the void if you forget the IRL and need it months from now.

~~~
Khroma
What do you mean by collate in this sense?

~~~
caudipublius
A loose way of collecting/tracking pages you've created.

------
dhimes
Very cool idea, and nice site. I noticed that you are serving your own jquery.
I've read that it's better to link to Google's host as it is more likely to be
cached (and other reasons). Is this a conscious decision on your part, or is
it just a part of the puzzle you haven't wrestled with yet? (Honest question-
I don't know the right answer because I haven't wrestled with it yet.)

Google jquery link:

    
    
      <script type="text/JavaScript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>

~~~
collypops
You shouldn't have to depend on CDNs as there's no guarantee they'll be up all
of the time. I usualayy have a local fallback that can be triggered in this
way:

    
    
        <script type="text/JavaScript" src="//ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
        <script>!window.jQuery && document.write(unescape('%3Cscript src="/js/jquery-1.4.2.min.js"%3E%3C/script%3E'))</script>
    

The second script looks for the jQuery global object that should exist after
the CDN fetch. If it doesn't exist, it knows to get your own copy.

(If you're wondering "hey, where's the 'http:' part in that src attribute?",
it's because it's a safer way to ask for a resource when you don't know if the
you are under http or https.)

Also, you should try to place your <script> tags near the bottom of the
<body>, rather than the <head> so that they don't block the rest of the page
from loading/rendering.

~~~
jasonkester
Have you tested that to make sure that it blocks on the first script tag in
every browser?

Over the internet (as opposed to on your dev box), I'd expect that to always
evaluate to false and therefore include your local script.

You might want to look into putting that call into window.onload so that it
does what you think it does.

~~~
collypops
The point made (below) by @dspillet is correct, and important for one very
good reason:

You will almost definitely have scripts that you have included after these two
that depend on the jQuery object existing (otherwise what's the point in
having jQuery at all). So imagine this trick wasn't used, and you just served
up a local (or CDN hosted) copy of jQuery, then started using it in later
scripts. It's reasonable at that point to assume that jQuery exists - which is
because each script blocks, or if it doesn't, the browser itself will still
make sure they execute in order. So it's perfectly safe to use this script
without worrying about the order of things.

This is exactly why I (and many others) suggest that you put all of your
<script> tags at the bottom of the <body> element. They block page rendering,
so if they're in the <head>, or dotted around the <body>, they're going to
delay the presentation of the page to the visitor.

------
lurchpop
I'd recommend reversing the workflow like <http://min.us>.

Accept the content first, then authenticate when users try & save. It removes
a barrier to entry, and for people just testing, doesn't waste subdomains.

I'd also recommend ditching the subomain for a subdir. Regular people don't
really get it. Yes, there are major services that do it, but i know from
experience that social networking has trained average folks for years to use
subdirs vs subdomains (twitter, facebook, myspace).

------
liamk
It would be good if I could delete a page that I just created!

------
zb
That column of text is far too wide for comfortable reading.

Good suggestions on picking an appropriate measure here:
[http://webtypography.net/Rhythm_and_Proportion/Horizontal_Mo...](http://webtypography.net/Rhythm_and_Proportion/Horizontal_Motion/2.1.2/)

------
savrajsingh
I really like this. It's how the Internet should've worked a long time ago. ;)

------
richpalmer2
I'm getting "Column count doesn't match value count at row 1"

~~~
feint
that bug should be fixed now

~~~
richpalmer2
Awesome. Quick turnaround. Looks good now.

------
hnal943
Immature as it may sound, pen.io may not be the best choice for a domain name;
at first glance I think of body parts.

------
benatkin
This is reminiscent of infogami. I dug up some old pages.

[http://itre.cis.upenn.edu/~myl/languagelog/archives/003008.h...](http://itre.cis.upenn.edu/~myl/languagelog/archives/003008.html)
<http://blog.reddit.com/2006/02/infogami.html> <http://webpy.org/>

I'm quite fond of web.py. It appears that it is still actively maintained and
can do quite a lot.

<http://webpy.org/cookbook/>

------
dhbradshaw
I love it. Better, I showed my wife and she loved it too.

One thing that I wanted while I was editing was a tag list (like you have on
the About page, but right there on the edit page).

~~~
feint
good idea. I'll look at putting it somewhere on the edit page

------
dahlia
Only I missed is that it invented a new markup language poor than well-known
existing ones e.g. Markdown, reStructuredText.

------
MichaelGG
"Create beautiful text based pages in seconds and share them with world"

I think you may have meant "with the world".

~~~
feint
thanks for the pickup. Fixed

------
aik
"Column count doesn't match value count at row 1" when trying to create my
first page.

I'm in Chrome.

------
Jsarokin
Would be cool to add a grouping by hashtag function.

So I choose the page name for my first entry to be Test123, and I also add
hashtag #StartupPosts

Then later I make an entry called BlahBlah1 and hashtag #StartupPosts , it
groups the two together. Then users can search by Hashtags to find posts.

Also, common hash tags would allow people to search content from multiple
users. For example #Religion would have a bunch of religion based posts, from
different users etc.

~~~
feint
Love the idea. I was thinking of something similar - my implementation was a
bit different but I like the idea of hashtags.

------
Groxx

      <?xml version="1.0" encoding="UTF-8"?>
    

Hm. Anyone know why Firefox 4b11 wouldn't respect that tag? It's throwing it
into ISO-8859-1.

~~~
coderdude
It's probable that Firefox is a little "smarter" about content encodings than
to simply rely on what the document claims to be. The site is being served up
as text/html, so despite his XML declaration at the top I believe the spec
says to fall back on ISO-8859-1 in situations of uncertainty and that is also
the default charset for text/html.

------
kuldeep_kap
I think you should give them out editable pretty URLs made from title of the
post such as pen.io/this-is-a-test-page instead of sub-domains. This will also
help you with the SEO.

Assume that people will want to build lot of pages. Don't let the lack of sub-
domains hinder this. Plus, in future you can let them build a blog or
something from this set of pages. Advantage you have is you are letting them
start-off with minimum resistance.

~~~
feint
you can have: this-is-a-test.pen.io plus with the current model I have you can
also have: this-is-a-test.pen.io/page/1 etc. So actually people can create
more pages.

------
pmarin
¿How can I delete the page?

------
ajaymehta
Love the super simple sign-up. I think this combined with the basic gist of
start.io would make a killer app.

------
nhangen
I love the idea, but I hate the domain. Still, going to use this to replace
the PDF's I've been penning.

~~~
trampsymphony
FWIW, when I see pen.io I get a penis/penile sort of vibe. Beautifully
executed service, though.

~~~
hnhg
It's definitely something that at least in the north of England would be
hurled around as a playground insult.

------
ctide
I suppose I'm pretty immature, but when I saw the URL I immediately assumed it
was a Web 2.0 porn site.

~~~
udfalkso
Same here.

------
sfphotoarts
I like this, however, I'd rather this be something I could deploy privately on
my own web hosting. I've been looking for a simple cms system when I write
plain text files and something like this generate all the pagination, layout
and so forth.

~~~
Khroma
So like a blog? How would yours be different from a blog? I'm curious.

~~~
sfphotoarts
most blogs are database backed. this
(<http://news.ycombinator.com/item?id=699780>) had promise but it seems to
have been both abandoned and gone.

I can write one obviously, but I was hoping to find something that did the
layout like pen.io does. Jekyll is close when I looked at it. Maybe I should
revisit.

------
unicornporn
Sweet. <center> worked, that made me happy. I think you should implement
Markdown.

------
Tycho
Cool. like how it gives you a subdomain, that way you can tell people the
address in conversation. What are you using to host/script it?

<http://littlepoem.pen.io/> (password: password)

------
ernestipark
Looks nice. I actually developed a site that is eerily similar, but a bit
different over January. Haven't released it yet though.

Anyways, small bug for your :video tag. No opening < for the iframe tag, so it
just shows up as HTML.

------
healthyhippo
This is pretty dope. The design is particularly excellent. Nice work

------
mcantelon
Would be cool to have a link to help. I ended up accidentally deleting the
intro text that comes as the default page content and couldn't figure out how
to make a new page.

------
tobych
Doesn't "text based" need a hyphen? And the sentence a period?

------
conjectures
Nice concept - would be good to have a footer link to the instructions when in
edit mode.

For me, being able to use markdown or similar would be a big plus.

------
coderdude
It's good to see some of the UI elements from Premium Pixels in use. I always
liked those text boxes. (The submit button as well.)

~~~
eps
The text input boxes look completely messed up in Safari on iPad. Needs fix
in' perhaps?

~~~
coderdude
Ugh... input elements are the worst when it comes to compatibility across
different browsers and operating systems. I've wracked my brain for hours
working out various techniques to get a simple newsletter signup for working
right across the majority of my visitor's platforms. I think anyone who has
dealt with that can feel for the guy. ;)

------
phatbyte
I like this. Very minimalistic, easy to use.

------
srik1234
Just curious.. where did you register the .io domain? Are 3 letter domains
still available in .io registry?

~~~
loire280
There's still plenty of TWO letter domains out there. I registered oc.tl with
gandi.net a few weeks ago.

------
bbuffone
I like the site -> <http://bobbuffone.pen.io/>

------
ved
Why are you asking plain text password once I have logged in ? Its incredibly
risky and scary.

------
hasenj
Everytime I edit a page it says "you must be logged in" .. (I believe I _am_
logged in)

~~~
feint
fixing that now

------
cosgroveb
I like this... Very minimalist but cool. Rich text editing would be a pretty
sweet addon.

------
mcovey
Thanks for showing me your Penio

------
mattezell
very nice. kept me playing for 20 mins and I will be back.

------
mufti
The user interface look good. It's like posterious. I ve got this error:

Parse error: syntax error, unexpected '}' in
/nfs/c02/h08/mnt/41076/domains/pen.io/html/functions/common.php on line 346

