DreamFactory and Interface

I’m delighted to announce that I’ve recently started work with DreamFactory, heading up their community management and developer relations efforts. DreamFactory is an open source project allowing developers to quickly connect datasources to your applications by generating stable, reusable APIs. The DreamFactory team is made up of some of the most intelligent, passionate people I’ve met in some time so I’m also gently nervous about joining the team!


I’m starting out just a few days a week with DreamFactory while I wrap up my work with Yotta. I’ll be gently bonkers and incredibly busy while juggling both projects, so apologies if you’re left waiting for an email or call back. Fussing at me on Twitter is generally a great way to find me.

I’m getting started by jumping right into events with DreamFactory. I’ll be speaking at Interface, two meetups focused on open source APIs and collaboration. I’ll be at Interface London on October 21st and Interface Amsterdam October 23rd. It’s free to attend, so come say hello!


Having recently (and justifiably) been fussed at for ignoring my blog, I thought it was time to pop by and explain what’s been keeping me so busy.

I’m delighted to announce that Naomi Ceder and I (alongside some exceptional sponsors and partners) will be running a one day workshop and hackday combo aimed at the transgender community in London on March 28th. We’re hoping to add an install party and social for the evening of Friday the 27th.TransCode_transparent

We’re looking forward to welcoming a host of transgender participants and allies but are especially eager to welcome those who will be working with code for the first time through the event. We’re running a smaller event, with a maximum of 50 attendees to better provide mentorship for those new to programming. While we’ve aimed to make this as welcoming as possible for code newbies, folks of all skill levels are welcome.

We’re polishing up a Code of Conduct and schedule and look forward to meeting participants and mentors on March 28th at the GoCardless office in central London. Many thanks to our sponsors, GitHub and GoCardless who have been incredibly warm and supportive.

Full details about the event are at trans-code.org and tickets are available via EventBrite. You can follow Trans*Code on Twitter at @trans_code or tweet about us with the hashtag trans_code. We’re also on Lanyrd. We’re just all over the place.


Ignite Liverpool

Last night I gave a short talk on imposter syndrome at Ignite Liverpool. They’ve got a really great group of volunteers, speakers and attendees and I can’t recommend enough that folks in the area make time for their quarterly events. I’ve included slides from my talk and a list of resources and recommended reading.

Images from Mourge File free stock images, Redditor Gabryelx created the Nyan pug and I’ve included the uncited meme image “I have no idea what I’m doing”. If anyone knows where who created this image, please do let me know.

Valarie Young’s advice on combating imposter syndrome comes from her 2010 Forbes interview.

The study first capturing the Dunning-Kreuger effect, “Unskilled and unaware of it: How difficulties in recognizing one’s own incompetence lead to inflated self-assessments.” is available through PyschNET.

I’ll be adding the video of this talk as soon as it’s made available through the Ignite Liverpool YouTube account.

Ladies Who Code Birmingham

Monthly events aimed at programmers who identify as female are now being held in Birmingham. It doesn’t matter if you’re a professional developer or looking to learn to write your first line of code, Ladies Who Code Birmingham is open to all skill levels.

We’ll be supplying cake and good company, we’re looking for some brilliant women to provide the great ideas to make Ladies Who Code a valuable resource here in the West Midlands.


The next Ladies Who Code Birmingham event will be Monday the 19th of May from 6:30pm at the Innovation Birmingham Campus. We’ll be asking for short lightning talks from participants so if you have a great project, pitch or tool you want to share with us, we’re happy to give you the stage. Don’t worry if you’re shy, we’re not planning on bullying anyone into speaking. This is only our second meeting, so we’ll also be looking for direction on what kind of events you would like to see in the future. Further details available at Meetup.com.

Have questions? Need directions? Want to request specific pastries? Drop me an email at jessica(at)closetoclever.com or shout at me on Twitter.

Can’t attend? Let us know how we can make the event more accessible in the comments below.

Transitioning into a Technical Role

On April 29 Innovation Birmingham hosted their first Women in Tech event. I was honored to have been asked to present and look forward to a successful series of similar events to follow. I have included my slides from my talk on moving into a technical role from a non-technical background below.

For anyone who had been interested in attending some of the events I had mentioned in my talk, I’ve listed these below:

Open Code
Ladies Who Code Birmingham
Silicon Canal
West Midlands Ruby User Group
Tech Wednesday
Hackfrence Brum

Interview with Semalt.com

Yesterday I posted about Semalt.com’s crawler and their unusual choice not to have their crawlers identify themselves as web crawlers or obey robots.txt, causing heartaches for analytics loving webmasters across the web. Semalt’s manager Alex Andrianov reached out through twitter and offered to answer some of my questions via email. The exchange is included in whole below.

