Gradle Suite for NetBeans 0.8.0 re-released

Well, it’s been a long time.  Long time from my previous posts and even longer since I did anything on my NetBeans Gradle plugin.

What has happened so far:

  1. We (as a family) moved to Portland, OR from Europe.
  2. My self hosted infrastructure become dead in the summer of 2017
  3. I could migrate the source repository to Perforce Helix
  4. Our project in US got cancelled in December.
  5. I was able to migrate the issues and milestones to Perforce Helix.
  6. We moved again
  7. Gradle changed it’s logging style
  8. I become a PPMC Member in Apache NetBeans, helping the team in QA and Snap packaging.
  9. I’ve got a new Project in California
  10. NetBeans 9.0 is out.
  11. I decided to have my plugin repository available on Amazon S3.

So here is the new update center URL:

https://s3-us-west-2.amazonaws.com/lkishalmi-us-west-2-public/netbeans-plugins/gradle-suite/nb82/updates.xml

This is almost the same functionality than the previous 0.8.0 build, the only enhancement is that it supports Gradle 4.10.

Posted in Uncategorized, netbeans, gradle, life | Leave a comment

Packaging NetBeans as a Snap

I’ve been working on an experiment with Snap packaging. I really see a potential in these packages as they remove the curse of packaging an application to the very fragmented world of Linux distributions.

NetBeans to Apache movement is progressing slowly but steadily. After all the internal code reviews and donations happened in Oracle, there were still a bunch of task to be done to properly relicense the software. The team did a great job reviewing all the parts of the code used. They are about to announce the NetBeans 9.0 Beta soon.

What really make Snap packaging make the difference is the automation and distribution Canonical provides via snapcraft.io and the snapstore with it’s different release channels. I’d love to see more detailed documentation on Snapcraft (the tool which can create snap packages), but the provided one was enough to create something to start with.

You can test NetBeans 9.0 Beta rc2 on Linux if you already have a JDK, either Java 8 or Java 9 (recommended) installed.

wget https://s3-us-west-2.amazonaws.com/lkishalmi-us-west-2-public/snaps/netbeans_9.0-beta-rc2_amd64.snap
snap install netbeans_9.0-beta-rc2_amd64.snap --dangerous --classic

There are still many things needed to be done (see: NETBEANS-341). Any feedback is welcome.

Posted in netbeans, ubuntu, Uncategorized | Tagged , , | 1 Comment

Ubuntu 17.10 and Gnome Shell

I spent some time  during the Holiday season to upgrade Ubuntu on my machines. I was shocked by the news in April when Canonical announced that they ditch their Unity desktop environment.

I’ve learned to love Unity. It was not easy as it not worked in the way I worked with Gnome 2 before. It was usual for me to have 10+ terminal window open, with a few of other windows doodling around. Unity thought me that I would be more effective if I close unused windows and work only with those few which really needed and using tabs in a terminal window is a good thing.  Well it was buggy and crashed from time-to-time, but it turned to be a productive lean environment. I must say that by 17.04 release it was a real stable and polished thing.

Using Gnome Shell for almost a month now, all I can say it is not ready. You can work with it efficiently, but there are a many annoying UI glitches and un-usabilities that feels unprofessional. So let the whining start:

  1. “Activities” thingy (menu or whatever): I understand that you can switch and manage between applications and workspaces, though the UI representation is simply confusing. (An icon might have been better.)
  2. Application Search Launcher just displays the first 15 character of the apps, no tooltip, no descriptions etc. I know there is a plugin for it, but if you need to work with 3 versions of an applications then good luck!
  3. Multi monitor support.
    1. Multiple monitors are just does not really fit seamlessly in the workspace concept.
    2. I can’t get a 3 monitor setup working.
    3. If I would just use the external display, I can connect it, but when I close the laptop lid the system goes to sleep. (Unity goes to sleep when no active displays left.)
    4. The top status (whatever) bar is only in the primary monitor.
    5. The display settings is full of bugs and UI glitches. Like the resolution switcher supposed to be a combo box, but a whole popup menu is displayed with a close button (WFT! Why?). The apply button is not always displayed when you change the setting.
  4. The greeter is ugly and dumb.
  5. Waking up from resume results a lot of flickering (2-3), sometimes leaving lock screen results a black screen until I press a button.
  6. Weird UI experiments placing buttons on the title bar. Sometimes it works, sometimes it is just confusing.
  7. Active Application “menu” next to the “Activities” is a joke. You can most probably quit the application, usually nothing else is there .
  8. “Double Title” bar space on maximized applications. Looks a bit dumb.
  9. Icon spacing on the status bar is not consistent. (It might be just on Ubuntu)

