├── .github └── workflows │ └── test.yml ├── .gitignore ├── .nvmrc ├── .prettierignore ├── .prettierrc ├── .vscode ├── launch.json ├── settings.json └── tasks.json ├── LICENSE.md ├── README.md ├── babel-plugin-macros.config.js ├── gatsby-browser.js ├── gatsby-config.js ├── gatsby-node.js ├── gatsby-ssr.js ├── netlify.toml ├── package-lock.json ├── package.json └── src ├── assets ├── brands │ ├── Bosch Rexroth AG@8x.png │ ├── Extraordy B@8x.png │ ├── GH Campus Experts 1@8x.png │ ├── GitHub.png │ ├── ILS@8x.png │ ├── JUG Milano@8x.png │ ├── LibreItalia.png │ ├── LibreOffice@8x.png │ ├── PCOfficina@8x.png │ ├── POuL@8x.png │ ├── RedHat A@8x.png │ ├── SUSE@8x.png │ ├── Universita Milano Bicocca.png │ ├── Vimelug@8x.png │ ├── WordPress Meetup Milano@8x.png │ └── brands.yml ├── ear-piece.svg ├── favicon.svg ├── favicon_foot.svg ├── favicon_foot_transparent.svg ├── foot.svg ├── images │ ├── event-bg.jpg │ ├── hero.jpg │ ├── sponsor-bg.jpg │ └── talk-subscription.png ├── logo_simple.svg └── watch.svg ├── components ├── footer.jsx ├── header.jsx ├── hero.jsx ├── layout.jsx └── seo.jsx ├── gatsby-types.d.ts ├── pages ├── 404.jsx ├── codeofconduct.jsx ├── index.jsx ├── schedule-printable.jsx └── schedule.jsx ├── schedules ├── year_2018.yml ├── year_2019.yml ├── year_2022.yml ├── year_2023.yml └── year_2024.yml └── styles ├── base.scss ├── components ├── footer.scss ├── header.scss └── hero.scss ├── main.scss ├── pages └── index.scss └── values.scss /.github/workflows/test.yml: -------------------------------------------------------------------------------- 1 | name: Test 2 | 3 | on: 4 | push: 5 | branches: [master, main] 6 | pull_request: 7 | workflow_dispatch: 8 | 9 | jobs: 10 | build: 11 | name: Build 12 | runs-on: ubuntu-20.04 13 | steps: 14 | - uses: actions/checkout@v4 15 | - uses: actions/setup-node@v3 16 | with: 17 | cache: npm 18 | - run: npm ci 19 | - run: npm run build 20 | 21 | lint: 22 | name: Lint 23 | runs-on: ubuntu-20.04 24 | steps: 25 | - uses: actions/checkout@v4 26 | - uses: actions/setup-node@v3 27 | with: 28 | cache: npm 29 | - run: npm ci 30 | - run: npm run lint 31 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | # Created by https://www.gitignore.io/api/vim,node,linux,macos,emacs,windows,eclipse,sublimetext,intellij+all,visualstudio,visualstudiocode 3 | # Edit at https://www.gitignore.io/?templates=vim,node,linux,macos,emacs,windows,eclipse,sublimetext,intellij+all,visualstudio,visualstudiocode 4 | 5 | ### Eclipse ### 6 | .metadata 7 | bin/ 8 | tmp/ 9 | *.tmp 10 | *.bak 11 | *.swp 12 | *~.nib 13 | local.properties 14 | .settings/ 15 | .loadpath 16 | .recommenders 17 | 18 | # External tool builders 19 | .externalToolBuilders/ 20 | 21 | # Locally stored "Eclipse launch configurations" 22 | *.launch 23 | 24 | # PyDev specific (Python IDE for Eclipse) 25 | *.pydevproject 26 | 27 | # CDT-specific (C/C++ Development Tooling) 28 | .cproject 29 | 30 | # CDT- autotools 31 | .autotools 32 | 33 | # Java annotation processor (APT) 34 | .factorypath 35 | 36 | # PDT-specific (PHP Development Tools) 37 | .buildpath 38 | 39 | # sbteclipse plugin 40 | .target 41 | 42 | # Tern plugin 43 | .tern-project 44 | 45 | # TeXlipse plugin 46 | .texlipse 47 | 48 | # STS (Spring Tool Suite) 49 | .springBeans 50 | 51 | # Code Recommenders 52 | .recommenders/ 53 | 54 | # Annotation Processing 55 | .apt_generated/ 56 | 57 | # Scala IDE specific (Scala & Java development for Eclipse) 58 | .cache-main 59 | .scala_dependencies 60 | .worksheet 61 | 62 | ### Eclipse Patch ### 63 | # Eclipse Core 64 | .project 65 | 66 | # JDT-specific (Eclipse Java Development Tools) 67 | .classpath 68 | 69 | # Annotation Processing 70 | .apt_generated 71 | 72 | .sts4-cache/ 73 | 74 | ### Emacs ### 75 | # -*- mode: gitignore; -*- 76 | *~ 77 | \#*\# 78 | /.emacs.desktop 79 | /.emacs.desktop.lock 80 | *.elc 81 | auto-save-list 82 | tramp 83 | .\#* 84 | 85 | # Org-mode 86 | .org-id-locations 87 | *_archive 88 | 89 | # flymake-mode 90 | *_flymake.* 91 | 92 | # eshell files 93 | /eshell/history 94 | /eshell/lastdir 95 | 96 | # elpa packages 97 | /elpa/ 98 | 99 | # reftex files 100 | *.rel 101 | 102 | # AUCTeX auto folder 103 | /auto/ 104 | 105 | # cask packages 106 | .cask/ 107 | dist/ 108 | 109 | # Flycheck 110 | flycheck_*.el 111 | 112 | # server auth directory 113 | /server/ 114 | 115 | # projectiles files 116 | .projectile 117 | 118 | # directory configuration 119 | .dir-locals.el 120 | 121 | # network security 122 | /network-security.data 123 | 124 | 125 | ### Intellij+all ### 126 | # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm 127 | # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 128 | 129 | # User-specific stuff 130 | .idea/**/workspace.xml 131 | .idea/**/tasks.xml 132 | .idea/**/usage.statistics.xml 133 | .idea/**/dictionaries 134 | .idea/**/shelf 135 | 136 | # Generated files 137 | .idea/**/contentModel.xml 138 | 139 | # Sensitive or high-churn files 140 | .idea/**/dataSources/ 141 | .idea/**/dataSources.ids 142 | .idea/**/dataSources.local.xml 143 | .idea/**/sqlDataSources.xml 144 | .idea/**/dynamic.xml 145 | .idea/**/uiDesigner.xml 146 | .idea/**/dbnavigator.xml 147 | 148 | # Gradle 149 | .idea/**/gradle.xml 150 | .idea/**/libraries 151 | 152 | # Gradle and Maven with auto-import 153 | # When using Gradle or Maven with auto-import, you should exclude module files, 154 | # since they will be recreated, and may cause churn. Uncomment if using 155 | # auto-import. 156 | # .idea/modules.xml 157 | # .idea/*.iml 158 | # .idea/modules 159 | # *.iml 160 | # *.ipr 161 | 162 | # CMake 163 | cmake-build-*/ 164 | 165 | # Mongo Explorer plugin 166 | .idea/**/mongoSettings.xml 167 | 168 | # File-based project format 169 | *.iws 170 | 171 | # IntelliJ 172 | out/ 173 | 174 | # mpeltonen/sbt-idea plugin 175 | .idea_modules/ 176 | 177 | # JIRA plugin 178 | atlassian-ide-plugin.xml 179 | 180 | # Cursive Clojure plugin 181 | .idea/replstate.xml 182 | 183 | # Crashlytics plugin (for Android Studio and IntelliJ) 184 | com_crashlytics_export_strings.xml 185 | crashlytics.properties 186 | crashlytics-build.properties 187 | fabric.properties 188 | 189 | # Editor-based Rest Client 190 | .idea/httpRequests 191 | 192 | # Android studio 3.1+ serialized cache file 193 | .idea/caches/build_file_checksums.ser 194 | 195 | ### Intellij+all Patch ### 196 | # Ignores the whole .idea folder and all .iml files 197 | # See https://github.com/joeblau/gitignore.io/issues/186 and https://github.com/joeblau/gitignore.io/issues/360 198 | 199 | .idea/ 200 | 201 | # Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-249601023 202 | 203 | *.iml 204 | modules.xml 205 | .idea/misc.xml 206 | *.ipr 207 | 208 | # Sonarlint plugin 209 | .idea/sonarlint 210 | 211 | ### Linux ### 212 | 213 | # temporary files which can be created if a process still has a handle open of a deleted file 214 | .fuse_hidden* 215 | 216 | # KDE directory preferences 217 | .directory 218 | 219 | # Linux trash folder which might appear on any partition or disk 220 | .Trash-* 221 | 222 | # .nfs files are created when an open file is removed but is still being accessed 223 | .nfs* 224 | 225 | ### macOS ### 226 | # General 227 | .DS_Store 228 | .AppleDouble 229 | .LSOverride 230 | 231 | # Icon must end with two \r 232 | Icon 233 | 234 | # Thumbnails 235 | ._* 236 | 237 | # Files that might appear in the root of a volume 238 | .DocumentRevisions-V100 239 | .fseventsd 240 | .Spotlight-V100 241 | .TemporaryItems 242 | .Trashes 243 | .VolumeIcon.icns 244 | .com.apple.timemachine.donotpresent 245 | 246 | # Directories potentially created on remote AFP share 247 | .AppleDB 248 | .AppleDesktop 249 | Network Trash Folder 250 | Temporary Items 251 | .apdisk 252 | 253 | ### Node ### 254 | # Logs 255 | logs 256 | *.log 257 | npm-debug.log* 258 | yarn-debug.log* 259 | yarn-error.log* 260 | lerna-debug.log* 261 | 262 | # Diagnostic reports (https://nodejs.org/api/report.html) 263 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 264 | 265 | # Runtime data 266 | pids 267 | *.pid 268 | *.seed 269 | *.pid.lock 270 | 271 | # Directory for instrumented libs generated by jscoverage/JSCover 272 | lib-cov 273 | 274 | # Coverage directory used by tools like istanbul 275 | coverage 276 | *.lcov 277 | 278 | # nyc test coverage 279 | .nyc_output 280 | 281 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 282 | .grunt 283 | 284 | # Bower dependency directory (https://bower.io/) 285 | bower_components 286 | 287 | # node-waf configuration 288 | .lock-wscript 289 | 290 | # Compiled binary addons (https://nodejs.org/api/addons.html) 291 | build/Release 292 | 293 | # Dependency directories 294 | node_modules/ 295 | jspm_packages/ 296 | 297 | # TypeScript v1 declaration files 298 | typings/ 299 | 300 | # TypeScript cache 301 | *.tsbuildinfo 302 | 303 | # Optional npm cache directory 304 | .npm 305 | 306 | # Optional eslint cache 307 | .eslintcache 308 | 309 | # Optional REPL history 310 | .node_repl_history 311 | 312 | # Output of 'npm pack' 313 | *.tgz 314 | 315 | # Yarn Integrity file 316 | .yarn-integrity 317 | 318 | # dotenv environment variables file 319 | .env 320 | .env.test 321 | 322 | # parcel-bundler cache (https://parceljs.org/) 323 | .cache 324 | 325 | # next.js build output 326 | .next 327 | 328 | # nuxt.js build output 329 | .nuxt 330 | 331 | # vuepress build output 332 | .vuepress/dist 333 | 334 | # Serverless directories 335 | .serverless/ 336 | 337 | # FuseBox cache 338 | .fusebox/ 339 | 340 | # DynamoDB Local files 341 | .dynamodb/ 342 | 343 | ### SublimeText ### 344 | # Cache files for Sublime Text 345 | *.tmlanguage.cache 346 | *.tmPreferences.cache 347 | *.stTheme.cache 348 | 349 | # Workspace files are user-specific 350 | *.sublime-workspace 351 | 352 | # Project files should be checked into the repository, unless a significant 353 | # proportion of contributors will probably not be using Sublime Text 354 | # *.sublime-project 355 | 356 | # SFTP configuration file 357 | sftp-config.json 358 | 359 | # Package control specific files 360 | Package Control.last-run 361 | Package Control.ca-list 362 | Package Control.ca-bundle 363 | Package Control.system-ca-bundle 364 | Package Control.cache/ 365 | Package Control.ca-certs/ 366 | Package Control.merged-ca-bundle 367 | Package Control.user-ca-bundle 368 | oscrypto-ca-bundle.crt 369 | bh_unicode_properties.cache 370 | 371 | # Sublime-github package stores a github token in this file 372 | # https://packagecontrol.io/packages/sublime-github 373 | GitHub.sublime-settings 374 | 375 | ### Vim ### 376 | # Swap 377 | [._]*.s[a-v][a-z] 378 | [._]*.sw[a-p] 379 | [._]s[a-rt-v][a-z] 380 | [._]ss[a-gi-z] 381 | [._]sw[a-p] 382 | 383 | # Session 384 | Session.vim 385 | Sessionx.vim 386 | 387 | # Temporary 388 | .netrwhist 389 | # Auto-generated tag files 390 | tags 391 | # Persistent undo 392 | [._]*.un~ 393 | 394 | ### VisualStudioCode ### 395 | .vscode/* 396 | !.vscode/settings.json 397 | !.vscode/tasks.json 398 | !.vscode/launch.json 399 | !.vscode/extensions.json 400 | 401 | ### VisualStudioCode Patch ### 402 | # Ignore all local history of files 403 | .history 404 | 405 | ### Windows ### 406 | # Windows thumbnail cache files 407 | Thumbs.db 408 | Thumbs.db:encryptable 409 | ehthumbs.db 410 | ehthumbs_vista.db 411 | 412 | # Dump file 413 | *.stackdump 414 | 415 | # Folder config file 416 | [Dd]esktop.ini 417 | 418 | # Recycle Bin used on file shares 419 | $RECYCLE.BIN/ 420 | 421 | # Windows Installer files 422 | *.cab 423 | *.msi 424 | *.msix 425 | *.msm 426 | *.msp 427 | 428 | # Windows shortcuts 429 | *.lnk 430 | 431 | ### VisualStudio ### 432 | ## Ignore Visual Studio temporary files, build results, and 433 | ## files generated by popular Visual Studio add-ons. 434 | ## 435 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore 436 | 437 | # User-specific files 438 | *.rsuser 439 | *.suo 440 | *.user 441 | *.userosscache 442 | *.sln.docstates 443 | 444 | # User-specific files (MonoDevelop/Xamarin Studio) 445 | *.userprefs 446 | 447 | # Mono auto generated files 448 | mono_crash.* 449 | 450 | # Build results 451 | [Dd]ebug/ 452 | [Dd]ebugPublic/ 453 | [Rr]elease/ 454 | [Rr]eleases/ 455 | x64/ 456 | x86/ 457 | [Aa][Rr][Mm]/ 458 | [Aa][Rr][Mm]64/ 459 | bld/ 460 | [Bb]in/ 461 | [Oo]bj/ 462 | [Ll]og/ 463 | 464 | # Visual Studio 2015/2017 cache/options directory 465 | .vs/ 466 | # Uncomment if you have tasks that create the project's static files in wwwroot 467 | #wwwroot/ 468 | 469 | # Visual Studio 2017 auto generated files 470 | Generated\ Files/ 471 | 472 | # MSTest test Results 473 | [Tt]est[Rr]esult*/ 474 | [Bb]uild[Ll]og.* 475 | 476 | # NUnit 477 | *.VisualState.xml 478 | TestResult.xml 479 | nunit-*.xml 480 | 481 | # Build Results of an ATL Project 482 | [Dd]ebugPS/ 483 | [Rr]eleasePS/ 484 | dlldata.c 485 | 486 | # Benchmark Results 487 | BenchmarkDotNet.Artifacts/ 488 | 489 | # .NET Core 490 | project.lock.json 491 | project.fragment.lock.json 492 | artifacts/ 493 | 494 | # StyleCop 495 | StyleCopReport.xml 496 | 497 | # Files built by Visual Studio 498 | *_i.c 499 | *_p.c 500 | *_h.h 501 | *.ilk 502 | *.meta 503 | *.obj 504 | *.iobj 505 | *.pch 506 | *.pdb 507 | *.ipdb 508 | *.pgc 509 | *.pgd 510 | *.rsp 511 | *.sbr 512 | *.tlb 513 | *.tli 514 | *.tlh 515 | *.tmp_proj 516 | *_wpftmp.csproj 517 | *.vspscc 518 | *.vssscc 519 | .builds 520 | *.pidb 521 | *.svclog 522 | *.scc 523 | 524 | # Chutzpah Test files 525 | _Chutzpah* 526 | 527 | # Visual C++ cache files 528 | ipch/ 529 | *.aps 530 | *.ncb 531 | *.opendb 532 | *.opensdf 533 | *.sdf 534 | *.cachefile 535 | *.VC.db 536 | *.VC.VC.opendb 537 | 538 | # Visual Studio profiler 539 | *.psess 540 | *.vsp 541 | *.vspx 542 | *.sap 543 | 544 | # Visual Studio Trace Files 545 | *.e2e 546 | 547 | # TFS 2012 Local Workspace 548 | $tf/ 549 | 550 | # Guidance Automation Toolkit 551 | *.gpState 552 | 553 | # ReSharper is a .NET coding add-in 554 | _ReSharper*/ 555 | *.[Rr]e[Ss]harper 556 | *.DotSettings.user 557 | 558 | # JustCode is a .NET coding add-in 559 | .JustCode 560 | 561 | # TeamCity is a build add-in 562 | _TeamCity* 563 | 564 | # DotCover is a Code Coverage Tool 565 | *.dotCover 566 | 567 | # AxoCover is a Code Coverage Tool 568 | .axoCover/* 569 | !.axoCover/settings.json 570 | 571 | # Visual Studio code coverage results 572 | *.coverage 573 | *.coveragexml 574 | 575 | # NCrunch 576 | _NCrunch_* 577 | .*crunch*.local.xml 578 | nCrunchTemp_* 579 | 580 | # MightyMoose 581 | *.mm.* 582 | AutoTest.Net/ 583 | 584 | # Web workbench (sass) 585 | .sass-cache/ 586 | 587 | # Installshield output folder 588 | [Ee]xpress/ 589 | 590 | # DocProject is a documentation generator add-in 591 | DocProject/buildhelp/ 592 | DocProject/Help/*.HxT 593 | DocProject/Help/*.HxC 594 | DocProject/Help/*.hhc 595 | DocProject/Help/*.hhk 596 | DocProject/Help/*.hhp 597 | DocProject/Help/Html2 598 | DocProject/Help/html 599 | 600 | # Click-Once directory 601 | publish/ 602 | 603 | # Publish Web Output 604 | *.[Pp]ublish.xml 605 | *.azurePubxml 606 | # Note: Comment the next line if you want to checkin your web deploy settings, 607 | # but database connection strings (with potential passwords) will be unencrypted 608 | *.pubxml 609 | *.publishproj 610 | 611 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 612 | # checkin your Azure Web App publish settings, but sensitive information contained 613 | # in these scripts will be unencrypted 614 | PublishScripts/ 615 | 616 | # NuGet Packages 617 | *.nupkg 618 | # NuGet Symbol Packages 619 | *.snupkg 620 | # The packages folder can be ignored because of Package Restore 621 | **/[Pp]ackages/* 622 | # except build/, which is used as an MSBuild target. 623 | !**/[Pp]ackages/build/ 624 | # Uncomment if necessary however generally it will be regenerated when needed 625 | #!**/[Pp]ackages/repositories.config 626 | # NuGet v3's project.json files produces more ignorable files 627 | *.nuget.props 628 | *.nuget.targets 629 | 630 | # Microsoft Azure Build Output 631 | csx/ 632 | *.build.csdef 633 | 634 | # Microsoft Azure Emulator 635 | ecf/ 636 | rcf/ 637 | 638 | # Windows Store app package directories and files 639 | AppPackages/ 640 | BundleArtifacts/ 641 | Package.StoreAssociation.xml 642 | _pkginfo.txt 643 | *.appx 644 | *.appxbundle 645 | *.appxupload 646 | 647 | # Visual Studio cache files 648 | # files ending in .cache can be ignored 649 | *.[Cc]ache 650 | # but keep track of directories ending in .cache 651 | !?*.[Cc]ache/ 652 | 653 | # Others 654 | ClientBin/ 655 | ~$* 656 | *.dbmdl 657 | *.dbproj.schemaview 658 | *.jfm 659 | *.pfx 660 | *.publishsettings 661 | orleans.codegen.cs 662 | 663 | # Including strong name files can present a security risk 664 | # (https://github.com/github/gitignore/pull/2483#issue-259490424) 665 | #*.snk 666 | 667 | # Since there are multiple workflows, uncomment next line to ignore bower_components 668 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 669 | #bower_components/ 670 | 671 | # RIA/Silverlight projects 672 | Generated_Code/ 673 | 674 | # Backup & report files from converting an old project file 675 | # to a newer Visual Studio version. Backup files are not needed, 676 | # because we have git ;-) 677 | _UpgradeReport_Files/ 678 | Backup*/ 679 | UpgradeLog*.XML 680 | UpgradeLog*.htm 681 | ServiceFabricBackup/ 682 | *.rptproj.bak 683 | 684 | # SQL Server files 685 | *.mdf 686 | *.ldf 687 | *.ndf 688 | 689 | # Business Intelligence projects 690 | *.rdl.data 691 | *.bim.layout 692 | *.bim_*.settings 693 | *.rptproj.rsuser 694 | *- [Bb]ackup.rdl 695 | *- [Bb]ackup ([0-9]).rdl 696 | *- [Bb]ackup ([0-9][0-9]).rdl 697 | 698 | # Microsoft Fakes 699 | FakesAssemblies/ 700 | 701 | # GhostDoc plugin setting file 702 | *.GhostDoc.xml 703 | 704 | # Node.js Tools for Visual Studio 705 | .ntvs_analysis.dat 706 | 707 | # Visual Studio 6 build log 708 | *.plg 709 | 710 | # Visual Studio 6 workspace options file 711 | *.opt 712 | 713 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 714 | *.vbw 715 | 716 | # Visual Studio LightSwitch build output 717 | **/*.HTMLClient/GeneratedArtifacts 718 | **/*.DesktopClient/GeneratedArtifacts 719 | **/*.DesktopClient/ModelManifest.xml 720 | **/*.Server/GeneratedArtifacts 721 | **/*.Server/ModelManifest.xml 722 | _Pvt_Extensions 723 | 724 | # Paket dependency manager 725 | .paket/paket.exe 726 | paket-files/ 727 | 728 | # FAKE - F# Make 729 | .fake/ 730 | 731 | # CodeRush personal settings 732 | .cr/personal 733 | 734 | # Python Tools for Visual Studio (PTVS) 735 | __pycache__/ 736 | *.pyc 737 | 738 | # Cake - Uncomment if you are using it 739 | # tools/** 740 | # !tools/packages.config 741 | 742 | # Tabs Studio 743 | *.tss 744 | 745 | # Telerik's JustMock configuration file 746 | *.jmconfig 747 | 748 | # BizTalk build output 749 | *.btp.cs 750 | *.btm.cs 751 | *.odx.cs 752 | *.xsd.cs 753 | 754 | # OpenCover UI analysis results 755 | OpenCover/ 756 | 757 | # Azure Stream Analytics local run output 758 | ASALocalRun/ 759 | 760 | # MSBuild Binary and Structured Log 761 | *.binlog 762 | 763 | # NVidia Nsight GPU debugger configuration file 764 | *.nvuser 765 | 766 | # MFractors (Xamarin productivity tool) working folder 767 | .mfractor/ 768 | 769 | # Local History for Visual Studio 770 | .localhistory/ 771 | 772 | # BeatPulse healthcheck temp database 773 | healthchecksdb 774 | 775 | # Backup folder for Package Reference Convert tool in Visual Studio 2017 776 | MigrationBackup/ 777 | 778 | # End of https://www.gitignore.io/api/vim,node,linux,macos,emacs,windows,eclipse,sublimetext,intellij+all,visualstudio,visualstudiocode 779 | # Custom rules (everything added below won't be overriden by 'Generate .gitignore File' if you use 'Update' option) 780 | 781 | .cache/ 782 | # Build directory 783 | public/ -------------------------------------------------------------------------------- /.nvmrc: -------------------------------------------------------------------------------- 1 | v20.18.0 2 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | .cache 2 | package-lock.json 3 | public -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "quoteProps": "as-needed", 3 | "jsxSingleQuote": true, 4 | "singleQuote": false, 5 | "trailingComma": "es5", 6 | "bracketSpacing": true, 7 | "bracketSameLine": false, 8 | "arrowParens": "always", 9 | "endOfLine": "auto" 10 | } 11 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | // Usare IntelliSense per informazioni sui possibili attributi. 3 | // Al passaggio del mouse vengono visualizzate le descrizioni degli attributi esistenti. 4 | // Per ulteriori informazioni, visitare: https://go.microsoft.com/fwlink/?linkid=830387 5 | "version": "0.2.0", 6 | "configurations": [ 7 | { 8 | "type": "node", 9 | "request": "launch", 10 | "name": "Gatsby Develop", 11 | "program": "${workspaceRoot}/node_modules/gatsby/dist/bin/gatsby", 12 | "args": ["develop"], 13 | "protocol": "inspector", 14 | "cwd": "${workspaceFolder}", 15 | "sourceMaps": false, 16 | "stopOnEntry": false, 17 | "console": "integratedTerminal" 18 | } 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "files.exclude": { 3 | ".cache": true, 4 | ".vs": true, 5 | "**/node_modules": true 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | // Vedere https://go.microsoft.com/fwlink/?LinkId=733558 3 | // per la documentazione relativa al formato tasks.json 4 | "version": "2.0.0", 5 | "tasks": [ 6 | { 7 | "type": "npm", 8 | "script": "build", 9 | "problemMatcher": [ 10 | { 11 | "pattern": [ 12 | { 13 | "regexp": "Gatsby may not be installed", 14 | "file": 1, 15 | "location": 2, 16 | "message": 3 17 | } 18 | ] 19 | }, 20 | "$node-sass" 21 | ] 22 | }, 23 | { 24 | "type": "npm", 25 | "script": "develop", 26 | "problemMatcher": [] 27 | } 28 | ] 29 | } 30 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | # The MIT License (MIT) 2 | 3 | Copyright © 2018 Kowalski7cc 4 | 5 | Permission is hereby granted, free of charge, to any person 6 | obtaining a copy of this software and associated documentation 7 | files (the “Software”), to deal in the Software without 8 | restriction, including without limitation the rights to use, 9 | copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | copies of the Software, and to permit persons to whom the 11 | Software is furnished to do so, subject to the following 12 | conditions: 13 | 14 | The above copyright notice and this permission notice shall be 15 | included in all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, 18 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 19 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 20 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 21 | HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 22 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 23 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 24 | OTHER DEALINGS IN THE SOFTWARE. 25 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Linux Day Milano 2 | 3 | Linux Day is the main Italian event dedicated to GNU / Linux, free software, open culture and sharing. 4 | 5 | Common topics are Linux, Open Source software and hardware, Open Source in the world of education and as alternatives to proprietary software, learning through Do It Yourself and programming and development techniques 6 | 7 | Learn more at 8 | 9 | ## Set Up Your Development Environment 10 | 11 | Before starting you will need the following software: 12 | 13 | - [Node.js](https://www.gatsbyjs.org/tutorial/part-zero/#install-nodejs) 14 | - [Git](https://www.gatsbyjs.org/tutorial/part-zero/#install-git) 15 | - [Gatsby-cli](https://www.gatsbyjs.org/tutorial/part-zero/#using-the-gatsby-cli) 16 | 17 | ## How to build 18 | 19 | ```bash 20 | npm install 21 | npm run develop 22 | # Edit source files 23 | npm run build 24 | # Publish public folder content or use Netlify plugin 25 | ``` 26 | 27 | ## Deploy to Netlify 28 | 29 | [![Deploy to Netlify](https://www.netlify.com/img/deploy/button.svg)](https://app.netlify.com/start/deploy?repository=https://github.com/unixMiB/LinuxDayMilano) 30 | 31 | ## License 32 | 33 | The site is covered by MIT License 34 | -------------------------------------------------------------------------------- /babel-plugin-macros.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | "fontawesome-svg-core": { 3 | license: "free", 4 | }, 5 | }; 6 | -------------------------------------------------------------------------------- /gatsby-browser.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Implement Gatsby's Browser APIs in this file. 3 | * 4 | * See: https://www.gatsbyjs.org/docs/browser-apis/ 5 | */ 6 | 7 | import "./src/styles/main.scss"; 8 | import { config } from "@fortawesome/fontawesome-svg-core"; 9 | config.autoAddCss = false; 10 | 11 | export const onServiceWorkerUpdateReady = () => { 12 | // Change me to a react toast 13 | 14 | const answer = window.confirm( 15 | `Il sito è stato aggiornato. ` + 16 | `Ricaricare per visualizzare la versione aggiornata?` 17 | ); 18 | if (answer === true) { 19 | window.location.reload(); 20 | } 21 | }; 22 | -------------------------------------------------------------------------------- /gatsby-config.js: -------------------------------------------------------------------------------- 1 | const path = require("path"); 2 | const fs = require("fs"); 3 | 4 | function getCurrentBranchName(p = process.cwd()) { 5 | const gitHeadPath = `${p}/.git/HEAD`; 6 | 7 | return fs.existsSync(p) 8 | ? fs.existsSync(gitHeadPath) 9 | ? fs.readFileSync(gitHeadPath, "utf-8").trim().split("/")[2] 10 | : getCurrentBranchName(path.resolve(p, "..")) 11 | : false; 12 | } 13 | 14 | const branch = getCurrentBranchName() || "master"; 15 | const prod = branch === "master"; 16 | 17 | module.exports = { 18 | siteMetadata: { 19 | title: prod ? "Linux Day Milano" : "Linux Day Milano (" + branch + ")", 20 | description: 21 | "Manifestazione italiana dedicata a GNU/Linux, al software libero, alla cultura aperta e alla condivisione.", 22 | keywords: 23 | "Linux Day, Milano, GNU, GNU/Linux, Open Source, Software Libero, Condivisione", 24 | author: "unixMiB (https://unixmib.org)", 25 | theme: "#343a40", 26 | navbarVariant: "dark", 27 | siteUrl: "https://linuxdaymilano.org/", 28 | switches: { 29 | schedule: true, 30 | cfp: false, 31 | sponsor_submit: false, 32 | year_switcher: true, 33 | }, 34 | event: { 35 | date: new Date("2024-10-26"), 36 | time: "9:00", 37 | topic: "", 38 | cfp: "https://survey.linux.it/index.php/315635", 39 | cfs: "https://survey.linux.it/index.php/769265", 40 | arguments: [ 41 | "Linux, software e hardware Open Source", 42 | "Open Source nel mondo dell'istruzione", 43 | "Alternative open a software proprietari", 44 | "Innovazione nel mondo dell'Open Source", 45 | "L'apprendimento mediante il Do It Yourself", 46 | "Programmazione e tecniche di sviluppo", 47 | ], 48 | }, 49 | contacts: { 50 | email: "info@unixmib.org", 51 | website: "https://unixmib.org", 52 | place: { 53 | name: "Università Milano Bicocca", 54 | street: "Piazza dell'Ateneo Nuovo, 1", 55 | building: "Edificio U6, primo piano", 56 | cap: "20126 Milano MI", 57 | }, 58 | }, 59 | }, 60 | graphqlTypegen: true, 61 | plugins: [ 62 | "gatsby-plugin-react-helmet", 63 | { 64 | resolve: "gatsby-plugin-brotli", 65 | options: { 66 | extensions: ["css", "html", "js", "svg"], 67 | }, 68 | }, 69 | { 70 | resolve: `gatsby-plugin-sass`, 71 | options: { 72 | implementation: require("sass"), 73 | }, 74 | }, 75 | { 76 | resolve: "gatsby-plugin-canonical-urls", 77 | options: { 78 | siteUrl: "https://linuxdaymilano.org/", 79 | }, 80 | }, 81 | "gatsby-transformer-yaml", 82 | { 83 | resolve: "gatsby-plugin-manifest", 84 | options: { 85 | name: prod ? "Linux Day Milano" : "Linux Day Milano (" + branch + ")", 86 | short_name: prod ? "LDMI" : "LDMI λ", 87 | start_url: "/", 88 | lang: "it", 89 | icon_options: { 90 | purpose: "any", 91 | }, 92 | description: "Sito ufficiale del Linux Day Milano", 93 | background_color: "#212529", 94 | theme_color: "#212529", 95 | display: "minimal-ui", 96 | icon: "./src/assets/favicon_foot_transparent.svg", 97 | }, 98 | }, 99 | { 100 | resolve: "gatsby-source-filesystem", 101 | options: { 102 | name: "brands", 103 | path: path.join(__dirname, "src", "assets", "brands"), 104 | }, 105 | }, 106 | { 107 | resolve: "gatsby-source-filesystem", 108 | options: { 109 | name: "images", 110 | path: path.join(__dirname, "src", "assets", "images"), 111 | }, 112 | }, 113 | { 114 | resolve: "gatsby-source-filesystem", 115 | options: { 116 | name: "schedules", 117 | path: path.join(__dirname, "src", "schedules"), 118 | }, 119 | }, 120 | "gatsby-plugin-offline", 121 | { 122 | resolve: "gatsby-plugin-robots-txt", 123 | options: { 124 | recachePages: [`/`, `/schedule`, `/404`], 125 | policy: [ 126 | { 127 | userAgent: "*", 128 | allow: "/", 129 | }, 130 | ], 131 | }, 132 | }, 133 | "gatsby-plugin-sitemap", 134 | { 135 | resolve: "gatsby-plugin-sharp", 136 | options: { 137 | useMozJpeg: true, 138 | stripMetadata: true, 139 | defaultQuality: 80, 140 | }, 141 | }, 142 | "gatsby-transformer-sharp", 143 | "gatsby-plugin-image", 144 | { 145 | resolve: "gatsby-transformer-remark", 146 | options: { 147 | plugins: [ 148 | { 149 | resolve: "gatsby-remark-images", 150 | options: { 151 | maxWidth: 1920, 152 | linkImagesToOriginal: true, 153 | quality: 70, 154 | withWebp: true, 155 | }, 156 | }, 157 | ], 158 | }, 159 | }, 160 | "gatsby-plugin-catch-links", 161 | { 162 | resolve: "gatsby-plugin-netlify", 163 | options: { 164 | headers: { 165 | "/sw.js": ["Cache-Control: no-cache"], 166 | "/*": [ 167 | "Permissions-Policy: autoplay=(),camera=(),fullscreen=(self),geolocation=(),microphone=(),payment=()", 168 | "Strict-Transport-Security: max-age=63072000; includeSubdomains; preload", 169 | "X-Content-Type-Options: nosniff", 170 | "Referrer-Policy: no-referrer", 171 | ], 172 | }, 173 | mergeSecurityHeaders: true, 174 | //mergeLinkHeaders: true, 175 | mergeCachingHeaders: true, 176 | }, 177 | }, 178 | { 179 | resolve: "gatsby-plugin-nprogress", 180 | options: { 181 | color: "gray", 182 | showSpinner: false, 183 | }, 184 | }, 185 | ], 186 | }; 187 | -------------------------------------------------------------------------------- /gatsby-node.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Implement Gatsby's Node APIs in this file. 3 | * 4 | * See: https://www.gatsbyjs.org/docs/node-apis/ 5 | */ 6 | 7 | // You can delete this file if you're not using it 8 | 9 | exports.createPages = ({ actions }) => { 10 | const { createRedirect } = actions; 11 | 12 | createRedirect({ 13 | fromPath: "https://linuxdaymilano.netlify.com/*", 14 | toPath: "https://linuxdaymilano.org/:splat", 15 | redirectInBrowser: true, 16 | isPermanent: true, 17 | force: true, 18 | }); 19 | 20 | // TODO: Improve me 21 | createRedirect({ 22 | fromPath: "https://linuxdaymilano.org/2022", 23 | toPath: "https://linuxdaymilano.org/schedule?year=2022", 24 | redirectInBrowser: true, 25 | isPermanent: true, 26 | force: true, 27 | }); 28 | 29 | createRedirect({ 30 | fromPath: "https://linuxdaymilano.org/2019", 31 | toPath: "https://linuxdaymilano.org/schedule?year=2019", 32 | redirectInBrowser: true, 33 | isPermanent: true, 34 | force: true, 35 | }); 36 | 37 | createRedirect({ 38 | fromPath: "https://linuxdaymilano.org/2018", 39 | toPath: "https://linuxdaymilano.org/schedule?year=2018", 40 | redirectInBrowser: true, 41 | isPermanent: true, 42 | force: true, 43 | }); 44 | }; 45 | exports.createSchemaCustomization = ({ actions }) => { 46 | const { createTypes } = actions; 47 | const typeDefs = ` 48 | type SiteSiteMetadataEvent implements Node { 49 | topic: String 50 | } 51 | `; 52 | createTypes(typeDefs); 53 | }; 54 | -------------------------------------------------------------------------------- /gatsby-ssr.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Implement Gatsby's SSR (Server Side Rendering) APIs in this file. 3 | * 4 | * See: https://www.gatsbyjs.org/docs/ssr-apis/ 5 | */ 6 | 7 | // You can delete this file if you're not using it 8 | -------------------------------------------------------------------------------- /netlify.toml: -------------------------------------------------------------------------------- 1 | [[plugins]] 2 | package = "netlify-plugin-gatsby-cache" 3 | 4 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "linuxdaymilano", 3 | "description": "Manifestazione italiana dedicata a GNU/Linux, al software libero, alla cultura aperta e alla condivisione", 4 | "version": "2.2.0", 5 | "author": "Kowalski7cc ", 6 | "dependencies": { 7 | "@fortawesome/fontawesome-free": "^6.5.2", 8 | "@fortawesome/fontawesome-svg-core": "^6.5.2", 9 | "@fortawesome/free-brands-svg-icons": "^6.5.2", 10 | "@fortawesome/free-regular-svg-icons": "^6.5.2", 11 | "@fortawesome/free-solid-svg-icons": "^6.5.2", 12 | "@fortawesome/react-fontawesome": "^0.2.2", 13 | "bootstrap": "^5.3.3", 14 | "gatsby": "^5.12.9", 15 | "gatsby-plugin-image": "^3.12.3", 16 | "gatsby-plugin-brotli": "^2.1.0", 17 | "gatsby-plugin-catch-links": "^5.12.0", 18 | "gatsby-plugin-manifest": "^5.12.3", 19 | "gatsby-plugin-canonical-urls": "^5.12.0", 20 | "gatsby-plugin-netlify": "^5.1.1", 21 | "gatsby-plugin-nprogress": "^5.12.0", 22 | "gatsby-plugin-offline": "^6.12.3", 23 | "gatsby-plugin-react-helmet": "^6.12.0", 24 | "gatsby-plugin-robots-txt": "^1.8.0", 25 | "gatsby-plugin-sass": "^6.12.3", 26 | "gatsby-plugin-sharp": "^5.12.3", 27 | "gatsby-plugin-sitemap": "^6.12.3", 28 | "gatsby-remark-images": "^7.12.3", 29 | "gatsby-source-filesystem": "^5.12.1", 30 | "gatsby-transformer-json": "^5.12.0", 31 | "gatsby-transformer-remark": "^6.12.3", 32 | "gatsby-transformer-sharp": "^5.12.3", 33 | "gatsby-transformer-yaml": "^5.12.0", 34 | "react-bootstrap": "^2.10.3", 35 | "react-helmet": "^6.1.0", 36 | "sass": "^1.77.6", 37 | "sharp": "^0.33.4", 38 | "react": "^18.3.1" 39 | }, 40 | "keywords": [ 41 | "kowalski7cc" 42 | ], 43 | "license": "MIT", 44 | "main": "n/a", 45 | "scripts": { 46 | "build": "gatsby build --verbose", 47 | "develop": "ENABLE_GATSBY_REFRESH_ENDPOINT=true gatsby develop -H 0.0.0.0 -o --inspect", 48 | "debug": "node --nolazy --inspect-brk node_modules/.bin/gatsby develop", 49 | "clean": "gatsby clean", 50 | "lint": "prettier --check \"**/*.{js,jsx,json,md,yml}\"", 51 | "format": "prettier --write \"**/*.{js,jsx,json,md,yml}\"", 52 | "start": "npm run develop", 53 | "serve": "gatsby serve -H 0.0.0.0 -o", 54 | "test": "echo \"Write tests! -> https://gatsby.dev/unit-testing\" && exit 1" 55 | }, 56 | "devDependencies": { 57 | "gatsby-cli": "5.13.3", 58 | "prettier": "^3.3.2" 59 | }, 60 | "repository": { 61 | "type": "git", 62 | "url": "https://github.com/kowalski7cc/gatsby-starter-kowalski7cc" 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /src/assets/brands/Bosch Rexroth AG@8x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unixMiB/LinuxDayMilano/57d82f0298a885e8b7fc668704f71d6bc88c99e4/src/assets/brands/Bosch Rexroth AG@8x.png -------------------------------------------------------------------------------- /src/assets/brands/Extraordy B@8x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unixMiB/LinuxDayMilano/57d82f0298a885e8b7fc668704f71d6bc88c99e4/src/assets/brands/Extraordy B@8x.png -------------------------------------------------------------------------------- /src/assets/brands/GH Campus Experts 1@8x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unixMiB/LinuxDayMilano/57d82f0298a885e8b7fc668704f71d6bc88c99e4/src/assets/brands/GH Campus Experts 1@8x.png -------------------------------------------------------------------------------- /src/assets/brands/GitHub.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unixMiB/LinuxDayMilano/57d82f0298a885e8b7fc668704f71d6bc88c99e4/src/assets/brands/GitHub.png -------------------------------------------------------------------------------- /src/assets/brands/ILS@8x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unixMiB/LinuxDayMilano/57d82f0298a885e8b7fc668704f71d6bc88c99e4/src/assets/brands/ILS@8x.png -------------------------------------------------------------------------------- /src/assets/brands/JUG Milano@8x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unixMiB/LinuxDayMilano/57d82f0298a885e8b7fc668704f71d6bc88c99e4/src/assets/brands/JUG Milano@8x.png -------------------------------------------------------------------------------- /src/assets/brands/LibreItalia.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unixMiB/LinuxDayMilano/57d82f0298a885e8b7fc668704f71d6bc88c99e4/src/assets/brands/LibreItalia.png -------------------------------------------------------------------------------- /src/assets/brands/LibreOffice@8x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unixMiB/LinuxDayMilano/57d82f0298a885e8b7fc668704f71d6bc88c99e4/src/assets/brands/LibreOffice@8x.png -------------------------------------------------------------------------------- /src/assets/brands/PCOfficina@8x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unixMiB/LinuxDayMilano/57d82f0298a885e8b7fc668704f71d6bc88c99e4/src/assets/brands/PCOfficina@8x.png -------------------------------------------------------------------------------- /src/assets/brands/POuL@8x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unixMiB/LinuxDayMilano/57d82f0298a885e8b7fc668704f71d6bc88c99e4/src/assets/brands/POuL@8x.png -------------------------------------------------------------------------------- /src/assets/brands/RedHat A@8x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unixMiB/LinuxDayMilano/57d82f0298a885e8b7fc668704f71d6bc88c99e4/src/assets/brands/RedHat A@8x.png -------------------------------------------------------------------------------- /src/assets/brands/SUSE@8x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unixMiB/LinuxDayMilano/57d82f0298a885e8b7fc668704f71d6bc88c99e4/src/assets/brands/SUSE@8x.png -------------------------------------------------------------------------------- /src/assets/brands/Universita Milano Bicocca.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unixMiB/LinuxDayMilano/57d82f0298a885e8b7fc668704f71d6bc88c99e4/src/assets/brands/Universita Milano Bicocca.png -------------------------------------------------------------------------------- /src/assets/brands/Vimelug@8x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unixMiB/LinuxDayMilano/57d82f0298a885e8b7fc668704f71d6bc88c99e4/src/assets/brands/Vimelug@8x.png -------------------------------------------------------------------------------- /src/assets/brands/WordPress Meetup Milano@8x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unixMiB/LinuxDayMilano/57d82f0298a885e8b7fc668704f71d6bc88c99e4/src/assets/brands/WordPress Meetup Milano@8x.png -------------------------------------------------------------------------------- /src/assets/brands/brands.yml: -------------------------------------------------------------------------------- 1 | sponsors: 2 | - name: SUSE 3 | website: https://www.suse.com/ 4 | logo: SUSE@8x.png 5 | - name: Red Hat 6 | website: https://redhat.com/ 7 | logo: RedHat A@8x.png 8 | - name: EXTRAORDY 9 | website: https://extraordy.com/ 10 | logo: Extraordy B@8x.png 11 | # - name: Bosch Rexroth AG 12 | # logo: Bosch Rexroth AG@8x.png 13 | # website: https://www.boschrexroth.com/ 14 | - name: Bicocca 15 | website: https://www.unimib.it/ 16 | logo: Universita Milano Bicocca.png 17 | - name: GitHub 18 | website: https://gh.io/linuxmilan2023 19 | logo: GitHub.png 20 | patrocini: 21 | - name: Italian Linux Society 22 | website: https://www.ils.org/ 23 | logo: ILS@8x.png 24 | # - name: Libre Italia 25 | # website: https://libreitalia.org/ 26 | # logo: LibreItalia.png 27 | - name: POuL 28 | logo: POuL@8x.png 29 | website: https://poul.org/ 30 | - name: PCOfficina 31 | website: https://www.pcofficina.org/ 32 | logo: PCOfficina@8x.png 33 | - name: VIMELUG 34 | website: https://www.vimelug.org/ 35 | logo: Vimelug@8x.png 36 | # - name: Libre Office 37 | # website: https://it.libreoffice.org/ 38 | # logo: LibreOffice@8x.png 39 | # - name: Joomla User Group Milano Centro 40 | # logo: JUG Milano@8x.png 41 | # website: https://www.joomla.it/joomla-user-group/jug-milano-centro.html 42 | # - name: WordPress Meetup Milano 43 | # logo: WordPress Meetup Milano@8x.png 44 | # website: https://www.meetup.com/it-IT/wordpress-meetup-milano/ 45 | referrals: 46 | - name: GitHub Campus Experts 47 | website: https://githubcampus.expert/ 48 | logo: GH Campus Experts 1@8x.png 49 | comment: Da quando ho conosciuto questa community ho sempre trovato persone competenti e appassionate. Invito tutti a partecipare al Linux Day Milano 2024 all'università Bicocca per venire a conoscerli ✨ 50 | author: Federico Grandi, GitHub Campus Expert 51 | -------------------------------------------------------------------------------- /src/assets/ear-piece.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/assets/favicon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /src/assets/favicon_foot.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 39 | 42 | 43 | 45 | 52 | 56 | 60 | 61 | 62 | 66 | 73 | 77 | 80 | 84 | 85 | 86 | 87 | -------------------------------------------------------------------------------- /src/assets/favicon_foot_transparent.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 39 | 42 | 43 | 45 | 52 | 56 | 60 | 61 | 62 | 66 | 70 | 73 | 77 | 78 | 79 | 80 | -------------------------------------------------------------------------------- /src/assets/foot.svg: -------------------------------------------------------------------------------- 1 | 2 | 34 | 35 | 36 | 38 | 39 | 46 | 50 | 54 | 55 | 62 | 66 | 70 | 71 | 75 | 78 | 82 | 83 | -------------------------------------------------------------------------------- /src/assets/images/event-bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unixMiB/LinuxDayMilano/57d82f0298a885e8b7fc668704f71d6bc88c99e4/src/assets/images/event-bg.jpg -------------------------------------------------------------------------------- /src/assets/images/hero.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unixMiB/LinuxDayMilano/57d82f0298a885e8b7fc668704f71d6bc88c99e4/src/assets/images/hero.jpg -------------------------------------------------------------------------------- /src/assets/images/sponsor-bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unixMiB/LinuxDayMilano/57d82f0298a885e8b7fc668704f71d6bc88c99e4/src/assets/images/sponsor-bg.jpg -------------------------------------------------------------------------------- /src/assets/images/talk-subscription.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unixMiB/LinuxDayMilano/57d82f0298a885e8b7fc668704f71d6bc88c99e4/src/assets/images/talk-subscription.png -------------------------------------------------------------------------------- /src/assets/logo_simple.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /src/assets/watch.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /src/components/footer.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { graphql, useStaticQuery } from "gatsby"; 3 | import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; 4 | import Container from "react-bootstrap/Container"; 5 | import ear from "../assets/ear-piece.svg"; 6 | import { icon } from "@fortawesome/fontawesome-svg-core/import.macro"; 7 | 8 | const Footer = () => { 9 | const { site } = useStaticQuery(graphql` 10 | { 11 | site { 12 | siteMetadata { 13 | contacts { 14 | place { 15 | name 16 | street 17 | building 18 | cap 19 | } 20 | email 21 | website 22 | } 23 | } 24 | } 25 | } 26 | `); 27 | 28 | return ( 29 |
30 |
31 | 32 |
33 |
37 | 44 |
45 |
46 | 47 |

