Skip to content

Instantly share code, notes, and snippets.

View jvican's full-sized avatar

Jorge jvican

View GitHub Profile
@jvican
jvican / hedonic-travel-foodie-guide-madrid.txt
Created December 20, 2022 04:24
A foodie/hedonic travel guide for Madrid
- Plans
- It's important that you walk around Madrid a lot. Madrid is a city to be experienced through walking the different neighborhoods and blending in with the locals.
- Let your intuition led you into great places, and I recommend also checking Google Maps reviews about the places you visit to double check what might be good and bad. Avoid touristy things by avoiding restaurants close to tourist spots and full of tourists. My rule of thumb when traveling is be biased towards places full of locals, follow them.
- The following are some neighborhoods worth digging into: La Latina, Lavapies, Chueca, Tribunal, Atocha, Prado, Retiro, Recoletos, Serrano, Goya, Ñuñez de Balboa, Diego de León, Ríos Rosas, Chamberí, Gaztambide, Arapiles, Iglesia, Quevedo, Azca, Nuevos Ministerios, Bilbao.
- Adopt locals schedule. Lunch and dinner happen at different times of the day, night life starts from 9pm onwards (sometimes even later in some discos or big parties).
- Be biased
@jvican
jvican / RuntimeUtils.scala
Last active November 22, 2019 16:14
Some Scala code that uses Java APIs present in tools.jar (only JDKs) to programmatically produce a jstack-like thread dump. Useful to debug application and test deadlocks.
object RuntimeUtils {
def requestThreadDump: String = {
// Get the PID of the current JVM process
val selfName = java.lang.management.ManagementFactory.getRuntimeMXBean().getName()
val selfPid = selfName.substring(0, selfName.indexOf('@'))
// Attach to the VM
import com.sun.tools.attach.VirtualMachine
import sun.tools.attach.HotSpotVirtualMachine;
val vm = VirtualMachine.attach(selfPid);

Here's an error that I got spuriously but rerunning the compilation made it go away.

[E] [E1] config/src/main/scala-2.11-13/bloop/config/ConfigCodecs.scala:119:42
[E]      Cannot evaluate a parameter of the 'make' macro call for type 'bloop.config.Config.JvmConfig'. It should not depend on code from the same compilation module where the 'make' macro is called. Use a separated submodule of the project to compile all such dependencies before their usage for generation of codecs. Cause:
[E]      java.lang.AssertionError: assertion failed: pkgClass = package <root>, sym = package com, existing = package com (depth=0)
[E]      L119:     JsonCodecMaker.make[Config.JvmConfig](CodecMakerConfig.withTransientEmpty(false))
[E]                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[E] config/src/main/scala-2.11-13/bloop/config/ConfigCodecs.scala: L119 [E1]
@jvican
jvican / metals1.log
Created October 24, 2019 20:06
jstack traces for three Metals processes, out of which two are zombie and one is healthy
2019-10-24 21:58:09
Full thread dump OpenJDK 64-Bit GraalVM CE 19.2.0 (25.222-b08-jvmci-19.2-b02 mixed mode):
"Attach Listener" #450 daemon prio=9 os_prio=0 tid=0x00007f5a1c001000 nid=0x29dee waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"DestroyJavaVM" #449 prio=5 os_prio=0 tid=0x00007f5a8c010800 nid=0x4b72 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"Scala Presentation Compiler []" #434 daemon prio=5 os_prio=0 tid=0x00007f599409b800 nid=0x19419 in Object.wait() [0x00007f58f8bf1000]
{
"version" : "1.1.2",
"project" : {
"name" : "herringbone-impala",
"directory" : "/home/jvican/Code/herringbone/herringbone-impala",
"workspaceDir" : "/home/jvican/Code/herringbone",
"sources" : [
"/home/jvican/Code/herringbone/herringbone-impala/src/main/scala"
],
"dependencies" : [
@jvican
jvican / gist:0f4778e809331ecf15a53b4bb8f381b5
Created September 25, 2019 22:25
coursier-graalvm-native-error.txt
➜ bloop git:(topic/bloopgun) ✗ coursier fetch org.scalameta:sbt-mdoc_2.12:1.3.2 --sbt-plugin --sbt-version 1.0
Exception in thread "main" scala.MatchError: [Ljava.lang.String;@7fa34bbb3580 (of class [Ljava.lang.String;)
at coursier.parse.DependencyParser$.javaOrScalaDependencyParams(DependencyParser.scala:176)
at coursier.parse.DependencyParser$.$anonfun$javaOrScalaDependenciesParams$1(DependencyParser.scala:351)
at coursier.util.Traverse$TraverseOps.$anonfun$validationNelTraverse$1(Traverse.scala:33)
at scala.collection.LinearSeqOptimized.foldLeft(LinearSeqOptimized.scala:126)
at scala.collection.LinearSeqOptimized.foldLeft$(LinearSeqOptimized.scala:122)
at scala.collection.immutable.List.foldLeft(List.scala:89)
at coursier.util.Traverse$TraverseOps.validationNelTraverse(Traverse.scala:26)
at coursier.parse.DependencyParser$.javaOrScalaDependenciesParams(DependencyParser.scala:350)
lazy val bloopgunNative: Project = project
.dependsOn(bloopgun)
.disablePlugins(ScriptedPlugin)
.enablePlugins(SbtProguard)
.enablePlugins(GraalVMNativeImagePlugin)
.settings(testSuiteSettings)
.settings(
name := "bloopgun-native",
proguardOptions in Proguard ++=
Seq("-dontnote", "-dontwarn", "-ignorewarnings", "-dontoptimize"),
[E] java.nio.file.FileSystemException: /var/folders/8z/cdtg5zv95t92h32y30_pdh5c0000gn/T/bloop-test-workspace1019801879423377160/target/A/bloop-bsp-clients-classes: Invalid argument
[E] at sun.nio.fs.UnixException.translateToIOException(UnixException.java:91)
[E] at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
[E] at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)
[E] at sun.nio.fs.UnixFileSystemProvider.createDirectory(UnixFileSystemProvider.java:384)
[E] at java.nio.file.Files.createDirectory(Files.java:674)
[E] at java.nio.file.Files.createAndCheckIsDirectory(Files.java:781)
[E] at java.nio.file.Files.createDirectories(Files.java:767)
[E] at bloop.data.ClientInfo$BspClientInfo.$anonfun$getUniqueClassesDirFor$1(ClientInfo.scala:144)
[E] at bloop.data.ClientInfo$BspClientInfo.$anonfun$getUniqueClassesDirFor$1$adapted(ClientInfo.scala:132)
{
"version" : "1.1.2",
"project" : {
"name" : "frontend-test",
"directory" : "/home/jvican/Code/bloop/frontend",
"sources" : [
"/home/jvican/Code/bloop/frontend/src/test/scala-2.12",
"/home/jvican/Code/bloop/frontend/src/test/scala",
"/home/jvican/Code/bloop/frontend/src/test/java",
"/home/jvican/Code/bloop/frontend/target/scala-2.12/src_managed/test"
@jvican
jvican / sbt-build-stats-git.sh
Created May 3, 2018 21:23
Script to find out the percentage of commits that modified sbt build files in a repository.
#!/bin/bash -
#===============================================================================
#
# FILE: sbt-build-stats-git.sh
#
# USAGE: ./sbt-build-stats-git.sh
#
# DESCRIPTION: Script that outputs what's the percentage of commits in a codebase
# that modified the sbt build files. It can be modified to support
# statistics in other files.