Well Gnome Shell is with us since April 2011,more than 6 years and it still suffers from such issues. The Ubuntu Desktop Team did a great job to do the Unity -> Gnome Shell transition smooth enough, still I think I would do a thing I’ve never done so far since I’m using Ubuntu (since 2005). I’m going to downgrade my system to 17.04, the best Ubuntu release so far.

 

Posted in ubuntu, Uncategorized | Tagged , , | Leave a comment

TP-Link AC1750 vs. CenturyLink Fiber

I’ve spent a few hours figuring this out, so I thought I share my experience.

The background story: We have a bunch of wireless devices at home. Unfortunately the router is placed at one end of the house and the signal strength at the other end is mediocre or poor. So I’ve bought a claimed to be good but affordable TP-Link AC1750 on Amazon. I thought it would be easy. Well it is not rocket science if you know what to do, so here it is:

  1. Before doing anything get your PPPoE username and password. The username is usually seen in the existing router configuration. You need to call the CenturyLink Tech support for the password.
  2. Replace the old router with the new one. Make sure you are using the same LAN port which the old one used on the Fiber modem. Other ports won’t work.
  3. Connect to the router’s network. Go to the TP-Link AC1750 management console.
    By default: http://192.168.0.1/  (admin/admin)
  4. Network – WAN Settings:
    1. WAN Connection Type: PPPoE/ Russian PPPoE
    2. PPPoE Connection: Type the previously acquired username and password for PPPoE
    3. Secondary Connection: Disabled
    4. Tap on advanced button
    5. Set MTU Size to 1492
      Without this the speed of connection would be a bit slower and flaky.
    6. Save
  5. Network – IPTV Settings: (This part is important even if you do not have IPTV)
    1. Make sure that IGMP Proxy is enabled
    2. Set the mode: 802.1Q Tag VLAN
    3. VLAN Tag for Internet Service: enabled
    4. Internet VLAN ID: 201
    5. I do not have IPTV or other service so I do not know the other settings. I set all 4 LAN ports to Internet
    6. Save
  6. If you reboot your modem now it shall be able to connect to the internet.

Enabling IPv6

It is important to me to able to communicate with the IPV6 network, as IPv6 is going to be more and more common and I need to test and do some work with it.

CenturyLink provides IPv6 6RD and Tunnel 6to4 type of IPv6 connections. Well IPv6 6RD id unfortunately not supported by this TP-Link router, here are the steps how to get Tunnel 6to4 to work:

  1. Go to your router management console:
  2. IPv6 Support / IPv6 Setup
  3. Enable IPv6
  4. WAN Connection Type: Tunnel 6to4
  5. Set the MTU Size to: 1492
  6. In the LAN settings set IPv6 Address Assign Type to DHCPv6 Server
    However SLAAC works for most devices, some devices like SmartTV-s need DHCPv6 Server in order to be able to connect to the Internet with IPv6
  7. Save
  8. Reboot Router

 

Posted in Uncategorized | Tagged , , | 2 Comments

System76 Galago Pro Review

I received my new Galago Pro a week ago. I’d been searching for a successor of my aged Lenovo Ideapad S215. That little notebook had almost everything I needed 3 years ago, and I bought it second hand for € 210. I like the size of netbooks 11-13 inch size is ideal for doing work and remaining portable. Unfortunately that segment seems to be dying. The 11.3” form factor has been flooded with cheap Atoms with undersized RAM and SSD options.

