Jump to content

PeterAhlstrom

Dragonsteel
  • Posts

    1128
  • Joined

  • Last visited

  • Days Won

    44

Everything posted by PeterAhlstrom

  1. I wouldn't make any assumptions about what Forgery does or does not do. Once we have an excerpt posted (months from now) or if you hear Brandon read it at a convention (such as Australia upcoming), then you can start speculating. At this point, judging by what's written in this thread, it's too early.
  2. It is not called Engraving. It is called Forgery.
  3. This error got fixed in the paperback, or at least a later printing of the paperback. It's a lot harder to fix an audiobook though.
  4. Silver is not Allomantically inert the way aluminum is. In that annotation, Brandon just meant that silver didn't do anything if you swallowed it and tried to burn it. It can be Pushed and Pulled. Years after Brandon wrote that annotation, what he means by "Allomantically inert" has changed.
  5. I loved the Liveship books. My favorite trilogy of Hobb's. I could not like the Soldier Son books though. I stopped after the first one. When the huge plague hit and everyone was dying, I realized I simply did not care.
  6. I like the original color version of Elendel... http://brandonsanderson.com/book/The-Alloy-of-Law/page/66/The-Alloy-of-Law-Interior-Illustrations
  7. We're looking for more examples of inaccurate translations in the German edition. We got one here: Thanks.
  8. Joe, That looks interesting and promising. I can't figure out how to save its output. If I open it in a browser and look at the source or save as an html file, it just gives me your code, not the output of your code. Would it do the time zone shifting that the original code does? Mine also does automatic URL parsing. Eric, Reformatting takes too much time to do manually. That's why I cobbled together the script in the first place.
  9. Hey, I'm totally open to using something else like php if it's better for the situation. It just has to be an end-to-end solution that does what this does already. Yeah, there's a lot of copypasta in here. Something else I don't understand at all is the -> operations. Actually, for the esoteric stuff, I'd prefer a plain English alternative that works in the code. The most esoteric I'm up for is the ternary operator in javascript, and that's with reservations because every time I want to use it I have to look it up to remind myself of the syntax. I do understand the %H:%M:%S part pretty well and the find_uris section, because they use terms that are easy to relate to the actual thing they do. Well, I don't know what @_ means. Besides one eye and a mouth. OMG, I was just thinking how much I loved Hypercard back in the day, yet it was a shame it didn't support arrays, so I just searched and found out it DID support arrays: If I'd known this back in the early 90s it would have made that Star Trek game I was making in Hypercard work much much better. Instead I had a hidden card with a ton of text fields on it and an algorithm to change a multiply-dimensioned array into a field number...
  10. What is the exact line in German? This is the second report recently of the German translation not being good, so if you give it to me I can report this to Brandon's agent. RAFO
  11. The line in English is "He’d given both to Elhokar to award to a warrior he felt would be the most useful to Alethkar and the war effort." He gave them to Elhokar; Elhokar gave them to someone else.
  12. Someone told me to start with Problem Sleuth. I'm on ?s=4&p=001521, and I read it occasionally. I hope it's near the end of this story. Some things are getting tedious. I'm charmed by various aspects of it though.
  13. You can generate random html archives from TSV files if you have a script to do so. Which I don't. Anyway, to me, TSV seems less useful than the original XML, which is well tagged so I know exactly what each item is for. I was actually hoping for a better way to do the stuff I use "split" for, the foreach @parts thing. But maybe that's a good way to do it already? This script is essentially the whole of my perl knowledge, and I don't even understand some of the stuff it does, like s/\s+/ /g; — esoteric stuff drives me nuts. I took some computer science courses in college, Java mostly, which I have almost entirely forgotten, so I just wing it when it comes to stuff like this and the various javascript stuff on Brandon's store pages.
  14. When there's an unbalanced h in an otherwise palindromic word, it is written with the other letter, but (usually) given a special diacritical mark to indicate that it is pronounced as an h.
  15. Eric, I'm not sure if your post is directed at me when it says "you"... Storing the tweets as tab-separated values is much much less useful than what I'm currently doing.
  16. Some of you might be interested in this, so here it is. Also, if you are good at code, maybe you can tell me where I am laughably inefficient. First I get the timeline. wget -O user_timeline.xml "http://api.twitter.com/1/statuses/user_timeline.xml?screen_name=brandsanderson&count=200&trim_user=true&since_id=168023980798779395" (The since_id changes based on whatever I retrieved last time. Also, 200 posts is the max Twitter allows without OAuth.) Then I do this: /usr/bin/perl tweetthing.pl < user_timeline.xml > sorted.html Here is my tweetthing.pl script: #!/usr/bin/perl use LWP::Simple; use URI; use URI::Find; use Time::Piece; use HTML::Entities; my $bigbuf, $buf, $i; # gather up all the input while (read(STDIN, $buf, 1024)){ $bigbuf .= $buf; } #remove multiple spaces #$bigbuf =~ s/\s+/ /g; # split up the input into relevant tokens my @parts = split(/<status>\n/, $bigbuf); @parts = reverse @parts; #remove last part, which is extraneous pop(@parts); # Add div tag to beginning of output document print "<div class='brantweets'>"; foreach (@parts) { my @brandontweet = split(/(<created_at>|<\/created_at>\n <id>|<\/id>\n <text>|<\/text>|<in_reply_to_status_id>|<\/in_reply_to_status_id>\n <in_reply_to_user_id>|<\/in_reply_to_user_id>|<in_reply_to_screen_name>|<\/in_reply_to_screen_name>)/,$_); #In the array brandontweet, Part 4 is the status number #Part 2 is the timestamp #Part 6 is status #Part 10 is in reply to status number #Part 16 is in reply to status person #Part 12 is in reply to userID my $brandonstatusid = $brandontweet[4]; #convert timezone to local my $brandondatestamp = Time::Piece->strptime($brandontweet[2], "%a %b %d %H:%M:%S %z %Y"); my $brandondate = $brandondatestamp->strftime("%a %b %d"); #get rid of html entities my $brandonstatus = decode_entities($brandontweet[6]); #remove multiple spaces between sentences $brandonstatus =~ s/\s+/ /g; find_uris($brandonstatus, sub { my ($find_uri, $orig_uri) = @_; my $uri = URI->new( $orig_uri ); $uri = $uri->canonical->as_string; return '<a href="' . $uri . '">' . $uri . '</a>'; }); my $fanuserid = $brandontweet[12]; my $fanusername = $brandontweet[16]; my $fanstatusid = $brandontweet[10]; if ($fanstatusid != ""){ my $url="http://api.twitter.com/1/statuses/show/".$fanstatusid.".xml"; my @fantweet = split(/(<created_at>|<\/created_at>|<text>|<\/text>|<profile_image_url>|<\/profile_image_url>)/,get($url)); #In the array fantweet, Part 6 is the status #Part 2 is the timestamp #Part 10 is the image URL #convert timezone to local my $fandatestamp = Time::Piece->strptime($fantweet[2], "%a %b %d %H:%M:%S %z %Y"); my $fandate = $fandatestamp->strftime("%a %b %d"); #get rid of html entities my $fanstatus = decode_entities($fantweet[6]); #remove multiple spaces between sentences $fanstatus =~ s/\s+/ /g; find_uris($fanstatus, sub { my ($find_uri, $orig_uri) = @_; my $uri = URI->new( $orig_uri ); $uri = $uri->canonical->as_string; return '<a href="' . $uri . '">' . $uri . '</a>'; }); my $fanimage = $fantweet[10]; print "<p><img src='".$fanimage."'><a href='http://twitter.com/".$fanusername."/status/".$fanstatusid."'><b>".$fanusername."</b></a> ".$fandate."<br/>".$fanstatus."</p>\n<blockquote><p class='brtw'><a href='http://twitter.com/BrandSanderson/status/".$brandonstatusid."'><b>BrandSanderson</b></a> ".$brandondate."<br/>".$brandonstatus."</p></blockquote>\n\n"; } else{ print "<p class='brtw'><a href='http://twitter.com/BrandSanderson/status/".$brandonstatusid."'><b>BrandSanderson</b></a> ".$brandondate."<br/>".$brandonstatus."</p>\n\n"; } } # Close div tag in output document print "</div>"; Then here is the css I stick at the beginning of a post (sorted.html). <style type="text/css">div.brantweets p {min-height:58px}div.brantweets img {float:left;border:0;margin:5px 5px 0 0;height:48px;width:48px}p.brtw {background:url(http://brandonsanderson.com/images/Llama_Face.png) no-repeat 0px 5px;padding:0 0 0 53px;}</style> The max size post that Brandon's website allows is about 51k, so if I have more than 30somethingk collected, I make a new Twitter posts archive. Sorry about the stretched screen... EDIT: Oh yeah, after I have the sorted html file, I go through it manually and hook up the longer conversations, or when Brandon makes more than one reply to the same tweet. And I fix when he replies to the wrong person, etc. etc.
  17. There's a fair amount of hubris to it. But the guy was emperor of China.
  18. Tell me the steps!
  19. It's not the symbol for the Royal High Cartographer Isasik Shulin.
  20. It's a novella with a magic system based on forgery. Brandon said he was inspired (he started writing it on the flight back from Taiwan) by the story of a Chinese emperor who would stamp or carve his seal on any piece of art he liked.
  21. Brandon got fan mail on Wednesday that says
  22. It sounds like you are saying Nohadon's scene takes place sometime after the Prelude, but in the Prelude, Jezrien says, "They have the Radiants."
  23. Amazon's business model on all physical books is to sell them at a discount and make only a small profit.
  24. Stormlight 2 could still come out as early as summer 2013 or as late as November 2013.
×
×
  • Create New...