Simple Spell: How to Build a Search Engine

A couple months ago I had a conversation with Gabriel Weinberg, the creator of DuckDuckGo search engine and the writer of one of my favorite business books, Traction. Fascinated by such big search engines as Google, Yahoo and Bing, I wondered “Wow! How could one man write a search engine?” I used to see search engines as something of a black magic that requires hundreds of genius developers to build. Indeed, the search engines that we know today have a ton of functionality, but reading the book Programming Collective Intelligence, I discovered that if we strip all the fluff and fanciness, search engines are not too hard to grok and are actually quite fascinating magical constructs. In this blog, I will explain how you can build your own search engine.

spellbook

Continue reading “Simple Spell: How to Build a Search Engine”

Simple Spell: How to Build a Search Engine

Real world of a full-time magician

When I started my first job out of college, I knew nothing about running a business… I wanted to code, and that is what I thought I would be doing all day long at work. School did not teach me to think of the customer, of finances, or reasons for implementing the features dissected during spring planning.

But once in the real worl..(never mind that phrase, it does not make sense. What world are we in while at school? The lab rat world?). Once we get our first job out of schoo…(nope, too wordy). Once we become full-time magicians (yes!), we realize we do not know anything about how to be software developers.

Continue reading “Real world of a full-time magician”

Real world of a full-time magician

Musings on Magic, Art, and Code

I often think of coders as creatives. Some may disagree, but there is a lot of intersection between developers and artists. For example, a lot of developers I know play guitar and compose their own music. Some even write software for making their music life easier Never well versed in music, I instead concentrate my after-work creative juices on visual art and prose. I go home after a long day of solving fun coding problems and let my left brain relax. Make some clay figurines of Dragon Age Inquisition characters. Draw battling dragons. Write a story or two about urban magic…

cassandra

Continue reading “Musings on Magic, Art, and Code”

Musings on Magic, Art, and Code

The awakening code force

It has been long two weeks of holiday parties, warm Florida sun and goofing off! Now it is time to get back to cold and work as well as my New Year’s resolution.

Resolution

Last year I attended several conferences in Boise, such as Hackfort, Boise Code Camp and develop.Idaho, and what did I see there? During those technical conferences the majority of time women ended up talking  about women in CS. I do not say that we should stop those conversations, but I do say that there is a terrifying shortage of women giving technical talks in those events. QCon was a little better in this regard, but the most popular breakthrough technical talks  were again given by… ahem… men. So my New Year’s resolution this year is to create more opportunities for women to talk about tech. Thus I will talk more about tech as well 😉

I will start now. Continue reading “The awakening code force”

The awakening code force

Open Sourcing Polijuice Potion

Have you ever heard of the phrase “contribute to the open source”? What comes to your mind when you hear it? For me it used to be the question of “how do you get time to do this on top of your regular job?” I was a full-time student working 20 hours a week. I just did not have time for contributing to open source. I knew what it was, but never got to experience it, plus I did not really know how to get started. However, last week I realized something: Continue reading “Open Sourcing Polijuice Potion”

Open Sourcing Polijuice Potion

Hobbits and Aussies: How to teach your computer to learn new things?

Happy Hour of Code week! Today I am going to talk about a really fun topic. Machine learning! What is machine learning?

Have you ever seen a Google car? Have you looked in your email and noticed that some of your emails go directly to your inbox, while others are classified as spam?  These are all examples of machine learning in action.

Your computer is not very smart without you. It does what you tell it to do, well and very fast. But can it learn to do other things? To recognize patterns, just as humans do? Continue reading “Hobbits and Aussies: How to teach your computer to learn new things?”

Hobbits and Aussies: How to teach your computer to learn new things?

Being a Time Lord: Life-long learning

It may be just my Whovian mind, but I see the career of a software developer somewhat being like a Time Lord. You travel through space and time, meet a ton of cool people who you build software for and with, but most importantly you learn, you learn always. Unless you are in a job where you are stuck developing ancient software (very few of those left), odds are the technologies you work with change. A lot. And you have to keep learning them to stay cool and current. How? Continue reading “Being a Time Lord: Life-long learning”

Being a Time Lord: Life-long learning