The middle category somehow locked down with 15.6 form factor.  I looked around the market half year ago. It was miserable. As a DevOps engineer (or whatever is it called), my main operating system is Ubuntu. I was thinking of Dell XPS 13 or 15. The XPS 13 is a nice little thing, but I read that it has problems with some external ports available on Thunderbolt only.

The System76 Galago Pro

photo_2017-05-27_08-39-27Then System76 announced Galago Pro. It seemed to have a decent size, full aluminum body. No compromise on the available ports and out of the box Ubuntu. One of the best thing is you can customize what’s inside, regarding processor memory, wireless adapter, m2 drive and 2.5 notebook drive. Everything, save the processor, is self serviceable and upgradeable if needed, without voiding the warranty.

The Body

It is a nice piece of work, full aluminum save the keyboard frame and the screen frame. You can proudly carry it among MacBooks, still it is not a unibody. My only complain would be the opening angle which is maxed around 120 degrees.

The Screen

photo_2017-05-27_08-39-13I’ve never had a notebook with HDPI screen so far and as a pixel fan I was excited about it. The screen itself is very good, large view angle, bright (I think one of the brightest display I saw so far). The colors are nice. It is glossy. I prefer matte, but a really good display.

My only complaint is that with this size a Full HD display would be much more useful. I work usually with one external monitor in the office, sometimes even at home. Though System76 created a nice extension which detects external monitors and sets the main resolution display and scale factor according to the current configuration. It would probably easier, cheaper to have a matte full HD screen.

Keyboard and Touchpad

I mostly create content with my computer, so good keyboard is really important to me. Galago Pro has an excellent keyboard, full size even the function keys are present and even works as function keys. There is plenty space for my wrists to rest. It has an excellent typing experience. Though I don’t like touchpads and using an external bluetooth mouse whenever it is possible, I was surprised how well it works on Galago Pro. It is actually a bit bigger than on m previous notebooks. There are only left and right buttons (no middle), but that’s Ok.

Ports

This is where Galago Pro really shines. It has on the left side a separate audio out and mic in jacks, power button, USB 3.1 port, and power input. On the right side. USB C Thunderbolt, USB 3.1 port, a mini display port. Full size HDMI port, an SD cardreader a full fise ethernet port and a kensington lock. There is a disabled SIM slot as well, though it is disabled. Maybe it will be available as an option in further models.

Performance and Battery Life

Both performance and battery life depends on your setup. It is sold with i5-7200U or i7-7500U processor and 4-32 GB DDR4 RAM 128GB-6TB disk configuration. Initially I had a 250 GB of SSD with 1 TB HDD. Well the battery lasted about 4 hours with that setup. I had to replace the disks with an 500 Gb NVMe Samsung EVO storage. I’m hoping better battery life experience from that, however it was not the reason for the change. 3.5-4 hours battery life is enough for me I usually work in one place near to power outlets. Telling the truth I never really had a notebook with longer battery life and I do not know that experience.

Noise

The system is quiet, until the fan kicks in. Unfortunately it could be noisy, but not noisier than my Office Dell 6440.  There is a Clevo fan indicator applet on GitHub which I’ve tried and modified the code a bit, so I can set the fan to around 3000 RPM which provides a constant quiet buzz, avoiding the usual 4500-6000 RPM bursts. I’m still experimenting with that. I have to tell, that it is not disturbing in the office as the background noise is higher than this small fan would generate.

System76

During the order System76 provided a nice experience. They responded quickly on my questions. It was really nice. I’ve checked their twitter channel a few times. They are doing a great job. Galago Pro provides excellent Ubuntu compatibility out of the box. Everything just worked without the need of checking the forums.

Service

photo_2017-05-27_08-37-41

Installing 500 Gb Samsung 960 EVO NVMe Storage