Hi, thanks for taking the time to chat with me in a bit more detail about Semalt. Happy to update my blog post with factual corrections you’re able to provide.You’ve mentioned on twitter that Semalt does not obey robots.txt, further saying that “can’t change it”. Could you explain in a bit more detail what keeps Semalt’s bots from identifying themselves as bots or obeying robots.txt? Is this a talent issue, where your developers haven’t been able to discover the processes to undertake this, or is this part of a business decision on Semalt’s part?Are there plans in the future to have Semalt’s bots identify themselves properly as crawlers and to obey robots.txt?

You also claimed that my comments at http://www.closetoclever.com/semalt-com/ were incorrect, as I was not a Semalt client. Were there any specific factual errors that you would like to address?

Thanks again for taking the time to answer these,

Jessica Rose


Hello Jessica RoseThanks for your email.First of all I would like to bring apology on behalf of my company if our bots caused you some difficulties. I can assure you, all the visits on your website were accidental. At this moment our specialists are taking drastic actions to prevent these visits. Thank you for pointing to our service drawbacks. We appreciate your help and it is very important to us.

Our service has been launched quite recently and unfortunately there are still some bugs and shortcomings. Please, respect this fact. We are working hard trying to fix the existing errors and I hope soon our users won’t have any claims.

As you might notice, every user can manually remove their URLs from the Semalt database using Semalt Crawler. Furthermore, our Support center specialists are ready to come to the aid and remove URLs from the base once the website owner submits a request. We consider every single request and guarantee that every user will get a proper respond.

We realize this may bring some inconveniences, but unfortunately at the moment we can’t offer another way of solving this issue.

As for the comment posted on your blog, I believe it’s impossible to evaluate all the pros and cons unless you have the complete picture of the service. Probably once you try to use Semalt features you will change your mind.

Anyway, we thank you for your feedback, since we appreciate every opinion relating Semalt.

Sincerely yours,

Semalt LLC manager , Alex Andrianov


Thanks for the response, but would it be possible to have you address my specific questions more directly?1. Are you claiming that your bots’ failure to identify themselves as web crawlers is due to a technical failure?
2. Are you claiming that your bots not obeying robots.txt is due to a technical failure?
3. Do you have plans to make your bots identify themselves as web crawlers?
4. Do you have plans to have your bots comply with robots.txt?Jessie


Dear Jessica,I will try to give the most definite answers to your questions. As I mentioned before our service has recently appeared on the web which causes some technical unavailability. Today we upgrade the web scanning process and adjust our robots. Unfortunately sometimes Semalt bots visit random websites, but we do all our best to solve this problem in the shortest possible time.Thank you for your email and interest to Semalt.com service. Your opinion is very important to us.

Sincerely yours,

Semalt LLC manager, Alex Andrianov

I’m not sure that’s answering much. I’m really looking to find out:1. Will your crawlers be respecting robots.txt after your upgrade?
2. Will your crawlers be identifying themselves as web crawlers after your upgrade?Jessie

He hasn’t yet replied to this email, but responded to tweets on the subject:

What we learned from this exchange:

Nothing, really. There were some vague claims that the problems I’ve listed were “bugs” but no specific addressing of the problems of Semalt bots ignoring robots.txt or failing to properly identify themselves as web crawlers. Apparently several weeks of visits to sites across the web were “accidental”.

Why this is nonsense:

Given how easy creating robots.txt compliant crawlers are, failure of bots to identify themselves as web crawlers or obey robots.txt can only be viewed as a deliberate choice of the designer or gross incompetence. While my technical skills are also substandard, I’m confident that I would be able to put together a simple webcrawler that obeys robots.txt over the weekend (check in on Tuesday, I’ll be posting the results of my efforts). For a professional enterprise who sources data through crawling the web to claim following industry conventions is beyond their technical ability leaves me wondering if they’re fools or liars.

What is Semalt.com?

If you’re keeping track of your website’s traffic through Google Analytics, you’ve probably noticed referral visits from a website called semalt.com in recent weeks. Semalt is a web crawler designed to gather data for Senmalt’s marketing platform. The visits showing up in your logs are automated programs interacting with your site.

The difference between Semalt.com and reputable crawlers

If you look through your Google Analytics referral data, you’ll notice that the other large web crawlers such as Googlebot, MJ12bot, Rogerbot and Bingbot don’t show up in your logs. Semalt’s crawlers showing up in your traffic logs is unusual because most bots identify themselves as web crawlers and will thus be excluded from your traffic data. This results in skewed traffic data, especially for smaller sites for whom semalt.com vists make up a larger percentage of their traffic.

Semalt also doesn’t respect robot.txt (a easy way for webmasters to keep bots from their sites) instead asking that concerned webmasters seek them out and add themselves to a no-crawl list that Semalt maintains. I reached out to Semalt’s Alex Andrianov on twitter to ask if their crawlers were ignoring robots.txt. He confirmed that Semalt.com’s crawler doesn’t respect robots.txt and claimed that they were unable to have it do so.

Twitter exchange with Alex Andrianov of Semalt.com

How to stop semalt.com from visiting your site

