Wednesday, September 23, 2020

Bundler-Download Plugin v1.1.0

Bundler-Download Plugin v1.1.0 has been released with the following changes:

  • Add a post install message
  • bundle download clear command to remove downloads (alias as clean too)
  • Support os option for download DSL keyword in Downloadfile
  • bundle download --all-operating-systems to download files for all OS'es
  • bundle download help to show instructions (with usage as an alias)
  • bundle download list lists downloads for every gem with a Downloadfile
  • bundle download show shows downloaded files for every gem with size stats

More details are below. Enjoy!

Tuesday, September 22, 2020

Bundler-Download Plugin for RubyGem Large File Downloads

The RubyGem ecosystem, famous for gems like Rails for web development, Devise for authentication, and Pundit for authorization, enables productivity via code reuse. As such, it is great for quickly adding libraries to your project to automate part of the work or reuse other people's solutions to solved problems.

That said, you wouldn't want to package extremely large files, like the OpenAI GPT-3 175 billion parameter models, in a RubyGem.

Enter bundler-download, a Bundler Plugin that enables downloading extra gem files after installing with with `bundle install` by declaring gem downloads in a "Downloadfile"

Details are included below. Enjoy!

Friday, September 18, 2020

Glimmer Has Been One Point Oh’ed!

You read that right! Glimmer is finally 1.0.0

This marks a big milestone since Glimmer has outgrown its single-library roots and has become an assortment of Ruby gems that work together:

Other noteworthy releases:
Below is the new Glimmer library writeup.

Happy Glimmering!

Wednesday, September 16, 2020

Nebula CDateTime Glimmer Custom Widget

 Nebula CDateTime Glimmer Custom Widget and Glimmer DSL for SWT have both had updates.

glimmer-cw-cdatetime-nebula changes:
  • Actual CDateTimeProxy class that is a subclass of WidgetProxy
  • Smart defaults cdtkeyword for easily buildingCDT` styles
  • c_date, c_time aliases for date only and time only
  • c_date_time_drop_down, c_date_drop_down, c_time_drop_down for drop down configured widgets
  • c_date_time_spinner, c_date_spinner, c_time_spinner for spinner configured widgets
  • c_date_time_compact, c_date_compact, c_time_compact for compact style configured widgets
  • text_widget_proxy method to retrieve a Glimmer widget proxy for the inner text widget of CDateTime, thus enabling direct adding of observers and data-binding
  • toggle_open method to programmatically toggle between open and closed (works better and is more convenient than .swt_widget.set_open in some situations)
  • Nebula CDateTime Glimmer Custom Widget Gallery sample
glimmer-dsl-swt 0.6.8 changes:
  • Support external configuration of WidgetProxy::KEYWORD_ALIASES (e.g. radio is an alias for button(:radio))
  • Support external configuration of Glimmer::Config::SAMPLE_DIRECTORIES for the glimmer sample commands from Glimmer gems

Below is a screenshot from the new c_date_time gallery sample.

Glimmer Code:

You may learn more about the widget at the original blog post.

Happy Glimmering!

Monday, September 14, 2020

Glimmer DSL for Tk 0.0.5 Hello, Computed!

 Glimmer DSL for Tk alpha 0.0.5 ships with the following changes:

  • Label text data-binding
  • Entry text data-binding
  • The `grid` geometry manager
  • Hello, Computed! sample demonstrating computed value data-binding

Below is the Glimmer code for Hello, Computed!

And here is the produced sample app screenshot.

Happy Glimmering!

Glimmer DSL for SWT 0.6.6 User Profile Sample

Glimmer DSL for SWT 0.6.6 has been released with the following changes:

  • Add the User Profile sample from the DZone Glimmer article
  • Colored Ruby syntax highlighting for sample:code and sample:run tasks courtesy of tty-markdown
  • Support `check` as alias to `checkbox` DSL keyword for Button widget with :check style. 
  • Validate scaffolded custom shell gem name to ensure it doesn't clash with a built in Ruby method
  • GLIMMER_LOGGER_ASYNC env var for disabling async logging when needed for immediate troubleshooting purposes
  • Fix issue with table equivalent sort edge case (that is two sorts that are equivalent causing an infinite loop of resorting since the table is not correctly identified as sorted already)

Below is the new sample syntax-highlighted code and app screenshot from running `glimmer sample:run[user_profile]`

$ glimmer sample:run[user_profile]

# /Users/User/code/glimmer-dsl-swt/samples/elaborate/user_profile.rb

include Glimmer

shell {

  text "User Profile"

  composite {

    grid_layout 2, false

    group {

      text "Name"

      grid_layout 2, false

      layout_data :fill, :fill, true, true

      label {text "First"}; text {text "Bullet"}

      label {text "Last"}; text {text "Tooth"}  


    group {

      layout_data :fill, :fill, true, true

      text "Gender"

      radio {text "Male"; selection true}

      radio {text "Female"}  


    group {

      layout_data :fill, :fill, true, true

      text "Role"

      check {text "Student"; selection true}

      check {text "Employee"; selection true}  


    group {

      text "Experience"


      layout_data :fill, :fill, true, true

      spinner {selection 5}; label {text "years"}


    button {

      text "save"

      layout_data :right, :center, true, true

      on_widget_selected { 

        message_box {

          text 'Profile Saved!'

          message 'User profile has been saved!'




    button {

      text "close"

      layout_data :left, :center, true, true

      on_widget_selected { exit(0) }




# # #

Happy Glimmering!