Without too much hassle I could replace my original drives with an NVMe storage. AFAIK System76 has not provided a disassembly guide yet, so here are the steps (if you do this, you do it on your own risk):

  1. With a(n expired ) credit card carefully remove the frame around the keyboard. I’ve started below the space, as that seemed to be the easiest.
  2. Lift the keyboard and detach it’s two cable from the main board
  3. Remove marked 3 screws with a screwdriver
  4. Turn the computer upside down and remove all the screws from the bottom
  5. The bottom cover can be carefully removed now.

Summary

Congratulations to System76 to put together a nearly perfect laptop for users like me. I think I’m going to happily use it for 2-3 years.

 

 

Posted in life, ubuntu, Uncategorized | Tagged , , | 3 Comments

The First 90 Days

I’ve planned a post or two about or life being here at the end ow the world. I’ve been postponing that for some time, but this rainy Sunday morning seems to be ideal for that we won’t go on trip today.

The First two Weeks

The hardest part being here was the first two-three weeks. I should have done it in the following order.

  1. Scoop good bunch of money, both in your home currency and in USD as well. EPAM helps in several ways in your relocations, but lot of charges are reimbursable only and that will take a while.
    I’ve made a mistake to concentrate too much on my USD funds and there were several occasions where I could not pay with my USD based debit card and I had to use my credit card.
  2. Bring/buy a dual SIM phone or an additional phone with you and buy a prepaid SIM card. The carrier is almost non-important. All the big carriers has no-contract offers. If you have time before you leave to discover, check the carrier coverage around your target region. If it is possible arrange your phone the same day after arrival, if you are with your family you need at least two SIM-s.
    I’ve waited one and a half week with that. A lot thing would have went a lot smoother if I had an US phone number. Most US forms, registration requires a phone number and no one in the US is prepared to handle international phone numbers. Also having mobile data available abroad is really handy.
  3. Do not underestimate the jet-lag. I’ve been in the US in a few times. East coast recently. It was 5-6 hours away depending on the daylight saving time. That is manageable. The tiredness kicks in around 8-9 PM when you are supposed to be in a hotel. West coast is 9 hours away form Hungary, which means 5-6 PM, the transit time. If it is possible do not drive after 4 PM.
    Our kids just laid down and instantly fell asleep around 5 PM for a few says after our arrival. It was a kind of torture for me to drive home from work on the first day around 6.
  4. Open a bank account. All you need is your I-94, an US address and a phone number. You might instantly get a temporary debit card
  5. Apply for an SSN. In order to be able to order services (Electricity, Water, Gas, Internet, etc.) on your name you need 3 things. An US address a phone number and usually an SSN.

The Next two Weeks

  1. Find school for your kids and then rent home nearby.
    We were lucky to be able to arrange that from home.
  2. If you are in Portland, it is a good idea to commute by bike.
  3. When you have the SSN, you can move your phone account to a post paid plan, which usually offers some advantage.
  4. Buy a car. It’s not that easy, finding a decent car ad a good dealer. Most of the dealers like real ticks Especially if you want to buy something budget around $10.000. If you have $15.000 it is much easier to buy a good car.

Living in Portland, Oregon

Weather

The first thing we’ve experienced was a clear sunny weather in the middle of February. It only lasted for two days. Then a whole week of rain. Then two more months of rain again. Well we were lucky that it at least stopped raining for a few weekends, but it still rains. When it rains it can rain in many different unusual way. The pattern changed about two weeks ago. We’ve just seen some sunny periods which lasted more than two days.

photo_2017-05-22_19-31-15

Food

I’m not a foody. I don’t really like to try out new tastes, so the first months were not easy for me. I stick to a handful of dishes. My wife tries to create something resembling like home, but it is hard to find the suitable ingredients. My deepest pain are the sausage and salami offering. Food is not cheap here especially if you do not want to eat garbage. Still you can find things to eat, but stay away from pastries in small shops.
Portland is famous for have the largest number of breweries in town. So there is an ample of choice having a beer. I have developed my taste of beer in Belgium so I’m not fond of IPA-s and you cannot replace quality and tradition by quantity and experiments. I’ve turned to cider now.