Contatta l'organizzazione

48 | 117 |
118 |
119 |
120 |
121 |
122 |
123 | Quest'opera è distribuita con Licenza Creative Commons Attribuzione -{" "} 124 | 125 | Condividi allo stesso modo 4.0 Internazionale 126 | {" "} 127 | - unix 128 | MiB {new Date().getFullYear()} 129 |
130 |
131 | ); 132 | }; 133 | 134 | export default Footer; 135 | -------------------------------------------------------------------------------- /src/components/header.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { useStaticQuery, graphql } from "gatsby"; 3 | import Container from "react-bootstrap/Container"; 4 | import Nav from "react-bootstrap/Nav"; 5 | import Navbar from "react-bootstrap/Navbar"; 6 | import Logo from "../assets/foot.svg"; 7 | import { Link } from "gatsby"; 8 | 9 | const Header = () => { 10 | const data = useStaticQuery(graphql` 11 | { 12 | site { 13 | siteMetadata { 14 | event { 15 | year: date(formatString: "YYYY") 16 | } 17 | switches { 18 | schedule 19 | cfp 20 | } 21 | } 22 | } 23 | 24 | allSchedulesYaml(sort: { order: DESC, fields: year }) { 25 | nodes { 26 | year 27 | } 28 | } 29 | } 30 | `); 31 | 32 | const year = data.site.siteMetadata.event.year; 33 | const switches = data.site.siteMetadata.switches; 34 | 35 | const previousYear = data.allSchedulesYaml.nodes.map((node) => node.year)[1]; 36 | const params = switches.schedule 37 | ? "" 38 | : "?" + new URLSearchParams({ year: previousYear }); 39 | 40 | return ( 41 |
42 | 51 | 52 | 57 | 64 | LD 65 | MI {year} 66 | 67 | 68 | 72 | 94 | 95 | 96 | 97 |
98 | ); 99 | }; 100 | 101 | export default Header; 102 | -------------------------------------------------------------------------------- /src/components/hero.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { graphql, useStaticQuery } from "gatsby"; 3 | import Button from "react-bootstrap/Button"; 4 | import Container from "react-bootstrap/Container"; 5 | import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; 6 | import { icon } from "@fortawesome/fontawesome-svg-core/import.macro"; 7 | import Alert from "react-bootstrap/Alert"; 8 | import { StaticImage } from "gatsby-plugin-image"; 9 | import { Link } from "gatsby"; 10 | 11 | const Hero = ({ small }) => { 12 | const data = useStaticQuery(graphql` 13 | { 14 | site { 15 | siteMetadata { 16 | event { 17 | year: date(formatString: "YYYY") 18 | time 19 | text: date(formatString: "dddd DD MMMM YYYY", locale: "It") 20 | } 21 | switches { 22 | schedule 23 | } 24 | contacts { 25 | website 26 | place { 27 | building 28 | name 29 | } 30 | } 31 | } 32 | } 33 | 34 | allSchedulesYaml(sort: { order: DESC, fields: year }) { 35 | nodes { 36 | year 37 | } 38 | } 39 | } 40 | `); 41 | 42 | const metadata = data.site.siteMetadata; 43 | 44 | const previousYear = data.allSchedulesYaml.nodes.map((node) => node.year)[1]; 45 | const params = data.site.siteMetadata.switches.schedule 46 | ? "" 47 | : "?" + new URLSearchParams({ year: previousYear }); 48 | 49 | return ( 50 |
56 |
180 | ); 181 | }; 182 | 183 | export default Hero; 184 | -------------------------------------------------------------------------------- /src/components/layout.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import PropTypes from "prop-types"; 3 | import Footer from "./footer"; 4 | import Header from "./header"; 5 | 6 | const Layout = ({ children }) => ( 7 |
8 |
9 |
10 | {children} 11 |
12 |
13 |
14 | ); 15 | 16 | Layout.propTypes = { 17 | children: PropTypes.node.isRequired, 18 | }; 19 | 20 | export default Layout; 21 | -------------------------------------------------------------------------------- /src/components/seo.jsx: -------------------------------------------------------------------------------- 1 | /** 2 | * SEO component that queries for data with 3 | * Gatsby's useStaticQuery React hook 4 | * 5 | * See: https://www.gatsbyjs.org/docs/use-static-query/ 6 | */ 7 | 8 | import React from "react"; 9 | import PropTypes from "prop-types"; 10 | import Helmet from "react-helmet"; 11 | import { useStaticQuery, graphql } from "gatsby"; 12 | 13 | function Seo({ description, lang, meta, title }) { 14 | const { site } = useStaticQuery(graphql` 15 | query { 16 | site { 17 | siteMetadata { 18 | title 19 | description 20 | author 21 | theme 22 | keywords 23 | } 24 | } 25 | } 26 | `); 27 | 28 | const metaDescription = description || site.siteMetadata.description; 29 | const siteTitle = 30 | title == null 31 | ? site.siteMetadata.title 32 | : `${title} - ${site.siteMetadata.title}`; 33 | 34 | return ( 35 | 95 | ); 96 | } 97 | 98 | Seo.defaultProps = { 99 | lang: `it`, 100 | meta: [], 101 | description: ``, 102 | }; 103 | 104 | Seo.propTypes = { 105 | description: PropTypes.string, 106 | lang: PropTypes.string, 107 | meta: PropTypes.arrayOf(PropTypes.object), 108 | title: PropTypes.string, 109 | }; 110 | 111 | export default Seo; 112 | -------------------------------------------------------------------------------- /src/pages/404.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import Layout from "../components/layout"; 3 | import Seo from "../components/seo"; 4 | 5 | const NotFoundPage = () => ( 6 | 7 | 8 |
9 |
10 |

Pagina non trovata

11 |

La pagina che stai cercando non esiste.

12 |
13 |
14 |
15 | ); 16 | 17 | export default NotFoundPage; 18 | -------------------------------------------------------------------------------- /src/pages/codeofconduct.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import Layout from "../components/layout"; 3 | import Container from "react-bootstrap/Container"; 4 | import Seo from "../components/seo"; 5 | import Hero from "../components/hero"; 6 | 7 | const CodeofconductPage = ({ data }) => { 8 | return ( 9 | 10 | 11 | 12 |
13 |
14 | 15 |

Code of Conduct

16 |

Versione Italiana

17 |

18 | Tutti i partecipanti del Linux Day Milano sono tenuti ad attenersi 19 | al seguente codice di condotta. I volontari del team UnixMiB 20 | faranno rispettare questo codice durante tutta la conferenza. 21 |

22 |
    23 |
  • 24 | Gli organizzatori della conferenza (tra comunità partecipanti e 25 | volontari) si impegnano a fornire un’esperienza della conferenza 26 | senza molestie per tutti, indipendentemente da genere, 27 | orientamento sessuale, disabilità, aspetto fisico, dimensione 28 | corporea, razza o religione. 29 |
  • 30 |
  • 31 | Non tolleriamo molestie ai partecipanti alla conferenza o ai 32 | volontari in qualsiasi forma. 33 |
  • 34 |
  • 35 | Linguaggio e immagini sessuali non sono appropriate per 36 | qualsiasi ambito della conferenza, compresi le presentazioni 37 |
  • 38 |
  • 39 | Gli accompagnatori di bambini minori di 14 anni sono tenuti a 40 | non separarsene. 41 |
  • 42 |
  • 43 | I partecipanti alla conferenza che violano queste regole possono 44 | essere espulsi dalla conferenza a discrezione degli 45 | organizzatori della conferenza 46 |
  • 47 |
48 | Note 49 |

50 | Le molestie includono commenti offensivi verbali legati a genere, 51 | orientamento sessuale, disabilità, aspetto fisico, dimensione 52 | corporea, razza, religione, immagini sessuali in spazi pubblici, 53 | intimidazioni intenzionali, stalking, inseguimenti, fotografie o 54 | registrazioni moleste, interruzione continuata di presentazioni o 55 | altri eventi, contatto fisico inappropriato e attenzioni sessuali 56 | sgradite. 57 |
58 | I partecipanti cui viene chiesto di interrompere qualsiasi 59 | comportamento molesto sono tenuti a conformarsi immediatamente 60 |
61 |
62 | Se vieni molestato/a, noti che qualcun altro/a viene molestato/a, 63 | o hai qualsiasi altra preoccupazione, contatta immediatamente uno 64 | dei punti di contatto: Lorenzo Olearo o Elisa Pioldi. 65 |
66 | Tramite Telegram contattare{" "} 67 | 68 | @unixmib_contact_bot 69 | {" "} 70 | per eventuali segnalazioni. 71 |
72 |
73 | Ringranziamo MergeIT e{" "} 74 | 75 | Python Italia 76 | {" "} 77 | per averci permesso di usare il loro Codice di Condotta come base. 78 |

79 |

English version

80 |

81 | All Linux Day Milan participants are required to abide by the 82 | following code of conduct. Volunteers from the UnixMiB team will 83 | enforce this code throughout the conference. 84 |

85 |
    86 |
  • 87 | Conference organizers (including community participants and 88 | volunteers) are committed to providing a harassment-free 89 | conference experience for all, regardless of gender, sexual 90 | orientation, disability, physical appearance, body size, race or 91 | religion. We do not tolerate harassment of conference attendees 92 | or volunteers in any form. 93 |
  • 94 |
  • 95 | Sexual language and images are inappropriate for any part of the 96 | conference, including presentations 97 |
  • 98 |
  • 99 | Those accompanying children under 14 are required not to 100 | separate them. 101 |
  • 102 |
  • 103 | Sexual language and images are inappropriate for any part of the 104 | conference, including presentations. 105 |
  • 106 |
  • 107 | Conference participants who violate these rules may be expelled 108 | from the conference at the discretion of the conference 109 | organizers 110 |
  • 111 |
112 | Notes 113 |

114 | Harassment includes offensive verbal comments related to gender, 115 | sexual orientation, disability, physical appearance, body size, 116 | race, religion, sexual images in public spaces, intentional 117 | intimidation, stalking, stalking, harassing photography or 118 | recording, persistent disruption of presentations or other events 119 | , inappropriate physical contact and unwelcome sexual attention. 120 |
121 | Participants who are asked to stop any harassing behavior are 122 | expected to comply immediately 123 |
124 |
125 | If you are being harassed, notice that someone else is being 126 | harassed, or have any other concerns, please contact one of the 127 | contact points immediately: Lorenzo Olearo or Elisa Pioldi. 128 |
129 | Via Telegram contact{" "} 130 | 131 | @unixmib_contact_bot 132 | {" "} 133 | for any reports. 134 |
135 |
136 | We thank MergeIT e{" "} 137 | 138 | Python Italia 139 | {" "} 140 | for allowing us to use their Code of Conduct as a basis. 141 |

142 |
143 |
144 |
145 |
146 | ); 147 | }; 148 | 149 | export default CodeofconductPage; 150 | -------------------------------------------------------------------------------- /src/pages/index.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { graphql } from "gatsby"; 3 | import Layout from "../components/layout"; 4 | import Button from "react-bootstrap/Button"; 5 | import Container from "react-bootstrap/Container"; 6 | import Row from "react-bootstrap/Row"; 7 | import Col from "react-bootstrap/Col"; 8 | import watch from "../assets/watch.svg"; 9 | import { GatsbyImage, getImage } from "gatsby-plugin-image"; 10 | import Seo from "../components/seo"; 11 | import Hero from "../components/hero"; 12 | import { Link } from "gatsby"; 13 | 14 | const IndexPage = ({ data }) => { 15 | const isPast = new Date(data.site.siteMetadata.event.date) <= new Date(); 16 | 17 | return ( 18 | 19 | 20 |
21 | 22 |
23 |
24 |
25 | 32 |
33 | 34 |
35 |
36 | {" "} 37 | {/* TODO FIX ME */} 38 |

39 | Il Linux Day Milano si{" "} 40 | {isPast ? "è svolto" : "svolgerà"} il 41 |
42 | {data.site.siteMetadata.event.text} 43 |

44 |

45 | Torna la principale manifestazione italiana dedicata a 46 | GNU/Linux, al software libero, alla cultura aperta e alla 47 | condivisione. 48 |
49 | Al Linux Day Milano potrai trovare tanti talk, 50 | presentazioni, workshop inerenti a tantissimi temi 51 | interessanti per gli appassionati di Linux, Software Libero, 52 | e tanto altro! 53 |

54 |

55 | {data.site.siteMetadata.event.topic && ( 56 | 57 | L'edizione {data.site.siteMetadata.event.year} è 58 | dedicata 59 | {" " + data.site.siteMetadata.event.topic} 60 | 61 | )} 62 |

63 |
64 |
65 |
66 |
67 |
68 | 69 |
70 | 71 |

72 | Condividi i momenti migliori 73 |

74 |
75 |

76 | Segui l'evento sul social network libero Mastodon (accessibile 77 | da qualsiasi piattaforma federata ActivityPub):{" "} 78 | 79 | @unixmib@mastodon.uno 80 | 81 | ,
82 | puoi seguicrci anche su social tradizionali come:{" "} 83 | @unixMiB su Twitter{" "} 84 | (#LinuxDayMilano2024){" e "} 85 | 86 | @unixmib su Facebook 87 | 88 | . 89 |

90 |

91 | Oppure iscriviti al nostro{" "} 92 | canale telegram per 93 | rimanere aggiornato anche sui nostri eventi futuri. 94 |

95 |

96 | Usa l'hashtag ufficiale #LinuxDay2024 e le foto migliori saranno 97 | ricondivise! 98 |

99 |
100 |
101 |
102 | 103 |
104 | 105 |

Timeline organizzativa

106 |
107 |
    108 |
  1. lunedì 20 giugno - Apertura call for papers
  2. 109 |
  3. 110 | venerdì 27 settembre - Chiusura call for papers e richieste 111 | stands 112 |
  4. 113 |
  5. {data.site.siteMetadata.event.text} - Linux Day Milano
  6. 114 |
115 |
116 |
117 |
118 | 119 |
120 | 121 | 122 | 123 | 129 | 130 | 131 | {data.site.siteMetadata.switches.cfp ? ( 132 |

Call for paper

133 | ) : ( 134 |

135 | Programma della giornata 136 |

137 | )} 138 | 139 | {data.site.siteMetadata.switches.cfp && ( 140 | <> 141 |

142 | {data.site.siteMetadata.event.cfp && 143 | "Abbiamo aperto la call-for-speakers! "} 144 | Ecco cosa devi sapere se vuoi presentare qualcosa al Linux 145 | Day Milano. 146 |

147 |

148 | Siamo interessati a tutti i generi di talk e presentazioni 149 | inerenti (anche in piccola parte) al mondo Linux, del 150 | Software Libero e dello Sviluppo Software Open Source. 151 |

152 |

153 | Alcuni argomenti che piacciono a chi viene al Linux Day: 154 | Linux, Software Libero, Sviluppo Software, Machine 155 | Learning, Big Data, Self-hosting, Privacy, Retro Gaming, 156 | Storia dell'informatica, Do It Yourself ... 157 |

158 |

159 | Sei anche il benvenuto se vuoi presentare un tuo progetto 160 | o mostrare una tua invenzione. 161 |

162 |

Per tutti i dettagli prosegui al link qui sotto.

163 | {/*

164 | Deadline{" "} 165 | {new Date("2023-09-21").toLocaleDateString("it-IT", { 166 | weekday: "long", 167 | year: "numeric", 168 | month: "long", 169 | day: "numeric", 170 | })} 171 |

*/} 172 | 173 | {data.site.siteMetadata.event.cfp ? ( 174 | 181 | ) : ( 182 | 185 | )} 186 | 187 | {data.site.siteMetadata.event.cfs && ( 188 |
189 |

190 | Sei una associazione no profit o una azienda sponsor 191 | di Italian Linux Society che lavora con l'open source? 192 | Compila il form qui sotto per fare richiesta di uno 193 | stand. 194 |

195 |

196 | Non ti preoccupare se la tua azienda non è ancora 197 | sponsor, siamo sempre aperti a nuove collaborazioni e 198 | saremo felici di valutare la tua richiesta! 199 |

200 | 201 | 208 |
209 | )} 210 | 211 | )} 212 | {data.site.siteMetadata.switches.schedule && ( 213 | <> 214 |

215 | Ecco in breve alcuni dei nostri talk: 216 |

{" "} 217 |
    218 | {data.site.siteMetadata.event.arguments.map((topic) => { 219 | return
  • {topic}
  • ; 220 | })} 221 |
222 | 230 | 231 | )} 232 | {/*
233 |
234 | */} 241 | 242 |
243 |
244 |
245 | 246 |
247 | 248 |

Sponsor dell'evento

249 | 250 | {data.brandsYaml.sponsors.map((item, index) => { 251 | return ( 252 | 256 | 257 | 263 | 264 | 265 | ); 266 | })} 267 | 268 |

Con i patrocini di

269 | 270 | {data.brandsYaml.patrocini.map((item) => { 271 | return ( 272 | 276 | 277 | 283 | 284 | 285 | ); 286 | })} 287 | 288 |

Parlano di noi

289 | {data.brandsYaml.referrals.map((item) => { 290 | return ( 291 | 292 | 293 | 294 | 300 | 301 | 302 | 303 |
304 |
305 |

{item.comment}

306 |
307 |
308 | {item.author} 309 |
310 |
311 | 312 |
313 | ); 314 | })} 315 |
316 |
317 |
318 |
319 | ); 320 | }; 321 | 322 | export const query = graphql` 323 | { 324 | brandsYaml { 325 | patrocini { 326 | name 327 | website 328 | logo { 329 | childImageSharp { 330 | gatsbyImageData( 331 | quality: 80 332 | placeholder: NONE 333 | layout: FULL_WIDTH 334 | jpgOptions: { progressive: true, quality: 80 } 335 | avifOptions: { lossless: false, quality: 90 } 336 | webpOptions: { quality: 85 } 337 | blurredOptions: { toFormat: AUTO } 338 | pngOptions: { quality: 80 } 339 | breakpoints: [156, 216, 296, 356, 416, 512, 620, 710] 340 | ) 341 | } 342 | } 343 | } 344 | sponsors { 345 | name 346 | website 347 | logo { 348 | childImageSharp { 349 | gatsbyImageData( 350 | quality: 80 351 | placeholder: NONE 352 | layout: FULL_WIDTH 353 | jpgOptions: { progressive: true, quality: 80 } 354 | avifOptions: { lossless: false, quality: 90 } 355 | webpOptions: { quality: 85 } 356 | blurredOptions: { toFormat: AUTO } 357 | pngOptions: { quality: 80 } 358 | breakpoints: [156, 216, 296, 356, 416, 512, 620, 710] 359 | ) 360 | } 361 | } 362 | } 363 | referrals { 364 | comment 365 | name 366 | website 367 | author 368 | logo { 369 | childImageSharp { 370 | gatsbyImageData( 371 | quality: 80 372 | placeholder: NONE 373 | layout: FULL_WIDTH 374 | jpgOptions: { progressive: true, quality: 80 } 375 | avifOptions: { lossless: false, quality: 90 } 376 | webpOptions: { quality: 85 } 377 | blurredOptions: { toFormat: AUTO } 378 | pngOptions: { quality: 80 } 379 | breakpoints: [156, 216, 296, 356, 416, 512, 620, 710] 380 | ) 381 | } 382 | } 383 | } 384 | } 385 | 386 | talk_subscription_image: file( 387 | sourceInstanceName: { eq: "images" } 388 | relativePath: { eq: "talk-subscription.png" } 389 | ) { 390 | childImageSharp { 391 | gatsbyImageData( 392 | quality: 80 393 | placeholder: NONE 394 | layout: FULL_WIDTH 395 | jpgOptions: { progressive: true, quality: 80 } 396 | avifOptions: { lossless: false, quality: 90 } 397 | webpOptions: { quality: 85 } 398 | blurredOptions: { toFormat: AUTO } 399 | pngOptions: { quality: 80 } 400 | breakpoints: [156, 216, 296, 356, 416, 512, 620] 401 | ) 402 | } 403 | } 404 | 405 | site { 406 | siteMetadata { 407 | event { 408 | year: date(formatString: "YYYY") 409 | time 410 | date 411 | topic 412 | cfp 413 | cfs 414 | arguments 415 | text: date(formatString: "dddd DD MMMM YYYY", locale: "It") 416 | } 417 | contacts { 418 | email 419 | website 420 | } 421 | switches { 422 | schedule 423 | cfp 424 | sponsor_submit 425 | } 426 | } 427 | } 428 | } 429 | `; 430 | 431 | export default IndexPage; 432 | -------------------------------------------------------------------------------- /src/pages/schedule-printable.jsx: -------------------------------------------------------------------------------- 1 | import React, { useState, useEffect } from "react"; 2 | import { graphql, navigate } from "gatsby"; 3 | import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; 4 | import Button from "react-bootstrap/Button"; 5 | import Container from "react-bootstrap/Container"; 6 | import Row from "react-bootstrap/Row"; 7 | import Col from "react-bootstrap/Col"; 8 | import Modal from "react-bootstrap/Modal"; 9 | import Dropdown from "react-bootstrap/Dropdown"; 10 | import Seo from "../components/seo"; 11 | import Header from "../components/header"; 12 | import { icon } from "@fortawesome/fontawesome-svg-core/import.macro"; 13 | 14 | const Talks = ({ 15 | scheduleData, 16 | showStarred, 17 | starredTalksForYear, 18 | toggleTalkStar, 19 | showDescriptions, 20 | }) => { 21 | const [data, setData] = useState(scheduleData); 22 | const [modalData, setModalData] = useState({ 23 | show: false, 24 | title: "Titolo", 25 | description: "Descrizione", 26 | author: "Autore", 27 | room: "Aula", 28 | duration: "Durata", 29 | slides: "", 30 | video: "", 31 | }); 32 | 33 | const replaceModalItem = (item) => { 34 | setModalData((current) => ({ 35 | ...item, 36 | show: !current.show, 37 | })); 38 | }; 39 | 40 | const handleStarClick = (title, clickEvent) => { 41 | clickEvent.stopPropagation(); 42 | toggleTalkStar(title); 43 | }; 44 | 45 | const StarToggle = ({ title }) => ( 46 | handleStarClick(title, e)} 61 | /> 62 | ); 63 | 64 | return ( 65 | <> 66 | { 69 | setModalData((current) => ({ 70 | ...current, 71 | show: false, 72 | })); 73 | }} 74 | size='lg' 75 | aria-labelledby='contained-modal-title-vcenter' 76 | centered 77 | > 78 | 79 | 80 | {modalData.title} 81 | 82 | 83 | 84 |

{modalData.description}

85 |
86 |
{modalData.author}
87 | 88 | {modalData.duration && "Durata: " + modalData.duration} 89 | 90 | {modalData.room && "Aula: " + modalData.room} 91 | 92 | 93 |
94 | 95 | 96 |
97 | 108 |
109 |
110 | {!(modalData.video === "" || modalData.video === null) && ( 111 | 121 | )} 122 | {!(modalData.slides === "" || modalData.slides === null) && ( 123 | 133 | )} 134 | 145 |
146 |
147 |
148 | {data.map((i, k) => { 149 | return ( 150 | 151 | 152 |
{i.time}
153 | 154 | {i.talks.map((t, u) => { 155 | if ("development" === activeEnv) console.log(showStarred); 156 | return !showStarred || starredTalksForYear?.includes(t.title) ? ( 157 | 158 |
166 | 167 | 168 |
{t.title}
169 | 170 |
171 | 172 | 173 |
{t.author}
174 | 175 |
176 | {showDescriptions && ( 177 | 178 | 179 |
{t.description}
180 | 181 |
182 | )} 183 | 184 | 185 | 186 | {t.duration} 187 | 188 | 189 | {t.room} 190 | 191 | 192 | 198 | 199 | 200 |
201 | 202 | ) : undefined; 203 | })} 204 |
205 | ); 206 | })} 207 | 208 | ); 209 | }; 210 | 211 | const activeEnv = 212 | process.env.GATSBY_ACTIVE_ENV || process.env.NODE_ENV || "development"; 213 | 214 | const Page = ({ data }) => { 215 | const allSchedules = data.allSchedulesYaml.nodes; 216 | const [showDescriptions, setShowDescriptions] = useState(false); 217 | const [schedData, setSchedData] = useState(allSchedules[0]); 218 | const [starredTalks, setStarredTalks] = useState({}); 219 | const [showStarred, setShowStarred] = useState(false); 220 | 221 | const params = new URLSearchParams( 222 | typeof window !== "undefined" && window.location.search 223 | ); 224 | const year = Number(params.get("year")); 225 | 226 | useEffect(() => { 227 | let current = localStorage.getItem("starredTalks"); 228 | if (current) { 229 | try { 230 | current = JSON.parse(current); 231 | setStarredTalks(current); 232 | } catch (e) { 233 | console.error( 234 | "localStorage.starredTalks was set, but can't be parsed as JSON" 235 | ); 236 | setStarredTalks({}); 237 | } 238 | } 239 | localStorage.getItem("showStarred") === "true" && setShowStarred(true); 240 | }, []); 241 | 242 | useEffect(() => { 243 | if (year) { 244 | allSchedules.forEach((i) => { 245 | if (i.year === year) { 246 | setSchedData(i); 247 | } 248 | }); 249 | } 250 | }, [year, allSchedules]); 251 | 252 | if ("development" === activeEnv) 253 | console.log("schedData: " + JSON.stringify(schedData)); 254 | 255 | return ( 256 |
257 |
258 |
259 |
260 | 261 |
262 | 263 |
264 |

265 | Linux Day Milano {schedData?.year} -{" "} 266 | {!showStarred ? "Programma della giornata" : "Agenda personale"} 267 |

268 | 269 |
270 | 281 | 290 | {data.site.siteMetadata.switches.year_switcher ? ( 291 | 292 | 296 | Anno {schedData?.year} 297 | 298 | 299 | {allSchedules.map((s, i) => ( 300 | { 303 | navigate( 304 | typeof window !== "undefined" && 305 | window.location.pathname + "?year=" + s.year 306 | ); 307 | setSchedData(allSchedules[i]); 308 | }} 309 | > 310 | {s.year} 311 | 312 | ))} 313 | 314 | 315 | ) : ( 316 | 317 | Anno {schedData?.year} 318 | 319 | )} 320 |
321 |
322 | 323 | {schedData?.schedule.length ? ( 324 | { 330 | setStarredTalks((current) => { 331 | let next; 332 | 333 | if (current[schedData?.year]?.includes(title)) { 334 | next = { 335 | ...current, 336 | [schedData?.year]: current[schedData?.year].filter( 337 | (t) => t !== title 338 | ), 339 | }; 340 | } else { 341 | next = { 342 | ...current, 343 | [schedData?.year]: [ 344 | ...(current[schedData?.year] || []), 345 | title, 346 | ], 347 | }; 348 | } 349 | 350 | localStorage.setItem("starredTalks", JSON.stringify(next)); 351 | 352 | return next; 353 | }); 354 | }} 355 | key={schedData?.schedule} 356 | /> 357 | ) : ( 358 |
359 | 368 |

369 | Ci sono eventi per questa giornata, sono solo in fase di 370 | organizzazione. 371 |

372 |

373 | Puoi usare il selettore per leggere il programma degli anni 374 | precedenti o ricontrolla tra qualche giorno! 375 |

376 |
377 | )} 378 |
379 |
380 |
381 | ); 382 | }; 383 | 384 | export const query = graphql` 385 | { 386 | allSchedulesYaml(sort: { order: DESC, fields: year }) { 387 | nodes { 388 | year 389 | schedule { 390 | time 391 | talks { 392 | title 393 | description 394 | author 395 | room 396 | duration 397 | slides 398 | video 399 | } 400 | } 401 | } 402 | } 403 | 404 | site { 405 | siteMetadata { 406 | event { 407 | year: date(formatString: "YYYY") 408 | time 409 | text: date(formatString: "dddd DD MMMM YYYY", locale: "It") 410 | } 411 | contacts { 412 | email 413 | website 414 | } 415 | switches { 416 | schedule 417 | cfp 418 | year_switcher 419 | } 420 | } 421 | } 422 | } 423 | `; 424 | 425 | export default Page; 426 | -------------------------------------------------------------------------------- /src/pages/schedule.jsx: -------------------------------------------------------------------------------- 1 | import React, { useState, useEffect } from "react"; 2 | import { graphql, navigate } from "gatsby"; 3 | import Layout from "../components/layout"; 4 | import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; 5 | import Button from "react-bootstrap/Button"; 6 | import Container from "react-bootstrap/Container"; 7 | import Row from "react-bootstrap/Row"; 8 | import Col from "react-bootstrap/Col"; 9 | import Modal from "react-bootstrap/Modal"; 10 | import Dropdown from "react-bootstrap/Dropdown"; 11 | import Seo from "../components/seo"; 12 | import Hero from "../components/hero"; 13 | import { icon } from "@fortawesome/fontawesome-svg-core/import.macro"; 14 | 15 | const Talks = ({ 16 | scheduleData, 17 | showStarred, 18 | starredTalksForYear, 19 | toggleTalkStar, 20 | }) => { 21 | const [data, setData] = useState(scheduleData); 22 | const [modalData, setModalData] = useState({ 23 | show: false, 24 | title: "Titolo", 25 | description: "Descrizione", 26 | author: "Autore", 27 | room: "Aula", 28 | duration: "Durata", 29 | slides: "", 30 | video: "", 31 | }); 32 | 33 | const replaceModalItem = (item) => { 34 | setModalData((current) => ({ 35 | ...item, 36 | show: !current.show, 37 | })); 38 | }; 39 | 40 | const handleStarClick = (title, clickEvent) => { 41 | clickEvent.stopPropagation(); 42 | toggleTalkStar(title); 43 | }; 44 | 45 | const StarToggle = ({ title }) => ( 46 | handleStarClick(title, e)} 61 | /> 62 | ); 63 | 64 | return ( 65 | <> 66 | { 69 | setModalData((current) => ({ 70 | ...current, 71 | show: false, 72 | })); 73 | }} 74 | size='lg' 75 | aria-labelledby='contained-modal-title-vcenter' 76 | centered 77 | > 78 | 79 | 80 | {modalData.title} 81 | 82 | 83 | 84 |

