#I edited Python files as a text file today help
Explore tagged Tumblr posts
Text
I love programming, 10/10 conversation with my partner today
Me: "Throttle has an indentation error" Yeah I'm gonna throttle this program for not working with my IDE
My partner: I would not recommend fighting the computer
1 note
·
View note
Text
Version 624
youtube
windows
zip
exe
macOS
app
linux
tar.zst
I had a great week. Duplicates auto-resolution is easier to preview, and I have re-introduced a way to 'lock' a search page in place.
This release updates several important libraries in Windows and Linux.
full changelog
new build
The Windows/Linux 'future build' test last week went well, no reports of problems. It seems like Win 10 will still run the program, although I suspect a very old (i.e. un-updated) version may have trouble. If you cannot boot the build today, please consider running from source and choosing an older version of Qt in the interactive setup: https://hydrusnetwork.github.io/hydrus/running_from_source.html
If you use the zip or tar.zst, it does not seem like you have to do a 'clean install', but the build releases are changing a bunch of stuff so it is a good time to do one anyway: https://hydrusnetwork.github.io/hydrus/getting_started_installing.html#clean_installs
If you run from source, this is a good week to rebuild your venv. Users on python 3.13 no longer have to choose the (a)dvanced install.
locked pages
A long time ago, when you opened files 'in a new page' or from a subscription files popup, the page created would have no search controls. It would just be a static page that could hold files. It worked well as a 'scratchpad' to work on, but you could not easily search the files if you wanted to.
I replaced that mode with 'initialise the page with a system:hash predicate', which helped simplify things behind the scenes but makes it annoying to append new files or merge other pages into it, since the underlying system:hash stays stuck as what it was originally.
Today we fix this. All search pages now have a 'lock' icon button beside the tag autocomplete text input. Click this, and the current search collapses to a system:hash for the current files in view and the search interface is replaced with an unlock button. It will keep track of when you add or remove files, and if you unlock, the system:hash is of what is currently in view. Have a play with it, and you'll see how it works.
Whenever a new page is created with files--which usually means 'open in a new page' or a subscription file popup--it now starts in the locked state. The old 'no search enabled' behaviour is back, but if you want you can flip to a regular search with one click. Let me know how it goes!
auto-resolution preview
The duplicates auto-resolution 'preview' panel, when you were editing rules, was running way too slow. It could take thirty seconds to load up a count or a preview on a big client, every time you made a change. I've overhauled the whole thing to stream results in fast pieces, with pause buttons and faster cancel tech and better feedback. This system also now handles when the pair comparison takes a while to compute. It is pretty much all ready for 'A and B are visual duplicates'.
I fixed a couple more false positives in 'A or B are visual duplicates'. There's one edge-detection situation that I poured a ton of time into and still failed to catch, so I'm going to keep thinking about it. Please send in any more weird pairs you come across!
Auto-resolution rules in semi-automatic mode will now only queue up 512 items for 'ready to action'. This queue can take a while to build and resets any time you change the rules, so I'm limiting it to keep things snappy. You can change the limit or remove it entirely in the edit rule panel.
misc
Ratings look nicer and line up great again!
A bunch of number-tests across the program have new 'less than or equal to' and 'greater than or equal to' operators.
next week
I only have one week before my summer vacation week, so I'm just going to fix little stuff and clean some code.
2 notes
·
View notes
Text
20 years a blogger