People

People are nice here. Speak and talk with strangers more often. They say a few words on the color of the carpet, the pattern of a shirt in the shop, appreciate my wife efforts to collect the order for the family in a restaurant. Or just like your choice of car, because they have the same type. Short few sentence positive conversations.

Work

It is no secret now that I’m working on the backend infrastructure of adidas All Day app. We are in closed beta phase. The team is fantastic. I’m really happy that I can work with them. Back at home, I used to say “I was responsible for negative energies”. Well with 15 year experience in the industry I could judge fairly well the effects and the effectiveness of a delivery model/process. Quite often we had to work along with the poor choices someone made years ago without the real ability to change. People here are more open to discussion and change and when I get critics, I get constructive ones. (However I’ve heard it is the part of the US culture, but I have first hand experience now.)

Posted in life, Uncategorized | Leave a comment

Relocation: Done

I’d been away from my blog and my projects for a while. The past three months were really hard for me and my family. We have moved from Hungary to US west coast Portland, Oregon.

It happened faster than expected and we went through the following stations:

  1. Get the job.
  2. Get an Offer
  3. Scoop the money.
  4. Prepare the papers for the VISA
  5. Prepare for the VISA Embassy Talk
  6. Pack the family
  7. Sell the car
  8. Prepare for the travel
  9. Travel
  10. Get a correct car
  11. Get a house to live
  12. Get an temporary place for the first week till the place is to live gets ready
  13. Get the initial documents
  14. Open a Bank account
  15. Arrange Furniture
  16. Buy a bike
  17. Get a phone Number
  18. Get an SSN number
  19. Find Schools for the Kids
  20. Get the Insurance Working
  21. Buy a car
Posted in life, Uncategorized | Tagged | 2 Comments

Things I’ve Learned on IPv6

As an appendix to my previous IPv6 post, I’d like to summarize what I’ve learned on my IPv6 journey.

IPv6 address space is vast: It would be enough to address each and every atom on the surface of Earth, though it is distributed quite generous ISP providers can get a very large /32 address space. If you are lucky your ISP gives you an /56 network which you can divide up to 256 subnets to form a /64 address space and assign IP-s there as you wish. It is still more than 4 billion times more addresses than we have in the IPv4 address space.

Link Local Addresses: These addresses begin with fe80 they can be used locally but only if they are associated with an interface, example: ssh fe80::d250:99ff:fe29:bf3a%eth0 could work.

MAC to IPv6 translation: It is usually used to construct the lower 64 bits of your IP address using the following method, if your MAC is 11:22:33:44:55:66 then insert an fffe in the middle resulting a 1122:33ff:fe44:5566 64 bit address, put a 64 bit network prefix in front of it and have the full 128 bit address. Like fe80::1122:33ff:fe44:5566/64 could be a valid link local address and 2001:db80:1234:5600:1122:33ff:fe44:5566/64 a valid global address.

Multiple IP for one Interface, Security: There can be multiple IP-s assigned to an interface. As MAC to IPv6 translation could give out information on your network, it is usual that you are communication to the outer world using a temporal random IP address. In order to check your IPv6 addresses ifconfig is not enough any more. Use: ip -6 addr instead.

Have an IPv6 Strategy: Checking the Google IPv6 Statistics it seems during the past years IPv6 usage is doubled each year. We are at ~14% now it was only 4.8% two years ago. Since 1st of June 2016 Apple accepts apps to their store which are working with IPv6 only network.

Posted in Uncategorized | Tagged , | Leave a comment

IPv6 at Home with Ubuntu

Somewhere around December 2016 I realized that my ISP has changed my router settings form IPv4 only to dual stack and the era of IPv6 has come for me as well. It was not an easy beginning. Though there are a lot of tutorials on the internet, most of them is focusing on why IPv6 is required as IPv4 address space has been depleted and how to write IPv6 addresses in short.