Code Wars: Choose technology that works for you

Wow, it has been two weeks since I last wrote here! I was traveling to a developer conference called QCon last week and learned a lot about UX and design thinking. It is important to remember that we are developing software for people. But this is a discussion for another time…

starwars

Today I wanted to talk about opinion wars and how they are related to you. There are a lot of opinions floating around in the developer world. Some are good, some are bad. It becomes truly difficult to distinguish which ones are good for you, especially when you are just starting out in this career. Continue reading “Code Wars: Choose technology that works for you”

Code Wars: Choose technology that works for you

How do I negotiate an offer?

I have talked to a lot of women who told me they did not negotiate their salary, and are now making less than the men at their organization for offering the same skills and knowledge. Suffice to say that situation is horribly unfair and wrong. So my advice to you is please, please, please negotiate your salary. For you, for women who come after you. It must be done.

Why?

Why would you want to negotiate your salary? Let’s see..

1. You get to travel more to that one place you have always wanted to see;

tardis

2. a nicer machine;

mass-effect-galaxy-map

3. nicer house;

frozen_castle

4. can go out more often;

Harry Potter and the Sorcerer's Stone (2001) (Screengrab)

5. and finally, it feels good to be treated equally with your co-workers. Because we are all in this together.

firefly

How? Continue reading “How do I negotiate an offer?”

How do I negotiate an offer?

Making your first video game with Twine – Part 2

Two weeks ago, you learned how to start building your own game with Twine. You started writing the adventure of a princess stuck in a tall tower with a dragon. You learned how to create story nodes and transitions in the story as well as adding images.

I have recently watched Anita Sarkeesian’s Damsel in Distress trope reversal video. Damsel in Distress trope is an idea used in a lot of classic video games, such as Mario Brothers, in which a woman is captured and has to be rescued by a straight male protagonist. At the end of the reversal video, Anita describes a story where a princess rescues herself and starts living a life of general badassery. This stroke a chord with me, since we are developing a very similar game idea. Go ahead and watch the video below and get inspired 🙂

Inspired to continue making your own video game? Good! Let’s continue where we stopped last time! So far we have a beginning of the story, that should look something like this when Test Played (use the menu Build -> Test Play):

Screenshot 2015-09-29 05.58.15

If you played video games like Sims, Dragon Age or Mass Effect, you know that those games let you name the characters you create. Let’s add the same functionality to our game!

Rename your “Start” node to “Princess”, like so:

Screenshot 2015-09-29 06.02.58

Create a new node using Screenshot 2015-09-29 06.05.01 icon, name it start and add the text that will allow you to name your princess.

What is the name of the princess? <<textinput $name [[Save|Princess]]>>

If you Test Play now you will see that the code above is rendered as a prompt with text area where you can enter new text and a Save button. The code above creates a textinput, saves whatever has been entered into a variable $name and transitions to the Princess node.

I like to think of a variable as a sticky note. Imagine you are talking to someone on the phone that you do not know. At the beginning of the conversation, you jot their name down on a sticky note so that by the end of the conversation, when you have already forgotten their name, you look back on your sticky note and say “Thank you for your help, <the name from the sticky note>”. Variables in Twine use the same idea. Now let’s Test Play your game. You will see the prompt, the text area and the save button. There is no mention of the $name variable anywhere because it is saved behind the scenes.

Screenshot 2015-09-29 06.13.12

Your Twine game board should look something like this now:

Screenshot 2015-09-29 06.11.20

Even though we are prompting for and saving the princess’s name, we are not using it anywhere in the text. Let’s change that. Go to your Princess node and add the code that will replace the name variable, by the name you entered, as shown in the graphic below.

Screenshot 2015-09-29 06.16.55

If you Test Play your game now, and enter a name for a princess, it will be inserted into the story.

Screenshot 2015-09-29 06.30.44

Screenshot 2015-09-29 06.31.18

Awesomeness! We have learned how to use variables to save and display the name of your princess character. In the next tutorials, I will show you how to use variables for tracking princess’s health as well as having interesting conversations with the dragon. Have a good week, and CodeBrave!

sailormoon

Making your first video game with Twine – Part 2