{modalData.description}

85 |
86 |
{modalData.author}
87 | 88 | {modalData.duration && "Durata: " + modalData.duration} 89 | 90 | {modalData.room && "Aula: " + modalData.room} 91 | 92 | 93 |
94 | 95 | 96 |
97 | 108 |
109 |
110 | {!(modalData.video === "" || modalData.video === null) && ( 111 | 121 | )} 122 | {!(modalData.slides === "" || modalData.slides === null) && ( 123 | 133 | )} 134 | 145 |
146 |
147 |
148 | {data.map((i, k) => { 149 | return ( 150 | 151 | 152 |
{i.time}
153 | 154 | {i.talks.map((t, u) => { 155 | if ("development" === activeEnv) console.log(showStarred); 156 | return !showStarred || starredTalksForYear?.includes(t.title) ? ( 157 | 158 |
replaceModalItem(t)} 160 | onClick={() => replaceModalItem(t)} 161 | className='event border rounded h-100 d-flex flex-column' 162 | style={{ 163 | padding: "1rem", 164 | cursor: "pointer", 165 | pageBreakInside: "avoid", 166 | breakInside: "avoid", 167 | }} 168 | > 169 | 170 | 171 |
{t.title}
172 | 173 |
174 | 175 | 176 |
{t.author}
177 | 178 |
179 | 180 | 181 | 182 | {t.duration} 183 | 184 | {t.room} 185 | 186 | 192 | 193 | 194 |
195 | 196 | ) : undefined; 197 | })} 198 |
199 | ); 200 | })} 201 | 202 | ); 203 | }; 204 | 205 | const activeEnv = 206 | process.env.GATSBY_ACTIVE_ENV || process.env.NODE_ENV || "development"; 207 | 208 | const Page = ({ data }) => { 209 | const allSchedules = data.allSchedulesYaml.nodes; 210 | const [schedData, setSchedData] = useState(allSchedules[0]); 211 | const [starredTalks, setStarredTalks] = useState({}); 212 | const [showStarred, setShowStarred] = useState(false); 213 | 214 | const params = new URLSearchParams( 215 | typeof window !== "undefined" && window.location.search 216 | ); 217 | const year = Number(params.get("year")); 218 | 219 | useEffect(() => { 220 | let current = localStorage.getItem("starredTalks"); 221 | if (current) { 222 | try { 223 | current = JSON.parse(current); 224 | setStarredTalks(current); 225 | } catch (e) { 226 | console.error( 227 | "localStorage.starredTalks was set, but can't be parsed as JSON" 228 | ); 229 | setStarredTalks({}); 230 | } 231 | } 232 | localStorage.getItem("showStarred") === "true" && setShowStarred(true); 233 | }, []); 234 | 235 | useEffect(() => { 236 | if (year) { 237 | allSchedules.forEach((i) => { 238 | if (i.year === year) { 239 | setSchedData(i); 240 | } 241 | }); 242 | } 243 | }, [year, allSchedules]); 244 | 245 | if ("development" === activeEnv) 246 | console.log("schedData: " + JSON.stringify(schedData)); 247 | 248 | return ( 249 | 250 | 251 |
252 | 253 |
254 | 255 |
256 |

257 | Programma della giornata 258 |

259 | 260 |
261 | 268 | 277 | {data.site.siteMetadata.switches.year_switcher ? ( 278 | 279 | 283 | Anno {schedData?.year} 284 | 285 | 286 | {allSchedules.map((s, i) => ( 287 | { 290 | navigate( 291 | typeof window !== "undefined" && 292 | window.location.pathname + "?year=" + s.year 293 | ); 294 | setSchedData(allSchedules[i]); 295 | }} 296 | > 297 | {s.year} 298 | 299 | ))} 300 | 301 | 302 | ) : ( 303 | 304 | Anno {schedData?.year} 305 | 306 | )} 307 |
308 |
309 | 310 | {schedData?.schedule.length ? ( 311 | { 316 | setStarredTalks((current) => { 317 | let next; 318 | 319 | if (current[schedData?.year]?.includes(title)) { 320 | next = { 321 | ...current, 322 | [schedData?.year]: current[schedData?.year].filter( 323 | (t) => t !== title 324 | ), 325 | }; 326 | } else { 327 | next = { 328 | ...current, 329 | [schedData?.year]: [ 330 | ...(current[schedData?.year] || []), 331 | title, 332 | ], 333 | }; 334 | } 335 | 336 | localStorage.setItem("starredTalks", JSON.stringify(next)); 337 | 338 | return next; 339 | }); 340 | }} 341 | key={schedData?.schedule} 342 | /> 343 | ) : ( 344 |
345 | 354 |

355 | Ci sono eventi per questa giornata, sono solo in fase di 356 | organizzazione. 357 |

358 |

359 | Puoi usare il selettore per leggere il programma degli anni 360 | precedenti o ricontrolla tra qualche giorno! 361 |

362 |
363 | )} 364 |
365 |
366 |
367 |
368 | ); 369 | }; 370 | 371 | export const query = graphql` 372 | { 373 | allSchedulesYaml(sort: { order: DESC, fields: year }) { 374 | nodes { 375 | year 376 | schedule { 377 | time 378 | talks { 379 | title 380 | description 381 | author 382 | room 383 | duration 384 | slides 385 | video 386 | } 387 | } 388 | } 389 | } 390 | 391 | site { 392 | siteMetadata { 393 | event { 394 | year: date(formatString: "YYYY") 395 | time 396 | text: date(formatString: "dddd DD MMMM YYYY", locale: "It") 397 | } 398 | contacts { 399 | email 400 | website 401 | } 402 | switches { 403 | schedule 404 | cfp 405 | year_switcher 406 | } 407 | } 408 | } 409 | } 410 | `; 411 | 412 | export default Page; 413 | -------------------------------------------------------------------------------- /src/schedules/year_2018.yml: -------------------------------------------------------------------------------- 1 | year: 2018 2 | schedule: 3 | - time: "9:30" 4 | talks: 5 | - title: Keynote 6 | description: Vi diamo il benvenuto al Linux Day 2018 7 | author: Daniele Barcella, Adrian Castro - unixMiB 8 | room: U7-04 9 | duration: 30 min 10 | - time: "10:00" 11 | talks: 12 | - title: "Careables: oggetti che curano autoprogettati e opensource" 13 | description: 'Quando si parla di soluzioni per l''healthcare, si pensa spesso a laboratori di ricerca di grandi aziende o start-up innovative. C''è una nuova categoria di oggetti, pensati dagli stessi utenti che li useranno, basati su opensource e tecnologie accessibili, sviluppati da communities: i "Careables". Il neologismo descrive proprio le soluzioni dal basso, emerse dall''esperienza quotidiana di chi vive con limitazioni fisiche e cerca soluzioni per le sue necessità, trasformando il suo ruolo da passivo (implicito nel termine "paziente") in attivo co-progettista. Tutto ciò è possibile grazie a tecnologie come stampa 3D, taglio laser, fresa CNC, Arduino, Raspberry Pi, la filosofia Opensource, spazi come i Fablab, il lavoro online e offline delle community e l''incontro di skills molto diverse tra loro. Durante la presentazione Enrico Bassi, coordinatore del fablab Opendot e referente del Meetup Milanese per la progettazione di Careables, spiegherà in cosa consiste il progetto, come partecipare e quali sono le sfide in corso' 14 | author: Enrico Bassi - OpenDot 15 | room: U7-04 16 | duration: 60 min 17 | - title: "Il Web fu fatto da amatori" 18 | description: 'In un''intervista del 2012, Alan Kay, pioniere dell''informatica, affermò: "Internet è fatta così bene che la gente la considera una risorsa naturale, come l''oceano Pacifico, piuttosto che qualcosa di creato dall''uomo. [...] Il Web a confronto e'' uno scherzo. Il Web fu fatto da amatori." In un excursus che analizza la storia, e la preistoria, del Web da un punto di vista tecnologico, metterò queste affermazioni in prospettiva. Il materiale è oggetto del recente libro "The Web Was Done by Amateurs: A Reflection of One of the Largest Collective Systems Ever Engineered," edito da Springer-Nature, 2018.' 19 | author: Marco Aiello 20 | room: U7-05 21 | duration: 60 min 22 | - title: "Il fattore umano della cyber-security" 23 | description: "Quali sono i reali rischi che corriamo quando navighiamo su Internet? Come agiscono i pirati informatici? Capire i meccanismi che si nascondono dietro il cyber-crimine è il primo modo per proteggersi" 24 | author: Marco Schiaffino - SecurityInfo.it 25 | room: U7-10 26 | duration: 60 min 27 | - title: "Open Hardware PowerPC Notebook project presenta il design della scheda madre" 28 | description: "Passi fatti dai volontari del progetto. I volontari sono appassionati di Software Libero, Open Hardware e di bene comune e stanno progettando un Notebook Open Hardware basato su GNU/LInux ed architettura PowerPC. Presenteranno un'anteprima dello schema elettrico della scheda madre che stanno tentando di rilasciare in tutte le sue parti come progetto libero. Aggiorneranno sui prossimi passi per raggiungere l'obiettivo." 29 | author: Roberto Innocenti 30 | room: U7-11 31 | duration: 60 min 32 | - time: "11:00" 33 | talks: 34 | - title: Pausa caffé 35 | description: Una breve pausa per rinfrescare la mente 36 | duration: 15 min 37 | - time: "11:15" 38 | talks: 39 | - title: "StartUp: alcune Case History di uso del Software Libero" 40 | description: Il Software Libero non è un argomento trattato spesso in un acceleratore. Ma conoscendo le singole StartUp si notato forti storie legate al Software Libero. Vedremo una storia di migrazione di una piattaforma proprietaria in libera, una storia di una StartUp nata libera e di una che si è scoperta libera. 41 | duration: 60 min 42 | author: Matteo Enna 43 | room: U7-04 44 | - title: "Aenigma: automazione server e il futuro delle reti di instant messaging" 45 | description: "Dopo un’introduzione sull’automazione di sistemi, vedremo lo stato attuale dei protocolli di IM: standard di funzionamento, end-to-end encryption, ed il ritorno alla luce di XMPP, soffermandoci infine su aenigma: progetto scritto sopra ad un framework git + bash per effettuare un deployment state-of-the-art e secure-by-default di un server XMPP." 46 | author: "Nicolas North - OpenSpace" 47 | duration: 60 min 48 | room: U7-05 49 | - title: "I reati sul Web: il tentativo di disciplinare il Web" 50 | author: "Giorgio Trezzi - VimeLUG" 51 | room: U7-10 52 | duration: 60 min 53 | description: "Analizzeremo le fattispecie penali previsti dalla normativa vigente" 54 | - title: "Cricut, FREEcut! Hacking e reverse engineering di una macchina CNC" 55 | author: "Federico Braghiroli" 56 | room: U7-11 57 | description: "Il talk tratta l’hacking di una macchina CNC per il taglio di carta utilizzata a livello hobbistico, resa inutilizzabile dalla decisione del produttore di bloccare l’unico software di controllo della macchina. Ciò ha reso l’hardware un rifiuto, seppur funzionante a livello di componenti elettronici. Il progetto si articola in due fasi: la prima di reverse engineering dell’hardware e la seconda tratta lo sviluppo di un firmware di controllo su una scheda di sviluppo economica. A tale scopo verrà introdotto il sistema operativo NuttX utilizzato nel progetto. Obiettivo finale è supportare un protocollo di comunicazione e di controllo standard (G-Code) in modo da essere liberi nella scelta del programma di controllo da PC (e naturalmente liberi di utilizzare qualsiasi sistema operativo). Il progetto è ancora in fase di sviluppo e perciò non è garantita una live-demo funzionante." 58 | duration: 60 min 59 | - time: "12:15" 60 | talks: 61 | - title: "Settant'anni dopo la morte. Il diritto d'autore in Unione europea" 62 | author: "Lorenzo Losa - Wikimedia Italia & FSFE Milano" 63 | description: 'Settant''anni dopo la morte. Il diritto d''autore in Unione europea. Le leggi sul diritto d''autore sono una delle normative chiave che regolano la Rete e il libero scambio di informazioni. In Unione europea è in discussione una riforma del diritto d''autore; le recenti votazioni del Parlamento europeo a inizio luglio e inizio settembre sono state molto discusse, vedendo fra l''altro con l''oscuramento di Wikipedia. Nella bozza attuale non c''è traccia di molti miglioramenti che erano stati ipotizzati inizialmente, come garanzie maggiori per gli utenti e gli autori o una piena libertà di panorama, e al contempo trovano spazio l''istituzione di nuovi diritti in capo agli editori (articolo 11; soprannominato "tassa sui link") e l''introduzione di un obbligo di filtraggio preventivo dei contenuti caricati dagli utenti (articolo 13; soprannominato "macchina della censura"). Parleremo dello stato dei lavori, dei cambiamenti che ci aspettano e dell''impatto che hanno sull''uso quotidiano della Rete - e di cosa può ancora cambiare.' 64 | room: U7-04 65 | duration: 60 min 66 | - title: "Libera il tuo router!" 67 | author: Stefano Costa - FSFE Milano 68 | description: "L'AGCOM ha recentemente emanato un regolamento che disciplina l'accesso ad Internet con un router scelto dall'utente, al posto di quello offerto dal provider. Il talk descrive in termini semplici come si è arrivati all'attuale quadro normativo (e cosa FSFe abbia fatto in merito) e spiega quali sono i nostri diritti verso i provider Internet. In particolare ci si concentra su quali effetti (positivi e negativi) ci saranno sugli utenti, cioè su tutti noi, e sopratutto quali nuove opportunità. Il focus è sul piano normativo, non tecnico vale a dire sul cosa posso fare, meno sul come posso realizzarlo." 69 | room: U7-05 70 | duration: 60 min 71 | - title: "IT Security - Analisi degli attacchi più comuni e tecniche di difesa" 72 | author: Francesco Fresta - GDG Italia 73 | description: "L’enorme quantità e varietà di dispositivi connessi alla Rete, computer e smartphone ma anche tablet e smart tv o frigoriferi intelligenti, rende oggi il tema della sicurezza informatica uno degli argomenti più caldi in assoluto. Vedremo una carrellata degli attacchi più comuni, le tecnologie e le tecniche per difendersi presentando anche, ovviamente, qualche distro GNU/Linux." 74 | room: U7-10 75 | duration: 60 min 76 | - title: "Introduzione a ROS (Robot Operating System)" 77 | author: "Augusto Ballardini - IRALAB" 78 | description: "Proposto all’inizio di questa decade, ROS è diventato il framework destinato ad applicazioni robotiche più utilizzato al mondo. Con questa presentazione il gruppo di ricerca IRALAB (Informatics and Robotics for Automation Lab) propone l’introduzione al pubblico delle caratteristiche principali del framework, ovvero i concetti base di ROS-CORE e della sua natura distribuita, così come dell’interfaccia di comunicazione per messaggi per mezzo di una architettura Publish/Subscribe. Verranno altresì mostrati gli strumenti di diagnostica integrati, di visualizzazione 3D (Rviz), di simulazione (Gazebo), e la possibilità di creare degli archivi/dataset per successiva valutazione dei dati. Dopo una introduzione tecnica, si prevede di accompagnare la sessione con delle dimostrazioni “live” dove presenteremo gli ultimi sviluppi nel campo della guida autonoma proposti dal gruppo di ricerca IRALAB, collegati al progetto Urban Shuttles Autonomously Driven (USAD), ovvero il progetto di guida autonoma del dipartimento di informatica dell’università Milano - Bicocca." 79 | room: U7-11 80 | duration: 60 min 81 | - time: "13:15" 82 | talks: 83 | - title: "Pausa pranzo" 84 | duration: 1 ora 15 min 85 | - time: "14:30" 86 | talks: 87 | - title: "The Orange Line: La storia di Linux e dell’Open Source nell’ecosistema IBM" 88 | author: Jacopo Maltagliati 89 | description: "Il talk tratta della nascita del software collaborativo sui primi, grandi calcolatori IBM, sulla nascita delle tecniche di virtualizzazione sull’IBM System/360 e del loro seguente impiego per portare il kernel Linux sia sui System/i che sui System/z, con la nascita del port s390x, dei processori IFL e dei recenti sistemi LinuxONE.Il talk tratterebbe della nascita del software collaborativo sui primi, grandi calcolatori IBM, sulla nascita delle tecniche di virtualizzazione sull’IBM System/360 e del loro seguente impiego per portare il kernel Linux sia sui System/i che sui System/z, con la nascita del port s390x, dei processori IFL e dei recenti sistemi LinuxONE." 90 | room: U7-04 91 | duration: 60 min 92 | - title: "LibreFibre: rete in fibra ottica alternativa, libera, neutrale, comunitaria" 93 | author: Paolo Meraviglia, Nicolas North 94 | description: "LibreFibre é un progetto volto a rendere accessibile a tutti un'infrastruttura di rete locale ed internet nuova e diversa, ideata, sperimentata, e realizzata dalla community, che la gestisce, la espande, e la documenta a beneficio dei fruitori stessi, dei tecnici coinvolti, e degli imprenditori che in futuro vorranno implementarla. I focus fondamentali sono l'utilizzo ovunque possibile di tecnologie libere ed open source, la libertà di scelta di dispositivi endpoint dell'utente, trasparenza nei costi e nella divisione della spese, e neutralità della rete stessa." 95 | room: U7-05 96 | duration: 60 min 97 | - title: "Fingerprinting: tecniche di profilazione dell'utente come limite alla libertà individuale" 98 | author: Costantino Pastore - VimeLUG 99 | description: "Parleremo delle principali tecniche di profilazione dell'utente." 100 | room: U7-10 101 | duration: 60 min 102 | - title: "Guida Autonoma - Gli ultimi 90 anni di evoluzione" 103 | author: IRALAB 104 | description: "Questa presentazione propone di presentare al pubblico gli sviluppi tecnici avvenuti nel corso degli ultimi 90 anni circa le automobili “automatiche”, le motivazioni per le quali è necessaria una forte attività di ricerca e di sperimentazione ed i benefici che ne conseguiranno per la società civile. La presentazione prevede la proiezione di diversi video storici che dimostrano come il concetto di “autonomous driving” sia stato affrontato nelle diverse epoche storiche, partendo dai primi modelli radiocomandati fino alle visioni presentate nelle esposizioni universali di metà secolo 900, fino all’età moderna che contempla gli ultimi 30 anni. Verranno presentate le difficoltà tecniche, ovvero di percezione e modellazione dell’ambiente, in congiunzione con l’attuale documento di classificazione dei livelli di automazione (SAE J3016) ed i concetti di Dynamic Driving Task e Driving Mode, con degli esempi sui vari livelli di automazione (da SAE-0 a SAE-5)." 105 | room: U7-11 106 | duration: 60 min 107 | - time: "15:30" 108 | talks: 109 | - title: "Software Open Source e standard aperti" 110 | author: Italo Vignoli - LibreOffice & LibreItalia 111 | description: "Uno dei principali punti di forza del software Open Source è l'utilizzo degli standard aperti, in ogni ambito, dalla tecnologia ai protocolli e ai documenti. Gli standard aperti offrono significativi vantaggi verso qualsiasi soluzione proprietaria, perché svincolano la tecnologia dai produttori, e favoriscono il riuso e l'interoperabilità. Purtroppo, le aziende del software proprietario sono riuscite a gestire la comunicazione in modo tale da convincere la maggioranza degli utenti che gli standard proprietari sono migliori di quelli aperti in quanto più utilizzati (basta pensare agli standard di posta elettronica, completamente ignorati da Outlook, allo standard HTML, ignorato - direi addirittura offeso - da Internet Explorer, e allo pseudo-standard OOXML che tiene milioni di utenti legati a Microsoft Office). Proviamo per una volta a dimostrare come il connubio tra open source e standard aperti sia l'unica via d'uscita dal lock in dei vendor, e allo stesso tempo l'unica possibilità da parte degli utenti per godere dei diritti della cittadinanza digitale." 112 | room: U7-04 113 | duration: 60 min 114 | - title: "Microsoft Azure Sphere OS e Linux, la strana coppia." 115 | author: Veziona Ekonomi - Microsoft 116 | description: Azure Sphere è un offerta della Microsoft che comprende tre parti importanti. Un sistema operativo con kernel Linux (il primo sistema operativo basato su tecnologia open source), una classe di microcontrollori (rilasciati con licenza gratuita) con tutte le componenti di sicurezza necessaria per operare nel mondo IoT, una connettività sicura verso il mondo cloud. Le tre componenti combinate insieme creano le condizioni per creare soluzioni IoT affidabili, sicure e scalabili. In questa sessione toccheremo con mano questa tecnologia. 117 | room: U7-05 118 | duration: 60 min 119 | - title: "Algoritmi, sorveglianza digitale e elezioni. Elezioni italiane 2018" 120 | author: Federico Sarchi - Facebook Tracking Exposed 121 | description: 'Gli effetti della comunicazione digitale sono già state osservati e commentati, ma cosa gioca un ruolo chiave all''inteno di questo processo? Attraverso dati qualitativi e quantitativi, passando sia dal conteggio di condivisioni e "mi piace" sia dall''analisi delle parole chiave, abbiamo provato a capire e tracciare l''attività dell''algoritmo di Facebook nella sfera comunicativa. Nonostante la sua grande influenza all''interno del processo di formazione dell''opinione pubblica la sua pretesa di neutralità continua ad esser data per scontata. Ma è questo processo realmente neutrale? Cosa succede nel momento in cui questo diventa il principale metodo attraverso cui le persone si informano? Che influenza può avere su una campagna elettorale? Con il nostro lavoro abbiamo quindi provato interpretare e misurare questi fenomeni riportando l palla in mano all''utente. Per farlo abbiamo raccolto e analizzato i dati raccolti nei due mesi precedenti alle elezioni italiane del 2018.' 122 | room: U7-10 123 | duration: 60 min 124 | - title: "Speed talks" 125 | author: Speaker Vari 126 | description: "Un angolo per brevi talk" 127 | room: U7-11 128 | duration: 60 min 129 | - time: "16:30" 130 | talks: 131 | - title: Pausa caffé 132 | description: Una breve pausa per rinfrescare la mente 133 | duration: 15 min 134 | - time: "16:45" 135 | talks: 136 | - title: "Uplos32, come e perché mantenere una distro 32bit" 137 | author: "Francesco Zanardi - LiberaInformatica" 138 | description: "Uplos32 è il mantenimento della versione 32bit di PCLinuxOS, versione che Texstar, fondatore e sviluppatore di PCLinuxOS, dovette abbandonare per ragioni di salute.Il motivo del nostro rifiuto a abbandonare la 32bit è ovviamente la possibilità di non accumulare rifiuti gettando via computer ancora in grado di funzionare.È chiaro che i tempi si stanno compiendo con il superamento definitivo dei 32bit ma magari qualcuno potrebbe essere interessato a impegnarcisi o semplicemente a sapere qualcosa sia di uplos32 che del mantenimento di una distro in generale." 139 | room: U7-04 140 | duration: 60 min 141 | - title: "OpenSource @ IBM: la collaborazione alla base dell’innovazione." 142 | author: "Lorenzo Laderchi - IBM Italia" 143 | description: "In IBM, l'open source è molto più di una semplice licenza, è parte della nostra cultura dagli albori delle definizioni di open source. Dopo una breve overview dell’impegno IBM nella comunità open, la presentazione si focalizzerà su i traguardi raggiunti dal’ OpenPower Foundation in termini di innovazione tecnologica e influenza dell’ecosistema che grazie ai contributi e alle collaborazioni dei suoi membri continua a crescere come dimensioni e performance." 144 | room: U7-05 145 | duration: 60 min 146 | - title: "Quello che i dati (non) dicono" 147 | author: Eleonora Priori 148 | description: "L’avvento dei big data ed il loro utilizzo massivo sollevano ogni giorno nuove riflessioni rispetto al modo in cui questi hanno trasformato le nostre vite e, tra i tanti dibattiti aperti da questo fenomeno, vi è senza dubbio anche il nodo del rapporto tra dati e ricerca. A partire dalle provocazioni di Chris Anderson secondo cui i big data dovrebbero segnare “la fine della teoria” dal momento che la mole di informazioni che mettono a disposizione consente di sostituire il concetto di correlazione a quello di causalità, questo testo tenta di raccogliere una serie di considerazioni sul perché abbia ancora senso produrre scienza e fare ricerca oggi e sul come farlo abbia necessariamente a che fare con la narrazione dei dati che si mette in campo. Ragionando sui nessi tra narrazione dei dati e contesto in cui questa viene costruita emerge nettamente il tema della non-neutralità della scienza, che obbliga, prima di tutto, ad una presa di coscienza rispetto agli interessi che intervengono nel processo di produzione scientifico-culturale e, conseguentemente, ad una riflessione su quali siano le prassi di cui dotarsi per tutelare la ricerca tanto come spazio democratico quanto come patrimonio collettivo." 149 | room: U7-10 150 | duration: 60 min 151 | - title: "Speed talks" 152 | author: Speaker Vari 153 | description: "Un angolo per brevi talk" 154 | room: U7-11 155 | duration: 60 min 156 | - time: "17:15" 157 | talks: 158 | - title: Chiusura 159 | description: Chisura della giornata 160 | -------------------------------------------------------------------------------- /src/schedules/year_2019.yml: -------------------------------------------------------------------------------- 1 | year: 2019 2 | schedule: 3 | - time: "9:30" 4 | talks: 5 | - title: Keynote 6 | description: Apertura del Linux Day e introduzione all"Intelligenza Artificiale 7 | author: Daniele Barcella, Ilaria Battiston - unixMiB 8 | room: U7-03 9 | duration: 60 min 10 | slides: https://github.com/unixMiB/events/blob/master/Linux%20Day%20Milano%202019/Keynote%20-%20Daniele%20Barcella.%20Ilaria%20Battiston.pdf 11 | - time: "10:30" 12 | talks: 13 | - title: Machine Data - Machines are talking. Are you listening? 14 | description: 15 | Analisi dei machine-data ovvero dei dati generati dalle macchine 16 | al fine di semplificare le attività di operations, troubleshooting e anche le 17 | attività BAU (Business As Usual). 18 | author: Francesco Fresta 19 | room: U7-03 20 | duration: 60 min 21 | slides: https://github.com/unixMiB/events/blob/master/Linux%20Day%20Milano%202019/Machine%20Data%20-%20Machines%20are%20talking.%20Are%20you%20listening%20-%20Francesco%20Fresta.pdf 22 | video: https://www.youtube.com/watch?v=FP14bgY27Rc 23 | - title: 24 | Open Hardware, Software Libero e Stampa 3D attrattori "Farfalla" del PowerPC 25 | Notebook project 26 | description: 27 | Un modesto progetto Open Hardware di una scheda madre PowerPC per 28 | notebook portato avanti da volontari e autofinanziato potrebbe generare indirettamente 29 | importanti cambiamenti nell'industria dell'elettronica, inducendo un "Effetto 30 | Farfalla". Open Hardware, Software Libero e Stampa 3D hanno rimescolato le carte 31 | del cambiamento nell'industria elettronica; sono un'opportunità per decentralizzare 32 | e democratizzare la produzione elettronica, il sapere e distribuire uniformemente 33 | i fattori di vantaggio che generano. Vedremo esempi concreti come la progettazione 34 | della scheda madre OSWH PowerPC Notebook con licenza Open Hardware Cern, la 35 | creazione pacchetti Debian PowerPC a 64 bit e l'uso di Blender e FreeCad per 36 | la progettazione dello chassis Open Hardware. 37 | author: Roberto Innocenti - Power Progress Community 38 | room: U7-04 39 | duration: 60 min 40 | slides: https://github.com/unixMiB/events/blob/master/Linux%20Day%20Milano%202019/PowerPC%20Notebook%20project%20-%20Roberto%20Innocenti%20-%20Power%20Progress%20Community.pdf 41 | - title: La Unix Way e i metodi per produrre software 42 | description: 43 | 'Scrivere applicazioni per mestiere non è più una disciplina individuale 44 | da molte decadi: piuttosto è un gioco di squadra, team. William Deming, celebre 45 | statistico, dimostrò che il 90% dei risultati ottenuti in azienda sono determinati 46 | da processi e metodi in uso, ancor prima che dalle prestazioni individuali: 47 | il "genio" individuale è sopravvalutato. Oggi la tecnologia rappresenta una 48 | grande opportunità per le imprese ma coniugarne lo sviluppo all''agilità e all''affidabilità 49 | dei processi non è facile. Negli anni metodi e metodologie sono evoluti radicalmente, 50 | ma il Free Software e l''Open Source hanno sempre regalato contributi determinanti. 51 | Con l''acronimo KISS (Keep It Simple and Stupid) si evoca un modo di fare software 52 | antico: la Unix Way. Declinata oggi nel mondo Linux da migliaia di tecnici e 53 | organizzazioni, include assunti come modularità, semplicità, composizione e 54 | chiarezza nel fare. Tra gli esempi? GNU/Linux, e git. Una panoramica sui metodi, 55 | dalla Crisi del Software degli anni ''60 fino ai metodi Agili e DevOps.' 56 | author: Fabio Mora 57 | room: U7-05 58 | duration: 60 min 59 | slides: https://github.com/unixMiB/events/blob/master/Linux%20Day%20Milano%202019/La%20Unix%20Way%20e%20i%20metodi%20per%20produrre%20software%20-%20Fabio%20Mora.pdf 60 | - time: "11:30" 61 | talks: 62 | - title: Pausa caffé 63 | description: Una breve pausa per rinfrescare la mente 64 | duration: 15 min 65 | - time: "11:45" 66 | talks: 67 | - title: Intelligenza a livello umano o abilità a livello animale? 68 | description: 69 | L'intervento sintetizza lo stato di avanzamento dell'Intelligenza 70 | Artificiale, con particolare attenzione ai recenti sviluppi nell'ambito del 71 | Deep Learning, un sottoinsieme dell'Intelligenza Artificiale che ha visto tre 72 | pionieri del settore ricevere il premio Turing 2018. Si cerca di analizzare 73 | criticamente cosa sia stato effettivamente raggiunto, cosa sia a portata di 74 | mano e cosa sia ancora molto lontano dalle nostre attuali conoscenze. 75 | author: Fabio Stella - Università Milano Bicocca 76 | room: U7-03 77 | duration: 60 min 78 | slides: https://github.com/unixMiB/events/blob/master/Linux%20Day%20Milano%202019/Intelligenza%20a%20livello%20umano%20o%20abilit%C3%A0%20a%20livello%20animale%20-%20Fabio%20Stella%20-%20Universit%C3%A0%20Milano%20Bicocca.pdf 79 | video: https://www.youtube.com/watch?v=-dRgM8Gc-ZU 80 | - title: 81 | "Joomla! - Privacy Tool Suite: Come difendere la privacy e l'individualità 82 | degli utenti del tuo sito web in pieno rispetto del GDPR" 83 | description: 84 | Come difendere la privacy e l'individualità degli utenti del tuo 85 | sito web in pieno rispetto del GDPR 86 | author: Luca Racchetti 87 | room: U7-04 88 | duration: 60 min 89 | slides: https://github.com/unixMiB/events/blob/master/Linux%20Day%20Milano%202019/Joomla!%20Privacy%20Tool%20Suite%20-%20Luca%20Racchetti.pdf 90 | - title: "PHP: un linguaggio, come tanti, vivo grazie alle community Open source" 91 | description: 92 | Le licenze libere per il software possono salvare un linguaggio di 93 | programmazione? La risposta è si! Un esempio è il PHP, un linguaggio dato per 94 | morto diverse volte ma che è sempre nei primi posto per utilizzo. 95 | author: Matteo Enna 96 | room: U7-05 97 | duration: 60 min 98 | slides: https://github.com/unixMiB/events/blob/master/Linux%20Day%20Milano%202019/PHP%2C%20un%20linguaggio%20come%20tanti%2C%20vivo%20grazie%20alle%20community%20Open%20source%20-%20Matteo%20Enna.pdf 99 | - time: "12:45" 100 | talks: 101 | - title: Pausa pranzo 102 | description: Una pausa per rinfrescare la mente 103 | duration: 1 ora e 15 min 104 | - time: "14:00" 105 | talks: 106 | - title: Weaving a story 107 | description: 108 | Retrospettiva sull'intelligenza artificiale e sulle tecnologie che 109 | l'hanno resa possibile, a partire dalle speranze dei pionieri dell'informatica 110 | fino alla fine del secolo scorso, tramite un'analisi delle architetture hardware 111 | del software e dei carichi di lavoro, molto diversi da quelli a cui siamo abituati 112 | oggi. 113 | author: Jacopo Maltagliati 114 | room: U7-03 115 | duration: 60 min 116 | slides: https://github.com/unixMiB/events/blob/master/Linux%20Day%20Milano%202019/Weaving%20a%20Story%20-%20Jacopo%20Maltagliati.pptx 117 | video: https://www.youtube.com/watch?v=JVqR44i3tW4 118 | - title: Diritto alla riparazione e free software - impatto sulle emissioni di CO2 119 | description: 120 | 'Il diritto alla riparazione #RightToRepair è, l''ultimo tra i "nuovi 121 | diritti" e deriva da quelli che Stefano Rodotà indicava come conseguenza delle 122 | "pacifiche rivoluzioni del Novecento, delle donne, degli ecologisti, della scienza 123 | e della tecnica". Si intende come diritto alla riparazione la rimozione di tutti 124 | gli ostacoli che, spesso, rendono impossibile riparare un oggetto di nostra 125 | proprietà, si va dalla mancata disponibilità di parti di ricambio a prezzi ragionevoli, 126 | alla impossibilità di aprire un dispositivo o un apparecchio per poterlo riparare 127 | a causa di parti termosaldate, viti che si possono solo stringere etc. etc. 128 | Intorno alla riparazione sono nate iniziative come i Restart Party o i Repair 129 | Cafè, feste della riparazione comunitaria e condivisa, come amano chiamarla 130 | in Gran Bretagna gli inventori di questa formula, e a partire da questo movimento 131 | si è sviluppata recentemente una intensa attività di lobby a livello europeo 132 | che ha già conseguito dei risultati legislativi. Il movimento per il diritto 133 | alla riparazione è strettamente connesso con il movimento di lotta ai cambiamenti 134 | climatici e il punto di collegamento è proprio la lunghezza della vita dei nostri 135 | dispositivi, ogni anno di vita guadagnato si può tradurre in un mancato incremento 136 | di CO2 emessa. Il software libero gioca in questa prospettiva un ruolo importantissimo 137 | nel porre un freno alla cultura usa e getta, rendendo utilizzabili PC desktop 138 | e portatili altrimenti destinati ad essere smaltiti in ricicleria pur essendo 139 | perfettamente funzionanti.' 140 | author: Savino Curci - PC Officina 141 | room: U7-04 142 | duration: 60 min 143 | slides: https://github.com/unixMiB/events/blob/master/Linux%20Day%20Milano%202019/Diritto%20alla%20riparazione%20e%20free%20software%20-%20Savino%20Curci%20-%20PC%20Officina.pdf 144 | - title: How to virtualize in containers 145 | description: 146 | Linux containers are everywhere. But what if your workflow still 147 | requires virtual machines? Some applications can not be easily containerized. 148 | But do we need to bother? Come to learn how to run and monitor both types of 149 | workloads together on a single distributed platform. The KubeVirt - virtualization 150 | addon for Kubernetes will be introduced. 151 | author: Marek Libra 152 | room: U7-05 153 | duration: 60 min 154 | slides: https://github.com/unixMiB/events/blob/master/Linux%20Day%20Milano%202019/How%20to%20virtualize%20in%20containers%20-%20Marek%20Libra.pdf 155 | - time: "15:00" 156 | talks: 157 | - title: "Vettorizzazione: a hands-on approach in Python" 158 | description: 159 | Sapevi che il progresso nel campo del ML non è legato solo all'invenzione 160 | di nuovi algoritmi, ma anche all'introduzione di nuove tecnologie come la vettorizzazione? 161 | Scopriamo cos'è con semplici esempi in Python! 162 | author: Davide Riva 163 | room: U7-03 164 | duration: 60 min 165 | slides: https://github.com/unixMiB/events/blob/master/Linux%20Day%20Milano%202019/Vettorizzazione%2C%20a%20hands-on%20approach%20in%20Python%20-%20Davide%20Riva.odp 166 | video: https://www.youtube.com/watch?v=kRnv2ihP3KE 167 | - title: 168 | Linee Guida su Acquisizione e Riuso di Software per le PA, le novità dell'ultima 169 | versione in vigore dal 9 maggio 2019 170 | description: 171 | Una sintesi delle principali novità che emergono da una lettura critica 172 | delle Linee Guida su Acquisizione e Riuso di Software per le PA. Perché si tratta 173 | di un documento importante, per il software open source e per i formati standard 174 | e aperti. Cosa fare, e come farlo, per comunicare e sfruttare i vantaggi delle 175 | linee guida per la comunità open source. 176 | author: Italo Vignoli 177 | room: U7-04 178 | duration: 60 min 179 | slides: https://github.com/unixMiB/events/blob/master/Linux%20Day%20Milano%202019/Linee%20Guida%20su%20Acquisizione%20e%20Riuso%20di%20Software%20per%20le%20PA%20-%20Italo%20Vignoli.pdf 180 | - title: "BiBirra: Deep image retrieval for beer recognition" 181 | description: 182 | Raccontando lo sviluppo di una applicazione in grado di riconoscere 183 | una birra da una foto della bottiglia, sarà descritto il processo che porta 184 | da un'idea all'implementazione di un modello di Machine Learning. Si analizzeranno 185 | i problemi più comuni e come scegliere tra le possibili soluzioni. 186 | author: Matteo Ronchetti - ML Milan 187 | room: U7-05 188 | duration: 60 min 189 | slides: https://github.com/unixMiB/events/blob/master/Linux%20Day%20Milano%202019/BiBirra%2C%20deep%20image%20retrieval%20for%20beer%20recognition%20-%20Matteo%20Ronchetti%20-%20ML%20Milan.pdf 190 | - time: "16:00" 191 | talks: 192 | - title: Pausa caffé 193 | description: Una breve pausa per rinfrescare la mente 194 | duration: 15 min 195 | - time: "16:15" 196 | talks: 197 | - title: The art of Machine Learning 198 | description: 199 | 'Cosa possono avere in comune un quadro battuto all''asta da Christie''s 200 | per 435.000$ e la colonna sonora di un videogioco di esplorazione interplanetaria? 201 | Esiste qualcosa che collega Van Gogh, Rembrandt e la teoria dei giochi? Entrambe 202 | queste domande possono finire sotto un''altra macro domanda: "È possibile creare 203 | con l''intelligenza artificiale?" In questo talk veranno presentate alcune applicazioni 204 | del machine learning ad arti visive e musica elettronica, di come le reti neurali 205 | artificiali si stanno facendo strada all''interno dei processi creativi uscendo 206 | dai laboratori di ricerca per entrare nei musei, nelle case d''aste, nelle nostre 207 | cuffie e sui palchi di festival musicali internazionali.' 208 | author: Luca Carcano 209 | room: U7-03 210 | duration: 60 min 211 | slides: https://github.com/unixMiB/events/blob/master/Linux%20Day%20Milano%202019/The%20art%20of%20Machine%20Learning%20-%20Luca%20Carcano.pdf 212 | video: https://www.youtube.com/watch?v=jr5Sm0I9ckk 213 | - title: I formati aperti e standard 214 | description: La differenza tra De jure e De facto 215 | author: Enio Gemmo 216 | room: U7-04 217 | duration: 60 min 218 | slides: https://github.com/unixMiB/events/blob/master/Linux%20Day%20Milano%202019/I%20formati%20aperti%20e%20standard%20-%20Enio%20Gemmo.odp 219 | - title: The Dark side of AI 220 | description: 221 | L'intelligenza artificiale e le sue applicazioni promettono meraviglie 222 | per il prossimo futuro. Ma a quale prezzo? Per quali scopi e come vengono applicati 223 | gli algoritmi di AI oggi? Viaggio in un mondo che fa (anche) paura. 224 | author: Marco Schiaffino 225 | room: U7-05 226 | duration: 60 min 227 | slides: https://github.com/unixMiB/events/blob/master/Linux%20Day%20Milano%202019/The%20Dark%20side%20of%20AI%20-%20Marco%20Schiaffino.pdf 228 | - time: "17:15" 229 | talks: 230 | - title: Chiusura 231 | description: Chisura della giornata 232 | -------------------------------------------------------------------------------- /src/schedules/year_2022.yml: -------------------------------------------------------------------------------- 1 | year: 2022 2 | schedule: 3 | - time: "9:00" 4 | talks: 5 | - title: Plenaria di apertura 6 | description: Apertura del Linux Day 7 | author: Daniele Barcella, Elia Ronchetti - unixMiB 8 | room: U6-40 9 | duration: 30 min 10 | slides: https://github.com/unixMiB/events/blob/master/Linux%20Day%20Milano%202022/Plenaria%20di%20apertura%20-%20Daniele%20Barcella%2C%20Elia%20Ronchetti%20-%20unixMiB.pdf 11 | - time: "9:30" 12 | talks: 13 | - title: Comincia oggi a contribuire al mondo Open Source, anche senza essere tecnico! 14 | description: "Oggi, i progetti Open Source sono alla base del settore informatico e della nostra societ\u00e0.\r\nQuesto percorso comincer\u00e0 con alcune credenze sul contribuire a progetti Open Source che, le persone con cui ho parlato, hanno condiviso con me e perch\u00e8 sono spesso infondate.\r\nAnalizzeremo poi le ragioni per cui contribuire ad un progetto Open Source, oltre che portare vantaggi alla Comunit\u00e0, pu\u00f2 portarti anche vantaggi personali.\r\nVedremo alcuni criteri che possono essere usati per facilitare l'identificazione del progetto a cui contribuire e con quale ruolo, con alcuni esempi.\r\nE ricorda, non c'\u00e8 necessit\u00e0 di avere particolari competenze tecniche per partecipare a progetti Open Source, quindi anche tu puoi partecipare sin da oggi!" 15 | author: Fabio Alessandro "Fale" Locati 16 | room: U6-40 17 | slides: https://github.com/unixMiB/events/blob/master/Linux%20Day%20Milano%202022/Comincia%20oggi%20a%20contribuire%20al%20mondo%20Open%20Source%2C%20anche%20senza%20essere%20tecnico!%20-%20Fabio%20Alessandro%20%22Fale%22%20Locati.pdf 18 | duration: 45 min 19 | - title: Introduzione a Podman container engine e un po' di storia sui containers 20 | description: "Visto che i container sono diventati il nuovo standard de facto per la creazione di pacchetti di applicazioni e le loro dipendenze, capire come implementarli, costruirli e gestirli \u00e8 ora essenziale per sviluppatori, amministratori di sistema e team SRE/operativi.\r\nDurante questo talk inizieremo esplorando le principali caratteristiche e capacit\u00e0 dei container, partendo dai concetti di base della containerizzazione e della sua tecnologia sottostante. Esploreremo la storia Containers Runtimes, introducendo Podman e i suoi strumenti complementari, il nuovissimo Container Engine disponibile in ogni distribuzione Linux.\r\nPodman e il suo ecosistema sono un'alternativa daemon-less a Docker.\r\nTi aspettiamo per scoprire assieme le principali funzionalit\u00e0 di Podman!" 21 | author: Alessandro Arrichiello, Gianni Salinetti - Red Hat 22 | room: U6-41 23 | slides: https://github.com/unixMiB/events/blob/master/Linux%20Day%20Milano%202022/Introduzione%20a%20Podman%20container%20engine%20e%20un%20po'%20di%20storia%20sui%20containers%20-%20Alessandro%20Arrichiello%2C%20Gianni%20Salinetti%20-%20Red%20Hat.pdf 24 | duration: 45 min 25 | video: https://video.linux.it/videos/watch/eea8dedf-adea-497f-aee0-c662ae9e0e00 26 | - title: Ecco fatto dopo 8 anni il Notebook Open Hardware - nonostante la guerra dei Chip 27 | description: "Al Linux Day di Milano delll'Ottobre 2014 venne presentata l'idea di costruire un notebook progettato intorno a GNU/Linux , poi divenne Open Hardware (basato su processore Power) dovremmo avercela fatta ad avere tutti i pi\u00f9 di 2000 componenti elettronici in tempo per presentare il prototipo, guerra dei microchip e costi dei chip da strozzini... Chi parteciper\u00f2 alla presentazione scoprir\u00e0...\r\n" 28 | author: Roberto Innocenti - Power Progress Community 29 | room: U6-42 30 | slides: https://github.com/unixMiB/events/blob/master/Linux%20Day%20Milano%202022/Ecco%20fatto%20dopo%208%20anni%20il%20Notebook%20Open%20Hardware%20-%20nonostante%20la%20guerra%20dei%20Chip%20-%20Roberto%20Innocenti%20-%20Power%20Progress%20Community.pdf 31 | duration: 45 min 32 | - title: "NethServer - la distribuzione Linux server italiana semplice da utilizzare." 33 | description: "Cos'\u00e8 Nethserver? Un prodotto italiano open source nato per permettere a tutti di costruirsi in casa (o su una piattaforma cloud) un Mailserver, Fileserver, Cloud storage personale, Firewall, Centralino telefonico.\r\nPerch\u00e8 \u00e8 nato, com'\u00e8 nato, l'idea dei fondatori, la creazione e lo sviluppo della community.\r\nSpiegazione della base: utilizzando CentoOS come base e cockpit per l'amministrazione via web permette all'utente anche meno esperto di installare i vari moduli presenti nel software center. Tutti i software sono sviluppati direttamente dall'azienda Nethesis e dalla community, oppure ci si avvale di progetti open gi\u00e0 esistenti come per esempio Nextcloud.\r\nSpiegazione dei vari moduli:\r\n- Mailserver\r\n- Fileserver (samba)\r\n- Nextcloud\r\n- Firewall\r\n- Centralino (esempio creazione e configurazione account VoIP)\r\n" 34 | author: "Elia Ronchetti" 35 | slides: https://github.com/unixMiB/events/blob/master/Linux%20Day%20Milano%202022/NethServer%20-%20la%20distribuzione%20Linux%20server%20italiana%20semplice%20da%20utilizzare%20-%20Elia%20Ronchetti.pdf 36 | room: U6-39 37 | duration: 45 min 38 | - time: "10:30" 39 | talks: 40 | - title: "Break" 41 | duration: 15 min 42 | - time: "10:45" 43 | talks: 44 | - title: "In Italia, l'Open Source \u00e8 aperto alle donne?" 45 | description: "Secondo Almalaurea, anche se in Italia ci sono pi\u00f9 donne iscritte all\u2019universit\u00e0 che uomini (il 58,7% degli iscritti complessivamente), queste scelgono soprattutto corsi di studio letterari e umanistici. Solo il 18% delle ragazze sceglie corsi STEM. Il trend italiano \u00e8 in linea con la media europea e mondiale. Pu\u00f2 la comunit\u00e0 Open Source aiutare a colmare questo \u201cgender gap\u201d?\r\n" 46 | author: "Anna Deppi - Red Hat" 47 | slides: https://github.com/unixMiB/events/blob/master/Linux%20Day%20Milano%202022/In%20Italia%2C%20l'Open%20Source%20%C3%A8%20aperto%20alle%20donne%3F%20-%20Anna%20Deppi%20-%20Red%20Hat.pdf 48 | room: U6-40 49 | duration: 45 min 50 | - title: Git for Contributors 51 | description: "Come utilizzare Git per contribuire a progetti open source, partendo dalle best practices fondamentali per arrivare alle tecniche più avanzate" 52 | author: Federico Grandi 53 | room: U6-41 54 | slides: https://github.com/unixMiB/events/blob/master/Linux%20Day%20Milano%202022/Git%20for%20Contributors%20-%20Federico%20Grandi.pdf 55 | duration: 45 min 56 | video: https://video.linux.it/videos/watch/6b53670f-63cb-408c-8b70-954f2739ad54 57 | - title: Timestamping con opentimestamp 58 | description: "Spiegazione generale di cos'\u00e8 il timestamping, come si effettua con opentimestamp e perch\u00e9 \u00e8 utile" 59 | author: "Timothy Redaelli - FSFE" 60 | room: U6-42 61 | duration: 45 min 62 | slides: https://github.com/unixMiB/events/blob/master/Linux%20Day%20Milano%202022/Timestamping%20con%20opentimestamps%20-%20Timothy%20Redaelli%20-%20FSFE.pdf 63 | - title: "Debian/Linux -- Il Sistema Operativo Universale. Installiamolo su una voting machine per riconvertirla a scopo ludico e didattico" 64 | description: "Debian \u00e8 una delle storiche distribuzioni Linux che mantiene un buon supporto per hardware datato o difficilmente supportato da altre distribuzioni.\r\nNel corso dell'intervento verr\u00e0 illustrata la procedura di installazione del sistema su una SmartMatic A4-210 e come Debian sia una valida distribuzione per il recupero di hardware datato." 65 | author: "Michele Bonsignore" 66 | slides: https://github.com/unixMiB/events/blob/master/Linux%20Day%20Milano%202022/Debian-Linux%20-%20Il%20Sistema%20Operativo%20Universale.%20Installiamolo%20su%20una%20voting%20machine%20per%20riconvertirla%20a%20scopo%20ludico%20e%20didattico%20-%20Michele%20Bonsignore.pdf 67 | room: U6-39 68 | duration: 45 min 69 | - time: "11:45" 70 | talks: 71 | - title: "Uno sguardo alle realt\u00e0 di software libero e affini in Italia" 72 | description: "In questo talk si cerca di far luce sulle realt\u00e0 oggi attive in Italia in ambito software libero e affini. Nella presentazione vengono illustrate alcune delle associazioni pi\u00f9 rilevanti in questo ambito e i loro canali di comunicazione con il fine di creare maggior consapevolezza sul tema, rafforzare la community gi\u00e0 esistente e coinvolgere anche un pubblico generico." 73 | author: "Marta Andreoli - FSFE" 74 | room: U6-40 75 | slides: https://github.com/unixMiB/events/blob/master/Linux%20Day%20Milano%202022/Uno%20sguardo%20alle%20realt%C3%A0%20di%20software%20libero%20e%20affini%20in%20Italia%20-%20Marta%20Andreoli%20-%20FSFE.pdf 76 | duration: 45 min 77 | - title: "SELinux: The Good, The Bad and The Worst" 78 | description: "SELinux è uno degli strumenti di sicurezza su GNU/Linux(*) più importanti, tristemente è anche uno dei più disabilitate.\nVediamo assieme perché è una componente del sistema molto importante, come facciamo ad usarlo correttamente e come possiamo smettere di disabilatarlo una volte per tutte.\n\n(*) In realtà solo per distro Fedora, Centos, RHEL e derivate" 79 | author: "Luca Fus\u00e8 - EXTRAORDY" 80 | room: U6-41 81 | duration: 45 min 82 | video: https://video.linux.it/videos/watch/38a4e964-7d63-47ed-92ef-b9055f222c92 83 | slides: https://github.com/unixMiB/events/blob/master/Linux%20Day%20Milano%202022/SELinux:%20The%20Good%2C%20The%20Bad%20and%20The%20Worst%20-%20Luca%20Fus%C3%A8%20-%20EXTRAORDY.pdf 84 | - title: "Panoramica su Quarkus" 85 | description: "Verranno illustrate le caratteristiche principali del framework Quarkus ed i suoi vantaggi in ottica cloud ready." 86 | author: "Alessio Giovanni Baroni - Red Hat" 87 | slides: https://github.com/unixMiB/events/blob/master/Linux%20Day%20Milano%202022/Panoramica%20su%20Quarkus%20-%20Alessio%20Giovanni%20Baroni%20-%20Red%20Hat.pdf 88 | room: U6-42 89 | duration: 45 min 90 | - title: "Varnish Cache, il web accelerator Open Source" 91 | description: "Partendo dal funzionamento di cache e di reverse proxy, scopriremo Varnish, una cache Open Source. Questa cache \u00e8 nata nel 2006 e realizzata appositamente per il protocollo HTTP, ora \u00e8 alla base di tantissimi siti web dal traffico elevato." 92 | author: Matteo Enna 93 | room: U6-39 94 | slides: https://github.com/unixMiB/events/blob/master/Linux%20Day%20Milano%202022/Varnish%20Cache%2C%20il%20web%20accelerator%20Open%20Source%20-%20Matteo%20Enna.pdf 95 | duration: 45 min 96 | - time: "12:45" 97 | talks: 98 | - title: Pausa pranzo 99 | duration: 60 min 100 | - time: "13:45" 101 | talks: 102 | - title: "Public Money? Public Code!" 103 | description: "Seminario informativo sulla campagna Public Money Public Code di Free Software Foundation Europe (FSFE) volta a promuovere l'impiego del software libero nella pubblica amministrazione. Perch\u00e9 il software creato usando i soldi delle tasse riscosse dai cittadini non \u00e8 rilasciato come Software Libero? Vogliamo che la legge richieda che il software finanziato pubblicamente e sviluppato per il settore pubblico sia reso pubblicamente disponibile sotto una licenza Software Libero/Open Source. Se \u00e8 denaro pubblico (public money), allora dovrebbe essere publico anche il codice sorgente (public code)." 104 | author: "Natale Vinto" 105 | room: U6-40 106 | duration: 45 min 107 | slides: https://github.com/unixMiB/events/blob/master/Linux%20Day%20Milano%202022/Public%20Money%3F%20Public%20Code!%20-%20Natale%20Vinto.pdf 108 | - title: "Ansible: la ricetta per un buon server" 109 | description: "Introduzione ad Ansible, il software di provisioning open-source pi\u00f9 diffuso. Perch\u00e8 usarlo anche in ambito domestico al posto degli script fai-da-te per automatizzare il deployment dei servizi nel proprio homelab." 110 | author: "Luca Biscaldi - POuL" 111 | room: U6-41 112 | duration: 45 min 113 | slides: https://github.com/unixMiB/events/blob/master/Linux%20Day%20Milano%202022/Ansible:%20la%20ricetta%20per%20un%20buon%20server%20-%20Luca%20Biscaldi%20-%20POuL.pdf 114 | - title: "Gli ingredienti di un approccio data-driven in un'applicazione industriale: apertura e multi-coding" 115 | description: "Qual \u00e8 il viaggio del dato che partendo da un processo industriale si deve interfacciare ai complessi sistemi informatici aziendali?\r\nL\u2019approccio data-driven nella progettazione di un\u2019architettura \u00e8 in grado di tradurre informazioni complesse in un output semplice e facile da interpretare. Per fare questo \u00e8 necessario sfruttare tecnologie open source e adottare un approccio multi-coding, trasversale rispetto alle risorse e alle competenze presenti in un\u2019azienda.\r\nL\u2019introduzione dell\u2019AI apre a tutti quegli scenari di hide pattern che contribuiscono ulteriormente ad arricchire il valore dei dati." 116 | author: "Flavio Ronzoni e Massimo Grattieri - Bosch Rexroth" 117 | room: U6-39 118 | video: https://video.linux.it/w/ewJYmatWFtSKRD7spHd7PQ 119 | slides: https://github.com/unixMiB/events/blob/master/Linux%20Day%20Milano%202022/Gli%20ingredienti%20di%20un%20approccio%20data-driven%20in%20un'applicazione%20industriale:%20apertura%20e%20multi-coding%20-%20Flavio%20Ronzoni%20e%20Massimo%20Grattieri%20-%20Bosch%20Rexroth.pdf 120 | duration: 45 min 121 | - title: "Come contribuire al kernel Linux" 122 | slides: https://github.com/unixMiB/events/blob/master/Linux%20Day%20Milano%202022/Come%20contribuire%20al%20kernel%20Linux%20-%20Rigel%20Di%20Scala%20e%20Carmelo%20Sarta.pdf 123 | description: "Vuoi fare bella figura con amici e parenti dimostrando di aver contribuito al kernel Linux con una patch? Questa guida breve e accessibile (si spera) ti mostrer\u00e0 come:\r\n\r\n- mettere in piedi da zero un sistema in locale per sviluppare il kernel Linux\r\n- cercare qualcosa su cui iniziare a lavorare\r\n- fare modifiche al kernel e testarle\r\n- inviare una patch e incrociare le dita\r\n\r\nAlla fine di questo talk avrai le idee chiare su come procedere. Con un po' di buona volont\u00e0 diventerai presto un \"kernel contributor\"!" 124 | author: "Rigel Di Scala e Carmelo Sarta - Red Hat" 125 | room: U6-42 126 | duration: 45 min 127 | - time: "14:45" 128 | talks: 129 | - title: "FSFE Router Freedom in Italia e nella UE" 130 | description: "Cosa \u00e8 la Router Freedom, perch\u00e9 \u00e8 utile ed importante, cosa FSFe ha fatto per promuoverla in Italia ed all'estero, cosa ho praticamente fatto io come supporter FSFe in Italia per la Router Freedom, cosa puoi fare tu per aiutare.\r\nQuesto talk si pu\u00f2 intitolare anche \"Router Freedom quattro anni dopo\" visto che \u00e8 la logica continuazione del mio talk precedente \"Libera il tuo Router\" per il Linux Day 2018, aggiornato alla situazione attuale." 131 | author: Stefano Costa - FSFE 132 | room: U6-40 133 | slides: https://github.com/unixMiB/events/blob/master/Linux%20Day%20Milano%202022/FSFE%20Router%20Freedom%20in%20Italia%20e%20nella%20UE%20-%20Stefano%20Costa.pdf 134 | duration: 45 min 135 | - title: "Rust - non prendere un granchio" 136 | description: "Secondo i sondaggi di Stack Overflow, Rust \u00e8 il linguaggio pi\u00f9 amato negli ultimi 7 anni.\r\nInoltre, Rust diventer\u00e0 presto il secondo linguaggio di programmazione dopo C con cui si potr\u00e0 sviluppare il kernel Linux.\r\n\r\nIn questo talk vediamo quali sono vantaggi e svantaggi di questo linguaggio, confrontandone esempi di codice con C, C++, Java, Kotlin e Python." 137 | slides: https://github.com/unixMiB/events/blob/master/Linux%20Day%20Milano%202022/Rust%20-%20non%20prendere%20un%20granchio%20-%20Marco%20Ieni.pdf 138 | author: "Marco Ieni" 139 | room: U6-41 140 | duration: 45 min 141 | - title: "Rosetta Mission 2022" 142 | description: 'Descriverei il contenuto del mio talk come l''introduzione ad un esperimento di arte contemporanea pensato per la creazione di un''opera partecipativa multi-piattaforma di cross-reality in grado di vivere simultaneamente nel mondo dei processi fisici macroscopici, in quello microscopico dei fenomeni quantistici, e digitali di internet e dei social networks. E'' il racconto di un piccolo viaggio circolare psichedelico fatto di scatole cinesi dove l''informazione e'' sempre libera di saltare su orbite diverse per poi ritornare a casa. E'' forse anche la storia di un gruppo di community invisibili correlate a distanza che sviluppano programmi open source, come blender e mozilla hubs, e che rendono possibile, come nel caso specifico di "Rosetta Mission 2022", la creazione di un mondo fluttuante pensato per l''incontro tra il pubblico generico e minoranze di attivisti, scienziati ed artisti oltre i confini geografici, politici, religiosi ed economici.' 143 | author: "Luca Pozzi" 144 | video: https://video.linux.it/w/h3k6JSNViDDk65aGzxSf2j 145 | slides: https://github.com/unixMiB/events/blob/master/Linux%20Day%20Milano%202022/Rosetta%20Mission%202022%20-%20Luca%20Pozzi.pdf 146 | room: U6-39 147 | duration: 45 min 148 | - title: "CMS a confronto: la scelta Open Source che fa al caso tuo!" 149 | description: "Comparazione tra i principali Content Management System in ambito Open Source considerando le funzionalit\u00e0 fornite Out Of The Box.\r\nIn particolare verranno affrontati:\r\n- Supporto dalla community\r\n- Funzionalit\u00e0 del Core\r\n- Estensioni presenti nel Marketplace\r\n- Temi grafici\r\n- Facilit\u00e0 di utilizzo\r\n- Risorse server" 150 | author: "Fausto Nenci" 151 | slides: https://github.com/unixMiB/events/blob/master/Linux%20Day%20Milano%202022/CMS%20a%20confronto:%20la%20scelta%20Open%20Source%20che%20fa%20al%20caso%20tuo!%20-%20Fausto%20Nenci%2C%20Luca%20Racchetti%2C%20Matteo%20Enna.pdf 152 | room: U6-42 153 | duration: 45 min 154 | - time: "15:45" 155 | talks: 156 | - title: "Break" 157 | duration: 15 min 158 | - time: "16:00" 159 | talks: 160 | - title: "Intelligenza Artificiale e diritto antidiscriminatorio: un difficile equilibrio" 161 | description: "Spesso si pensa che gli algoritmi di Intelligenza Artificiale si basino su calcoli neutri e per tale ragione la loro caratteristica sia quella della neutralit\u00e0. In realt\u00e0, gli algoritmi sono figli dei propri creatori, gli esseri umani, e ne rappresentano pregi e difetti. Infatti, essi sono costellati dai c.d. bias ossia pregiudizi che possono inficiare sulla qualit\u00e0 e attendibilit\u00e0 del dato. Tutto ci\u00f2 ha anche delle conseguenze in ambito giuridico: la presenza di bias incentiva comportamenti discriminatori. \r\nL'intervento, quindi, si focalizza sul fenomeno dei bias e sulla sua ripercussione nel diritto: le discriminazioni." 162 | author: "Silvia Cereda - ReDOPEN" 163 | slides: https://github.com/unixMiB/events/blob/master/Linux%20Day%20Milano%202022/Intelligenza%20Artificiale%20e%20diritto%20antidiscriminatorio:%20un%20difficile%20equilibrio%20-%20Silvia%20Cereda%20-%20ReDOPEN.pdf 164 | room: U6-40 165 | duration: 45 min 166 | - title: 5+1 Errori da evitare passando a Linux 167 | description: "Hai accumulato anni di esperienza con un altro sistema operativo e ti \u00e8 stato detto che puoi fare le stesse cose con Linux... Ma ci\u00f2 non significa che le farai alla stessa maniera." 168 | author: Moreno Razzoli 169 | room: U6-41 170 | duration: 45 min 171 | video: https://video.linux.it/w/2RHyVVM6qb7SaZGuANztEK 172 | slides: https://github.com/unixMiB/events/blob/master/Linux%20Day%20Milano%202022/5%2B1%20Errori%20da%20evitare%20passando%20a%20Linux%20-%20Moreno%20Razzoli.pdf 173 | - title: "Un oceano di suono" 174 | description: "Breve panoramica dei software audio a disposizione per registrare, trasmettere e post-produrre un podcast di qualit\u00e0 professionale." 175 | author: "Simone Savogin" 176 | room: U6-39 177 | duration: 45 min 178 | - title: "GitOps 101 - da dove veniamo, dove stiamo andando" 179 | description: "Questo talk spiegher\u00e0 cosa sia il paradigma GitOps e perch\u00e9 stia venendo utilizzato per la gestione di codice applicativo ed infrastrutture. Capiremo insieme cosa abbia portato alla nascita di questo approccio e quali siano, invece, le domande a cui ancora non abbiamo dato una risposta." 180 | author: "Lorenzo Soligo - Giant Swarm" 181 | slides: https://github.com/unixMiB/events/blob/master/Linux%20Day%20Milano%202022/GitOps%20101%20-%20da%20dove%20veniamo%2C%20dove%20stiamo%20andando%20-%20Lorenzo%20Soligo%20-%20Giant%20Swarm.pdf 182 | room: U6-42 183 | duration: 45 min 184 | - time: "17:00" 185 | talks: 186 | - title: "FOSS e Open Standard per la Sovranità Digitale" 187 | description: "Il software open source e gli standard aperti - in particolare i formati dei documenti - sono di fondamentale importanza per le strategie di sovranità digitale di individui, aziende, organizzazioni e governi. Oggi i contenuti creati dagli utenti - e la possibilità di condividerli in modo trasparente - sono nelle mani di poche aziende, che sfruttano a proprio vantaggio la limitata cultura digitale degli utenti. Questa situazione può essere superata solo passando dal software proprietario a quello open source e dagli standard proprietari a quelli aperti." 188 | author: "Italo Vignoli" 189 | room: U6-40 190 | duration: 45 min 191 | - title: "Packit; come integrare un progetto in Fedora facilmente!" 192 | description: "I progetti upstream, ovvero quei progetti che sono ospitati - ad esempio - dai vari *git forge* come github o gitlab, non si preoccupano della loro integrazione all'interno di una distribuzione Linux. Per questo motivo portare un progetto dall'upstream al downstream - ovvero integrarlo in una distribuzione - pu\u00f2 diventare un'attivit\u00e1 davvero complessa; solitamente \u00e9 un processo manuale che richiede molte conoscienze e che viene delegato a delle persone chiamate mantainers.\r\nLo scopo di Packit \u00e9 quello di facilitare il processo di integrazione di un progetto dall'upstream al downstream di Fedora rendendolo completamente automatico ed alla portata di tutti.\r\nIn questa sessione verr\u00e1 presentato Packit e come esso pu\u00f2 essere utilizzato per automatizzare il processo di rilascio di un pacchetto con un breve cenno a quelli che sono gli sviluppi futuri." 193 | author: Maja Massarini - Red Hat 194 | room: U6-41 195 | duration: 45 min 196 | slides: https://github.com/unixMiB/events/blob/master/Linux%20Day%20Milano%202022/Packit%3B%20come%20integrare%20un%20progetto%20in%20Fedora%20facilmente!%20-%20Maja%20Massarini%20-%20Red%20Hat.pdf 197 | - title: "Common Voice - Vogli(am)o la tua voce!" 198 | description: "Ti sei mai chiesto perchè la tua voce sia così importante? Essa viene utilizzata per ridere, cantare, urlare, per esprimere emozioni, ma soprattutto per due motivi fondamentali: parlare e comunicare! \nCommon Voice è un progetto di Mozilla che ha l'obiettivo di creare un'enorme raccolta che comprenda quante più voci possibili, in modo tale che queste siano disponibili per qualunque tipo di progetto... e funziona!" 199 | author: "Giovanni Sardisco - Mozilla Italia" 200 | room: U6-39 201 | duration: 45 min 202 | slides: https://github.com/unixMiB/events/blob/master/Linux%20Day%20Milano%202022/Common%20Voice%20-%20Vogli(am)o%20la%20tua%20voce!%20-%20Giovanni%20Sardisco%20-%20Mozilla%20Italia.pdf 203 | - title: "LotR: (any) Linux on the RaspberryPI" 204 | description: "Il successo dirompente del RaspberryPI \u00e8 dovuto in parte anche alla scelta di preparare una distribuzione linux per renderlo utilizzabile facilmente da parte di chiunque. Ma come fare se si hanno esigenze particolari, o anche solo se si preferisce un'altra distribuzione? E in che cosa le schede Single Board Computer (SBC) differiscono da un normale PC?\r\nIn questo talk approfondiremo questi temi e cercheremo una soluzione, standard ed open source, per poter eseguire le pi\u00f9 diffuse distribuzione Linux sul RaspberryPI." 205 | author: "Andrea Perotti - Red Hat" 206 | room: U6-42 207 | duration: 45 min 208 | - time: "18:00" 209 | talks: 210 | - title: Chiusura 211 | description: Chisura della giornata 212 | room: U6-40 213 | -------------------------------------------------------------------------------- /src/styles/base.scss: -------------------------------------------------------------------------------- 1 | html { 2 | scroll-behavior: smooth; 3 | } 4 | 5 | .tinted { 6 | color: $unixmib; 7 | } 8 | 9 | @mixin tshadow() { 10 | text-shadow: 0 1px 3px rgba(0, 0, 0, 0.4); 11 | } 12 | 13 | .nav-link { 14 | color: rgba(255, 255, 255, 0.8) !important; 15 | } 16 | 17 | .unixmib { 18 | span { 19 | &.mib { 20 | color: $unixmib; 21 | } 22 | 23 | &.unix { 24 | font-family: var(--#{$variable-prefix}font-monospace); 25 | } 26 | } 27 | } 28 | 29 | a.anchor { 30 | display: block; 31 | position: relative; 32 | top: -5.9rem; 33 | visibility: hidden; 34 | 35 | @include media-breakpoint-down(sm) { 36 | top: -11rem; 37 | } 38 | } 39 | 40 | .event:hover { 41 | background-color: #d7d7d7; 42 | } 43 | 44 | @media (prefers-color-scheme: dark) { 45 | .event:hover { 46 | background-color: #454545; 47 | } 48 | 49 | } 50 | 51 | ol.timeline { 52 | 53 | list-style-type: none; 54 | 55 | 56 | li { 57 | position: relative; 58 | margin: 0; 59 | padding-bottom: 1em; 60 | padding-left: 20px; 61 | } 62 | 63 | li:before { 64 | content: ''; 65 | background-color: #c00; 66 | position: absolute; 67 | bottom: 0; 68 | top: 0; 69 | left: 6px; 70 | width: 3px; 71 | } 72 | 73 | li:after { 74 | content: ''; 75 | background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' aria-hidden='true' viewBox='0 0 32 32' focusable='false'%3E%3Ccircle stroke='none' fill='%23c00' cx='16' cy='16' r='10'%3E%3C/circle%3E%3C/svg%3E"); 76 | position: absolute; 77 | left: 0; 78 | height: 15px; 79 | width: 15px; 80 | } 81 | 82 | } -------------------------------------------------------------------------------- /src/styles/components/footer.scss: -------------------------------------------------------------------------------- 1 | footer { 2 | section.section-license { 3 | color: white; 4 | background-color: #212121; 5 | text-align: center; 6 | padding: 2rem 2.5rem 2rem; 7 | 8 | span.ldmi { 9 | color: $ldmi; 10 | } 11 | 12 | span.unixmib { 13 | color: $unixmib; 14 | } 15 | } 16 | 17 | section#contattaci { 18 | background-color: #f7ab24; 19 | color: $black; 20 | 21 | a { 22 | color: white; 23 | } 24 | 25 | div.footer { 26 | @include media-breakpoint-up(md) { 27 | width: 100% !important; 28 | max-width: 100% !important; 29 | padding: 0; 30 | } 31 | } 32 | 33 | .ear { 34 | @include media-breakpoint-down(md) { 35 | display: none; 36 | } 37 | 38 | max-height: fit-content; 39 | } 40 | 41 | ul { 42 | list-style-type: none; 43 | padding: 0; 44 | } 45 | } 46 | } -------------------------------------------------------------------------------- /src/styles/components/header.scss: -------------------------------------------------------------------------------- 1 | header { 2 | background-color: $gray-900; 3 | 4 | .navbar { 5 | top: 0; 6 | left: 0; 7 | right: 0; 8 | z-index: 1; 9 | box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); 10 | 11 | .brand { 12 | font-weight: bold; 13 | span { 14 | color: $ldmi; 15 | } 16 | .logo { 17 | @media screen and (max-width: 239px) { 18 | display: none; 19 | } 20 | } 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/styles/components/hero.scss: -------------------------------------------------------------------------------- 1 | .hero { 2 | 3 | @include media-breakpoint-up(md) { 4 | padding: 3rem 4rem 5rem; 5 | } 6 | 7 | @include media-breakpoint-down(md) { 8 | padding: 2rem 1rem; 9 | } 10 | 11 | width: 100%; 12 | 13 | color: white; 14 | 15 | @include media-breakpoint-down(sm) { 16 | margin-top: 0; 17 | } 18 | 19 | .title { 20 | @include tshadow; 21 | 22 | h1 { 23 | font-weight: 700; 24 | } 25 | 26 | span.ldmi { 27 | color: $ldmi; 28 | font-weight: bold; 29 | } 30 | 31 | @include media-breakpoint-down(sm) { 32 | text-align: center; 33 | } 34 | } 35 | 36 | h1.title { 37 | color: white; 38 | font-weight: bold; 39 | } 40 | 41 | h3.title { 42 | color: white; 43 | font-weight: normal; 44 | } 45 | 46 | .subtitle { 47 | @include tshadow; 48 | color: white; 49 | font-size: 1.25rem; 50 | } 51 | 52 | .scroll { 53 | margin-top: 4em; 54 | } 55 | 56 | } -------------------------------------------------------------------------------- /src/styles/main.scss: -------------------------------------------------------------------------------- 1 | @import "node_modules/@fortawesome/fontawesome-svg-core/styles"; 2 | @import "values"; 3 | $color-mode-type: media-query; 4 | @import "bootstrap/scss/bootstrap.scss"; 5 | @import "base"; 6 | 7 | @import "pages/index"; 8 | 9 | @import "components/header.scss"; 10 | @import "components/footer.scss"; 11 | @import "components/hero.scss"; 12 | -------------------------------------------------------------------------------- /src/styles/pages/index.scss: -------------------------------------------------------------------------------- 1 | #index { 2 | section { 3 | margin: 0 auto; 4 | padding: 4rem 0.5rem; 5 | color: white; 6 | background-position: center bottom; 7 | background-size: contain; 8 | background-repeat: no-repeat; 9 | position: relative; 10 | overflow: hidden; 11 | 12 | span { 13 | color: $ldmi; 14 | } 15 | 16 | h2 { 17 | text-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); 18 | display: inline-block; 19 | font-weight: lighter; 20 | font-size: 2.25rem; 21 | } 22 | 23 | h3 { 24 | text-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); 25 | font-weight: lighter; 26 | } 27 | 28 | .faicon { 29 | text-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); 30 | color: $black; 31 | display: block; 32 | font-size: 5rem; 33 | margin: 0.5rem auto; 34 | height: 5rem; 35 | } 36 | 37 | .desc { 38 | font-size: 1.5rem; 39 | font-weight: lighter; 40 | max-width: 90%; 41 | margin: 0 auto; 42 | 43 | .h2 { 44 | display: inline-block; 45 | font-weight: 500; 46 | color: $ldmi; 47 | font-size: 1.5rem; 48 | line-height: 1.3rem; 49 | } 50 | } 51 | 52 | &#explore { 53 | background-color: #c34c39; 54 | background-image: url(../assets/images/event-bg.jpg); 55 | padding: 5rem 1rem; 56 | 57 | @include media-breakpoint-down(sm) { 58 | padding: 2rem 1rem; 59 | } 60 | 61 | .watch { 62 | left: 0; 63 | top: 3.5rem; 64 | position: absolute; 65 | z-index: 1; 66 | 67 | @include media-breakpoint-down(xl) { 68 | left: -8%; 69 | } 70 | 71 | @include media-breakpoint-down(md) { 72 | visibility: hidden; 73 | } 74 | } 75 | 76 | .text { 77 | font-size: 1.25rem; 78 | @include media-breakpoint-down(md) { 79 | padding-left: 2.5rem; 80 | } 81 | @include media-breakpoint-up(lg) { 82 | padding-left: 10rem; 83 | } 84 | @include media-breakpoint-up(xl) { 85 | padding-left: 25rem; 86 | } 87 | padding-right: 1rem; 88 | } 89 | 90 | .front { 91 | z-index: 999 !important; 92 | } 93 | } 94 | 95 | &#schedule { 96 | background-color: #75b46e; 97 | padding: 5rem 1rem; 98 | 99 | @include media-breakpoint-down(sm) { 100 | padding: 2rem 1rem; 101 | } 102 | 103 | .inspire { 104 | display: inline-block; 105 | margin-right: 2.5rem; 106 | max-width: 400px; 107 | @include media-breakpoint-down(md) { 108 | display: none; 109 | } 110 | } 111 | .text { 112 | font-size: 1.25rem; 113 | @include media-breakpoint-down(md) { 114 | padding-left: 4rem; 115 | padding-right: 4rem; 116 | } 117 | @include media-breakpoint-down(sm) { 118 | padding: 0 1rem; 119 | } 120 | 121 | a[href="#"] { 122 | display: none; 123 | } 124 | } 125 | .hide-col { 126 | @include media-breakpoint-down(sm) { 127 | visibility: hidden; 128 | } 129 | } 130 | } 131 | 132 | &#sponsors { 133 | background-color: white; //#1881a2; 134 | color: black; 135 | background-position: 50% 0; 136 | background-size: cover; 137 | padding-top: 0; 138 | background-repeat: no-repeat; 139 | position: relative; 140 | 141 | .text { 142 | padding-top: 4rem; 143 | padding-bottom: 2rem; 144 | } 145 | } 146 | } 147 | } 148 | -------------------------------------------------------------------------------- /src/styles/values.scss: -------------------------------------------------------------------------------- 1 | $unixmib: #2da235; 2 | $ldmi: #ffb600; 3 | $white: #fffffa; 4 | $black: #424242; 5 | $link-dark: #22b; 6 | 7 | --------------------------------------------------------------------------------