Then I watched another ton of routing videos, and read about Global Addresses, Unique Local Address (ULA), Link Local Addresses, SLAAC, DHCPv6.

Setting my goals:

  1. Assign an ULA for my machines on the network including LXC containers.
  2. If possible add DNS names to these addresses.

I have a small box which provides me a lot of services, most important DHCP and DNS for my home network and virtual machines using dnsmasq.

Create an ULA and Assign it to Statically to an Interface

As a center of my infrastructure I would have liked to assign an ULA to my small server. I’ve used SixXS to generate mine based on my MAC address. Normally any random address is good from the fd::/8 address space, but I wanted something standard. You can register your ULA in SixXX as well, but I don’t feel that necessary for any home reason. It might count if you binding networks together, however chances of collision are little to none if you are using random addresses. So I’ve got something like fd47:e7a0:3e36::/48 here you have 16 bits (65536 possibilities) for subnets, to make a /64 network address. So I chose subnet 0 and  1 for the interface combining them together to a fd47:e7a0:3e36::1/64 IPv6 address.

I’ve tried several ways to add this statically to my interface, but nothing really worked until I tried to add it by hand which worked, so I crafted it into the /etc/network/interfaces file like (upon this source):

iface eth0 inet static
    <IPv4 suff>
    up modprobe ipv6 || true
    up ip -6 addr add 2001:0db8:bd23:e100::1/64 dev $IFACE
    up ip -6 addr add fd47:e7a0:3e36::1/64 dev $IFACE
    up ip -6 route add default via fe80::caf3:26ff:fed2:4bc9 dev $IFACE

Let’s brief what these up lines are doing:

  1. Loading ipv6 kernel module. I’m not sure that it is required, but it causes no harm either.
  2. Assigning a custom global IP to the interface. Well I get the first 56 bit from the ISP, then I left 8 bit for subnets (I chose subnet 0) then I still can choose from a 64 bit address space (1 for now).
  3. This is the ULA assignment.
  4. Define the default route using the link local address of the router.
    Note: It is required to specify the device for a link local address.

Distribute ULA on the Rest of the Network via SLAAC

First of all I had to switch off the DHCPv6 on my router, as it just caused some additional noise on my network.

I added the following configuration to dnsmasq:

enable-ra
dhcp-range=fd47:e7a0:3e36::, ra-names
dhcp-option=option6:dns-server,[fd00::]

Let’s brief what these up lines are doing:

  1. Enable router advertisement for subnets (not sure yet, that this is needed)
  2. Assign SLAAC names on fd47:e7a0:3e36::/64 network, the names are coming from IPv4 stack DHCP announcements using MAC binding. Quite a nice feature indeed!
  3. Advertise the DNS server (ourself) on any ULA address

From now I have Global and ULA IPv6 IP-s on my network, dnsmasq resolves local hostnames to ULA addresses.

 

Posted in Uncategorized | Tagged , | 1 Comment

Gradle Suite for NetBeans 0.8.0 Released

gradle-issues

My life got quite busy recently. I have a new project at work and I had to step down from the “old” one as graceful as I can, so the hobby had to wait.

I worked on two streams recently, one was the JavaEE support, the other was continuing the work on where the previous version has been cut. I’ve got some advices from Attila Kelemen the author of the other Gradle plugin and tried to focus on the out of the box usability improvements:

  • It is default to use the Gradle Wrapper to those projects which has Wrapper included.
  • Projects are evaluated online, if offline evaluation fails, by default. This means downloading dependencies on project open. This can increase the time of the first project open, but the IDE has more stable knowledge on the project.
  • More precise inter-project dependency detection by handling dependencies between test sources.
  • There is a Sources customizer in the Project Properties from now which makes inspection of the SourceSets and their directories and classpaths more easy.
  • In case of problems the plugin now tries to analyze the problems a bit deeper to provide more information.

More details on this release on its New and Noteworthy page.

Here, I wish to say thank you to Attila for sharing his thoughts and suggestions!

Posted in gradle, netbeans, Uncategorized | 1 Comment