Musings of a dad with too much time on his hands and not enough to do. Wait. Reverse that.

Month: July 2018 (Page 3 of 3)

Career preparation steps

Glassdoor recently published an article on steps one should make when considering a career change.  I think these steps could easily be applied to the high schooler/slash college neophyte making plans for her future.  Let’s take a look at Glassdoor’s steps and I’ll add my two cents:

Figure out where you want to end up

The author should have changed this bullet point to “Write down where you want to end up” because she makes an excellent case for writing down your goals–on paper, electronically, or both.  I would add to that: “and share those goals with someone else.” I’ve heard it said before, and it sounds plausible to me, that sharing your goals with others adds another level of accountability toward achieving them.

Associated with writing down your goals, I recall advice from Stephen Covey about developing and writing out a personal mission statement.  Maybe it came from Covey, as well, is the notion of writing down five-year, ten-year, and lifetime goals. Write your goals, share them, and revise as needed.

Decide what kind of jobs you want to apply to now

Typically, the first question most people pose with regard to determining what sort of job to pursue is, what do you enjoy doing?  What makes you happy? Or, what do you enjoy doing in your spare time (outside of watching Netflix)? I’ll add:

  • What occupations will pay for the lifestyle you wish to lead?  Want a house, kids, and private school? You’ll need a job to cover those expenses.
  • What occupations will still exist in ten years?  I’m sure farriers were in high demand in the 1800s, but that career is all but extinct these days.

For the young person looking at college and beyond, I recommend honest introspection but also honest and diligent research about the job market.

Research how to get there

Yep, more research.  Glassdoor talks about the importance of reaching out to industry professionals and the like.  That seems like sound advice to me. For the student, school advisors and even friends and family are great resources, too.

Take note of industry requirements

Obviously, careers in industries like medicine, law, and accounting require specific certifications.  Even where certificates are not required, I suspect most careers have associated certifications that enhance your appeal to future employers.  As an example, the software development industry has hundreds of certifications. And many of these are quite achievable for the determined individual. Research, once again, is key.

Create more relevant information to add to your resume

This step seems a little oddly-worded to me.  The point is that the job seeker should identify projects and experience related to the new profession she’s pursuing and figure out ways to participate in such projects and experiences.  For the student charting out her career path, internships and co-ops seem appropriate here. What about volunteer work? For example, if you seek a profession in the veterinary industry, perhaps volunteering at the local animal shelter can be an experience you can add to your résumé–or college application–to propel you above the competition.  What opportunities do you have at your school or in your community that could enhance your résumé?

Take action

Glassdoor correctly points out just a few ways folks can prepare themselves for a new industry: online training courses, attending conferences, starting a blog or joining a virtual community in your area of interest, taking on a new role or responsibility at work (or even outside of work) to build your résumé, etc.  These are all perfectly applicable to the young person planning out her future, as well.

Cater your resume to the job you’re applying to

Whether you’re changing careers or applying to a post-secondary school, don’t send a generic cover letter, résumé, and application.  Spend some time tailoring your correspondence to each organization you’re applying to. Your words should reflect the syntax used in the given industry.  Personally, I would even go so far as to looks up the company’s (or college’s) mission statement and core values statement and use those same words in your application.  Yep, another research task. Get used to it.

 

Take a look at that Glassdoor article.  It also includes some links on résumé writing and so forth that seem interesting.  Also, look at my post on preparing for college and career that covers these points and others and has yet more links to helpful tools.

Roots Magic and Jupyter Notebook: like peas and carrots


via GIPHY

Roots Magic seems to be a popular tool among genealogists. At least, the Genealogy Guys certainly recommend it.

I’ve been using the tool for about a year now. My previous genealogy database tool seemed to lock away my data in its own proprietary database confining me to the queries and views exposed only in its user interface. Before I switched away, though, I wanted to make sure my next tool would give me a little more latitude with regard to accessing my data. At a genealogy conference in 2017, I actually had a short conversation with the head honcho himself, Bruce Buzbee, and voiced this concern. Bruce briefly mentioned Roots Magic’s connection with sqlite. Interest piqued, I bought his software and made the switch.

