diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..fa95ecb --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +.clj-kondo +.lsp +.calva \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 13441a8..11c8f7d 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -8,6 +8,12 @@ "type": "shell", "command": "boot publish", "problemMatcher": [] + }, + { + "label": "dev", + "type": "shell", + "command": "boot dev", + "problemMatcher": [] } ] } \ No newline at end of file diff --git a/build.boot b/build.boot index b855c17..03fc45f 100644 --- a/build.boot +++ b/build.boot @@ -1,8 +1,8 @@ (set-env! :source-paths #{"src"} :resource-paths #{"content"} - :dependencies '[[perun "0.4.3-SNAPSHOT" :scope "test"] - [hiccup "1.0.5" :exclusions [org.clojure/clojure]] + :dependencies '[[perun "0.5.0-SNAPSHOT" :scope "test"] + [hiccup "2.0.0-alpha2" :exclusions [org.clojure/clojure]] [garden "1.3.10"] [org.martinklepsch/boot-garden "1.3.2-0"] [pandeiro/boot-http "0.8.3" :exclusions [org.clojure/clojure]]]) diff --git a/content/CNAME b/content/CNAME index c5027af..4469a2c 100644 --- a/content/CNAME +++ b/content/CNAME @@ -1 +1 @@ -kaangenc.me \ No newline at end of file +bgenc.net \ No newline at end of file diff --git a/content/extra/kaangenc.gpg b/content/extra/kaangenc.gpg index eb13458..3423016 100644 Binary files a/content/extra/kaangenc.gpg and b/content/extra/kaangenc.gpg differ diff --git a/content/index.markdown b/content/index.markdown index c8859ab..605526d 100644 --- a/content/index.markdown +++ b/content/index.markdown @@ -1,132 +1,12 @@ -I'm a 4th year Computer Science PhD student at the Ohio State University. Over -the duration of my PhD, I have been researching topics in Programming Languages -such as data race detection, and transactional persistent memory. Research that -I led or assisted resulted in several publications, which are listed below. I -also had the opportunity to teach the course Advanced C Programming, and serve -on the Artifact Evaluation Committees of several conferences. +I'm a Software Engineer at [Dendron](https://dendron.so), and a recent Master's +graduate from the Ohio State University. I'm an avid Linux user, an enthusiast +of many programming languages, a [home cook](/recipes/), and an amateur gardener. -Outside the school, I build web and mobile applications for fun. Over the years -I have learned and used many programming languages and technologies, including -JavaScript, TypeScript, React, React Native, Python, Java, C, C++, Clojure, and -Haskell. All my projects are open source, and are available on my [Github +My interests include building web and mobile applications, both at the front and +back end. Over the years I learned and used many programming languages and +technologies, including JavaScript, TypeScript, React, React Native, Python, +Java, C, C++, Clojure, Rust, and Haskell. Pretty much everthing I've worked on is open source and available on my [Github page](https://github.com/SeriousBug). -I am an avid Linux user, having been using it full time for the last 7 years. I -manage several small personal servers, and have experience with Bash scripting, -writing SystemD services, and building and using Docker containers. +I published several papers and participated in academic reviews during graduate school, which you can find [links to here](/publications/). - -# Highlighted Projects - - -
-## image-survey - -A web application to run surveys where users compare 2 images to pick the one -they prefer. Uses a Python backend utilizing asyncio capabilities with the Sanic -web server and SQLite. The front end is a React app, written in JavaScript and -Material-UI. - -[Github](https://github.com/SeriousBug/image-survey) [Demo](https://imagesurvey.kaangenc.me/) -
- - -
-## WorkTime - -Work-in-progress offline-first mobile app for productivity and time management. -Uses React Native with TypeScript, and a PouchDB database on the client side. -Currently planning to add a backend supported by CouchDB to provide -synchronization capabilities. - -[Github](https://github.com/SeriousBug/WorkTime) -
- - -
-## Crafty - -A transactional persistent memory library, written in C. Provides transactional -data storage capabilities to programs by utilizing existing hardware -transactional memory support of processors, combined with the new non-volatile -memory hardware. Allows programs to store and access data efficiently, and -without the need for additional concurrency synchronization. This is the -corresponding implementation for one of my publications listed below. - -[Github](https://github.com/PLaSSticity/Crafty) -
- - -
-## SDP & WDP data race detectors - -Data race detection for Java programs using predictive dynamic data race -analyses. Predictive race analysis looks at a single execution of a program to -detect races that may occur in many other executions. Our analyses use data and -control flow dependence to find more data races compared to other analyses. This -is the corresponding implementation for my publication "Dependence Aware, -Unbounded Sound Predictive Race Detection". - -[Github](https://github.com/PLaSSticity/SDP-WDP-implementation) -
- -
- - - -# Publications - -
-## Crafty: Efficient, HTM-Compatible Persistent Transactions -
Kaan Genç, Michael D. Bond, and Guoqing Harry Xu
-
ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 2020), Online, June 2020
- -[Talk](https://www.youtube.com/watch?v=wdVLlQXV1to) [Paper](https://dl.acm.org/doi/10.1145/3385412.3385991) [Extended Paper](https://arxiv.org/pdf/2004.00262.pdf) [Implementation](https://github.com/PLaSSticity/Crafty) [Poster](/extra/Crafty Poster.pdf) -
- - -
-## Dependence Aware, Unbounded Sound Predictive Race Detection -
Kaan Genç, Jake Roemer, Yufan Xu, and Michael D. Bond
-
ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA 2019), Athens, Greece, October 2019
- -[Talk](https://www.youtube.com/watch?v=YgZWnc31tVQ) [Paper](https://dl.acm.org/doi/10.1145/3360605) [Extended Paper](https://arxiv.org/pdf/1904.13088.pdf) [Implementation](https://github.com/PLaSSticity/SDP-WDP-implementation) [Poster](/extra/DepAware Poster.pdf) -
- - -
-## SmartTrack: Efficient Predictive Race Detection -
Jake Roemer, Kaan Genç, and Michael D. Bond
-
ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 2020), Online, June 2020
- -[Paper](http://web.cse.ohio-state.edu/~mikebond/smarttrack-pldi-2020.pdf) [Extended Paper](https://arxiv.org/pdf/1905.00494.pdf) -
- - -
-## High-Coverage, Unbounded Sound Predictive Race Detection -
Jake Roemer, Kaan Genç, and Michael D. Bond
-
ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 2018), Philadelphia, PA, USA, June 2018
- -[Paper](http://web.cse.ohio-state.edu/~bond.213/vindicator-pldi-2018.pdf) [Extended Paper](http://web.cse.ohio-state.edu/~bond.213/vindicator-pldi-2018-xtr.pdf) -
-
- -# Activities - -[PLDI 2021](https://pldi21.sigplan.org/track/pldi-2021-PLDI-Research-Artifacts) Artifact Evaluation Committee member - -[ASPLOS 2021](https://asplos-conference.org/2021/) Artifact Evaluation Committee member - -[OOPSLA 2020](https://2020.splashcon.org/track/splash-2020-Artifacts) Artifact Evaluation Committee member - - -
-# Other stuff - - -![A picture from a 3-D video game, showing a river flowing into the sea. The text "The Land Itself" is overlayed on the sea.](/img/game-cover.jpg)\ - - -In my free time, I develop small indie video games and release them open source. -
diff --git a/content/publications.md b/content/publications.md new file mode 100644 index 0000000..c6f7b44 --- /dev/null +++ b/content/publications.md @@ -0,0 +1,68 @@ +--- +no-ttr: true +--- + +
+## Crafty: Efficient, HTM-Compatible Persistent Transactions +
Kaan Genç, Michael D. Bond, and Guoqing Harry Xu
+
ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 2020), Online, June 2020
+ +Crafty is a library for transactional storage, built for new non-volatile memory +hardware. Taking advantage of hardware transactional capabilities of modern +CPUs, it provides a low-overhead option that also eliminates the need for +additional concurrency control. + +[Talk](https://www.youtube.com/watch?v=wdVLlQXV1to) [Paper](https://dl.acm.org/doi/10.1145/3385412.3385991) [Extended Paper](https://arxiv.org/pdf/2004.00262.pdf) [Implementation](https://github.com/PLaSSticity/Crafty) [Poster](/extra/Crafty Poster.pdf) +
+ + +
+## Dependence Aware, Unbounded Sound Predictive Race Detection +
Kaan Genç, Jake Roemer, Yufan Xu, and Michael D. Bond
+
ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA 2019), Athens, Greece, October 2019
+ +This paper presents 2 data race detection analyses which analyze a single run of +a program to predict data races that can happen in other runs. These analyses +take advantage of data and control flow dependence to accurately understand how +the analyzed program works, expanding what races can be predicted. + +[Talk](https://www.youtube.com/watch?v=YgZWnc31tVQ) [Extended Paper (updated version)](https://arxiv.org/pdf/1904.13088.pdf) [Paper](https://dl.acm.org/doi/10.1145/3360605) [Corrigendum to paper](https://dl.acm.org/action/downloadSupplement?doi=10.1145%2F3360605&file=3360605-corrigendum.pdf) [Implementation](https://github.com/PLaSSticity/SDP-WDP-implementation) [Poster](/extra/DepAware Poster.pdf) +
+ + +
+## SmartTrack: Efficient Predictive Race Detection +
Jake Roemer, Kaan Genç, and Michael D. Bond
+
ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 2020), Online, June 2020
+ +Predictive data race detection methods greatly improve the number of data races +found, but they typically significantly slow down programs compared to their +non-predictive counterparts. SmartTrack, through improved analyses and clever +algorithms, reduces their overhead to just around non-predictive analyses +without impacting their performance. + +[Paper](http://web.cse.ohio-state.edu/~mikebond/smarttrack-pldi-2020.pdf) [Extended Paper](https://arxiv.org/pdf/1905.00494.pdf) +
+ + +
+## High-Coverage, Unbounded Sound Predictive Race Detection +
Jake Roemer, Kaan Genç, and Michael D. Bond
+
ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 2018), Philadelphia, PA, USA, June 2018
+ +Predictive data race detection methods typically walk a tight line between +predicting more races and avoiding false races. This paper presents a new +analysis that can predict more races, and a method to efficiently eliminate +false races. + +[Paper](http://web.cse.ohio-state.edu/~bond.213/vindicator-pldi-2018.pdf) [Extended Paper](http://web.cse.ohio-state.edu/~bond.213/vindicator-pldi-2018-xtr.pdf) +
+
+ +# Activities + +[PLDI 2021](https://pldi21.sigplan.org/track/pldi-2021-PLDI-Research-Artifacts) Artifact Evaluation Committee member + +[ASPLOS 2021](https://asplos-conference.org/2021/) Artifact Evaluation Committee member + +[OOPSLA 2020](https://2020.splashcon.org/track/splash-2020-Artifacts) Artifact Evaluation Committee member diff --git a/src/site/core.clj b/src/site/core.clj index 71e5f8f..f65418d 100644 --- a/src/site/core.clj +++ b/src/site/core.clj @@ -19,21 +19,17 @@ [:div.sidebar.column (when (not= slug "index") [:a.home {:href "/"} "Home"]) [:img.picture {:alt "A photo of Kaan Genç, after his OOPSLA 2019 talk." :src "/img/profile.jpg"}] - [:div.name "Kaan Genç"] - [:div.title "PhD Student"] - [:div.department "Computer Science & Engineering"] - [:div.affiliation "The Ohio State University"] + [:div.name "Kaan Barmore Genç"] + [:div.title "M.S. Software Engineer"] [:div.spacer] - [:div.title "Software Engineering Intern"] + [:div.title "Software Engineer"] [:div.affiliation [:a {:href "http://dendron.so/"} "Dendron"]] [:div.spacer] - [:span [:a.email {:href "mailto:genc.5@osu.edu"} "genc.5@osu.edu"] [:a.gpg {:href "/extra/kaangenc.gpg"} "GPG key"]] + [:span [:a.email {:href "mailto:kaan@bgenc.net"} "kaan@bgenc.net"] [:a.gpg {:href "/extra/kaangenc.gpg"} "GPG key"]] [:a.github {:href "https://github.com/SeriousBug"} "Github"] [:a.linkedin {:href "https://www.linkedin.com/in/kaan-genc-8489b9205/"} "LinkedIn"] [:a.cv {:href "/extra/cv.pdf"} "CV"] - [:a.blog {:href "/blog/"} "Blog"] - [:a.twitter {:href "https://twitter.com/KaanGencCS"} "Twitter"] - [:a.researchr {:href "https://conf.researchr.org/profile/kaangenc"} "Researchr"]]) + [:a.blog {:href "/blog/"} "Blog"]]) @@ -49,9 +45,9 @@ ;; Blog post [:div.main.column [:h1.post-title (:title post)] - [:div.date "Written at " (-> post :date format-time)] + (when (:date post) [:div.date "Written at " (-> post :date format-time)]) (when (:modified post) [:div.modified "Last edited at " (-> post :modified format-time)]) - [:div.ttr (:word-count post) " words, takes about " (:ttr post) " minutes to read"] + (when (not (:no-ttr post)) [:div.ttr (:word-count post) " words, takes about " (:ttr post) " minutes to read"]) (:content post)]))) diff --git a/src/site/styles.clj b/src/site/styles.clj index a255a37..cbaf335 100644 --- a/src/site/styles.clj +++ b/src/site/styles.clj @@ -2,7 +2,7 @@ (:require [garden.def :refer [defrule defstyles]] [garden.stylesheet :refer [rule]])) -(def textcolor-main "rgba(0, 0, 0, 0.87)") +(def textcolor-main "rgba(255, 255, 255, 0.87)") (defstyles base ; normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css @@ -36,35 +36,35 @@ :flex-wrap "wrap" :justify-content "center" :color textcolor-main - :background-color "#ffead1" + :background-color "#1e1e1e" :font-family "'Ubuntu', sans-serif" :font-size "16px" :line-height 1.2}] - [:a {:text-decoration "none" :color "#ae3100"}] + [:a {:text-decoration "none" :color "#6cf0c5"}] ["a:link"] - ["a:visited" {:color "#932900"}] + ["a:visited" {:color "#25d99e"}] ["a:hover"] ["a:active"] - [".date, .modified, .ttr" {:color "rgba(0, 0, 0, 0.67)" :text-align "right"}] + [".date, .modified, .ttr" {:color "rgba(255, 255, 255, 0.67)" :text-align "right"}] [:.other-stuff {:margin-top "4em"} [:img {:float "left" :max-width "250px" :margin-right "40px"}]] ["code, pre" {:font-size "0.95em" :font-family "'Ubuntu Mono', monospace"}] - ["pre, :not(pre) > code" {:background-color "rgba(0, 0, 0, 0.15)" :overflow-x "auto" + ["pre, :not(pre) > code" {:background-color "rgba(255, 255, 255, 0.15)" :overflow-x "auto" :border-radius "10px" :padding "3px" :margin "-3px 0"}] - [:a.home {:font-size "1.2em" :margin "0 20px"}] + [:a.home {:font-size "1.2em" :margin "0 20px 2em 20px"}] [:.name {:padding "10px 0" :font-size "1.2em"}] [:.publication [:p [:a {:padding "0 10px"}]]] [:.publication [:div {:padding ".2em 10px .2em 30px"}]] ;; Create a separator between publications with the border - [".publication:not(:last-child)" {:border-bottom "1px solid black"}] + [".publication:not(:last-child)" {:border-bottom "1px solid white"}] ;; - [:.conf {:font-size "14px" :color "rgba(0, 0, 0, 0.70)"}] + [:.conf {:font-size "14px" :color "rgba(255, 255, 255, 0.70)"}] [:.spacer {:height "2rem"}])