1<!DOCTYPE html> 2<html lang="en"> 3 4 <head> 5 <meta charset="utf-8"> 6 <meta name="robots" content="all,follow"> 7 <meta name="googlebot" content="index,follow,snippet,archive"> 8 <meta name="viewport" content="width=device-width, initial-scale=1"> 9 <title>Zhian N. Kamvar</title> 10 <meta name="author" content="" /> 11 12 13 <meta name="keywords" content="r"> 14 15 16 17 <meta name="description" content="Zhian N. Kamvar"> 18 19 20 <meta name="generator" content="Hugo 0.56.0" /> 21 22 <link href='//fonts.googleapis.com/css?family=Roboto:400,100,100italic,300,300italic,500,700,800' rel='stylesheet' type='text/css'> 23 <link href="https://fonts.googleapis.com/css?family=Lato" rel="stylesheet" type='text/css'> 24 25 26 <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css"> 27 <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> 28 29 30 <link rel="stylesheet" href="/lib/gallery/css/blueimp-gallery.min.css"> 31 32 33 <link href="https://zkamvar.github.io/css/animate.css" rel="stylesheet"> 34 35 36 37 <link href="https://zkamvar.github.io/css/style.violet.css" rel="stylesheet" id="theme-stylesheet"> 38 39 40 41 <link rel="stylesheet" href="//cdn.bootcss.com/highlight.js/9.11.0/styles/github.min.css"> 42
42<script src="//cdn.bootcss.com/highlight.js/9.11.0/highlight.min.js"></script>
42 43
43<script src="//cdn.bootcss.com/highlight.js/9.11.0/languages/r.min.js"></script>
43 44
44<script>hljs.configure({languages: []}); hljs.initHighlightingOnLoad();</script>
44 45 46 47 48 49 <link href="https://zkamvar.github.io/css/custom.css" rel="stylesheet"> 50 51 52 53 54 55 <link rel="shortcut icon" href="https://zkamvar.github.io/img/favicon.ico" type="image/x-icon" /> 56 <link rel="apple-touch-icon" href="https://zkamvar.github.io/img/apple-touch-icon.png" /> 57 58 59 <link href="https://zkamvar.github.io/css/owl.carousel.css" rel="stylesheet"> 60 <link href="https://zkamvar.github.io/css/owl.theme.css" rel="stylesheet"> 61 62 <link rel="alternate" href="https://zkamvar.github.io/index.xml" type="application/rss+xml" title="Zhian N. Kamvar"> 63 64 65 <meta property="og:title" content="Zhian N. Kamvar" /> 66 <meta property="og:type" content="website" /> 67 <meta property="og:url" content="//" /> 68 <meta property="og:image" content="img/logo.png" /> 69
69<script src="https://hypothes.is/embed.js" async></script>
69 70 71 72 73 74</head> 75 76 77 <body> 78 79 <div id="all"> 80 81 <header> 82 <div class="navbar-affixed-top" data-spy="affix" data-offset-top="200"> 83 84 <div class="navbar navbar-default yamm" role="navigation" id="navbar"> 85 86 <div class="container"> 87 <div class="navbar-header"> 88 <a class="navbar-brand home" href="https://zkamvar.github.io/"> 89 <img src="https://zkamvar.github.io/img/logo.png" alt="Zhian N. Kamvar logo" class="hidden-xs hidden-sm"> 90 <img src="https://zkamvar.github.io/img/logo-small.png" alt="Zhian N. Kamvar logo" class="visible-xs visible-sm"> 91 <span class="sr-only">Zhian N. Kamvar - go to homepage</span> 92 </a> 93 <div class="navbar-buttons"> 94 <button type="button" class="navbar-toggle btn-template-main" data-toggle="collapse" data-target="#navigation"> 95 <span class="sr-only">Toggle Navigation</span> 96 <i class="fa fa-align-justify"></i> 97 </button> 98 </div> 99 </div> 100 101 102 <div class="navbar-collapse collapse" id="navigation"> 103 <ul class="nav navbar-nav navbar-right"> 104 105 <li class="dropdown"> 106 107 <a href="/blog/">Blog</a> 108 109 </li> 110 111 <li class="dropdown"> 112 113 <a href="/about">About</a> 114 115 </li> 116 117 <li class="dropdown"> 118 119 <a href="/pubs">Publications</a> 120 121 </li> 122 123 <li class="dropdown"> 124 125 <a href="/">Home</a> 126 127 </li> 128 129 <li class="dropdown"> 130 131 <a href="https://github.com/zkamvar/CV/blob/master/ZNK_CV.pdf">CV</a> 132 133 </li> 134 135 </ul> 136 </div> 137 138 139 <div class="collapse clearfix" id="search"> 140 141 <form class="navbar-form" role="search"> 142 <div class="input-group"> 143 <input type="text" class="form-control" placeholder="Search"> 144 <span class="input-group-btn"> 145 146 <button type="submit" class="btn btn-template-main"><i class="fa fa-search"></i></button> 147 148 </span> 149 </div> 150 </form> 151 152 </div> 153 154 155 </div> 156 </div> 157 158 159</div> 160 161 162 163 </header> 164 165 166 167<section class="no-mb color-white"> 168 <div class="dark-mask"></div> 169 <div class="container"> 170 <div class="row"> 171 <div class="col-md-8" style="margin-top: 50px"> 172 173 <center> 174 <h1>This site has moved to <a href="https://zkamvar.netlify.com">zkamvar.netlify.com</a></h1> 175 <h3> 176 The content of zkamvar.github.io will no longer be updated, but will be preserved for future reference. 177 </h3> 178 <h1>This site has moved to <a href="https://zkamvar.netlify.com">zkamvar.netlify.com</a></h1> 179 </center> 180 181 </div> 182 183 </div> 184 </div> 185</section> 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207<section class="bar background-white no-mb"> 208 <div class="container"> 209 210 <div class="col-md-12"> 211 <div class="heading text-center"> 212 <h2>My Blog</h2> 213 </div> 214 215 <p class="lead"> 216 Most of the posts will have something to do with R, population genetics, reproducibility, or academia 217 </p> 218 219 220 221 <div class="row"> 222 223 224 225 <div class="col-md-3 col-sm-6"> 226 <div class="box-image-text blog"> 227 <div class="top"> 228 <div class="image" style="overflow:hidden"> 229 230 <img src="https://zkamvar.github.io/img/banners/coffee.jpg" class="img-responsive" alt="" > 231 232 </div> 233 <div class="bg"></div> 234 <div class="text"> 235 <p class="buttons"> 236 <a href="https://zkamvar.github.io/blog/don-t-buy-me-a-coffee/" class="btn btn-template-transparent-primary"><i class="fa fa-link"></i> Read more</a> 237 </p> 238 </div> 239 </div> 240 241 <div class="content"> 242 <h4><a href="https://zkamvar.github.io/blog/don-t-buy-me-a-coffee/">Don't buy me a coffee</a></h4> 243 <p class="author-category"> 244 245 By <a href="#">Zhian N. Kamvar</a> 246
247 on 2019-06-23 248 </p> 249 <p class="intro">tl;dr I don’t get paid to maintain poppr anymore and do so on my own time, so if you use it and value the work that I put into it, please donate to RAICES Texas (https://www.raicestexas.org/donate) to help provide legal services to underserved immigrant and refugee families in the United States. 250 251Last Tuesday, I released poppr version 2.8.3, which fixed a corner case in read.genalex() and enhanced minimum spanning network rendering by drawing single-population nodes as circles instead of pies (with contribution by Frédéric Chevalier).</p> 252 <p class="read-more"> 253 <a href="https://zkamvar.github.io/blog/don-t-buy-me-a-coffee/" class="btn btn-template-main">Continue reading</a> 254 </p> 255 </div> 256 </div> 257 258 259 </div> 260 261 <div class="col-md-3 col-sm-6"> 262 <div class="box-image-text blog"> 263 <div class="top"> 264 <div class="image" style="overflow:hidden"> 265 266 <img src="https://zkamvar.github.io/img/placeholder.png" class="img-responsive" alt=""> 267 268 </div> 269 <div class="bg"></div> 270 <div class="text"> 271 <p class="buttons"> 272 <a href="https://zkamvar.github.io/blog/nice-selection/" class="btn btn-template-transparent-primary"><i class="fa fa-link"></i> Read more</a> 273 </p> 274 </div> 275 </div> 276 277 <div class="content"> 278 <h4><a href="https://zkamvar.github.io/blog/nice-selection/">nice selection</a></h4> 279 <p class="author-category"> 280 281 By <a href="#">Zhian N. Kamvar</a> 282 283 on 2019-06-18 284 </p> 285 <p class="intro">I started writing in R before the tidyverse became a thing and I never really had to think about non-standard evaluation when writing functions. Those days are long past and Iâve recently struggled with the challenge when writing functions for the R4EPIs project, which would stick out like ugly little trolls along side tidyverse functions. 286One of my biggest struggles was trying to figure out how, excactly to select a varaible from a user as either a character string or a bare variable.</p> 287 <p class="read-more"> 288 <a href="https://zkamvar.github.io/blog/nice-selection/" class="btn btn-template-main">Continue reading</a> 289 </p> 290 </div> 291 </div> 292 293 294 </div> 295 296 <div class="col-md-3 col-sm-6"> 297 <div class="box-image-text blog"> 298 <div class="top"> 299 <div class="image" style="overflow:hidden"> 300 301 <img src="https://zkamvar.github.io/img/git-push-fail.gif" class="img-responsive" alt="" > 302 303 </div> 304 <div class="bg"></div> 305 <div class="text"> 306 <p class="buttons"> 307 <a href="https://zkamvar.github.io/blog/2fa-with-github/" class="btn btn-template-transparent-primary"><i class="fa fa-link"></i> Read more</a> 308 </p> 309 </div> 310 </div> 311 312 <div class="content"> 313 <h4><a href="https://zkamvar.github.io/blog/2fa-with-github/">Things I Learned About 2-Factor Authentication on GitHub</a></h4> 314 <p class="author-category"> 315 316 By <a href="#">Zhian N. Kamvar</a> 317
318 on 2019-06-06 319 </p> 320 <p class="intro">Since the end of 2018, I’ve been a part of a collaboration between RECON and MSF called the R4EPIs initiative where we are trying to integrate a more standardized workflow of R for field epidemiologists so that it can be more cost-effective (no license fees) and troubleshooting among epidemiologists can be more effective. We have a repository to host templates for automated situation reports at https://github.com/R4EPI/sitrep. When we created the GitHub organisation, we wanted to make sure that the code being submitted to the repository was genuinely authored by the person and didn’t contain malware from a hijacked account1, so we required 2-factor authentication for the R4EPI github organisation from the start.</p> 321 <p class="read-more"> 322 <a href="https://zkamvar.github.io/blog/2fa-with-github/" class="btn btn-template-main">Continue reading</a> 323 </p> 324 </div> 325 </div> 326 327 328 </div> 329 330 <div class="col-md-3 col-sm-6"> 331 <div class="box-image-text blog"> 332 <div class="top"> 333 <div class="image" style="overflow:hidden"> 334 335 <img src="https://zkamvar.github.io/img/placeholder.png" class="img-responsive" alt=""> 336 337 </div> 338 <div class="bg"></div> 339 <div class="text"> 340 <p class="buttons"> 341 <a href="https://zkamvar.github.io/blog/forum-over-email/" class="btn btn-template-transparent-primary"><i class="fa fa-link"></i> Read more</a> 342 </p> 343 </div> 344 </div> 345 346 <div class="content"> 347 <h4><a href="https://zkamvar.github.io/blog/forum-over-email/">Ask developers questions over forums, not emails</a></h4> 348 <p class="author-category"> 349 350 By <a href="#">Zhian N. Kamvar</a> 351 352 on 2019-05-30 353 </p> 354 <p class="intro">My package, poppr, has been on CRAN for over six years now and it has received more than 400 citations and just north of 70,000 downloads from the RStudio cran mirror. I can think of three reasons why this package has been successful: 355 Our lab gave several workshops using our package over the years We have written extensive documentation with both web site and package documentation. I actively maintain and answer the vast majority of questions that appear on the poppr google group.</p> 356 <p class="read-more"> 357 <a href="https://zkamvar.github.io/blog/forum-over-email/" class="btn btn-template-main">Continue reading</a> 358 </p> 359 </div> 360 </div> 361 362 363 </div> 364 365 366 </div> 367 368 369 370 371 </div> 372 </div> 373 374</section> 375 376 377 378 379 380 381 382 383 384 385 <footer id="footer"> 386 <div class="container"> 387 388 389 <div class="col-md-4 col-sm-6"> 390 <h4>About me</h4> 391 392 I am a population geneticist, data scientist, plant pathologist, and R package developer working at Imperial College, London 393 394 <hr class="hidden-md hidden-lg hidden-sm"> 395 396 </div> 397 398 399 400 <div class="col-md-4 col-sm-6"> 401 402 403 <h4>Recent posts</h4> 404 405 <div class="blog-entries"> 406 407 <div class="item same-height-row clearfix"> 408 <div class="image same-height-always"> 409 <a href="https://zkamvar.github.io/blog/"> 410 411 <img src="https://zkamvar.github.io/img/placeholder.png" class="img-responsive" alt=""> 412 413 </a> 414 </div> 415 <div class="name same-height-always"> 416 <h5><a href="https://zkamvar.github.io/blog/">Blogs</a></h5> 417 </div> 418 </div> 419 420 <div class="item same-height-row clearfix"> 421 <div class="image same-height-always"> 422 <a href="https://zkamvar.github.io/blog/don-t-buy-me-a-coffee/"> 423 424 <img src="https://zkamvar.github.io/img/banners/coffee.jpg" class="img-responsive" alt=""> 425 426 </a> 427 </div> 428 <div class="name same-height-always"> 429 <h5><a href="https://zkamvar.github.io/blog/don-t-buy-me-a-coffee/">Don't buy me a coffee</a></h5> 430 </div> 431 </div> 432 433 <div class="item same-height-row clearfix"> 434 <div class="image same-height-always"> 435 <a href="https://zkamvar.github.io/blog/nice-selection/"> 436 437 <img src="https://zkamvar.github.io/img/placeholder.png" class="img-responsive" alt=""> 438 439 </a> 440 </div> 441 <div class="name same-height-always"> 442 <h5><a href="https://zkamvar.github.io/blog/nice-selection/">nice selection</a></h5> 443 </div> 444 </div> 445 446 </div> 447 448 <hr class="hidden-md hidden-lg"> 449 450 451 </div> 452 453 454 <div class="col-md-4 col-sm-6"> 455 456 <h4>Contact</h4> 457 458 459 <div class="social-entries"> 460 461 <div class="social-entry"> 462 <a href="https://twitter.com/zkamvar"><i class="fa fa-twitter fa-fw"></i>@zkamvar</a> 463 </div> 464 <div class="social-entry"> 465 <a href="https://github.com/zkamvar"><i class="fa fa-github fa-fw"></i>zkamvar</a> 466 </div> 467 468 <div class="social-entry"> 469 <a href="https://stackoverflow.com/users/2752888/znk"><i class="fa fa-stack-overflow fa-fw"></i>2752888/znk</a> 470 </div> 471 <div class="social-entry"> 472 <a href="https://www.researchgate.net/profile/Zhian_Kamvar"><i class="fa fa-pencil fa-fw"></i>Zhian_Kamvar</a> 473 </div> 474 475 <div class="social-entry"> 476 <i class="fa fa-envelope fa-fw"></i> [email protected] 477 </div> 478 <div class="social-entry"> 479 <i class="fa fa-mobile fa-fw"></i> +44 7444 840264 480 </div> 481 </div> 482 483 484 </div> 485 486 </div> 487 488</footer> 489 490 491 492 493 494 495 496 497 498 499 500 501<div id="copyright"> 502 <div class="container"> 503 <div class="col-md-12"> 504 505 <p class="pull-right"> 506 Built with <a href="https://github.com/rstudio/blogdown">blogdown</a> 507 and <a href="https://gohugo.io">hugo</a>. 508 509 <br/> 510 Template by <a href="http://bootstrapious.com/free-templates">Bootstrapious</a>. 511 512 513 Ported to Hugo by <a href="https://github.com/devcows/hugo-universal-theme">DevCows</a>. 514 515 </p> 516 </div> 517 </div> 518</div> 519 520 521 522 523 524 </div> 525 526 527
528<script type="application/javascript"> 529var doNotTrack = false; 530if (!doNotTrack) {
vendor: 339 bytes, lines 530-535
530 531 (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ 532 (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), 533 m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) 534 })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); 535 ga('create', '
535UA-60561808-1
vendor: 39 bytes, lines 535-537
535', 'auto'); 536 537 ga('send', 'pageview');
538} 539</script>
539 540
541<script src="//code.jquery.com/jquery-3.1.1.min.js" integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" crossorigin="anonymous"></script>
vendor: 1 bytes, line 541
541
542<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
542 543
544<script src="//cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js"></script>
vendor: 1 bytes, line 544
544
545<script src="//cdnjs.cloudflare.com/ajax/libs/waypoints/4.0.1/jquery.waypoints.min.js"></script>
vendor: 1 bytes, line 545
545
546<script src="//cdnjs.cloudflare.com/ajax/libs/Counter-Up/1.0/jquery.counterup.min.js"></script>
vendor: 1 bytes, line 546
546
547<script src="//cdnjs.cloudflare.com/ajax/libs/jquery-parallax/1.1.3/jquery-parallax.js"></script>
547 548
549<script src="//maps.googleapis.com/maps/api/js?v=3.exp"></script>
549 550
551<script src="https://zkamvar.github.io/js/hpneo.gmaps.js"></script>
vendor: 1 bytes, line 551
551
552<script src="https://zkamvar.github.io/js/gmaps.init.js"></script>
vendor: 1 bytes, line 552
552
553<script src="https://zkamvar.github.io/js/front.js"></script>
553 554 555
556<script src="https://zkamvar.github.io/js/owl.carousel.min.js"></script>
556 557 558 559 </body> 560</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.