As Alex suggests, you can submit your site to Semalt to ask for removal from their crawl at their site though there’s no way to tell if they’ll act on this request. As I’m inclined to distrust crawlers that don’t respect robot.txt I’ve opted to block their access to my site through .htaccess as outlined by logorrhoea.net.

Update 15/4/14: Semalt manager Alex Andrianov suggested that parts of this post may be factually incorrect as I failed to note I am not a Semalt customer. I would like to state that I am not a Semalt client but that I stand by the information listed here are true and welcome any factual corrections.


Strings in Java

We already looked at primitive data types in Java. These primitive types are great if you need to create variables that are whole numbers, numbers with a decimal point, true/false states or single characters. But you’ll often need more than a single character in your code. Here you would use a string, or a single object made of a character or series of characters. We’ll look at how to create strings in Java and how they differ from primitive data types.

Differences between strings and primitive types

When you set a variable to a primitive data type in Java, you’re telling your program to set aside enough memory for this variable. It’s like getting out a box that’s the right size for your variable. If you set a variable to an int, for example, you’re getting out a box just the right size and shape for all but the longest whole numbers. You can change the value of this variable later in your program, think of it as tipping your box over to empty it and refilling it with something else that fits.

Strings in Java are different, right from the start. You may have noticed that all of the primitive types are written in all lower case letters. String needs a capital S. You’ll aslo need to wrap your string in quotation marks. It’s also structurally different. While a primitive data type can be changed again and again by reassigning the value, a string can’t be changed once it it set. If we think of a primitive type variable as a box suitable for holding values of the right type, Strings are more like a signpost, pointing your program back to where you set the value of the string. A primitive type variable carries its value around and can easily be changed, the string just refers back to when it was first set, each time it is used in your code.
difference between primitive types and strings in Java
Strings are objects made up of one or more characters which can include letters, numbers, spaces or other unicode characters. Strings can be made up of the same values as primitive values, though they’ll behave differently. The integer 32 and the string “32” look similar, but they’ll have very different uses. If you’ll need the number to change, through math or other calculations, you’ll want to use the integer. If you want to create an object that just points you back to the fixed value 32, you’ll want the string.

String example = "This is an example of a string."
String blanks = "    "
String birthDate = "01/11/1990"

Printing a string to the console

You can print a string to the console by putting your string inside the brackets of System.out.println(). If you’re using Eclipse, the shortcut for System.out.println() is typing sysout and then control + space bar. Below is code which creates a string called exampleString, sets the value of exampleString to “This is my string” and then prints it to the console.

public class ExampleClass {
	public static void main(String[] args) {
		String exampleString = "This is my string.";

Questions about strings in Java? Ask in the questions below or find me on Twitter.

Seeking Interviews: Non-Traditional Routes to Tech

I’ve loved getting to talk to people about the programming languages they recommend for new learners. So much so that I’m going to continue to welcome interviews on the topic. I’m also going to open up these interviews, looking to get a wide range of perspectives on more topics links to programming and the tech industry. I’m especially interested in conducting interviews with people who have taken a non-traditional route into working in tech, or who are currently attempting to enter the industry through a non traditional route.


If you’re interested and would like to arrange an interview on routes to tech or the programming languages you recommend for beginners, please get in touch at jessica at closetoclever.com, find me on Twitter or comment below to get in touch.

How Do I Add a Google Analytics Tracking Code To WordPress?

Having up to date an accurate data can help you create a world class website. We’ll look at how to add a Google Analytics tracking code to WordPress blogs or sites. This process won’t work for free WordPress sites hosted by WordPress, though you can connect a Google Webmaster Tools account to these sites.

If you haven’t already, you’ll first need to sign up for Google Analytics and add your site to your account.

Click on the admin tab at the top of the screen when logged in to Google Analytics.

Google Analytics amin screen

If you have more than one website, change the property name to the website you would like to get a tracking code for. Now click the “Tracking Info” option, under your property name.
Google Analytics admin screen properties

Click the “Tracking Code” option. This will show your tracking code and the script that you’ll need to insert into your WordPress site.

example Google Analytics tracking code

In another browser window, log into your WordPress dashboard. Along the left hand side panel, select the “Editor” option in the “Appearance” section of the sidebar.
Wordpress side panel

Once you’re in the Editor section, look for the file named “footer.php” in the right hand side of your screen. Open this file in your editor.

look for the footer.php to add your tracking code to

Once you’ve opened the footer.php, scroll to the bottom and find the </body> tag. You’ll copy and paste the script with your Google Analytics code right above this tag.

the footer.php of wordpress

Go back to the browser tab with your Google Anayltics code. Highlight the script and copy all of this into your footer.php, directly above the </body> tag. Be sure to update the file after pasting in this code

wordpress footer.php with google analytics tracking code

You should now be able to verify your tracking code with Google Analytics. After you’ve added your Google Analytics tracking code to WordPress’ footer.php you’ll be able to use your analytics account to see information on your site’s traffic and visitors.

Questions about adding Google Analytics to WordPress sites? Ask in the comments below.