It's been twenty years, to the day, since I published my first blog-post.
I'm a blogger.
Blogging - publicly breaking down the things that seem significant, then synthesizing them in longer pieces - is the defining activity of my days.
https://boingboing.net/2001/01/13/hey-mark-made-me-a.html
Over the years, I've been lauded, threatened, sued (more than once). I've met many people who read my work and have made connections with many more whose work I wrote about. Combing through my old posts every morning is a journey through my intellectual development.
It's been almost exactly a year I left Boing Boing, after 19 years. It wasn't planned, and it wasn't fun, but it was definitely time. I still own a chunk of the business and wish them well. But after 19 years, it was time for a change.
A few weeks after I quit Boing Boing, I started a solo project. It's called Pluralistic: it's a blog that is published simultaneously on Twitter, Mastodon, Tumblr, a newsletter and the web. It's got no tracking or ads. Here's the very first edition:
https://pluralistic.net/2020/02/19/pluralist-19-feb-2020/
I don't often do "process posts" but this merits it. Here's how I built Pluralistic and here's how it works today, after nearly a year.
I get up at 5AM and make coffee. Then I sit down on the sofa and open a huge tab-group, and scroll through my RSS feeds using Newsblur.
I spend the next 1-2 hours winnowing through all the stuff that seems important. I have a chronic pain problem and I really shouldn't sit on the sofa for more than 10 minutes, so I use a timer and get up every 10 minutes and do one minute of physio.
After a couple hours, I'm left with 3-4 tabs that I want to write articles about that day. When I started writing Pluralistic, I had a text file on my desktop with some blank HTML I'd tinkered with to generate a layout; now I have an XML file (more on that later).
First I go through these tabs and think up metadata tags I want to use for each; I type these into the template using my text-editor (gedit), like this:
<xtags>
process, blogging, pluralistic, recursion, navel-gazing
</xtags>
Each post has its own little template. It needs an anchor tag (for this post, that's "hfbd"), a title ("20 years a blogger") and a slug ("Reflections on a lifetime of reflecting"). I fill these in for each post.
Then I come up with a graphic for each post: I've got a giant folder of public domain clip-art, and I'm good at using all the search tools for open-licensed art: the Library of Congress, Wikimedia, Creative Commons, Flickr Commons, and, ofc, Google Image Search.
I am neither an artist nor a shooper, but I've been editing clip art since I created pixel-art versions of the Frankie Goes to Hollywood glyphs using Bannermaker for the Apple //c in 1985 and printed them out on enough fan-fold paper to form a border around my bedroom.

As I create the graphics, I pre-compose Creative Commons attribution strings to go in the post; there's two versions, one for the blog/newsletter and one for Mastodon/Twitter/Tumblr. I compose these manually.
Here's a recent one:
Blog/Newsletter:
(<i>Image: <a href="https://commons.wikimedia.org/wiki/File:QAnon_in_red_shirt_(48555421111).jpg">Marc Nozell</a>, <a href="https://creativecommons.org/licenses/by/2.0/deed.en">CC BY</a>, modified</i>)
Twitter/Masto/Tumblr:
Image: Marc Nozell (modified)
https://commons.wikimedia.org/wiki/File:QAnon_in_red_shirt_(48555421111).jpg
CC BY
https://creativecommons.org/licenses/by/2.0/deed.en
This is purely manual work, but I've been composing these CC attribution strings since CC launched in 2003, and they're just muscle-memory now. Reflex.
These attribution strings, as well as anything else I'll need to go from Twitter to the web (for example, the names of people whose Twitter handles I use in posts, or images I drop in, go into the text file). Here's how the post looks at this point in the composition.
<hr>
<a name="hfbd"></a>
<img src="https://craphound.com/images/20yrs.jpg">
<h1>20 years a blogger</h1><xtagline>Reflections on a lifetime of reflecting.</xtagline>
<img src="https://craphound.com/images/frnklogo.jpg">
See that <img> tag in there for frnklogo.jpg? I snuck that in while I was composing this in Twitter. When I locate an image on the web I want to use in a post, I save it to a dir on my desktop that syncs every 60 seconds to the /images/ dir on my webserver.
As I save it, I copy the filename to my clipboard, flip over to gedit, and type in the <img> tag, pasting the filename. I've typed <img src="https://craphound.com/images/ CTRL-V"> tens of thousands of times - muscle memory.
Once the thread is complete, I copy each tweet back into gedit, tabbing back and forth, replacing Twitter handles and hashtags with non-Twitter versions, changing the ALL CAPS EMPHASIS to the extra-character-consuming *asterisk-bracketed emphasis*.
My composition is greatly aided both 20 years' worth of mnemonic slurry of semi-remembered posts and the ability to search memex.craphound.com (the site where I've mirrored all my Boing Boing posts) easily.
A huge, searchable database of decades of thoughts really simplifies the process of synthesis.
Next I port the posts to other media. I copy the headline and paste it into a new Tumblr compose tab, then import the image and tag the post "pluralistic."
Then I paste the text of the post into Tumblr and manually select, cut, and re-paste every URL in the post (because Tumblr's automatic URL-to-clickable-link tool's been broken for 10+ months).
Next I past the whole post into a Mastodon compose field. Working by trial and error, I cut it down to <500 characters, breaking at a para-break and putting the rest on my clipboard. I post, reply, and add the next item in the thread until it's all done.
*Then* I hit publish on my Twitter thread. Composing in Twitter is the most unforgiving medium I've ever worked in. You have to keep each stanza below 280 chars. You can't save a thread as a draft, so as you edit it, you have to pray your browser doesn't crash.
And once you hit publish, you can't edit it. Forever. So you want to publish Twitter threads LAST, because the process of mirroring them to Tumblr and Mastodon reveals typos and mistakes (but there's no way to save the thread while you work!).
Now I create a draft Wordpress post on pluralistic.net, and create a custom slug for the page (today's is "two-decades"). Saving the draft generates the URL for the page, which I add to the XML file.
Once all the day's posts are done, I make sure to credit all my sources in another part of that master XML file, and then I flip to the command line and run a bunch of python scripts that do MAGIC: formatting the master file as a newsletter, a blog post, and a master thread.
Those python scripts saved my ASS. For the first two months of Pluralistic, i did all the reformatting by hand. It was a lot of search-replace (I used a checklist) and I ALWAYS screwed it up and had to debug, sometimes taking hours.
Then, out of the blue, a reader - Loren Kohnfelder - wrote to me to point out bugs in the site's RSS. He offered to help with text automation and we embarked on a month of intensive back-and-forth as he wrote a custom suite for me.
Those programs take my XML file and spit out all the files I need to publish my site, newsletter and master thread (which I pin to my profile). They've saved me more time than I can say. I probably couldn't kept this up without Loren's generous help (thank you, Loren!).
I open up the output from the scripts in gedit. I paste the blog post into the Wordpress draft and copy-paste the metadata tags into WP's "tags" field. I preview the post, tweak as necessary, and publish.
(And now I write this, I realize I forgot to mention that while I'm doing the graphics, I also create a square header image that makes a grid-collage out of the day's post images, using the Gimp's "alignment" tool)
(because I'm composing this in Twitter, it would be a LOT of work to insert that information further up in the post, where it would make sense to have it - see what I mean about an unforgiving medium?)
(While I'm on the subject: putting the "add tweet to thread" and "publish the whole thread" buttons next to each other is a cruel joke that has caused me to repeatedly publish before I was done, and deleting a thread after you publish it is a nightmare)
Now I paste the newsletter file into a new mail message, address it to my Mailman server, and create a custom subject for the day, send it, open the Mailman admin interface in a browser, and approve the message.
Now it's time to create that anthology post you can see pinned to my Mastodon and Twitter accounts. Loren's script uses a template to produce all the tweets for the day, but it's not easy to get that pre-written thread into Twitter and Mastodon.
Part of the problem is that each day's Twitter master thread has a tweet with a link to the day's Mastodon master thread ("Are you trying to wean yourself off Big Tech? Follow these threads on the #fediverse at @[email protected]. Here's today's edition: LINK").
So the first order of business is to create the Mastodon thread, pin it, copy the link to it, and paste it into the template for the Twitter thread, then create and pin the Twitter thread.
Now it's time to get ready for tomorrow. I open up the master XML template file and overwrite my daily working file with its contents. I edit the file's header with tomorrow's date, trim away any "Upcoming appearances" that have gone by, etc.
Then I compose tomorrow's retrospective links. I open tabs for this day a year ago, 5 years ago, 10 years ago, 15 years ago, and (now) 20 years ago:
http://memex.craphound.com/2020/01/14
http://memex.craphound.com/2016/01/14
http://memex.craphound.com/2011/01/14
http://memex.craphound.com/2006/01/14
http://memex.craphound.com/2001/01/14
I go through each day, and open anything I want to republish in its own tab, then open the OP link in the next tab (finding it in the @internetarchive if necessary). Then I copy my original headline and the link to the article into tomorrow's XML file, like so:
#10yrsago Disney World’s awful Tiki Room catches fire <a href="https://thedisneyblog.com/2011/01/12/fire-reported-at-magic-kingdom-tiki-room/">https://thedisneyblog.com/2011/01/12/fire-reported-at-magic-kingdom-tiki-room/</a>
And NOW my day is done.
So, why do I do all this?
First and foremost, I do it for ME. The memex I've created by thinking about and then describing every interesting thing I've encountered is hugely important for how I understand the world. It's the raw material of every novel, article, story and speech I write.
And I do it for the causes I believe in. There's stuff in this world I want to change for the better. Explaining what I think is wrong, and how it can be improved, is the best way I know for nudging it in a direction I want to see it move.
The more people I reach, the more it moves.
When I left Boing Boing, I lost access to a freestanding way of communicating. Though I had popular Twitter and Tumblr accounts, they are at the mercy of giant companies with itchy banhammers and arbitrary moderation policies.
I'd long been a fan of the POSSE - Post Own Site, Share Everywhere - ethic, the idea that your work lives on platforms you control, but that it travels to meet your readers wherever they are.
Pluralistic posts start out as Twitter threads because that's the most constrained medium I work in, but their permalinks (each with multiple hidden messages in their slugs) are anchored to a server I control.
When my threads get popular, I make a point of appending the pluralistic.net permalink to them.
When I started blogging, 20 years ago, blogger.com had few amenities. None of the familiar utilities of today's media came with the package.
Back then, I'd manually create my headlines with <h2> tags. I'd manually create discussion links for each post on Quicktopic. I'd manually paste each post into a Yahoo Groups email. All the guff I do today to publish Pluralistic is, in some way, nothing new.
20 years in, blogging is still a curious mix of both technical, literary and graphic bodgery, with each day's work demanding the kind of technical minutuae we were told would disappear with WYSIWYG desktop publishing.
I grew up in the back-rooms of print shops where my dad and his friends published radical newspapers, laying out editions with a razor-blade and rubber cement on a light table. Today, I spend hours slicing up ASCII with a cursor.
I go through my old posts every day. I know that much - most? - of them are not for the ages. But some of them are good. Some, I think, are great. They define who I am. They're my outboard brain.
37 notes
·
View notes
Text
Download IntelliJ IDEA crack (keygen) latest version 69UB?
💾 ►►► DOWNLOAD FILE 🔥🔥🔥 In addition, the powerful analysis of static code and its ergonomic desk design make the development not just successful but also enjoyable. IntelliJ will automatically sync the scripts that are in the main Script folder in your Atlassian product, and then allow you to edit the files directly within IntelliJ. You need to know how to select text quickly without having to move or release it. Also, The divorce lawyers in Atlanta make and carry out the choice that people make and we think about the possibility of disrupting the progress of the developer and do our best to stop or minimize the possibility of it. Additionally, The IDE makes use of the framework it has developed and adds appropriate tools automatically. However, it also includes many other well-known languages specifically the ones that are related to web-based development. The program recognizes the code and ensures that the authenticity of these codes is confirmed without the effort of the programmer reading it from beginning to end. Making code using the aid of CLion allows detecting errors in code to be effortless and can correct them quickly. They can collaborate with him to develop the most effective product in a straightforward manner. It is possible to work with this platform to finish your tasks. This means that you will find more help by reading all the essential instructions. You are also able to modify the code, but I recommend you use the best code you can. This could save you many hours. Today, we are in the Java software development scenario. This makes it the complete solution for Mobile or Desktop developers. It is equipped with a feature that ignores whitespaces in the code and does not give any errors. So, any code can be edited with this program effortlessly. Additionally, It is not a hassle. Also, It is possible to modify the code at any time. Moreover, It is the best than other tools of this kind. Furthermore, It is also able to outperform other tools of this type. To get it you must utilize the connector provided on the website. You can now perform the study of prices for Wristwatches and Variables and various other areas, upon the basis of a request. It allows you to develop web-based applications. It offers a development environment for various programming languages such as Java, Scala, and Groovy. Therefore, the tool is able to integrate the code. You can also apply the syntax color. Additionally, you can use autocomplete and refactoring capabilities. This is also an editing tool for code. It allows users to create web-based applications using it. Any device is able to support these applications. This is a specific tool for users. It is because it does the very best job. This program is extremely efficient for you. I like this program to run on Python as well. Millions of people are currently working on it. It is among the top IDE applications for code editors. Simply download it and install it on your system. It is available for download from here. It also gives you printing services. You will be able to appreciate it when you use it. This is an amazing tool to use. It is also available anytime. The majority of users utilize this version. It includes all the fundamental features of JVM as well as Android development. In comparison to IntelliJ, NetBeans is more efficient and can integrate with its environment more efficient way. Additionally, it is smaller in memory and assists the developer in code networks programming. IntelliJ is not equipped with these features in its toolkit. Being stable is what makes IntelliJ more efficient software for larger applications. It supports full context code. The symbols that indicate the receiver or method and the symbols that are used in the present context are listed in the function of filling in the chain code. Static member integrity It is possible to add both continuous and static modes and the IntelliJ IDEA Mac IDE will automatically include the import commands into your code in order to avoid compiler errors. The detection of duplicate code: This code could include a small snippet of code that is duplicate. This feature informs the programmers of any suggestions or messages regarding the code. The environment that is editor-orientated: Encoding includes a quick popup window that helps confirm additional information without ever leaving the current context. Click on the light to display the list of code suggestions. Shortcuts for every aspect: as I mentioned earlier. Since programmers are less distracted such as a computer, IntelliJ Torrent offers shortcuts shortcuts to almost every single thing. This includes actions such as shortcuts and switching between windows. Integrated Debugger The Inline Debugger can be used to help troubleshoot IDE applications, which makes the process of developing and troubleshooting more effective. It also includes Professional software. Additionally, the copy code fragment was also discovered in the course of the journey. IntelliJ License Key is extremely effective in registering for the Ide tool. It is equipped with a clever code to make it simple to complete. It is compatible with the editor for databases or SQL. When you use it, you will get an amazing outcome. It also provides extremely efficient services. It is designed with a UML design. It also includes Gradle, Gantt, and Maven. Complete the smart code Whereas standard completion gives names of methods, class fields, keywords, and classes within the visibility of the web smart completion only suggests those that are relevant to use in the current context. Productivity Boosters This IDE anticipates your requirements and takes care of repetitive and tedious work to help you stay focussed on the bigger picture. Developer work environment In each design and implementation choice we take, we think about the possibility of disrupting the flow of developers and try our best to prevent or minimize it. The IDE tracks your current context and displays the appropriate tools. It assists you in staying efficient when you are working with other aspects, e.
1 note
·
View note
Text
GSoC logs (June 5 –July 11)
July 5
DS Exam - 9:30AM.
Alternatives - If build not fixed by 8:30AM.
Reclone and commit all changes to new branch.
Get preview component done
Send the demo to mentors and then touch proto file.
Recloned. In the new clone, I made new changes. Everything works.
Turns out any write operation in the proto file is wrecking stuff. I navigated to the proto file in vscode and simply saved. This causes all the errors again.
Some import errors even though proto syntax are perfectly fine. Hmmm. protoc-gen-go: program not found or is not executable
I tried making the proto file executable with chmod +x. Still same issue. Hmmm.
That was stupid. Proto files aren’t supposed to be executable! -_- Where do I get these stupid ideas.
The error is actually referring to protoc-gen-go file. Saying that protoc-gen-go is not found or not executable. Not the proto file
I’m moving on to completing the preview component to send the demo before 7pm.
Preview component
Ipynb html. Axios get and render the htmlstring from response data in the iframe. Nop, v-html.
Serve html file from the http server for now.Wait, that's not possible.
Okay, maybe I should just use hello api for now. Since both request and response objects have string type properties.
This is embarrassing.
Okay, whatever.
Just fix this and look into it,
Okay, so I can’t represent an html string just like that as in python. With `` ..
Okay `` will do.
I’m starting to like golang. It looks ridiculous but also easy to understand? What’s going on?
July 6
Leads & Tries.
Try Samuel’s suggestion -
“Do you have protoc on your path?
sometimes VScode installs its own version of some tools on a custom $PATH - it could as well be that some extension is not properly initialized “
Interesting - I tried git diff on the proto file and this happens just by vscode saving it.
old mode 100644 new mode 100755
https://unix.stackexchange.com/a/450488
Changed back to 0644 and still the same issue in vscode.
Stupid girl, you just made the protofile executable yesterday and forgot to change it back. -_-
Read about makefile. Do as said. Annotations.proto forward slash path. ?? wtf?
Set gopath right! Permanently. !!! Okay, done. No need to set it everytime now. Hopefully.
Desperate attempts -
Edit proto file in atom. (Prepare to reclone ;_;)
Trying the same in vim ()
Text editor.
Okay, so nothing editor or ide specific.
Trying to change paths
Gopath was /home/anaswaratrajan/go .. changed it to /usr/local/go/bin
New error.
GO111MODULE=off go get -v github.com/golang/protobuf/protoc-gen-go github.com/golang/protobuf (download) package github.com/golang/protobuf/protoc-gen-go: mkdir /usr/local/go/bin/src: permission denied make: *** [Makefile:164: /usr/local/go/bin/bin/protoc-gen-go] Error 1
https://github.com/golang/go/issues/27187
sudo chown -R $USER: $HOME
Doesn’t feel right. But I just want this to get done. ;_;
The problem could be that I have multiple go distributions. After this is done, I need to clean this shit this weekend.
Okay, done chown. I own this shit!!! AAAa
Still permission denied! Shit. /usr/local/go not /usr/local/go/bin
Okay, changed it, but go env GOPATH echoing giving warning that GOROOT and GOPATH are same.
So from what I’ve read, gopath is the workspace, and goroot is the place where go is installed. Our makefile is trying to install and use the modules in GOPATH. Ie go dir in home. Okay, so my GOPATH was right before.
Final tries
* Follow the error trails. * Find out what exactly is happening when I save this file. 1. Okay, incase they don’t work out. Try to send the html string instead of “Hello ” string without changing proto file. 2. Since all ipynb files can have same css, try and send only the html elements. And do the css separately in frontend. 3. Stop Ctrl+Saving for no reason! Great, now I have to reclone ;_; and start over. 4. Okay, I was able to send a sample html string with the response. Without changin the proto file. 5. Here’s what I’m gonna do. 6. Send sample html string from hello service and render in the preview component. Pass the json string as name. Hahaha. Please, explain why you had to do the same. 7. I did exactly as above. I feel like an imposter now. Screw it. 8. Alright, I have my bigbang hyungs to support me. 9. I’m gonna embed python scripts by tonight. Update: that was overoptimistic. 10. So I have the nbconvert python script to generate basic html strings. 11. I should also remove those comments in the html. 12. So we’re using the less performance option since we don’t need much memory in the first place. Using python c api.
July 7
Learned one or 2 things about embedding python. https://github.com/ardanlabs/python-go/tree/master/py-in-mem
So I need python3.7. Bc go-python3 only supports python3.7. But there’s a workaround given. So I should try that
Tries
Go-python3 , python 3.8, workaround go get github.com/christian-korneck/go-python3 But a bunch of errors occurred.
Python 3.7 install
C-like usage from golang - low level stuff
https://blog.filippo.io/building-python-modules-with-go-1-5/ goodread. But that’s not what I need.
Let’s look at Ardan’s lab way.
https://www.ardanlabs.com/blog/2020/09/using-python-memory.html
This is a bit more challenging but more understandable.
This is the way.
I should start with this right after fixing the make issue.
Back to build fixing
Do as samuel suggested. - no luck.
What I know so far. The issue is rooted with golang or protobuf or sth related. Since the issue is there for all the text editors including vim.
I found sth weird -Which go => /usr/local/go/bin/goWhen it gives /usr/local/bin/go to this dude https://stackoverflow.com/a/67419012/13580063
Okay, not so weird.
The interview went okay. They use photogenometry to generate those 3d maps out of their drone imagery. Their products sound interesting. They need frontend engineers to work on their platform. The interface currently looks almost like google maps. But 3d. Cool. I actually used the phrase.. “..I’m still in my 20s.. Don’t wanna die.. So can’t move to Bengalore anytime soon”
Not photogenometry. Photogrammetry. Also used by some old mars rovers. Wait, no it was sth else. I remember Shreyansh mentioning it. I wonder what all they’re planning for the dragonfly.
Focus. It’s been some days with this issue, you should get help.
Asked around a bunch of people on discord. No luck.
July 8
Let’s dig in.
Tries
1. Reinstall golang#2. https://stackoverflow.com/a/67419012/13580063 ? Nop.#3. See protoc installation details. Read more about protoc, protobugs
https://developers.google.com/protocol-buffers/docs/reference/go-generated#4. Read more about golang ecosystem - 30m and see if **which go **path is weird. 3. Also found this https://github.com/owncloud/ocis-hello/issues/62 Nop. 4. Let’s go with the error trails. 5. Wait, did I just graduate today. Oh no. Just like that. 6. Okay, grind.
Make generate is giving this.
GO111MODULE=off go get -v github.com/golang/protobuf/protoc-gen-go GO111MODULE=on go get -v github.com/micro/protoc-gen-micro/v2 GO111MODULE=off go get -v github.com/webhippie/protoc-gen-microweb GO111MODULE=off go get -v github.com/grpc-ecosystem/grpc-gateway/protoc-gen-openapiv2 protoc \ -I=third_party/ \ -I=pkg/proto/v0/ \ --go_out=pkg/proto/v0 hello.proto protoc-gen-go: program not found or is not executable Please specify a program using absolute path or make sure the program is available in your PATH system variable --go_out: protoc-gen-go: Plugin failed with status code 1. make: *** [Makefile:176: pkg/proto/v0/hello.pb.go] Error 1
Then I try echo $GOPATH and It’s empty. go env GOPATH is right
So I set the GOPATH
export GOROOT=/usr/local/go export GOPATH=$HOME/go export GOBIN=$GOPATH/bin export PATH=$PATH:$GOROOT:$GOPATH:$GOBIN
Now, I get this
GO111MODULE=off go get -v github.com/grpc-ecosystem/grpc-gateway/protoc-gen-openapiv2 protoc \ -I=third_party/ \ -I=pkg/proto/v0/ \ --go_out=pkg/proto/v0 hello.proto protoc-gen-go: invalid Go import path "proto" for "hello.proto" The import path must contain at least one forward slash ('/') character. See https://developers.google.com/protocol-buffers/docs/reference/go-generated#package for more information. --go_out: protoc-gen-go: Plugin failed with status code 1. make: *** [Makefile:176: pkg/proto/v0/hello.pb.go] Error 1
Did this https://github.com/techschool/pcbook-go/issues/3#issuecomment-821860413 and the one below and started getting this```
GO111MODULE=off go get -v github.com/grpc-ecosystem/grpc-gateway/protoc-gen-openapiv2 protoc \ -I=third_party/ \ -I=pkg/proto/v0/ \ --go_out=pkg/proto/v0 hello.proto protoc \ -I=third_party/ \ -I=pkg/proto/v0/ \ --micro_out=pkg/proto/v0 hello.proto protoc \ -I=third_party/ \ -I=pkg/proto/v0/ \ --microweb_out=pkg/proto/v0 hello.proto protoc \ -I=third_party/ \ -I=pkg/proto/v0/ \ --swagger_out=logtostderr=true:pkg/proto/v0 hello.proto protoc-gen-swagger: program not found or is not executable Please specify a program using absolute path or make sure the program is available in your PATH system variable --swagger_out: protoc-gen-swagger: Plugin failed with status code 1. make: *** [Makefile:194: pkg/proto/v0/hello.swagger.json] Error 1
July 9
Now trying to read this from the error https://developers.google.com/protocol-buffers/docs/reference/go-generated#package
option go_package = "github.com/anaswaratrajan/ocis-jupyter/pkg/proto/v0;proto";
Tried this, new issue
GO111MODULE=off go get -v github.com/grpc-ecosystem/grpc-gateway/protoc-gen-openapiv2 protoc \ -I=third_party/ \ -I=pkg/proto/v0/ \ --go_out=pkg/proto/v0 hello.proto protoc \ -I=third_party/ \ -I=pkg/proto/v0/ \ --micro_out=pkg/proto/v0 hello.proto protoc \ -I=third_party/ \ -I=pkg/proto/v0/ \ --microweb_out=pkg/proto/v0 hello.proto protoc \ -I=third_party/ \ -I=pkg/proto/v0/ \ --swagger_out=logtostderr=true:pkg/proto/v0 hello.proto protoc-gen-swagger: program not found or is not executable Please specify a program using absolute path or make sure the program is available in your PATH system variable --swagger_out: protoc-gen-swagger: Plugin failed with status code 1. make: *** [Makefile:194: pkg/proto/v0/hello.swagger.json] Error 1
Okay, so proto-gen-swagger is not in gopath as expected. So this isn’t working.
$(GOPATH)/bin/protoc-gen-swagger: GO111MODULE=off go get -v github.com/grpc-ecosystem/grpc-gateway/protoc-gen-openapiv2
Instead of protoc-gen-swagger, there’s protoc-gen-openapiv2. So I replace protoc-gen-swagger from last line in the makefile to the executable in the path.https://grpc-ecosystem.github.io/grpc-gateway/docs/development/grpc-gateway_v2_migration_guide/
Turns out they rename protoc-gen-swagger to protoc-gen-openapiv2
Oooo.. I just found out, option go_package = "github.com/anaswaratrajan/ocis-jupyter/pkg/proto/v0;proto";
This just made things weird. New directory github.com/anaswa... inside proto/v0/
So go_package path is messed up.
Just replacing swagger binary names in makefile lets you generate the proto files at github.com/anas… dir
Let’s try fixing the go_package path and then try to generate the annotations.proto and the openapiv2 files (the grpc gateway files)
Wait, you don't generate them.
option go_package = "./;proto";
This is the right way.
So yea, I’m able to generate the go-code now. But make is still failing and I should sleep now.
July 11
Ownclouders already tried to work on it. But for some reason, they didn’t make the changes. Why?
Look into this. Why they didn’t continue doing this.
https://github.com/owncloud/ocis-hello/issues/91
So what exactly is micro-web service? This protoc-gen-microweb is a protoc generator for micro web services. And it's generating this hello.pb.web.go
What just happened? New error/ Make generate gives
`GO111MODULE=off go get -v github.com/grpc-ecosystem/grpc-gateway/protoc-gen-openapiv2 go generate github.com/anaswaratrajan/ocis-jupyter/pkg/assets panic: No files found goroutine 1 [running]: main.main() /home/anaswaratrajan/go/pkg/mod/github.com/!unno!ted/fileb0x[@v1](https://tmblr.co/mkYynE1Axr-EFCSIQIAtheA).1.4/main.go:101 +0x2765 exit status 2 pkg/assets/assets.go:12: running "go": exit status 1 make: *** [Makefile:83: generate] Error 1
Read more about the protoc generators used here.
0 notes
Text
Client For Postgresql Mac
Advertisement
Email Effects X v.1.6.9Email Effects X 1.6.9 is a useful program specially designed for the Mac OS or Windows 95/98/NT for getting the most out of email. With it, you can send pictures, drawings and tables with simple plain text. It is also the world's premier ASCII art ..
JaMOOka v.2.01JaMOOka is an applet-based MOO client. Designed for JHCore MOOs, it uses Amy Bruckman's MacMOOse utilities and the MCP 2.1 protocol to facilitate a number of advanced MOO editing and programming tasks through client ..
Sesame Windows Client v.1.0A Windows GUI application for RDF. SWC is a client tool for a Sesame 2 RDF server or SPARQL endpoint, and can be used as a out-of-the-box local triplestore. It offers advanced SPARQL querying and handles Sesame server administrative tasks.
Microsoft Remote Desktop Connection Client v.2.0 Beta 3Remote Desktop Connection Client for Mac 2 lets you connect from your Macintosh computer to a Windows-based computer or to multiple Windows-based computers at the same time. After you have connected, you can work with applications and files on the ..
Citrix ICA Client v.10.00.603Citrix ICA Client 10.00.603 is a communication tool which can help users access any Windows-based application running on the server. All the user needs is a low-bandwidth connection (21kilobytes) and the ICA client, which is downloadable free from ..
VPN-X Client for Mac OS v.2.4.1.44VPN-X:Java/ Cross-platform P2P/SSL/TLS VPN solution. Client has an individual Virtual IP Address.It can help employees on errands use company LAN resource, help your friends access your computer play LAN games, all the network data is encrypted and ..
Imperial Realms Standard Client v.0.4.1imperial_realms is the standard client for the Imperial Realms multi-player online strategy game. It is open-source and runs on Windows, Linux and other operating ..
Mahogany mail and news client v.0.67An extremely configurable portable GUI email and news client for Windows/Unix (including OS X) with IMAP, POP3, SMTP, and NNTP support, SSL, flexible address database, Python scripting, powerful filtering, and many other features for advanced ..
Mud Magic Client v.1.9OpenSource mud client designed to work on both windows,linux and MAC OS X. Written in Gtk+ and C with SQLLite, Python, MSP, MXP, HTML, and ZMP support. Provides plugin support, automapper functionality, triggers, aliases and ..
STUN Client and Server v.0.97This project implements a simple STUN server and client on Windows, Linux, and Solaris. The STUN protocol (Simple Traversal of UDP through NATs) is described in the IETF RFC 3489, available at ..
Scalable Java Database Client v.1.0The scalable Java DB Client is a customizable java application where fields and general DB info is entered in a config file and the proper GUI is generated at run-time. Entries can then be added, and a final submit/update to the (PostgreSQL/MySQL) ..
Vicomsoft FTP Client v.4.6.0FTP Client 4.6 represents the culmination of over 10 years experience in FTP transfers on the Mac platform. Extreme performance and unrivaled reliability, married with a sleek and intuitive user interface is the result.
Windows 7 Utilities v.7.54Windows 7 Utilities Suite is an award winning collection of tools to optimize and speedup your system performance.
Windows 7 Cleaner v.4.56Windows 7 Cleaner suite is an award winning collection of tools to optimize and speedup your system performance. this Windows 7 Cleaner suite contains utilities to clean registry, temporary files on your disks, erase your application and internet ..
Windows 7 Optimizer v.4.56Windows 7 Optimizer can quickly make your Windows 7 operating system (both 32 bit and 64 bit) faster, easier to use, and more secure. And all operations performed on the operating system are completely safe, because all changes are monitored by ..
Windows 7 System Optimizer v.6.0Windows 7 system optimizer: this is a multi-functional system performance and optimization suite for Windows 7. This collection of tools lets you supercharge your PC's performance, enhance its security, tweak and optimize its settings, and customize ..
Windows 7 System Suite v.6.3Slow down, freeze, crash, and security threats are over. Windows 7 system suite is a comprehensive PC care utility that takes a one-click approach to help protect, repair, and optimize your computer. It provides an all-in-one and super convenient ..
Windows System Suite v.6.1Windows System Suite is power package All-in-one application for cleaning, tuning, optimizing, and fixing PC errors for high performance. Direct access to a wealth of Windows configuration and performance settings many of them difficult or impossible ..
Windows XP Cleaner v.7.0Windows XP Cleaner is a suite of tools to clean your system; it includes Disk Cleaner, Registry Cleaner, History Cleaner, BHO Remover, Duplicate files Cleaner and Startup Cleaner. this Windows XP Cleaner suite allows you to remove unneeded files and ..
Icons for Windows 7 and Vista v.2013.1Icons for Windows 7 and Vista is an ultimately comprehensive collection of top-quality interface icons that will be a perfect fit for any modern website, online service, mobile or desktop application.
GUI Client Apps. There are many clients for PostgreSQL on the Mac. You can find many of them in the Community Guide to PostgreSQL GUI Tools in the PostgreSQL wiki. Some of them are quite powerful; some are still a bit rough. Postgres.app is a simple, native macOS app that runs in the menubar without the need of an installer. Open the app, and you have a PostgreSQL server ready and awaiting new connections. Close the app, and the server shuts down. How To Install Postgresql On Mac. I started off programming Ruby on Rails applications on a Windows machine with an Ubuntu virtual machine running on top. But when I got my first job at a startup in California, I received a brand new shiny Macbook laptop.
Download CCleaner for free. Clean your PC of temporary files, tracking cookies and browser junk! Get the latest version here. CCleaner is the number-one tool for fixing a slow Mac Download Ccleaner Mac for free and enjoy! Download Ccleaner Mac. Ccleaner for Mac. Mac running slow? A Mac collects junk and unused files just like a PC. Find and remove these files with the click of a button so your Mac can run faster. Speed up boot times with easy management of Startup items. CCleaner for Mac! Clean up your Mac and keep your browsing behaviour private with CCleaner, the world's favourite computer cleaning tool. Introducing CCleaner for Mac - Learn about the basics of CCleaner for Mac, and what it can do for you. Using CCleaner for Mac - Find out how to run every aspect of CCleaner for Mac. CCleaner for Mac Rules - Explore what each option in the Mac OS X and Applications tabs and how you can customize it to fit your needs. CCleaner for Mac Settings - Learn about CCleaner for Mac's other options. Ccleaner for mac 10.6.8. Download CCleaner for Mac 1.17.603 for Mac. Fast downloads of the latest free software!
Postgresql Client Windows software by TitlePopularityFreewareLinuxMac
Sequel Pro Postgres
Today's Top Ten Downloads for Postgresql Client Windows
Mac Install Postgresql
Citrix ICA Client Citrix ICA Client 10.00.603 is a communication tool which
Folx torrent client With Folx torrent client downloading and creating torrents
Windows 7 System Suite Slow down, freeze, crash, and security threats are over.
Windows XP Cleaner Windows XP Cleaner is a suite of tools to clean your
Windows 7 Utilities Windows 7 Utilities Suite is an award winning collection
Icons for Windows 7 and Vista Icons for Windows 7 and Vista is an ultimately
Windows 7 System Optimizer Windows 7 system optimizer: this is a multi-functional
VanDyke ClientPack for Windows and UNIX VanDyke ClientPack is a suite of tools for securely
VPN-X Client for Mac OS VPN-X:Java/ Cross-platform P2P/SSL/TLS VPN solution. Client
Windows Desktop Icons High quality professional royalty-free stock windows
Best Postgresql Client For Mac
Postico For Windows
Visit HotFiles@Winsite for more of the top downloads here at WinSite!
0 notes
Text
Forever and Never Apart, 23/42
Summary: After taking a year to recover from the Master, the Doctor and Rose are ready to travel again. But Time keeps pushing them forward, and instead of going back to their old life, they slowly realise that they’re stepping into a new life. Friends new and old are meeting on the TARDIS, and when the stars start going out, the Doctor and Rose face the biggest change of all: the return of Bad Wolf.
Series 4 with Rose, part 7 of Being to Timelessness; sequel to Taking Time (AO3 | FF.NET | TSP)
Betaed by @lastbluetardis, @rudennotgingr, @jabber-who-key, and @pellaaearien. Thank you so much!
We are finally to the Library, which gets a major rewrite.
AO3 | FF.NET | TSP
Ch 1 | Ch 2 | Ch 3 | Ch 4 | Ch 5 | Ch 6 | Ch 7 | Ch 8 | Ch 9 | Ch 10 | Ch 11 | Ch 12 | Ch 13 | Ch 14 | Ch 15 | Ch 16 | Ch 17 | Ch 18 | Ch 19 | Ch 20 | Ch 21 | Ch 22
Chapter Twenty-three: An Unusual Summons
Rose hummed a tune to herself as she used a large brush to cover her canvas in seashell pink. The Doctor had declared a day in that morning at breakfast, and she hadn’t wasted any time getting her paints set up in her studio.
After travelling together for three months, their unique little group of four really felt like a family. Donna was exactly what she’d always wanted in an older sister—someone just a little bolder than she was, who could egg her on. She teased the Doctor like he was her little brother, never letting an opportunity to poke fun at him slide by.
And Jenny. Jenny soaked it all up, thriving under Donna’s affectionate attention and the Doctor’s doting. Like any young adult, she chafed when he tried too hard to keep her safe, and Rose had kept her promise to be the cool step-mum, listening when she needed to vent.
She sighed and tapped the handle of her brush against her cheek as she considered her next colour. After a moment, she dipped it in gold metallic paint and started painting a spiral of colour in the middle of the pale pink canvas.
A sharp telepathic prod caught her attention and nearly sent her paintbrush jerking across the canvas, ruining her painting. She gasped and put the brush back in the jar of water, then rubbed circles over her temple, trying to ease the lingering discomfort.
That wasn’t the Doctor, or the TARDIS, she realised. For a second, she thought it had come from Jenny, but she dismissed the thought almost immediately. It hadn’t felt anything like the connection she shared with her step-daughter.
And if it wasn’t from the Doctor, Jenny, or the TARDIS…
She already had her paints put away and was wiping off her hands when the Doctor knocked on the door and pushed it open without invitation. That alone told her how serious this was; the Doctor only entered her studio uninvited in the case of an emergency.
“Do you have your psychic paper?” he asked without preamble, slapping his own against the palm of his hand.
Rose shook her head. “It’s in our room.” They left the studio and she shut the door firmly behind her. “Why? What’s wrong, Doctor?”
He handed her his psychic paper as they walked the short distance to their room. Rose flipped it open and read the message, written in an unfamiliar hand.
I need your help at the Library. Please come as soon as you can.
Love you both.
In lieu of a signature, the message concluded with a complicated series of numbers and letters Rose immediately recognised as space-time coordinates.
The Doctor picked her psychic paper up off her vanity and read the message out loud. Rose looked at the paper in her hand, then at the Doctor.
“Is that what I felt in my head then?” she asked. “Someone sending us a message via psychic paper?”
The Doctor nodded. Rose handed him his paper back, then stripped out of her paint spattered clothes while he paced the length of the room. Then she slipped into the en-suite and listened to his explanation as she scrubbed paint off her face with a flannel.
“It’s like psychic texting in a way,” he said, and she could picture the way he punctuated the words with gestures to go with his rapid-fire delivery. “You can send a message from one piece of psychic paper to another, though it takes some training.”
Rose pulled her hair up in a sleek ponytail, then went back into their room. He was on the other side of the room when she selected a pair of comfortable jeans and a pink top out of the wardrobe, and she was zipping up her jeans when he turned around and noticed she’d changed.
“What are you doing?” the Doctor said, finally noticing that she’d changed.
Rose rolled her eyes at him as she selected a pair of hot pink Chucks. “Getting ready to go?” she said, like it was obvious.
The Doctor tugged on his ear. “Ah. Of course.”
Rose stopped lacing up her shoes to look at him incredulously. “I thought you’d be chomping at the bit, after a message like that.”
The furrow between his brows tightened. “The coordinates are already set,” he admitted. “But the last time we followed a message left on the psychic paper, you were possessed by Lady Cassandra.”
Rose finished tying her shoes, then leaned back on the edge of the bed. She had mixed feelings about their first visit to New Earth. On one hand, it was their first trip after his regeneration, and she would always have fond memories of lying in the apple grass with him. On the other… Cassandra’s invasion had left her with migraines that hadn’t faded for a week.
On the other hand… “But the last time we followed a message on the psychic paper, it was from Jack,” Rose pointed out. “Someone who knew us and was counting on us to help them out.”
The Doctor pursed his lips, and Rose could feel the strength of his uncertainty. She stepped forward and adjusted the knot of his navy and maroon floral tie, making sure it lay just right over his burgundy shirt. It was a way of giving them both time—him time to think about what she’d said, and her time to find the right words to win him over.
Finally, she ran her hands down his chest and rested them on his waist. “We’ve got to go, Doctor. Someone who trusts us and is counting on us sent that message.”
The Doctor ran his hand through his hair. Rose was right, but there was something about the whole situation that just felt… slightly off. Not like a trap, but…
A moment later, he felt Rose’s soothing touch on the bond, calming him as much as possible. The Doctor relaxed into her touch, then took her hand and walked with her out of their room. “Come on. I told Jenny to get Donna; they should be waiting for us in the console room.”
Jenny was sitting on the jump seat when they entered the room, her legs swinging and her fingers tapping on the leather seat. The Doctor tugged gently on her ponytail, then laughed when she jumped to her feet. As much as she looked like his fifth incarnation, she had all the manic energy he possessed in this body.
“All right, Dad, are you going to tell us where we’re going?” She peered down at the coordinates he’d set before getting Rose. “It looks like the fifty-first century. Am I right?”
“What I want to know,” Donna asked, “is what happened to the relaxing day we were supposed to be having. I was just getting ready to do my nails when Jenny pounded on my door and insisted that you had someplace to take us.”
The Doctor looked at her, leaning against the ramp with her arms crossed over her chest and her eyebrows raised. He never could pull one over on Donna.
“I got an inkling that something might be going on here today instead,” he explained as he threw the dematerialisation lever. “And I thought… there are plenty of days to rest, but this might be our only chance to go here.”
“And where exactly is here?” she challenged.
The TARDIS’ wheezing slowed as she landed, and despite his concerns over what might be waiting for them in the Library, the Doctor grinned at Donna. “Books,” he said enthusiastically as he jogged around the console and grabbed his coat from where it was draped over a strut. “People never really stop loving books.”
Rose opened the door, and they filed out of the TARDIS into a long gallery. Sunlight streamed into the room through clerestory windows, high in the walls. A few wooden book carts were near the ship, filled with books either on display, or waiting to be shelved.
The Doctor picked one up and thumbed through it quickly, then put it back on the cart and started walking across the room. “So, like Jenny said, this is the fifty-first century. By now you’ve got holovids, direct-to-brain downloads, fiction mist, but you need the smell. The smell of books, ladies. Deep breath.”
Donna looked over at Rose and rolled her eyes, but the Doctor pushed open a thick wooden door before any of them could comment on his raptures over the smell of old paper. They stepped out of the dimly lit room they’d landed in and into an outdoor atrium at the top of a marble staircase.
“The Library. So big it doesn’t need a name. Just a great big ‘The.’”
“It’s like a city,” Donna marvelled as they walked past huge columns.
“It’s a world,” the Doctor corrected. “Literally, a world. The whole core of the planet is the index computer. Biggest hard drive ever.”
“They installed a hard drive in a planet core?” Rose asked as they walked slowly down the flight of stairs, further into the sunlight.
“Yep!” The Doctor popped the p the way he did when he was excited about something. “It still amazes computer programmers—they don’t know how it was done.” He nodded out at the urban landscape when they reached a balcony. “And up here, every book ever written. Whole continents of Jeffrey Archer, Bridget Jones, Monty Python’s Big Red Book. Brand new editions, specially printed.”
They were quiet for a moment, taking in the sheer size of a library that occupied an entire planet. Clusters of skyscrapers were grouped together, connected by sky bridges. Running between the groups of buildings were rails that Rose assumed belonged to a train of some kind that would take you from one part of the planet to another.
On the side of the nearest building there was a huge electronic billboard, announcing it held books on xeno biology and art. A shiver of excitement coursed through her as she thought about all the incredible books on art she might find in the largest library in the universe.
Jenny broke the silence first. “It’s beautiful.”
The Doctor hummed. “Isn’t it? We’re near the equator, so”—He licked his finger and stuck it in the air—“this must be biographies!” he crowed. “I love biographies.”
“I love reading about real people who actually lived,” Jenny said excitedly.
The Doctor turned to his daughter, and Donna absently picked up a book that was resting on the balustrade. She flipped through the pages quickly and realised she could actually see the letters change shape as the TARDIS’ translation circuit tried to keep up with how fast the pages were moving.
She stopped on a page two-thirds of the way through, but before she could read more than a line, the Doctor plucked the book from her fingers. “Oi! Spoilers.”
“What?”
He snapped it shut and waved it at her. “These books are from your future. You don’t want to read ahead. Spoil all the surprises. Like peeking at the end.”
Jenny rolled her eyes. “Dad, we’re currently three thousand years in the future from Donna’s time. Keeping her from spoilers is like…”
A frown wrinkled her forehead, and Donna waited eagerly for the turn of phrase she’d come up with.
Jenny’s expression cleared, and there was a hint of mischief in her smile. “Like closing the barn door after the horse has gotten out!” she stated victoriously.
Everyone laughed but the Doctor, and Rose took the book from the Doctor and handed it back to Donna. “I’m afraid she’s got you there, Doctor.” She crossed her arms over her chest and shook her head when he pouted. “It’s the biography of an actor from the thirty-third century,” she said, cutting off his sputtering. “It’s not going to spoil anything if Donna reads it, aside from the fact that the notion of spoilers is ridiculous.”
“I try to keep her away from major plot developments,” the Doctor protested, though he tugged on his ear in a way Donna knew meant he was aware he’d been caught. “Which, to be honest, I seem to be very bad at,” he added as he looked around at the empty staircase. “Because you know what? This is the biggest library in the universe. So where is everyone? It’s silent.”
“I thought libraries were supposed to be quiet,” Rose pointed out as the Doctor jogged over to a nearby terminal and used the sonic screwdriver to delve through layers of information.
The Doctor looked up at her briefly as the computer ran the scan he’d started. “That’s hardly even true in your time, love,” he said absently before looking back at the computer. “No, near the end of the twentieth century, humans figured out that the most important thing was that people used the library, and that didn’t happen if they enforced an unnatural silence.”
“Maybe it’s a Sunday,” Donna suggested.
The Doctor was shaking his head before she finished the sentence. “No, I never land on Sundays. Sundays are boring.”
“Maybe everyone is just being really quiet?” Jenny offered.
Rose was watching over his shoulder as the computer did the scan he’d requested, and she leaned forward to frown at the screen when the results popped up. According to the computer, they were the only ones on the whole planet.
“Except even if people were being quiet, you’d expect them to show up on a scan,” she said, finally admitting that the Doctor’s earlier unease might not have been unwarranted.
The Doctor did something with his sonic, and Rose could see the computer code spinning again in the background. A moment later, the terminal beeped with what sounded like an error message.
“Now that’s interesting,” he muttered.
“What?” Jenny and Donna asked in unison.
“Scanning for life forms. Limiting to basic humanoids—the target audience of the Library—apart from us, I get nothing. Zippo, nada. See?”
He pointed at the message on the screen that read, Filtered Humanoid Lifeforms Scan Complete: 4.
“Nobody home.” He tapped repeatedly at a button on the keyboard. “But if I widen the parameters to any kind of life…”
The number changed to 1,000,000,000,000, with an error message.
“A million million,” the Doctor read. “Gives up after that. A million million.”
A shiver ran up Rose’s back and she looked around at the seemingly empty planet. “So… there’s something here we can’t see,” she said.
“That’s the only logical answer,” the Doctor agreed. His jaw twitched. “And not a sound. A million million life forms, and silence in the Library.”
“But… where could they all be?” Jenny asked practically.
Donna nodded. “Yeah, where could a million million people hide? There’s not… I mean, there’s just books.” She looked at the book in her hand, her eyes wide. “They can’t be hiding in the books, can they? Or maybe they are they books. But books can’t be alive.”
She reached for the cover and opened it slowly.
“Welcome.”
Donna jumped and dropped the book, then turned around. “That came from here,” she said, pointing back up the stairs.
The Doctor nodded. “Yeah.”
Normally, the whole sequence would have had a comic effect, but today, with the eerie feeling in the atmosphere as the question of a million million lifeforms lingered, no one laughed.
They retreated back to the room they’d parked in, and the Doctor led the way straight over to a large, round circulation desk. The top piece of a sculpture turned around to reveal a vaguely humanoid figure. Rose blinked as she looked at the very human face atop the stylised body.
“I am Courtesy Node seven one zero slash aqua. Please enjoy the Library and respect the personal access codes of all your fellow readers, regardless of species or hygiene taboo.”
Donna took another step towards the Courtesy Node. “That face, it looks real.”
“Yeah, don’t worry about it,” the Doctor said dismissively.
Rose looked up at him, instantly recognising the evasive look on his face. It is real, isn’t it?
“Is it a hologram, Dad?” Jenny asked.
The Doctor nodded slightly at Rose, then looked back at Jenny and Donna. “No, but really, it’s fine.”
The Courtesy Node spoke again. “Additional. There follows a brief message from the Head Librarian for your urgent attention. It has been edited for tone and content by a Felman Lux Automated Decency Filter. Message follows: ‘Run. For God’s sake, run.’”
The words were chilling, spoken by a statue with absolutely no emotional affect in its voice.
“‘Nowhere is safe. The Library has sealed itself, we can’t—Oh, they’re here.’” Several sounds that Rose easily recognised as grunts of pain followed, and then the Courtesy Node said, “Message ends. Please switch off your mobile comm. units for the comfort of other readers.”
“So that’s why we’re here,” the Doctor muttered. “Any other messages, same date stamp?” he asked the Courtesy Node.
“One additional message. This message carries a Felman Lux coherency warning of five zero eleven—”
The Doctor waved off the disclaimer. “Yeah, yeah, fine, fine, fine. Just play it.”
“Message follows: ‘Count the shadows. For God’s sake, remember, if you want to live, count the shadows. Message ends.’”
That made less than no sense to Rose, and she would have brushed it off if genuine fear hadn’t swelled up in the Doctor. He reached for her hand and pulled her close, while looking around the room that was half-shadow.
Jenny looked at them, her features pinched with fear and confusion. “Dad?”
The Doctor took a deep breath and nodded once. “Right, everyone,” he said, his calm voice telling them more about how serious the situation was than any amount of shouting would have done. “Stay out of the shadows.”
Then he spun around and strode out of there room, Rose’s hand was still clasped tightly in his. Despite the fear in his voice, he didn’t hesitate as they walked past the TARDIS. She could feel his curiosity—he still wanted to know who had sent them the message on the psychic paper and why.
Still, he was walking so fast she almost had to jog to keep up. He meant to wrap up that mystery as quickly as possible and get them off the planet. She kept quiet as they went through a door into a room that looked like what Rose expected of a library, with row after row of bookshelves.
Donna and Jenny caught up with them only a few metres into the room, and Donna planted herself directly in front of them. “All right you two, what’s going on here? We had a perfectly relaxing day planned, and then suddenly we’re taking a trip. And don’t think I didn’t hear you a moment ago, Doctor—‘So, that’s why we’re here,’ you said. So, out with it.”
Jenny nodded. “And you’re really…” She hesitated and glanced from the Doctor to Donna and back again. “…worried, Dad,” she added, settling on a less concerning word than “terrified.”
The Doctor sighed, but handed Donna his psychic paper, and she flipped it open to read the message still visible there. “Someone asked for our help.”
“I love you both?” Donna raised her eyebrows when she passed the paper back.
Rose bit her lip. From the moment she’d read the message, it had tugged at her. Someone was counting on them.
“I wish I could figure out who sent it,” she mumbled. “Jack and Martha both have my mobile number, so they could just text. It’s got to be…”
Her voice trailed off when she realised the Doctor was staring over her shoulder at the aisle behind her. Rose turned around, and her eyes widened when she realised the lights were going out, one row at a time.
The Doctor had had his suspicions when they listened to the last message, warning them to count the shadows. But it was only now, as he watched the lights go out plunging the Library deeper into darkness—creating more shadows—that he knew for sure what they’d stumbled upon. A planet that was seemingly empty, yet claimed to be teeming with life? A warning to count the shadows? And a message from a mysterious person, asking for help at the Library?
Vashta Nerada.
“What’s happening?” Donna asked.
The Doctor pushed her and Jenny towards the light, then grabbed Rose’s hand again. “Run!”
Ahead of them, Jenny’s boots hit the floor with rhythmic thuds while Donna’s ponytail trailed behind her. The Doctor felt his coat start to wrap around his legs and he used his free hand to tug it loose, so he wouldn’t trip.
We need to find someplace safe, Rose said.
The Doctor grit his teeth together and nodded. He strained his eyes for some kind of exit. They turned a corner and finally, at the end of an aisle, there was a set of intricately carved wooden doors only twenty feet away from them. Everyone skidded to a halt right in front of the doors, but when the Doctor try to push them open, they wouldn’t budge.
“Come on,” he grunted, throwing his weight against the doors.
“What, is it locked?” Donna demanded, her voice shrill.
He shook his head and pushed harder on the stuck door. “Jammed. The wood’s warped.” The electrical fizz of lights going out got louder as the darkness and the shadows came closer, and despite his best efforts to stay calm, panic welled up inside him.
Jenny wrapped her arms around herself and looked back over her shoulders at the encroaching darkness. “Use your screwdriver, Dad!”
“I can’t,” he growled, rattling the doorknob. “It’s wood.”
“What, it doesn’t do wood?” Donna snarled.
An idea struck the Doctor, and he pulled the sonic out of his pocket. “Hang on, hang on,” he said as he pointed it at the crack between the doors. “I can vibrate the molecules, fry the bindings. I can shatterline the interface.”
“Oh, get out of the way.” Donna shoved him aside and kicked the door open.
All four of them piled into the room and slammed the doors shut behind them, then the Doctor grabbed a book off a nearby table and slid it into the handles as a rudimentary bar lock.
Once the immediate danger was over, he turned to get a look at their surroundings. The circular room with a rotunda was obviously a reading room, but he didn’t have a chance to admire the tables lining the outer walls.
A security camera hovered in the middle of the rotunda, its lens pointed directly at them. The Doctor stuck his hands into his pockets and tried to smile like he hadn’t been caught breaking down a door.
“Oh. Hello. Sorry to burst on you like this. Okay if we stop here for a bit?”
Rose blinked when the camera dropped to the floor like a rock. She and Jenny walked over to it, and Jenny nudged it with her foot.
“What is it?” she asked.
Rose bent over to pick it up. “It’s a security camera,” she explained as she turned it over in her hands. “But I think it switched itself off.”
The Doctor held out his hand, and she tossed the camera to him. “Nice door skills, Donna,” he said as he pointed the sonic screwdriver at the camera.
“Yeah, well, you know, boyfriends. Sometimes you need the element of surprise.”
Rose recoiled. “What kind of men have you been dating?” she said before she could stop herself. “Sorry,” she added a second later. “Not my business, but… Sorry.”
Donna shrugged. “Nah, you’re right.”
Jenny looked like she wanted to ask questions, but Rose shook her head quickly. She could come up with half a dozen reasons why a woman would learn to kick down doors because of the men she dated, and none of them were good. If Donna wanted to elaborate more, she would—but they wouldn’t harass her about it.
After a brief, awkward silence, Donna looked down at the Doctor, who was still messing with the security camera. “So,” she said briskly. “Did we just run away from a power cut?”
Rose could sense the Doctor’s immediate and unqualified negative, but he didn’t dismiss the idea out loud. “Possibly,” he allowed.
“Is it safe here?” Jenny asked, looking around the reading room uneasily.
“Of course we’re safe,” the Doctor said insouciantly. “There’s a little shop.”
All three women turned to look at the wall he’d tilted his head towards. There was a shop, and a sign pointing towards the entrance.
“Gotcha!” the Doctor crowed triumphantly, pulling their attention back to him.
“Ooo, I’m sorry,” he said a moment later. He carefully set the security camera back down on the floor. “I really am. I’m sorry. I’m so sorry.” He looked up at Rose, Donna, and Jenny. “It’s alive.”
“You said it was a security camera,” Donna protested.
He pushed himself back to his feet and twirled his sonic screwdriver once before sliding it into his coat pocket. “It is. It’s an alive one.”
Messages kept scrolling across the screen, this time warning that others were coming.
“Others?” Jenny said. “What’s it mean, others?”
Donna waited for the Doctor or Rose to answer, but they were silent. Well, I’ve had enough silence in the Library. She looked around and spotted another one of those Courtesy Nodes.
“Excuse me,” she said as she strode towards it. “What does it mean, others?”
The Doctor snorted. “That’s barely more than a Speak Your Weight machine; it can’t help you.”
Donna looked back at him and raised her eyebrows. “So why’s it got a face?” she challenged.
She didn’t expect the answer she received.
“This flesh aspect was donated by Mark Chambers on the occasion of his death,” the Courtesy Node said calmly.
Donna looked back at the Doctor, who was rubbing at the back of his neck like he’d been hoping she wouldn’t figure that out. “It’s a real face?”
The Courtesy Node decided to answer that question, too. “It has been actualised individually for you from the many facial aspects saved to our extensive flesh banks. Please enjoy.”
“It chose me a dead face it thought I’d like?” Donna screeched. She looked back at the Doctor and Rose, who had walked over to her and both wore slightly sheepish expressions. “That statue’s got a real dead person’s face on it.”
“It’s the fifty-first century,” the Doctor explained. “That’s basically like donating a park bench.”
“It’s donating a face!” Donna shot back, pointing to her own face and backing away from the creepy statue.
A small hand grabbed her wrist and yanked Donna a few feet back and to the left. Donna glared at Jenny. “I can move on my own, thanks.”
The Doctor shook his head and pointed to where Donna had been standing. “The shadow. Look.”
Donna looked at it, then back at the Doctor. “What about it?”
Rose looked around the reading room. “Count the shadows.”
“One,” Donna snarked. “There, counted it. One shadow.”
“No, Donna,” Jenny said quietly. “What’s casting it?”
Donna looked down at the triangular shadow on the floor, then slowly raised her eyes to the ceiling, hoping to see something that would explain the presence of the shadow.
There was nothing.
The Doctor shuddered at how close they’d come to losing Donna.
An electrical hum distracted him, the same sound they’d heard earlier. He turned his head slowly to look down the corridor that led to the reading room. The lights were flickering and going out, just like they had in the stacks.
“The power must be going,” Donna said, though he could tell in her voice that she didn’t really believe that.
The Doctor shook his head. “This place runs on fission cells. They’ll out burn the sun.” The Vashta Nerada were turning off the lights because living shadows could hide more easily in the dark.
“All right then, love, why is it dark?” Rose asked calmly.
He took her hand, then pulled Jenny closer and motioned for Donna to circle in as well. “It’s not dark,” he said, his voice hoarse with anger and fear.
Donna tapped on his arm, and he looked over at her. She pointed to the floor, where the triangular shadow had been just a few moments ago. “That shadow. It’s gone.”
The Doctor’s throat went dry. Rose shuddered in his arms, and he tried to get his fear under control instead of projecting the full force of it to her. “We need to get back to the TARDIS,” he said, surprised by how even his voice sounded.
The drive to get home to safety thrummed inside him, in time with his heart beats. Whoever had called for them would just have to manage on their own. They were already running out of time to make it out of the Library alive.
“Why?” asked Jenny.
“Because that shadow hasn’t gone.” The Doctor swallowed. “It’s moved.”
The Courtesy Node went crazy then, repeating the same message over and over. “Reminder. The Library has been breached. Others are coming. Reminder. The Library has been breached. Others are coming. Reminder. The Library has been breached.”
Rose stared at the Courtesy Node and rubbed the Doctor’s back, trying to calm him down. He hadn’t been this frightened since they’d run into the Weeping Angels with Martha, and his panic was interfering with his ability to communicate.
Calm down, love, she urged. Just talk to us and tell us what’s going on.
The Doctor took a deep breath, but before he could get another word out, an explosion blew open the double doors on the opposite side of the room. Six people in spacesuits stepped into the room. The glass on the suits was tinted black, hiding their faces, but then the leader reached up and adjusted the filter.
Rose stared at the woman’s heart-shaped face. Wide hazel eyes looked back at her beneath furrowed brows, and Rose suddenly knew—this was the person who’d called them. The fact that she’d never met the woman before in her life added a sudden complexity to the day that she hadn’t counted on.
Time travel. She sighed and rubbed her temple.
The tall stranger looked at her, then at the Doctor, Donna, and Jenny. She seemed to take a deep breath before turning back to her crew.
“Pop your helmets, everyone.” She took her own helmet off and shook out her long, brown ponytail. “We’ve got breathers.”
“How do you know they’re not androids?” one of her team challenged, though everyone did as she ordered and took their helmets off.
The woman held Rose’s gaze steadily. “Because. I know them.”
The Doctor seemed not to hear that announcement. He stepped away from Rose, his hands clenched into fists. “Get out,” he ordered, his voice tense.
A smile played on the corners of the woman’s mouth, and Rose wondered if she really knew them. Because if she did, wouldn’t she recognise that he was about thirty seconds from an outburst?
Unless she’s never seen him in a dangerous situation like this. Suddenly wanting to shield the young woman from what was to come, Rose reached out and put her hand on the Doctor’s arm. “Doctor.”
He took a deep breath and blew it out slowly, but the tension in his back didn’t ease and his jaw was still twitching. “We’re leaving, and you should too. Get back in your rocket and fly away.”
“Who is this?” A man stepped forward and glared at the woman. “You said we were the only expedition. I paid for exclusives.”
Her smirk deepened and she looked down at the shorter man, meeting his gaze steadily. “They’re part of my team.”
Rose felt the ripple of shock that washed through the Doctor when he heard those words, and she realised he hadn’t seen the recognition on the woman’s face and put the pieces together.
The man sighed, but he nodded. “It would have been nice if you’d informed me more people would be meeting us here. And I really would love to know how they got through the protections around the planet. But…” He gestured to a pretty young woman standing off to the side. “Miss Evangelista, I want to see the contracts.”
The Doctor watched the party with growing incredulity. Had he not been clear enough in his recommendation that they all leave? Why were they standing here talking?
The stranger looked up at him, her helmet tucked under her arm.“You came through the north door, yeah? How was that, much damage?”
He put his hands on his hips and looked down at this person who was delaying everyone’s escape. “Please, just leave. I’m asking you seriously and properly, just l—”
The man’s words sank in suddenly, and the Doctor broke off in mid-thought to look back at him, then at the rest of the group—all young, likely graduate students working as interns. He looked at the woman who claimed to know them, and judged her to be just a few years older. Their advisor.
He sighed and rocked back on his heels. “Hang on. Did you say expedition?”
The balding man nodded. “My expedition. I funded it.”
The Doctor groaned and looked back at the woman. “Oh, you’re not, are you? Tell me you’re not archaeologists.”
She pressed her lips together, finally making an effort to hide her smirk. “Got a problem with archaeologists?”
He snorted. “I’m a time traveller. I point and laugh at archaeologists.”
“Ah. Doctor Melody Pond, archaeologist.” She wasn’t even bothering to hide her smirk now.
Rose stepped forward and shook the other woman’s hand. “I think it’s time for introductions,” she said. “You might know us, but we don’t know your team.” She smiled at the black woman standing behind Doctor Pond—she was the one who’d asked if they were androids. “I’m Rose, this is the Doctor, our daughter Jenny, and our friend Donna. What’s your name?”
The woman blinked. “Anita.”
“Right,” the Doctor interrupted. “We could do introductions, or we could leave. I vote for leaving.” He leaned forward, resting his weight on the balls of his feet as he looked into Doctor Pond’s eyes. “And as you leave, you need to set up a quarantine beacon. Code wall the planet, the whole planet. Nobody comes here, not ever again. Not one living thing, not here, not ever.”
Out of the corner of his eye, he spotted Jenny grab Anita’s arm as she wandered past, towards the shadowy edge of the room. “Stay out of the shadows, Anita,” she warned.
The Doctor nodded. “That’s right. Not a foot, not a finger in the shadows till you’re safely back in your ship. Goes for all of you. Stay in the light.”
Melody Pond blinked up at him, and something in the indulgent expression on her face irritated the Doctor even more. Does she think I’m joking?
“Find a nice, bright spot and just stand,” he ordered. “If you understand me, look very, very scared.” The archaeology team looked more befuddled than scared, and he shook his head. “No, bit more scared than that.” Frowns deepened, and they shifted their weight from one foot to the other. The Doctor shrugged. “Okay, do for now.”
For the first time, Doctor Pond hesitated, licking her lips and looking at Rose. “Rose?”
Rose nodded. “He’s serious, Doctor Pond. He still hasn’t told us exactly what’s on this planet, but it’s swarming with something, and whatever it is, it’s bad. We need to get out of here.”
“Oh, I’m not going anywhere.” The man paying for the expedition put his helmet under his arm and scowled at them. “My family has waited one hundred years to come back and check on the Library.”
The Doctor raised his eyebrows. His family owned the Library? Which made him something-something Lux, as in the Felman Lux coherency warning.
The Doctor ground his teeth together, then looked away from the arrogant Mr. Lux to a younger black man standing uncertainly on the edge of the group. “You. Who are you?”
“Um, Dave.”
He grabbed Dave by the shoulder and pushed him, none-too-gently, back to the door the group had entered through. “Okay, Dave.”
“Oh, well, Other Dave,” Dave added before the Doctor could finish his sentence. He stopped and pointed back at the last person needing to be introduced. “Because that’s Proper Dave, the pilot. He was the first Dave, so when we—”
“Other Dave,” the Doctor interrupted, then pulled him the last few feet to the door. He pointed down the corridor. “The way you came, does it look the same as before?”
“Yeah,” Other Dave said, then he looked properly and shook his head. “Oh, it’s a bit darker.”
“How much darker?” the Doctor prodded.
The kinks of Other Dave’s tightly curled hair cast shadows on the door behind him as he pointed towards the darkened stacks. “Oh, like I could see where we came through just like a moment ago. I can’t now.”
The Doctor fought back his panic. The shadows were closing in on them, and before too much longer, every escape route would be closed off. He backed away from the door and stared purposely at Other Dave.
“Seal up this door. We’ll find another way out.”
“We’re not looking for a way out,” the snappish older man insisted. “Miss Evangelista?”
The pretty young woman stepped forward with a stack of papers in her hands. “I’m Mr. Lux’s personal everything.” She handed the papers to the Doctor, Rose, Jenny, and Donna. “You need to sign these contracts agreeing that your individual experiences inside the library are the intellectual property of the Felman Lux Corporation.”
“Oh, that’s nice, isn’t it?” Rose winked up at him, and the Doctor felt the tiniest bit of his tension ease.
Jenny and Donna both made similar sounds of assent, all of them looking at the Doctor. On his nod, the four of them tore the contracts in two and tossed the ripped paper onto the floor.
Mr. Lux pointed at them. “My family built this library. I have rights.”
“I’m not interested in your rights,” the Doctor snarled. “Something came to this library and killed everything in it. Killed a whole world.” He sucked in a breath through his nose. “The only thing I’m interested in is getting my family home safely. I suggest you do the same.”
Melody Pond bit her lip. “Surely whatever killed those people is long-dead.”
The Doctor looked up at the ceiling and rubbed his hands over his face. “Rose told you there was a swarm. What if they’re not dead? What if, whatever they are, they’ve been living and breeding on this planet for one hundred years?”
Mr. Lux’s annoyed voice interrupted his rapid questions. “What are you doing?”
The Doctor looked across the room to where Mr. Lux was confronting Other Dave, waving a torch like a club.
Other Dave had a caulk gun pressed to the door jamb, and he looked from Mr. Lux to the Doctor. “He said seal the door.”
“You’re taking orders from him?” Mr. Lux demanded.
The Doctor smiled darkly and snuck up behind Mr. Lux “Spooky, isn’t it?” he murmured as he snagged the torch out of Mr. Lux’s hand and shone it into the dark corners of the room.
Rose watched him as he inspected the room. His back was rigid, though that was partially concealed by the heavy coat draped over his shoulders. But it was the fear she could almost taste that made her want to grab her family and run straight back to the TARDIS. The Doctor knew what was here, and they were all in terrible danger.
“You want to know what’s here?” he asked, then answered his rhetorical question. “I’ll tell you. Almost every species in the universe has an irrational fear of the dark. But they’re wrong, because it’s not irrational. It’s Vashta Nerada.”
Vashta Nerada.
Even without knowing what they were, the name sent a shiver down Rose’s back. As she watched the Doctor as he stood on the edge of the light, shining the torch into the darkness, she paid attention to his thoughts, and the shiver became a shudder.
Carnivorous shadows. Shadows that eat.
Jenny crossed the room to stand with her father, peering into the darkness with him, but Donna stood alone beneath the centre of the rotunda. “What’s Vashta Nerada?” she asked.
“It’s what’s in the dark,” the Doctor said, his quiet, tense voice matching the ominous words. “It’s what’s always in the dark.”
Rose spun around, looking at the archaeology team who were all staring at the Doctor. “Lights!” she demanded. “The shadows are dangerous, so let’s fill this room with light.”
The Doctor nodded and tossed the torch to Mr. Lux as he strode back to the centre of the light. “Exactly right, Rose,” he said as he shrugged out of his coat and draped it over the circulation desk. “Form a circle. Safe area. Big as you can, lights pointing out.”
Melody nodded at her team. “Oi. Do as he says.”
“You’re not listening to this man?” Mr. Lux demanded.
Rose clenched her fists and took a few deep breaths; less than ten minutes in the presence of Mr. Lux, and already her patience was at its limit.
Melody rolled her eyes. “Obviously,” she said, with just a hint of an accent Rose couldn’t quite make out. She rattled off directions to the rest of her team quickly, delegating with the air of experience. “Anita, unpack the lights. Donna and Jenny can help. Other Dave, make sure the door’s secure, then help them if they aren’t done. Mr. Lux, put your helmet back on—block the visor. Proper Dave, find an active terminal. I want you to access the library database. See what you can find about what happened here a hundred years ago.”
She took a breath and looked at the Doctor and Rose before ducking behind the circulation desk. “And if I could talk to the two of you, over here?”
The Doctor and Rose exchanged a look before nodding and following Melody. Rose couldn’t help noticing that they were conveniently out of earshot of the rest of the group, as long as they kept their voices down.
“Doctor Pond, why am I the only one wearing my helmet?” Mr. Lux asked wearily.
“I don’t fancy you,” she said blithely.
Rose swallowed a laugh at the impish expression on the mysterious young woman’s face. It had nothing to do with who she fancied—Doctor Pond was just tired of seeing Mr. Lux’s condescending expression every time she looked up. Rose didn’t blame her, but sadly, once he realised it wasn’t necessary, Mr. Lux removed his helmet.
The Doctor paused just before stepping behind the desk. “Don’t let your shadows cross,” he ordered. “Seriously, don’t even let them touch. Any of them could be infected.”
“How can a shadow be infected?” Other Dave asked.
You still haven’t really explained that part, Doctor, Rose pointed out.
He ran a hand through his hair. Let’s see what Doctor Pond has to say, then I’ll finish explaining the Vashta Nerada.
Donna watched the Doctor and Rose step off to the side with this strange woman while she and Jenny carried the lights Anita was unpacking to the middle of the room, setting them up in a circle. Doctor Pond’s opening assertion that she knew them had seemed a little far-fetched, but there was something familiar in the way she interacted with her crew, and after paying attention, Donna had figured it out—she sounded like the Doctor, the way he stepped into a situation and automatically took charge.
Plus, there was the way she’d turned to Rose for verification of the Doctor’s claim that they were in danger. That said a lot about how well she knew the couple.
“I know,” Jenny murmured, keeping her voice low. “It’s weird, isn’t it—meeting someone supposedly from your future?”
“Excuse me, can I help?” Miss Evangelista asked before Donna could reply to Jenny.
Other Dave had just joined them, and the smirk that passed between him and Anita really got under Donna’s skin.
“No, we’re fine,” Anita said.
The young personal assistant didn’t give up. “I could just you know, hold things.”
“No, really, we’re okay,” Other Dave insisted.
Miss Evangelista’s shoulders slumped and she walked off, joining her boss who was doing something with a handheld device. Donna watched for a moment as she tried to get Mr. Lux to give her something to do, but he just held up his hand—dismissing her just like the others had.
Donna scowled and stood up so she could confront Other Dave and Anita. “Couldn’t she help?” she said sharply.
Jenny looked up from the nearly-finished circle of light, a faint smile on her face, and the approval emboldened Donna. She’d had enough experience in her life of being treated like she was useless. But at least she’d never been treated like that by her co-workers, unlike Miss Evangelista.
Other Dave shook his head. “Trust me. I just spent four days on a ship with that woman. She’s… er…”
Anita sighed and cut in. “Couldn’t tell the difference between the escape pod and the bathroom. We had to go back for her.” She and Other Dave exchanged another grin. “Twice.”
Donna glared at the two, and they quickly looked away from her and went back to work getting the lights set up. Convinced she’d made it clear what she thought of their attitude, she looked for Miss Evangelista, hoping she could at least be of use making the other woman feel better, but Mr. Lux was talking to her.
Mr. Lux’s personal everything, she thought cynically. If the young woman was really as useless as Anita and Other Dave claimed, then she must be there to be eye candy. Donna gritted her teeth together. Three thousand years in the future, and nothing had changed.
oOoOoOoOo
The Doctor shoved his hands into his coat pockets and glared at Doctor Melody Pond. “Is there a point to this little meeting?” he bit out. “Because there are ten people, including the three of us, whose lives depend on me figuring out a way to get us out of here. And I don’t know if you’ve noticed, but the exits are being cut off one by one.”
Rose nudged him with an elbow to the ribs, but he didn’t apologise. Standing in the dimly lit reading room on a planet that had been overrun by Vashta Nerada was frankly terrifying, and the fact that no one but Rose really seemed to be taking his concerns seriously only made it worse.
Melody Pond didn’t flinch in the face of his anger. She just smiled, a little sadly, and held up a wallet the Doctor immediately knew held a piece of psychic paper. “I just wanted to thank you for coming when I called.”
“Oh, that was you?” the Doctor asked, even though he’d figured that out.
“Yes, that was me. Psychic paper is more reliable than super-charged mobile phones in certain parts of the universe.” Melody pursed her lips and looked at them. “I suspected, when you made that crack about archaeologists, that I might have gotten you even earlier than I realised. You don’t know who I am, do you?”
The Doctor and Rose exchanged a look. “Should we, Doctor Pond?” Rose asked.
Melody flinched at the title. “First of all, please call me Melody. Hearing you call me Doctor Pond is…” She shook her head. “It’s just weird.”
“All right, Melody,” Rose agreed.
She was surprised when several of the tense lines around Melody’s eyes and mouth disappeared. Melody slid her psychic paper back into her bag. “And yes. You’ll know me, one day,” she assured them. “And I know anyone could say that, especially since you mentioned upfront that you’re time travellers—really, Doctor, you usually play that card a little closer to the vest.”
“She’s right, Doctor.”
“Oi!” The Doctor felt his lower lip protrude slightly, but he didn’t care if he was pouting. Rose was supposed to be on his side.
Melody winked at Rose. “You might be decades younger than when I know you, but I see not much has changed between now and then.”
The Doctor blinked at the casual implication that Melody knew they didn’t age, then shook his head quickly. “Yes, back to you knowing us in our future,” he cut in. “How can we believe you, since, as you pointed out, anyone could say that?”
Melody sighed. “You gave us all a code word, said it was something you’d only ever tell your closest friends and family, so we could use it if we met you this far out of order. I never thought I’d have to use it.” She clasped her hands in front of her, a picture that looked odd with the heavy gloves of her suit. “We’ve met a year or two out of order before, but never before you knew me…”
“What’s the code word?” Rose asked.
Melody took a deep breath and lowered her voice before speaking the words with solemnity. “Bad Wolf.”
#ficandchips#ten x rose#dwfic#fic by Nancy#series: Being to Timelessness#cq's fic: forever and never apart#donna noble#jenny#lots of changes here#i hope you enjoy the results as much as i do
25 notes
·
View notes
Text
How to Remote Desktop (RDP) into a Windows 10 Azure AD joined machine
Since everyone started working remotely, I've personally needed to Remote Desktop into more computers lately than ever before. More this week than in the previous decade.
I wrote recently about to How to remote desktop fullscreen RDP with just SOME of your multiple monitors which is super useful if you have, say, 3 monitors, and you only want to use 2 and 3 for Remote Desktop and reserve #1 for your local machine, email, etc.
IMHO, the Remote Desktop Connection app is woefully old and kinda Windows XP-like in its style.
There is a Windows Store Remote Desktop app at https://aka.ms/urdc and even a Remote Desktop Assistant at https://aka.ms/RDSetup that can help set up older machines (earlier than Windows 10 version 1709 (I had no idea this existed!)
The Windows Store version is nicer looking and more modern, but I can't figure out how to get it to Remote into an Azure Active Directory (AzureAD) joined computer. I don't see if it's even possible with the Windows Store app. Let me know if you know how!
So, back to the old Remote Desktop Connection app. Turns out for whatever reason, you need to save the RDP file and open it in a text editor.
Add these two lines at the end (three if you want to save your username, then include the first line there)
username:s:.\AzureAD\[email protected] enablecredsspsupport:i:0 authentication level:i:2
Note that you have to use the style .\AzureAD\[email protected]
The leading .\AzureAD\ is needed - that was the magic in front of my email for login. Then enablecredsspsupport along with authentication level 2 (settings that aren't exposed in the UI) was the final missing piece.
Add those two lines to the RDP text file and then open it with Remote Desktop Connection and you're set! Again, make sure you have the email prefix.
The Future?
Given that the client is smart enough to show an error from the remote machine that it's Azure AD enabled, IMHO this should Just Work.
More over, so should the Microsoft Store Remote Desktop client. It's beyond time for a refresh of these apps.
NOTE: Oddly there is another app called the Windows Desktop Client that does some of these things, but not others. It allows you to access machines your administrators have given you access to but doesn't allow you (a Dev or Prosumer) to connect to arbitrary machine. So it's not useful to me.
There needs to be one Ultimate Remote Windows Desktop Client that lets me connect to all flavors of Windows machines from anywhere, is smart about DPI and 4k monitors, remotes my audio optionally, and works for everything from AzureAD to old school Domains.
Between these three apps there's a Venn Diagram of functionality but there's nothing with the Union of them all. Yet.
Until then, I'm editing RDP files which is a bummer, but I'm unblocked, which is awesome.
Sponsor: Couchbase gives developers the power of SQL with the flexibility of JSON. Start using it today for free with technologies including Kubernetes, Java, .NET, JavaScript, Go, and Python.
© 2020 Scott Hanselman. All rights reserved.
How to Remote Desktop (RDP) into a Windows 10 Azure AD joined machine published first on https://deskbysnafu.tumblr.com/
0 notes
Text
How to Remote Desktop (RDP) into a Windows 10 Azure AD joined machine
Since everyone started working remotely, I've personally needed to Remote Desktop into more computers lately than ever before. More this week than in the previous decade.
I wrote recently about to How to remote desktop fullscreen RDP with just SOME of your multiple monitors which is super useful if you have, say, 3 monitors, and you only want to use 2 and 3 for Remote Desktop and reserve #1 for your local machine, email, etc.
IMHO, the Remote Desktop Connection app is woefully old and kinda Windows XP-like in its style.
There is a Windows Store Remote Desktop app at https://aka.ms/urdc and even a Remote Desktop Assistant at https://aka.ms/RDSetup that can help set up older machines (earlier than Windows 10 version 1709 (I had no idea this existed!)
The Windows Store version is nicer looking and more modern, but I can't figure out how to get it to Remote into an Azure Active Directory (AzureAD) joined computer. I don't see if it's even possible with the Windows Store app. Let me know if you know how!
So, back to the old Remote Desktop Connection app. Turns out for whatever reason, you need to save the RDP file and open it in a text editor.
Add these two lines at the end (three if you want to save your username, then include the first line there)
username:s:.\AzureAD\[email protected] enablecredsspsupport:i:0 authentication level:i:2
Note that you have to use the style .\AzureAD\[email protected]
The leading .\AzureAD\ is needed - that was the magic in front of my email for login. Then enablecredsspsupport along with authentication level 2 (settings that aren't exposed in the UI) was the final missing piece.
Add those two lines to the RDP text file and then open it with Remote Desktop Connection and you're set! Again, make sure you have the email prefix.
The Future?
Given that the client is smart enough to show an error from the remote machine that it's Azure AD enabled, IMHO this should Just Work.
More over, so should the Microsoft Store Remote Desktop client. It's beyond time for a refresh of these apps.
NOTE: Oddly there is another app called the Windows Desktop Client that does some of these things, but not others. It allows you to access machines your administrators have given you access to but doesn't allow you (a Dev or Prosumer) to connect to arbitrary machine. So it's not useful to me.
There needs to be one Ultimate Remote Windows Desktop Client that lets me connect to all flavors of Windows machines from anywhere, is smart about DPI and 4k monitors, remotes my audio optionally, and works for everything from AzureAD to old school Domains.
Between these three apps there's a Venn Diagram of functionality but there's nothing with the Union of them all. Yet.
Until then, I'm editing RDP files which is a bummer, but I'm unblocked, which is awesome.
Sponsor: Couchbase gives developers the power of SQL with the flexibility of JSON. Start using it today for free with technologies including Kubernetes, Java, .NET, JavaScript, Go, and Python.
© 2020 Scott Hanselman. All rights reserved.
How to Remote Desktop (RDP) into a Windows 10 Azure AD joined machine published first on http://7elementswd.tumblr.com/
0 notes
Text
Intro to Python - Whiteboard Friday
Posted by BritneyMuller
Python is a programming language that can help you uncover incredible SEO insights and save you time by automating time-consuming tasks. But for those who haven't explored this side of search, it can be intimidating. In this episode of Whiteboard Friday, Britney Muller and a true python expert named Pumpkin offer an intro into a helpful tool that's worth your time to learn.
Click on the whiteboard image above to open a high resolution version in a new tab!
Video Transcription
Hey, Moz fans. Welcome to another edition of Whiteboard Friday. Today we're talking all about introduction to Python, which is why I have a special co-host here. She is a ball python herself, total expert. Her name is Pumpkin, and she's the best.
What is Python?
So what is Python? This has been in the industry a lot lately. There's a lot of commotion that you should know how to use it or know how to talk about it. Python is an open source, object-oriented programming language that was created in 1991.
Simpler to use than R
Some fun facts about Python is it's often compared to R, but it's arguably more simple to use. The syntax just oftentimes feels more simple and common-sense, like when you're new to programming.
Big companies use it
Huge companies use it. NASA, Google, tons of companies out there use it because it's widely supported.
It's open source
It is open source. So pretty cool. While we're going through this Whiteboard Friday, I would love it if we would do a little Python programming today. So I'm just going to ask that you also visit this in another tab, python.org/downloads. Download the version for your computer and we'll get back to that.
Why does Python matter?
So why should you care?
Automates time-consuming tasks
Python is incredibly powerful because it helps you automate time-consuming tasks. It can do these things at scale so that you can free up your time to work on higher-level thinking, to work on more strategy. It's really, really exciting where these things are going.
Log file analysis
Some examples of that are things like log file analysis. Imagine if you could just set up an automated system with Python to alert you any time one of your primary pages wasn't being crawled as frequently as it typically is. You can do all sorts of things. Let's say Google crawls your robots.txt and it throws out a server error, which many of you know causes huge problems. It can alert you. You can set up scripts like that to do really comprehensive tasks.
Internal link analysis
Some other examples, internal link analysis, it can do a really great job of that.
Discover keyword opportunities
It can help you discover keyword opportunities by looking at bulk keyword data and identifying some really important indicators.
Image optimization
It's really great for things like image optimization. It can auto tag and alt text images. It can do really powerful things there.
Scrape websites
It can also scrape the websites that you're working with to do really high volume tasks.
Google Search Console data analysis
It can also pull Google Search Console data and do analysis on those types of things.
I do have a list of all of the individuals within SEO who are currently doing really, really powerful things with Python. I highly suggest you check out some of Hamlet Batista's recent scripts where he's using Python to do all sorts of really cool SEO tasks.
How do you run Python?
What does this even look like? So you've hopefully downloaded Python as a programming language on your computer. But now you need to run it somewhere. Where does that live?
Set up a virtual environment using Terminal
So first you should be setting up a virtual environment. But for the purpose of these examples, I'm just going to ask that you pull up your terminal application.
It looks like this. You could also be running Python within something like Jupyter Notebook or Google Colab. But just pull up your terminal and let's check and make sure that you've downloaded Python properly.
Check to make sure you've downloaded Python properly
So the first thing that you do is you open up the terminal and just type in "python --version." You should see a readout of the version that you downloaded for your computer. That's awesome.
Activate Python and perform basic tasks
So now we're just going to activate Python and do some really basic tasks. So just type in "python" and hit Enter. You should hopefully see these three arrow things within your terminal. From here, you can do something like print ("Hello, World!"). So you enter it exactly like you see it here, hit Enter, and it will say "Hello, World!" which is pretty cool.
You can also do fun things like just basic math. You can add two numbers together using something like this. So these are individual lines. After you complete the print (sum), you'll see the readout of the sum of those two numbers. You can randomly generate numbers. I realize these aren't direct SEO applications, but these are the silly things that give you confidence to run programs like what Hamlet talks about.
Have fun — try creating a random number generator
So I highly suggest you just have fun, create a little random number generator, which is really cool. Mine is pulling random numbers from 0 to 100. You can do 0 to 10 or whatever you'd like. A fun fact, after you hit Enter and you see that random number, if you want to continue, using your up arrow will pull up the last command within your terminal.
It even goes back to these other ones. So that's a really quick way to rerun something like a random number generator. You can just crank out a bunch of them if you want for some reason.
Automating different tasks
This is where you can start to get into really cool scripts as well for pulling URLs using Requests HTML. Then you can pull unique information from web pages.
You can pull at bulk tens of thousands of title tags within a URL list. You can pull things like H1s, canonicals, all sorts of things, and this makes it incredibly easy to do it at scale. One of my favorite ways to pull things from URLs is using xpath within Python.
This is a lot easier than it looks. So this might be an xpath for some websites, but websites are marked up differently. So when you're trying to pull something from a particular site, you can right-click into Chrome Developer Tools. Within Chrome Developer Tools, you can right-click what it is that you're trying to scrape with Python.
You just select "Copy xpath," and it will give you the exact xpath for that website, which is kind of a fun trick if you're getting into some of this stuff.
Libraries
What are libraries? How do we make this stuff more and more powerful? Python is really strong on its own, but what makes it even stronger are these libraries or packages which are add-ons that do incredible things.
This is just a small percentage of libraries that can do things like data collection, cleaning, visualization, processing, and deployment. One of my favorite ways to get some of the more popular packages is just to download Anaconda, because it comes with all of these commonly used, most popular packages.
So it's kind of a nice way to get all of it in one spot or at least most of them.
Learn more
So you've kind of dipped your toes and you kind of understand what Python is and what people are using it for. Where can you learn more? How can you start? Well, Codecademy has a really great Python course, as well as Google, Kaggle, and even the Python.org website have some really great resources that you can check out.
This is a list of individuals I really admire in the SEO space, who are doing incredible work with Python and have all inspired me in different ways. So definitely keep an eye on what they are up to:
Hamlet Batista
Ruth Everett
Tom Donahue
Kristin Tynski
Paul Shapiro
Tyler Reardon
JR Oakes
Hulya Coban
@Jessthebp
But yeah, Pumpkin and I have really enjoyed this, and we hope you did too. So thank you so much for joining us for this special edition of Whiteboard Friday. We will see you soon. Bye, guys.
Video transcription by Speechpad.com
Sign up for The Moz Top 10, a semimonthly mailer updating you on the top ten hottest pieces of SEO news, tips, and rad links uncovered by the Moz team. Think of it as your exclusive digest of stuff you don't have time to hunt down but want to read!
via Blogger https://ift.tt/37Qnor5
0 notes
Text
Intro to Python – Whiteboard Friday
Posted by BritneyMuller
Python is a programming language that can help you uncover incredible SEO insights and save you time by automating time-consuming tasks. But for those who haven’t explored this side of search, it can be intimidating. In this episode of Whiteboard Friday, Britney Muller and a true python expert named Pumpkin offer an intro into a helpful tool that’s worth your time to learn.

Click on the whiteboard image above to open a high resolution version in a new tab!
Video Transcription
Hey, Moz fans. Welcome to another edition of Whiteboard Friday. Today we’re talking all about introduction to Python, which is why I have a special co-host here. She is a ball python herself, total expert. Her name is Pumpkin, and she’s the best.
What is Python?
So what is Python? This has been in the industry a lot lately. There’s a lot of commotion that you should know how to use it or know how to talk about it. Python is an open source, object-oriented programming language that was created in 1991.
Simpler to use than R
Some fun facts about Python is it’s often compared to R, but it’s arguably more simple to use. The syntax just oftentimes feels more simple and common-sense, like when you’re new to programming.
Big companies use it
Huge companies use it. NASA, Google, tons of companies out there use it because it’s widely supported.
It’s open source
It is open source. So pretty cool. While we’re going through this Whiteboard Friday, I would love it if we would do a little Python programming today. So I’m just going to ask that you also visit this in another tab, python.org/downloads. Download the version for your computer and we’ll get back to that.
Why does Python matter?
So why should you care?
Automates time-consuming tasks
Python is incredibly powerful because it helps you automate time-consuming tasks. It can do these things at scale so that you can free up your time to work on higher-level thinking, to work on more strategy. It’s really, really exciting where these things are going.
Log file analysis
Some examples of that are things like log file analysis. Imagine if you could just set up an automated system with Python to alert you any time one of your primary pages wasn’t being crawled as frequently as it typically is. You can do all sorts of things. Let’s say Google crawls your robots.txt and it throws out a server error, which many of you know causes huge problems. It can alert you. You can set up scripts like that to do really comprehensive tasks.
Internal link analysis
Some other examples, internal link analysis, it can do a really great job of that.
Discover keyword opportunities
It can help you discover keyword opportunities by looking at bulk keyword data and identifying some really important indicators.
Image optimization
It’s really great for things like image optimization. It can auto tag and alt text images. It can do really powerful things there.
Scrape websites
It can also scrape the websites that you’re working with to do really high volume tasks.
Google Search Console data analysis
It can also pull Google Search Console data and do analysis on those types of things.
I do have a list of all of the individuals within SEO who are currently doing really, really powerful things with Python. I highly suggest you check out some of Hamlet Batista’s recent scripts where he’s using Python to do all sorts of really cool SEO tasks.
How do you run Python?
What does this even look like? So you’ve hopefully downloaded Python as a programming language on your computer. But now you need to run it somewhere. Where does that live?
Set up a virtual environment using Terminal
So first you should be setting up a virtual environment. But for the purpose of these examples, I’m just going to ask that you pull up your terminal application.

It looks like this. You could also be running Python within something like Jupyter Notebook or Google Colab. But just pull up your terminal and let’s check and make sure that you’ve downloaded Python properly.
Check to make sure you’ve downloaded Python properly
So the first thing that you do is you open up the terminal and just type in “python –version.” You should see a readout of the version that you downloaded for your computer. That’s awesome.
Activate Python and perform basic tasks
So now we’re just going to activate Python and do some really basic tasks. So just type in “python” and hit Enter. You should hopefully see these three arrow things within your terminal. From here, you can do something like print (“Hello, World!”). So you enter it exactly like you see it here, hit Enter, and it will say “Hello, World!” which is pretty cool.

You can also do fun things like just basic math. You can add two numbers together using something like this. So these are individual lines. After you complete the print (sum), you’ll see the readout of the sum of those two numbers. You can randomly generate numbers. I realize these aren’t direct SEO applications, but these are the silly things that give you confidence to run programs like what Hamlet talks about.
Have fun — try creating a random number generator
So I highly suggest you just have fun, create a little random number generator, which is really cool. Mine is pulling random numbers from 0 to 100. You can do 0 to 10 or whatever you’d like. A fun fact, after you hit Enter and you see that random number, if you want to continue, using your up arrow will pull up the last command within your terminal.
It even goes back to these other ones. So that’s a really quick way to rerun something like a random number generator. You can just crank out a bunch of them if you want for some reason.
Automating different tasks
This is where you can start to get into really cool scripts as well for pulling URLs using Requests HTML. Then you can pull unique information from web pages.
You can pull at bulk tens of thousands of title tags within a URL list. You can pull things like H1s, canonicals, all sorts of things, and this makes it incredibly easy to do it at scale. One of my favorite ways to pull things from URLs is using xpath within Python.
This is a lot easier than it looks. So this might be an xpath for some websites, but websites are marked up differently. So when you’re trying to pull something from a particular site, you can right-click into Chrome Developer Tools. Within Chrome Developer Tools, you can right-click what it is that you’re trying to scrape with Python.
You just select “Copy xpath,” and it will give you the exact xpath for that website, which is kind of a fun trick if you’re getting into some of this stuff.
Libraries
What are libraries? How do we make this stuff more and more powerful? Python is really strong on its own, but what makes it even stronger are these libraries or packages which are add-ons that do incredible things.
This is just a small percentage of libraries that can do things like data collection, cleaning, visualization, processing, and deployment. One of my favorite ways to get some of the more popular packages is just to download Anaconda, because it comes with all of these commonly used, most popular packages.
So it’s kind of a nice way to get all of it in one spot or at least most of them.
Learn more
So you’ve kind of dipped your toes and you kind of understand what Python is and what people are using it for. Where can you learn more? How can you start? Well, Codecademy has a really great Python course, as well as Google, Kaggle, and even the Python.org website have some really great resources that you can check out.
This is a list of individuals I really admire in the SEO space, who are doing incredible work with Python and have all inspired me in different ways. So definitely keep an eye on what they are up to:
Hamlet Batista
Ruth Everett
Tom Donahue
Kristin Tynski
Paul Shapiro
Tyler Reardon
JR Oakes
Hulya Coban
@Jessthebp
But yeah, Pumpkin and I have really enjoyed this, and we hope you did too. So thank you so much for joining us for this special edition of Whiteboard Friday. We will see you soon. Bye, guys.
Video transcription by Speechpad.com
Sign up for The Moz Top 10, a semimonthly mailer updating you on the top ten hottest pieces of SEO news, tips, and rad links uncovered by the Moz team. Think of it as your exclusive digest of stuff you don’t have time to hunt down but want to read!
0 notes
Text
Intro to Python - Whiteboard Friday
Posted by BritneyMuller
Python is a programming language that can help you uncover incredible SEO insights and save you time by automating time-consuming tasks. But for those who haven't explored this side of search, it can be intimidating. In this episode of Whiteboard Friday, Britney Muller and a true python expert named Pumpkin offer an intro into a helpful tool that's worth your time to learn.
Click on the whiteboard image above to open a high resolution version in a new tab!
Video Transcription
Hey, Moz fans. Welcome to another edition of Whiteboard Friday. Today we're talking all about introduction to Python, which is why I have a special co-host here. She is a ball python herself, total expert. Her name is Pumpkin, and she's the best.
What is Python?
So what is Python? This has been in the industry a lot lately. There's a lot of commotion that you should know how to use it or know how to talk about it. Python is an open source, object-oriented programming language that was created in 1991.
Simpler to use than R
Some fun facts about Python is it's often compared to R, but it's arguably more simple to use. The syntax just oftentimes feels more simple and common-sense, like when you're new to programming.
Big companies use it
Huge companies use it. NASA, Google, tons of companies out there use it because it's widely supported.
It's open source
It is open source. So pretty cool. While we're going through this Whiteboard Friday, I would love it if we would do a little Python programming today. So I'm just going to ask that you also visit this in another tab, python.org/downloads. Download the version for your computer and we'll get back to that.
Why does Python matter?
So why should you care?
Automates time-consuming tasks
Python is incredibly powerful because it helps you automate time-consuming tasks. It can do these things at scale so that you can free up your time to work on higher-level thinking, to work on more strategy. It's really, really exciting where these things are going.
Log file analysis
Some examples of that are things like log file analysis. Imagine if you could just set up an automated system with Python to alert you any time one of your primary pages wasn't being crawled as frequently as it typically is. You can do all sorts of things. Let's say Google crawls your robots.txt and it throws out a server error, which many of you know causes huge problems. It can alert you. You can set up scripts like that to do really comprehensive tasks.
Internal link analysis
Some other examples, internal link analysis, it can do a really great job of that.
Discover keyword opportunities
It can help you discover keyword opportunities by looking at bulk keyword data and identifying some really important indicators.
Image optimization
It's really great for things like image optimization. It can auto tag and alt text images. It can do really powerful things there.
Scrape websites
It can also scrape the websites that you're working with to do really high volume tasks.
Google Search Console data analysis
It can also pull Google Search Console data and do analysis on those types of things.
I do have a list of all of the individuals within SEO who are currently doing really, really powerful things with Python. I highly suggest you check out some of Hamlet Batista's recent scripts where he's using Python to do all sorts of really cool SEO tasks.
How do you run Python?
What does this even look like? So you've hopefully downloaded Python as a programming language on your computer. But now you need to run it somewhere. Where does that live?
Set up a virtual environment using Terminal
So first you should be setting up a virtual environment. But for the purpose of these examples, I'm just going to ask that you pull up your terminal application.
It looks like this. You could also be running Python within something like Jupyter Notebook or Google Colab. But just pull up your terminal and let's check and make sure that you've downloaded Python properly.
Check to make sure you've downloaded Python properly
So the first thing that you do is you open up the terminal and just type in "python --version." You should see a readout of the version that you downloaded for your computer. That's awesome.
Activate Python and perform basic tasks
So now we're just going to activate Python and do some really basic tasks. So just type in "python" and hit Enter. You should hopefully see these three arrow things within your terminal. From here, you can do something like print ("Hello, World!"). So you enter it exactly like you see it here, hit Enter, and it will say "Hello, World!" which is pretty cool.
You can also do fun things like just basic math. You can add two numbers together using something like this. So these are individual lines. After you complete the print (sum), you'll see the readout of the sum of those two numbers. You can randomly generate numbers. I realize these aren't direct SEO applications, but these are the silly things that give you confidence to run programs like what Hamlet talks about.
Have fun — try creating a random number generator
So I highly suggest you just have fun, create a little random number generator, which is really cool. Mine is pulling random numbers from 0 to 100. You can do 0 to 10 or whatever you'd like. A fun fact, after you hit Enter and you see that random number, if you want to continue, using your up arrow will pull up the last command within your terminal.
It even goes back to these other ones. So that's a really quick way to rerun something like a random number generator. You can just crank out a bunch of them if you want for some reason.
Automating different tasks
This is where you can start to get into really cool scripts as well for pulling URLs using Requests HTML. Then you can pull unique information from web pages.
You can pull at bulk tens of thousands of title tags within a URL list. You can pull things like H1s, canonicals, all sorts of things, and this makes it incredibly easy to do it at scale. One of my favorite ways to pull things from URLs is using xpath within Python.
This is a lot easier than it looks. So this might be an xpath for some websites, but websites are marked up differently. So when you're trying to pull something from a particular site, you can right-click into Chrome Developer Tools. Within Chrome Developer Tools, you can right-click what it is that you're trying to scrape with Python.
You just select "Copy xpath," and it will give you the exact xpath for that website, which is kind of a fun trick if you're getting into some of this stuff.
Libraries
What are libraries? How do we make this stuff more and more powerful? Python is really strong on its own, but what makes it even stronger are these libraries or packages which are add-ons that do incredible things.
This is just a small percentage of libraries that can do things like data collection, cleaning, visualization, processing, and deployment. One of my favorite ways to get some of the more popular packages is just to download Anaconda, because it comes with all of these commonly used, most popular packages.
So it's kind of a nice way to get all of it in one spot or at least most of them.
Learn more
So you've kind of dipped your toes and you kind of understand what Python is and what people are using it for. Where can you learn more? How can you start? Well, Codecademy has a really great Python course, as well as Google, Kaggle, and even the Python.org website have some really great resources that you can check out.
This is a list of individuals I really admire in the SEO space, who are doing incredible work with Python and have all inspired me in different ways. So definitely keep an eye on what they are up to:
Hamlet Batista
Ruth Everett
Tom Donahue
Kristin Tynski
Paul Shapiro
Tyler Reardon
JR Oakes
Hulya Coban
@Jessthebp
But yeah, Pumpkin and I have really enjoyed this, and we hope you did too. So thank you so much for joining us for this special edition of Whiteboard Friday. We will see you soon. Bye, guys.
Video transcription by Speechpad.com
Sign up for The Moz Top 10, a semimonthly mailer updating you on the top ten hottest pieces of SEO news, tips, and rad links uncovered by the Moz team. Think of it as your exclusive digest of stuff you don't have time to hunt down but want to read!
https://ift.tt/2Ndo4Pz BritneyMuller
Posted by BritneyMuller
Python is a programming language that can help you uncover incredible SEO insights and save you time by automating time-consuming tasks. But for those who haven't explored this side of search, it can be intimidating. In this episode of Whiteboard Friday, Britney Muller and a true python expert named Pumpkin offer an intro into a helpful tool that's worth your time to learn.
Click on the whiteboard image above to open a high resolution version in a new tab!
Video Transcription
Hey, Moz fans. Welcome to another edition of Whiteboard Friday. Today we're talking all about introduction to Python, which is why I have a special co-host here. She is a ball python herself, total expert. Her name is Pumpkin, and she's the best.
What is Python?
So what is Python? This has been in the industry a lot lately. There's a lot of commotion that you should know how to use it or know how to talk about it. Python is an open source, object-oriented programming language that was created in 1991.
Simpler to use than R
Some fun facts about Python is it's often compared to R, but it's arguably more simple to use. The syntax just oftentimes feels more simple and common-sense, like when you're new to programming.
Big companies use it
Huge companies use it. NASA, Google, tons of companies out there use it because it's widely supported.
It's open source
It is open source. So pretty cool. While we're going through this Whiteboard Friday, I would love it if we would do a little Python programming today. So I'm just going to ask that you also visit this in another tab, python.org/downloads. Download the version for your computer and we'll get back to that.
Why does Python matter?
So why should you care?
Automates time-consuming tasks
Python is incredibly powerful because it helps you automate time-consuming tasks. It can do these things at scale so that you can free up your time to work on higher-level thinking, to work on more strategy. It's really, really exciting where these things are going.
Log file analysis
Some examples of that are things like log file analysis. Imagine if you could just set up an automated system with Python to alert you any time one of your primary pages wasn't being crawled as frequently as it typically is. You can do all sorts of things. Let's say Google crawls your robots.txt and it throws out a server error, which many of you know causes huge problems. It can alert you. You can set up scripts like that to do really comprehensive tasks.
Internal link analysis
Some other examples, internal link analysis, it can do a really great job of that.
Discover keyword opportunities
It can help you discover keyword opportunities by looking at bulk keyword data and identifying some really important indicators.
Image optimization
It's really great for things like image optimization. It can auto tag and alt text images. It can do really powerful things there.
Scrape websites
It can also scrape the websites that you're working with to do really high volume tasks.
Google Search Console data analysis
It can also pull Google Search Console data and do analysis on those types of things.
I do have a list of all of the individuals within SEO who are currently doing really, really powerful things with Python. I highly suggest you check out some of Hamlet Batista's recent scripts where he's using Python to do all sorts of really cool SEO tasks.
How do you run Python?
What does this even look like? So you've hopefully downloaded Python as a programming language on your computer. But now you need to run it somewhere. Where does that live?
Set up a virtual environment using Terminal
So first you should be setting up a virtual environment. But for the purpose of these examples, I'm just going to ask that you pull up your terminal application.
It looks like this. You could also be running Python within something like Jupyter Notebook or Google Colab. But just pull up your terminal and let's check and make sure that you've downloaded Python properly.
Check to make sure you've downloaded Python properly
So the first thing that you do is you open up the terminal and just type in "python --version." You should see a readout of the version that you downloaded for your computer. That's awesome.
Activate Python and perform basic tasks
So now we're just going to activate Python and do some really basic tasks. So just type in "python" and hit Enter. You should hopefully see these three arrow things within your terminal. From here, you can do something like print ("Hello, World!"). So you enter it exactly like you see it here, hit Enter, and it will say "Hello, World!" which is pretty cool.
You can also do fun things like just basic math. You can add two numbers together using something like this. So these are individual lines. After you complete the print (sum), you'll see the readout of the sum of those two numbers. You can randomly generate numbers. I realize these aren't direct SEO applications, but these are the silly things that give you confidence to run programs like what Hamlet talks about.
Have fun — try creating a random number generator
So I highly suggest you just have fun, create a little random number generator, which is really cool. Mine is pulling random numbers from 0 to 100. You can do 0 to 10 or whatever you'd like. A fun fact, after you hit Enter and you see that random number, if you want to continue, using your up arrow will pull up the last command within your terminal.
It even goes back to these other ones. So that's a really quick way to rerun something like a random number generator. You can just crank out a bunch of them if you want for some reason.
Automating different tasks
This is where you can start to get into really cool scripts as well for pulling URLs using Requests HTML. Then you can pull unique information from web pages.
You can pull at bulk tens of thousands of title tags within a URL list. You can pull things like H1s, canonicals, all sorts of things, and this makes it incredibly easy to do it at scale. One of my favorite ways to pull things from URLs is using xpath within Python.
This is a lot easier than it looks. So this might be an xpath for some websites, but websites are marked up differently. So when you're trying to pull something from a particular site, you can right-click into Chrome Developer Tools. Within Chrome Developer Tools, you can right-click what it is that you're trying to scrape with Python.
You just select "Copy xpath," and it will give you the exact xpath for that website, which is kind of a fun trick if you're getting into some of this stuff.
Libraries
What are libraries? How do we make this stuff more and more powerful? Python is really strong on its own, but what makes it even stronger are these libraries or packages which are add-ons that do incredible things.
This is just a small percentage of libraries that can do things like data collection, cleaning, visualization, processing, and deployment. One of my favorite ways to get some of the more popular packages is just to download Anaconda, because it comes with all of these commonly used, most popular packages.
So it's kind of a nice way to get all of it in one spot or at least most of them.
Learn more
So you've kind of dipped your toes and you kind of understand what Python is and what people are using it for. Where can you learn more? How can you start? Well, Codecademy has a really great Python course, as well as Google, Kaggle, and even the Python.org website have some really great resources that you can check out.
This is a list of individuals I really admire in the SEO space, who are doing incredible work with Python and have all inspired me in different ways. So definitely keep an eye on what they are up to:
Hamlet Batista
Ruth Everett
Tom Donahue
Kristin Tynski
Paul Shapiro
Tyler Reardon
JR Oakes
Hulya Coban
@Jessthebp
But yeah, Pumpkin and I have really enjoyed this, and we hope you did too. So thank you so much for joining us for this special edition of Whiteboard Friday. We will see you soon. Bye, guys.
Video transcription by Speechpad.com
Sign up for The Moz Top 10, a semimonthly mailer updating you on the top ten hottest pieces of SEO news, tips, and rad links uncovered by the Moz team. Think of it as your exclusive digest of stuff you don't have time to hunt down but want to read!
https://ift.tt/2t6uf0J January 09, 2020 at 04:02PM Moz Blog https://moz.com/blog
0 notes
Text
Intro to Python - Whiteboard Friday
Posted by BritneyMuller
Python is a programming language that can help you uncover incredible SEO insights and save you time by automating time-consuming tasks. But for those who haven't explored this side of search, it can be intimidating. In this episode of Whiteboard Friday, Britney Muller and a true python expert named Pumpkin offer an intro into a helpful tool that's worth your time to learn.
Click on the whiteboard image above to open a high resolution version in a new tab!
Video Transcription
Hey, Moz fans. Welcome to another edition of Whiteboard Friday. Today we're talking all about introduction to Python, which is why I have a special co-host here. She is a ball python herself, total expert. Her name is Pumpkin, and she's the best.
What is Python?
So what is Python? This has been in the industry a lot lately. There's a lot of commotion that you should know how to use it or know how to talk about it. Python is an open source, object-oriented programming language that was created in 1991.
Simpler to use than R
Some fun facts about Python is it's often compared to R, but it's arguably more simple to use. The syntax just oftentimes feels more simple and common-sense, like when you're new to programming.
Big companies use it
Huge companies use it. NASA, Google, tons of companies out there use it because it's widely supported.
It's open source
It is open source. So pretty cool. While we're going through this Whiteboard Friday, I would love it if we would do a little Python programming today. So I'm just going to ask that you also visit this in another tab, python.org/downloads. Download the version for your computer and we'll get back to that.
Why does Python matter?
So why should you care?
Automates time-consuming tasks
Python is incredibly powerful because it helps you automate time-consuming tasks. It can do these things at scale so that you can free up your time to work on higher-level thinking, to work on more strategy. It's really, really exciting where these things are going.
Log file analysis
Some examples of that are things like log file analysis. Imagine if you could just set up an automated system with Python to alert you any time one of your primary pages wasn't being crawled as frequently as it typically is. You can do all sorts of things. Let's say Google crawls your robots.txt and it throws out a server error, which many of you know causes huge problems. It can alert you. You can set up scripts like that to do really comprehensive tasks.
Internal link analysis
Some other examples, internal link analysis, it can do a really great job of that.
Discover keyword opportunities
It can help you discover keyword opportunities by looking at bulk keyword data and identifying some really important indicators.
Image optimization
It's really great for things like image optimization. It can auto tag and alt text images. It can do really powerful things there.
Scrape websites
It can also scrape the websites that you're working with to do really high volume tasks.
Google Search Console data analysis
It can also pull Google Search Console data and do analysis on those types of things.
I do have a list of all of the individuals within SEO who are currently doing really, really powerful things with Python. I highly suggest you check out some of Hamlet Batista's recent scripts where he's using Python to do all sorts of really cool SEO tasks.
How do you run Python?
What does this even look like? So you've hopefully downloaded Python as a programming language on your computer. But now you need to run it somewhere. Where does that live?
Set up a virtual environment using Terminal
So first you should be setting up a virtual environment. But for the purpose of these examples, I'm just going to ask that you pull up your terminal application.
It looks like this. You could also be running Python within something like Jupyter Notebook or Google Colab. But just pull up your terminal and let's check and make sure that you've downloaded Python properly.
Check to make sure you've downloaded Python properly
So the first thing that you do is you open up the terminal and just type in "python --version." You should see a readout of the version that you downloaded for your computer. That's awesome.
Activate Python and perform basic tasks
So now we're just going to activate Python and do some really basic tasks. So just type in "python" and hit Enter. You should hopefully see these three arrow things within your terminal. From here, you can do something like print ("Hello, World!"). So you enter it exactly like you see it here, hit Enter, and it will say "Hello, World!" which is pretty cool.
You can also do fun things like just basic math. You can add two numbers together using something like this. So these are individual lines. After you complete the print (sum), you'll see the readout of the sum of those two numbers. You can randomly generate numbers. I realize these aren't direct SEO applications, but these are the silly things that give you confidence to run programs like what Hamlet talks about.
Have fun — try creating a random number generator
So I highly suggest you just have fun, create a little random number generator, which is really cool. Mine is pulling random numbers from 0 to 100. You can do 0 to 10 or whatever you'd like. A fun fact, after you hit Enter and you see that random number, if you want to continue, using your up arrow will pull up the last command within your terminal.
It even goes back to these other ones. So that's a really quick way to rerun something like a random number generator. You can just crank out a bunch of them if you want for some reason.
Automating different tasks
This is where you can start to get into really cool scripts as well for pulling URLs using Requests HTML. Then you can pull unique information from web pages.
You can pull at bulk tens of thousands of title tags within a URL list. You can pull things like H1s, canonicals, all sorts of things, and this makes it incredibly easy to do it at scale. One of my favorite ways to pull things from URLs is using xpath within Python.
This is a lot easier than it looks. So this might be an xpath for some websites, but websites are marked up differently. So when you're trying to pull something from a particular site, you can right-click into Chrome Developer Tools. Within Chrome Developer Tools, you can right-click what it is that you're trying to scrape with Python.
You just select "Copy xpath," and it will give you the exact xpath for that website, which is kind of a fun trick if you're getting into some of this stuff.
Libraries
What are libraries? How do we make this stuff more and more powerful? Python is really strong on its own, but what makes it even stronger are these libraries or packages which are add-ons that do incredible things.
This is just a small percentage of libraries that can do things like data collection, cleaning, visualization, processing, and deployment. One of my favorite ways to get some of the more popular packages is just to download Anaconda, because it comes with all of these commonly used, most popular packages.
So it's kind of a nice way to get all of it in one spot or at least most of them.
Learn more
So you've kind of dipped your toes and you kind of understand what Python is and what people are using it for. Where can you learn more? How can you start? Well, Codecademy has a really great Python course, as well as Google, Kaggle, and even the Python.org website have some really great resources that you can check out.
This is a list of individuals I really admire in the SEO space, who are doing incredible work with Python and have all inspired me in different ways. So definitely keep an eye on what they are up to:
Hamlet Batista
Ruth Everett
Tom Donahue
Kristin Tynski
Paul Shapiro
Tyler Reardon
JR Oakes
Hulya Coban
@Jessthebp
But yeah, Pumpkin and I have really enjoyed this, and we hope you did too. So thank you so much for joining us for this special edition of Whiteboard Friday. We will see you soon. Bye, guys.
Video transcription by Speechpad.com
Sign up for The Moz Top 10, a semimonthly mailer updating you on the top ten hottest pieces of SEO news, tips, and rad links uncovered by the Moz team. Think of it as your exclusive digest of stuff you don't have time to hunt down but want to read!
0 notes
Text
Intro to Python - Whiteboard Friday
Posted by BritneyMuller
Python is a programming language that can help you uncover incredible SEO insights and save you time by automating time-consuming tasks. But for those who haven't explored this side of search, it can be intimidating. In this episode of Whiteboard Friday, Britney Muller and a true python expert named Pumpkin offer an intro into a helpful tool that's worth your time to learn.
Click on the whiteboard image above to open a high resolution version in a new tab!
Video Transcription
Hey, Moz fans. Welcome to another edition of Whiteboard Friday. Today we're talking all about introduction to Python, which is why I have a special co-host here. She is a ball python herself, total expert. Her name is Pumpkin, and she's the best.
What is Python?
So what is Python? This has been in the industry a lot lately. There's a lot of commotion that you should know how to use it or know how to talk about it. Python is an open source, object-oriented programming language that was created in 1991.
Simpler to use than R
Some fun facts about Python is it's often compared to R, but it's arguably more simple to use. The syntax just oftentimes feels more simple and common-sense, like when you're new to programming.
Big companies use it
Huge companies use it. NASA, Google, tons of companies out there use it because it's widely supported.
It's open source
It is open source. So pretty cool. While we're going through this Whiteboard Friday, I would love it if we would do a little Python programming today. So I'm just going to ask that you also visit this in another tab, python.org/downloads. Download the version for your computer and we'll get back to that.
Why does Python matter?
So why should you care?
Automates time-consuming tasks
Python is incredibly powerful because it helps you automate time-consuming tasks. It can do these things at scale so that you can free up your time to work on higher-level thinking, to work on more strategy. It's really, really exciting where these things are going.
Log file analysis
Some examples of that are things like log file analysis. Imagine if you could just set up an automated system with Python to alert you any time one of your primary pages wasn't being crawled as frequently as it typically is. You can do all sorts of things. Let's say Google crawls your robots.txt and it throws out a server error, which many of you know causes huge problems. It can alert you. You can set up scripts like that to do really comprehensive tasks.
Internal link analysis
Some other examples, internal link analysis, it can do a really great job of that.
Discover keyword opportunities
It can help you discover keyword opportunities by looking at bulk keyword data and identifying some really important indicators.
Image optimization
It's really great for things like image optimization. It can auto tag and alt text images. It can do really powerful things there.
Scrape websites
It can also scrape the websites that you're working with to do really high volume tasks.
Google Search Console data analysis
It can also pull Google Search Console data and do analysis on those types of things.
I do have a list of all of the individuals within SEO who are currently doing really, really powerful things with Python. I highly suggest you check out some of Hamlet Batista's recent scripts where he's using Python to do all sorts of really cool SEO tasks.
How do you run Python?
What does this even look like? So you've hopefully downloaded Python as a programming language on your computer. But now you need to run it somewhere. Where does that live?
Set up a virtual environment using Terminal
So first you should be setting up a virtual environment. But for the purpose of these examples, I'm just going to ask that you pull up your terminal application.
It looks like this. You could also be running Python within something like Jupyter Notebook or Google Colab. But just pull up your terminal and let's check and make sure that you've downloaded Python properly.
Check to make sure you've downloaded Python properly
So the first thing that you do is you open up the terminal and just type in "python --version." You should see a readout of the version that you downloaded for your computer. That's awesome.
Activate Python and perform basic tasks
So now we're just going to activate Python and do some really basic tasks. So just type in "python" and hit Enter. You should hopefully see these three arrow things within your terminal. From here, you can do something like print ("Hello, World!"). So you enter it exactly like you see it here, hit Enter, and it will say "Hello, World!" which is pretty cool.
You can also do fun things like just basic math. You can add two numbers together using something like this. So these are individual lines. After you complete the print (sum), you'll see the readout of the sum of those two numbers. You can randomly generate numbers. I realize these aren't direct SEO applications, but these are the silly things that give you confidence to run programs like what Hamlet talks about.
Have fun — try creating a random number generator
So I highly suggest you just have fun, create a little random number generator, which is really cool. Mine is pulling random numbers from 0 to 100. You can do 0 to 10 or whatever you'd like. A fun fact, after you hit Enter and you see that random number, if you want to continue, using your up arrow will pull up the last command within your terminal.
It even goes back to these other ones. So that's a really quick way to rerun something like a random number generator. You can just crank out a bunch of them if you want for some reason.
Automating different tasks
This is where you can start to get into really cool scripts as well for pulling URLs using Requests HTML. Then you can pull unique information from web pages.
You can pull at bulk tens of thousands of title tags within a URL list. You can pull things like H1s, canonicals, all sorts of things, and this makes it incredibly easy to do it at scale. One of my favorite ways to pull things from URLs is using xpath within Python.
This is a lot easier than it looks. So this might be an xpath for some websites, but websites are marked up differently. So when you're trying to pull something from a particular site, you can right-click into Chrome Developer Tools. Within Chrome Developer Tools, you can right-click what it is that you're trying to scrape with Python.
You just select "Copy xpath," and it will give you the exact xpath for that website, which is kind of a fun trick if you're getting into some of this stuff.
Libraries
What are libraries? How do we make this stuff more and more powerful? Python is really strong on its own, but what makes it even stronger are these libraries or packages which are add-ons that do incredible things.
This is just a small percentage of libraries that can do things like data collection, cleaning, visualization, processing, and deployment. One of my favorite ways to get some of the more popular packages is just to download Anaconda, because it comes with all of these commonly used, most popular packages.
So it's kind of a nice way to get all of it in one spot or at least most of them.
Learn more
So you've kind of dipped your toes and you kind of understand what Python is and what people are using it for. Where can you learn more? How can you start? Well, Codecademy has a really great Python course, as well as Google, Kaggle, and even the Python.org website have some really great resources that you can check out.
This is a list of individuals I really admire in the SEO space, who are doing incredible work with Python and have all inspired me in different ways. So definitely keep an eye on what they are up to:
Hamlet Batista
Ruth Everett
Tom Donahue
Kristin Tynski
Paul Shapiro
Tyler Reardon
JR Oakes
Hulya Coban
@Jessthebp
But yeah, Pumpkin and I have really enjoyed this, and we hope you did too. So thank you so much for joining us for this special edition of Whiteboard Friday. We will see you soon. Bye, guys.
Video transcription by Speechpad.com
Sign up for The Moz Top 10, a semimonthly mailer updating you on the top ten hottest pieces of SEO news, tips, and rad links uncovered by the Moz team. Think of it as your exclusive digest of stuff you don't have time to hunt down but want to read!
0 notes
Text
Intro to Python - Whiteboard Friday
Posted by BritneyMuller
Python is a programming language that can help you uncover incredible SEO insights and save you time by automating time-consuming tasks. But for those who haven't explored this side of search, it can be intimidating. In this episode of Whiteboard Friday, Britney Muller and a true python expert named Pumpkin offer an intro into a helpful tool that's worth your time to learn.
Click on the whiteboard image above to open a high resolution version in a new tab!
Video Transcription
Hey, Moz fans. Welcome to another edition of Whiteboard Friday. Today we're talking all about introduction to Python, which is why I have a special co-host here. She is a ball python herself, total expert. Her name is Pumpkin, and she's the best.
What is Python?
So what is Python? This has been in the industry a lot lately. There's a lot of commotion that you should know how to use it or know how to talk about it. Python is an open source, object-oriented programming language that was created in 1991.
Simpler to use than R
Some fun facts about Python is it's often compared to R, but it's arguably more simple to use. The syntax just oftentimes feels more simple and common-sense, like when you're new to programming.
Big companies use it
Huge companies use it. NASA, Google, tons of companies out there use it because it's widely supported.
It's open source
It is open source. So pretty cool. While we're going through this Whiteboard Friday, I would love it if we would do a little Python programming today. So I'm just going to ask that you also visit this in another tab, python.org/downloads. Download the version for your computer and we'll get back to that.
Why does Python matter?
So why should you care?
Automates time-consuming tasks
Python is incredibly powerful because it helps you automate time-consuming tasks. It can do these things at scale so that you can free up your time to work on higher-level thinking, to work on more strategy. It's really, really exciting where these things are going.
Log file analysis
Some examples of that are things like log file analysis. Imagine if you could just set up an automated system with Python to alert you any time one of your primary pages wasn't being crawled as frequently as it typically is. You can do all sorts of things. Let's say Google crawls your robots.txt and it throws out a server error, which many of you know causes huge problems. It can alert you. You can set up scripts like that to do really comprehensive tasks.
Internal link analysis
Some other examples, internal link analysis, it can do a really great job of that.
Discover keyword opportunities
It can help you discover keyword opportunities by looking at bulk keyword data and identifying some really important indicators.
Image optimization
It's really great for things like image optimization. It can auto tag and alt text images. It can do really powerful things there.
Scrape websites
It can also scrape the websites that you're working with to do really high volume tasks.
Google Search Console data analysis
It can also pull Google Search Console data and do analysis on those types of things.
I do have a list of all of the individuals within SEO who are currently doing really, really powerful things with Python. I highly suggest you check out some of Hamlet Batista's recent scripts where he's using Python to do all sorts of really cool SEO tasks.
How do you run Python?
What does this even look like? So you've hopefully downloaded Python as a programming language on your computer. But now you need to run it somewhere. Where does that live?
Set up a virtual environment using Terminal
So first you should be setting up a virtual environment. But for the purpose of these examples, I'm just going to ask that you pull up your terminal application.
It looks like this. You could also be running Python within something like Jupyter Notebook or Google Colab. But just pull up your terminal and let's check and make sure that you've downloaded Python properly.
Check to make sure you've downloaded Python properly
So the first thing that you do is you open up the terminal and just type in "python --version." You should see a readout of the version that you downloaded for your computer. That's awesome.
Activate Python and perform basic tasks
So now we're just going to activate Python and do some really basic tasks. So just type in "python" and hit Enter. You should hopefully see these three arrow things within your terminal. From here, you can do something like print ("Hello, World!"). So you enter it exactly like you see it here, hit Enter, and it will say "Hello, World!" which is pretty cool.
You can also do fun things like just basic math. You can add two numbers together using something like this. So these are individual lines. After you complete the print (sum), you'll see the readout of the sum of those two numbers. You can randomly generate numbers. I realize these aren't direct SEO applications, but these are the silly things that give you confidence to run programs like what Hamlet talks about.
Have fun — try creating a random number generator
So I highly suggest you just have fun, create a little random number generator, which is really cool. Mine is pulling random numbers from 0 to 100. You can do 0 to 10 or whatever you'd like. A fun fact, after you hit Enter and you see that random number, if you want to continue, using your up arrow will pull up the last command within your terminal.
It even goes back to these other ones. So that's a really quick way to rerun something like a random number generator. You can just crank out a bunch of them if you want for some reason.
Automating different tasks
This is where you can start to get into really cool scripts as well for pulling URLs using Requests HTML. Then you can pull unique information from web pages.
You can pull at bulk tens of thousands of title tags within a URL list. You can pull things like H1s, canonicals, all sorts of things, and this makes it incredibly easy to do it at scale. One of my favorite ways to pull things from URLs is using xpath within Python.
This is a lot easier than it looks. So this might be an xpath for some websites, but websites are marked up differently. So when you're trying to pull something from a particular site, you can right-click into Chrome Developer Tools. Within Chrome Developer Tools, you can right-click what it is that you're trying to scrape with Python.
You just select "Copy xpath," and it will give you the exact xpath for that website, which is kind of a fun trick if you're getting into some of this stuff.
Libraries
What are libraries? How do we make this stuff more and more powerful? Python is really strong on its own, but what makes it even stronger are these libraries or packages which are add-ons that do incredible things.
This is just a small percentage of libraries that can do things like data collection, cleaning, visualization, processing, and deployment. One of my favorite ways to get some of the more popular packages is just to download Anaconda, because it comes with all of these commonly used, most popular packages.
So it's kind of a nice way to get all of it in one spot or at least most of them.
Learn more
So you've kind of dipped your toes and you kind of understand what Python is and what people are using it for. Where can you learn more? How can you start? Well, Codecademy has a really great Python course, as well as Google, Kaggle, and even the Python.org website have some really great resources that you can check out.
This is a list of individuals I really admire in the SEO space, who are doing incredible work with Python and have all inspired me in different ways. So definitely keep an eye on what they are up to:
Hamlet Batista
Ruth Everett
Tom Donahue
Kristin Tynski
Paul Shapiro
Tyler Reardon
JR Oakes
Hulya Coban
@Jessthebp
But yeah, Pumpkin and I have really enjoyed this, and we hope you did too. So thank you so much for joining us for this special edition of Whiteboard Friday. We will see you soon. Bye, guys.
Video transcription by Speechpad.com
Sign up for The Moz Top 10, a semimonthly mailer updating you on the top ten hottest pieces of SEO news, tips, and rad links uncovered by the Moz team. Think of it as your exclusive digest of stuff you don't have time to hunt down but want to read!
0 notes
Text
Intro to Python - Whiteboard Friday
Posted by BritneyMuller
Python is a programming language that can help you uncover incredible SEO insights and save you time by automating time-consuming tasks. But for those who haven't explored this side of search, it can be intimidating. In this episode of Whiteboard Friday, Britney Muller and a true python expert named Pumpkin offer an intro into a helpful tool that's worth your time to learn.
Click on the whiteboard image above to open a high resolution version in a new tab!
Video Transcription
Hey, Moz fans. Welcome to another edition of Whiteboard Friday. Today we're talking all about introduction to Python, which is why I have a special co-host here. She is a ball python herself, total expert. Her name is Pumpkin, and she's the best.
What is Python?
So what is Python? This has been in the industry a lot lately. There's a lot of commotion that you should know how to use it or know how to talk about it. Python is an open source, object-oriented programming language that was created in 1991.
Simpler to use than R
Some fun facts about Python is it's often compared to R, but it's arguably more simple to use. The syntax just oftentimes feels more simple and common-sense, like when you're new to programming.
Big companies use it
Huge companies use it. NASA, Google, tons of companies out there use it because it's widely supported.
It's open source
It is open source. So pretty cool. While we're going through this Whiteboard Friday, I would love it if we would do a little Python programming today. So I'm just going to ask that you also visit this in another tab, python.org/downloads. Download the version for your computer and we'll get back to that.
Why does Python matter?
So why should you care?
Automates time-consuming tasks
Python is incredibly powerful because it helps you automate time-consuming tasks. It can do these things at scale so that you can free up your time to work on higher-level thinking, to work on more strategy. It's really, really exciting where these things are going.
Log file analysis
Some examples of that are things like log file analysis. Imagine if you could just set up an automated system with Python to alert you any time one of your primary pages wasn't being crawled as frequently as it typically is. You can do all sorts of things. Let's say Google crawls your robots.txt and it throws out a server error, which many of you know causes huge problems. It can alert you. You can set up scripts like that to do really comprehensive tasks.
Internal link analysis
Some other examples, internal link analysis, it can do a really great job of that.
Discover keyword opportunities
It can help you discover keyword opportunities by looking at bulk keyword data and identifying some really important indicators.
Image optimization
It's really great for things like image optimization. It can auto tag and alt text images. It can do really powerful things there.
Scrape websites
It can also scrape the websites that you're working with to do really high volume tasks.
Google Search Console data analysis
It can also pull Google Search Console data and do analysis on those types of things.
I do have a list of all of the individuals within SEO who are currently doing really, really powerful things with Python. I highly suggest you check out some of Hamlet Batista's recent scripts where he's using Python to do all sorts of really cool SEO tasks.
How do you run Python?
What does this even look like? So you've hopefully downloaded Python as a programming language on your computer. But now you need to run it somewhere. Where does that live?
Set up a virtual environment using Terminal
So first you should be setting up a virtual environment. But for the purpose of these examples, I'm just going to ask that you pull up your terminal application.
It looks like this. You could also be running Python within something like Jupyter Notebook or Google Colab. But just pull up your terminal and let's check and make sure that you've downloaded Python properly.
Check to make sure you've downloaded Python properly
So the first thing that you do is you open up the terminal and just type in "python --version." You should see a readout of the version that you downloaded for your computer. That's awesome.
Activate Python and perform basic tasks
So now we're just going to activate Python and do some really basic tasks. So just type in "python" and hit Enter. You should hopefully see these three arrow things within your terminal. From here, you can do something like print ("Hello, World!"). So you enter it exactly like you see it here, hit Enter, and it will say "Hello, World!" which is pretty cool.
You can also do fun things like just basic math. You can add two numbers together using something like this. So these are individual lines. After you complete the print (sum), you'll see the readout of the sum of those two numbers. You can randomly generate numbers. I realize these aren't direct SEO applications, but these are the silly things that give you confidence to run programs like what Hamlet talks about.
Have fun — try creating a random number generator
So I highly suggest you just have fun, create a little random number generator, which is really cool. Mine is pulling random numbers from 0 to 100. You can do 0 to 10 or whatever you'd like. A fun fact, after you hit Enter and you see that random number, if you want to continue, using your up arrow will pull up the last command within your terminal.
It even goes back to these other ones. So that's a really quick way to rerun something like a random number generator. You can just crank out a bunch of them if you want for some reason.
Automating different tasks
This is where you can start to get into really cool scripts as well for pulling URLs using Requests HTML. Then you can pull unique information from web pages.
You can pull at bulk tens of thousands of title tags within a URL list. You can pull things like H1s, canonicals, all sorts of things, and this makes it incredibly easy to do it at scale. One of my favorite ways to pull things from URLs is using xpath within Python.
This is a lot easier than it looks. So this might be an xpath for some websites, but websites are marked up differently. So when you're trying to pull something from a particular site, you can right-click into Chrome Developer Tools. Within Chrome Developer Tools, you can right-click what it is that you're trying to scrape with Python.
You just select "Copy xpath," and it will give you the exact xpath for that website, which is kind of a fun trick if you're getting into some of this stuff.
Libraries
What are libraries? How do we make this stuff more and more powerful? Python is really strong on its own, but what makes it even stronger are these libraries or packages which are add-ons that do incredible things.
This is just a small percentage of libraries that can do things like data collection, cleaning, visualization, processing, and deployment. One of my favorite ways to get some of the more popular packages is just to download Anaconda, because it comes with all of these commonly used, most popular packages.
So it's kind of a nice way to get all of it in one spot or at least most of them.
Learn more
So you've kind of dipped your toes and you kind of understand what Python is and what people are using it for. Where can you learn more? How can you start? Well, Codecademy has a really great Python course, as well as Google, Kaggle, and even the Python.org website have some really great resources that you can check out.
This is a list of individuals I really admire in the SEO space, who are doing incredible work with Python and have all inspired me in different ways. So definitely keep an eye on what they are up to:
Hamlet Batista
Ruth Everett
Tom Donahue
Kristin Tynski
Paul Shapiro
Tyler Reardon
JR Oakes
Hulya Coban
@Jessthebp
But yeah, Pumpkin and I have really enjoyed this, and we hope you did too. So thank you so much for joining us for this special edition of Whiteboard Friday. We will see you soon. Bye, guys.
Video transcription by Speechpad.com
Sign up for The Moz Top 10, a semimonthly mailer updating you on the top ten hottest pieces of SEO news, tips, and rad links uncovered by the Moz team. Think of it as your exclusive digest of stuff you don't have time to hunt down but want to read!
0 notes