It seems like most of the work exploring the sqlite foundation of Roots Magic has been captured at the site SQLiteToolsForRootsMagic. [Side note: Wikispaces, the platform on which SQLiteToolsForRootsMagic is built is going away, so, by the time you read this, the SQLiteTools site might be no more. Fortunately, the site owners are developing migration plans, so stay tuned.] These folks tend to use clients like SQLiteSpy to run their queries. Nothing wrong with that, but since my favorite development canvas lately is Jupyter Notebook, I asked myself, “Self, could you query a Roots Magic database in Jupyter Notebook?” The answer is: absolutely!  Here are some of the steps I took to query a Roots Magic database in Jupyter Notebook.

Step 1: Import the necessary packages

Load all my go-to packages including pandas and matplotlib as well as sqlite3 and Pivotal’s SQL Magic (SQL Magic isn’t necessary, but it makes writing SQL queries a little nicer):


1
2
3
4
5
6
7
8
9
10
import sqlite3
import pandas as pd
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
import matplotlib.style as style

%load_ext sql_magic
%matplotlib inline
plt.style.use('fivethirtyeight')

Step 2: Connect to my Roots Magic file

For demonstration purposes, I grabbed a copy of George Washington’s family tree and saved it off in Roots Magic.  Connecting to the file is pretty darn easy:


1
2
3
4
# Note that sqlite seems to require a full path to the file you wish to load
conn = sqlite3.connect("C:\\data_files\\qsync_laptop\\jupyter_notebooks\\query_gen_dbs\\GeorgeWashingtonFamilyBig.rmgc")
%config SQL.conn_name='conn'  # useful when using sql_magic
cur = conn.cursor()

Step 3: Go to town!

At this point, the only real challenge is dealing with the COLLATE NOCASE issue, but that’s just a minor inconvenience.  After that, it’s just spending time understanding the Roots Magic database schema and the relationships between tables.  SQLiteToolsForRootsMagic has really blazed the trail here, so I encourage you to spend some time on the site looking over the hundreds of posted queries to get a better understanding of the database schema.

With direct access to the database, you can print out facts about your data that may not be exposed in the Roots Magic user interface:


1
2
3
4
5
6
7
8
9
10
11
12
cur.execute("SELECT OwnerID FROM NameTable")
nbr_of_people = len(cur.fetchall())
cur.execute("SELECT FamilyID FROM FamilyTable")
nbr_of_families = len(cur.fetchall())
cur.execute("SELECT FamilyID FROM FamilyTable")
nbr_of_families = len(cur.fetchall())
cur.execute("SELECT FamilyID FROM EventTable")
nbr_of_events = len(cur.fetchall())

print('This database contains {0} individuals.'.format(nbr_of_people))
print('It includes {0} families.'.format(nbr_of_families))
print('It includes {0} events.'.format(nbr_of_events))

Output:

This database contains 529 individuals.
It includes 114 families.
It includes 2679 events.

Or this:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
%%read_sql df_ages -d
SELECT OwnerID
    ,Surname COLLATE NOCASE AS Surname
    ,Given COLLATE NOCASE AS Given
    ,BirthYear AS BirthYear
    ,DeathYear AS DeathYear
    ,(DeathYear - BirthYear) AS age
FROM NameTable n
WHERE COALESCE(BirthYear, 0) > 0 AND COALESCE(DeathYear, 0) > 0
    AND (age BETWEEN 0 AND 110) --remove anyone over 110 years of age or under 0 as that's a likely error

oldest = df_ages.sort_values('
age', ascending=False).head(1)
youngest = df_ages.sort_values('
age').head(1)
print('
This family tree contains {0} individuals with recorded birth and death dates.'.format(df_ages.shape[0]))
print('
The oldest person in the tree is {0} {1} at age {2}.'.format(oldest.Given.values[0], oldest.Surname.values[0],
                                                                   oldest.age.values[0]))
print('
The youngest person in the tree is {0} {1} at age {2}.'.format(youngest.Given.values[0], youngest.Surname.values[0],
                                                                      youngest.age.values[0]))
print('
The average age for family members in this tree is {0:.1f} years.'.format(df_ages.age.mean()))
print('
The median age for family members in this tree is {0:.1f} years.'.format(df_ages.age.median()))

Output:

This family tree contains 192 individuals with recorded birth and death dates.
The oldest person in the tree is John WASHINGTON at age 99.
The youngest person in the tree is Mildred WASHINGTON at age 1.
The average age for family members in this tree is 52.9 years.
The median age for family members in this tree is 52.0 years.

How about some charts?

You can find this work and more on my Github page.

Newer posts »

© 2024 DadOverflow.com

Theme by Anders NorenUp ↑